Name: series-workflowfkxpg Phase: Failed StartedAt: 2026-09-02 14:19:38 +0000 UTC FinishedAt: 2026-09-02 15:05:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkxpg[0] Phase: Succeeded StartedAt: 2026-09-02 14:19:38 +0000 UTC FinishedAt: 2026-09-02 15:05:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkxpg[0].run-triage Phase: Succeeded StartedAt: 2026-09-02 14:19:38 +0000 UTC FinishedAt: 2026-09-02 15:05:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1vdG9yY29tbSBZVDkyMTUvWVQ5MjE4IERTQSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBzd2l0Y2ggaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgTURJTyB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMzFlNTc3NjhmYTI5YzJkZmVhZTY5ZTgxNWMyNjY1YTA2NzI3ZGUzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAxNTowNDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcbmluZGV4IDE1OWIxNjYwNmY2Y2EuLjliZWE0MmI2MTg0N2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS95dDkyMXguY1xuQEAgLTE1MSw2ICYjNDM7MTUxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyB5dDkyMXhfaW5mb3NbXSA9IHtcbiBcdHt9XG4gfTtcbiBcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8geXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW107XG4mIzQzO1xuICNkZWZpbmUgWVQ5MjFYX05BTUVcdFwmIzM0O3l0OTIxeFwmIzM0O1xuIFxuICNkZWZpbmUgWVQ5MjFYX1ZJRF9VTldBUkVcdDQwOTVcbkBAIC01NjMsNyAmIzQzOzU2NSw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxuIFx0dTE2IHZhbDtcbiBcdGludCByZXM7XG4gXG4tXHRpZiAocG9ydCBcdTAwM2U9IFlUOTIxWF9QT1JUX05VTSlcbiYjNDM7XHRpZiAocG9ydCBcdTAwM2U9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbWF4X3BvcnRzKVxuIFx0XHRyZXR1cm4gVTE2X01BWDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5AQCAtNTgxLDcgJiM0Mzs1ODMsNyBAQCB5dDkyMXhfbWJ1c19pbnRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcbiBcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXHUwMDNlcHJpdjtcbiBcdGludCByZXM7XG4gXG4tXHRpZiAocG9ydCBcdTAwM2U9IFlUOTIxWF9QT1JUX05VTSlcbiYjNDM7XHRpZiAocG9ydCBcdTAwM2U9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbWF4X3BvcnRzKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5AQCAtNTk2LDYgJiM0Mzs1OTgsNyBAQCB5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuIHtcbiBcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHRvX2RldmljZShwcml2KTtcbiBcdHN0cnVjdCBtaWlfYnVzICptYnVzO1xuJiM0MztcdHUzMiBtYXhfcG9ydDtcbiBcdGludCByZXM7XG4gXG4gXHRtYnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKGRldik7XG5AQCAtNjA4LDcgJiM0Mzs2MTEsOCBAQCB5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuIFx0bWJ1cy1cdTAwM2VyZWFkID0geXQ5MjF4X21idXNfaW50X3JlYWQ7XG4gXHRtYnVzLVx1MDAzZXdyaXRlID0geXQ5MjF4X21idXNfaW50X3dyaXRlO1xuIFx0bWJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4tXHRtYnVzLVx1MDAzZXBoeV9tYXNrID0gKHUzMil+R0VOTUFTSyhZVDkyMVhfUE9SVF9OVU0gLSAxLCAwKTtcbiYjNDM7XHRtYXhfcG9ydCA9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbWF4X3BvcnRzO1xuJiM0MztcdG1idXMtXHUwMDNlcGh5X21hc2sgPSAodTMyKX5HRU5NQVNLKG1heF9wb3J0IC0gMSwgMCk7XG4gXG4gXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuIFx0aWYgKHJlcylcbkBAIC00NDMwLDggJiM0Mzs0NDM0LDM2IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2VkYXRhX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1OCBhZGRyLCB1OCAqdmFscClcbiBcdHJldHVybiB5dDkyMXhfZWRhdGFfcmVhZF9jb250KHByaXYsIGFkZHIsIHZhbHApO1xuIH1cbiBcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8geXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW10gPSB7XG4mIzQzO1x0W1lUOTIxWF0gPSB7XG4mIzQzO1x0XHQuY2hpcF9tb2RlID0gWVQ5MjFYLFxuJiM0MztcdFx0Lm1heF9wb3J0cyA9IFlUOTIxWF9QT1JUX05VTSxcbiYjNDM7XHRcdC5udW1fbGFnX2lkcyA9IFlUOTIxWF9MQUdfTlVNLFxuJiM0MztcdFx0LmFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwLFxuJiM0MztcdFx0LmFnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwLFxuJiM0MztcdFx0LmRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9IHRydWUsXG4mIzQzO1x0XHQuYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyAqeXQ5Mnh4X3Nlcmllc19sb29rdXBfaW5mbyh1MzIgbWFqb3IpXG4mIzQzO3tcbiYjNDM7XHRlbnVtIGNoaXBfbW9kZSBtb2RlID0gWVRfTUFYO1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRpZiAobWFqb3IgPT0gWVQ5MjE1X01BSk9SIHx8IG1ham9yID09IFlUOTIxOF9NQUpPUilcbiYjNDM7XHRcdG1vZGUgPSBZVDkyMVg7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlKTsgJiM0MzsmIzQzO2kpXG4mIzQzO1x0XHRpZiAoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldLmNoaXBfbW9kZSA9PSBtb2RlKVxuJiM0MztcdFx0XHRyZXR1cm4gXHUwMDI2eXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHl0OTIxeF9jaGlwX2RldGVjdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG4ge1xuJiM0MztcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvO1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuIFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvICppbmZvO1xuIFx0dTggZXh0bW9kZTtcbkBAIC00NDQ3LDYgJiM0Mzs0NDc5LDExIEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2NoaXBfZGV0ZWN0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcbiBcbiBcdG1ham9yID0gRklFTERfR0VUKFlUOTIxWF9DSElQX0lEX01BSk9SLCBjaGlwaWQpO1xuIFxuJiM0MztcdHNlcmllc19pbmZvID0geXQ5Mnh4X3Nlcmllc19sb29rdXBfaW5mbyhtYWpvcik7XG4mIzQzO1x0aWYgKCFzZXJpZXNfaW5mbylcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcdHByaXYtXHUwMDNlc2VyaWVzX2luZm8gPSBzZXJpZXNfaW5mbztcbiYjNDM7XG4gXHRmb3IgKGluZm8gPSB5dDkyMXhfaW5mb3M7IGluZm8tXHUwMDNlbmFtZTsgaW5mbyYjNDM7JiM0MzspXG4gXHRcdGlmIChpbmZvLVx1MDAzZW1ham9yID09IG1ham9yKVxuIFx0XHRcdGJyZWFrO1xuQEAgLTQ3NDAsNiAmIzQzOzQ3NzcsMjAgQEAgc3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHl0OTJ4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuJiM0MztcbiYjNDM7XHRkcy1cdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9XG4mIzQzO1x0XHRwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0O1xuJiM0MztcdGRzLVx1MDAzZWRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9XG4mIzQzO1x0XHRwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbDtcbiYjNDM7XHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9taW4gPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFnZWluZ190aW1lX21pbjtcbiYjNDM7XHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9tYXggPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFnZWluZ190aW1lX21heDtcbiYjNDM7XHRkcy1cdTAwM2VudW1fbGFnX2lkcyA9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbnVtX2xhZ19pZHM7XG4mIzQzO1x0ZHMtXHUwMDNlbnVtX3BvcnRzID0gcHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2VtYXhfcG9ydHM7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiB7XG4gXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5AQCAtNDc4Niw2ICYjNDM7NDgzNyw4IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHRpZiAocmVzKVxuIFx0XHRyZXR1cm4gcmVzO1xuIFxuJiM0MztcdHl0OTJ4eF9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00OTEzLDExICYjNDM7NDk2NiwxNiBAQCBzdGF0aWMgdm9pZCB5dDkyMXhfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFxuIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIHtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpjb21wYXRfaW5mbyA9IE5VTEw7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbiBcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87XG4gXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXY7XG4gXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XG4gXG4mIzQzO1x0Y29tcGF0X2luZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbiYjNDM7XHRpZiAoIWNvbXBhdF9pbmZvKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwcml2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC00OTMyLDYgJiM0Mzs0OTkwLDcgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuIFxuJiM0MztcdHByaXYtXHUwMDNlc2VyaWVzX2luZm8gPSBjb21wYXRfaW5mbztcbiBcdHByaXYtXHUwMDNlcmVnX29wcyA9IFx1MDAyNnl0OTIxeF9yZWdfb3BzX21kaW87XG4gXHRwcml2LVx1MDAzZXJlZ19jdHggPSBtZGlvO1xuIFxuQEAgLTQ5NDQsMTUgJiM0Mzs1MDAzLDkgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gXHRkcyA9IFx1MDAyNnByaXYtXHUwMDNlZHM7XG4gXHRkcy1cdTAwM2VkZXYgPSBkZXY7XG4tXHRkcy1cdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9IHRydWU7XG4tXHRkcy1cdTAwM2Vkc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWwgPSB0cnVlO1xuIFx0ZHMtXHUwMDNlcHJpdiA9IHByaXY7XG4gXHRkcy1cdTAwM2VvcHMgPSBcdTAwMjZ5dDkyMXhfZHNhX3N3aXRjaF9vcHM7XG4tXHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9taW4gPSAxICogNTAwMDtcbi1cdGRzLVx1MDAzZWFnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwO1xuIFx0ZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2eXQ5MjF4X3BoeWxpbmtfbWFjX29wcztcbi1cdGRzLVx1MDAzZW51bV9sYWdfaWRzID0gWVQ5MjFYX0xBR19OVU07XG4tXHRkcy1cdTAwM2VudW1fcG9ydHMgPSBZVDkyMVhfUE9SVF9OVU07XG4gXG4gXHRtZGlvZGV2X3NldF9kcnZkYXRhKG1kaW9kZXYsIHByaXYpO1xuIFxuQEAgLTQ5NjAsOCAmIzQzOzUwMTMsMTEgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21vdG9yY29tbSx5dDkyMTVcJiMzNDsgfSxcbi1cdHt9XG4mIzQzO1x0e1xuJiM0MztcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttb3RvcmNvbW0seXQ5MjE1XCYjMzQ7LFxuJiM0MztcdFx0LmRhdGEgPSBcdTAwMjZ5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbWVQ5MjFYXSxcbiYjNDM7XHR9LFxuJiM0MztcdHsgLyogc2VudGluZWwgKi8gfSxcbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHl0OTIxeF9vZl9tYXRjaCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oIGIvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXG5pbmRleCA1ZjNiOTllMTg5YzQxLi5jYzgyMjNlYTVmMjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhcbkBAIC05NDUsOSAmIzQzOzk0NSwyNSBAQCBzdHJ1Y3QgeXQ5MjF4X3JlZ19vcHMge1xuIFx0aW50ICgqd3JpdGUpKHZvaWQgKmNvbnRleHQsIHUzMiByZWcsIHUzMiB2YWwpO1xuIH07XG4gXG4mIzQzO2VudW0gY2hpcF9tb2RlIHtcbiYjNDM7XHRZVDkyMVgsXG4mIzQzO1x0WVRfTUFYLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB7XG4mIzQzO1x0ZW51bSBjaGlwX21vZGUgY2hpcF9tb2RlO1xuJiM0MztcdHVuc2lnbmVkIGludCBtYXhfcG9ydHM7XG4mIzQzO1x0dW5zaWduZWQgaW50IG51bV9sYWdfaWRzO1xuJiM0MztcdHVuc2lnbmVkIGludCBhZ2VpbmdfdGltZV9taW47XG4mIzQzO1x0dW5zaWduZWQgaW50IGFnZWluZ190aW1lX21heDtcbiYjNDM7XHR1MzIgZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsO1xuJiM0MztcdHUzMiBhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydDtcbiYjNDM7fTtcbiYjNDM7XG4gc3RydWN0IHl0OTIxeF9wcml2IHtcbiBcdHN0cnVjdCBkc2Ffc3dpdGNoIGRzO1xuIFxuJiM0MztcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvO1xuIFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvICppbmZvO1xuIFx0dW5zaWduZWQgaW50IG1ldGVyX3Nsb3RfbnM7XG4gXHR1bnNpZ25lZCBpbnQgcG9ydF9zaGFwZV9zbG90X25zO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNb3RvcmNvbW0gWVQ5MjE1L1lUOTIxOCBEU0EgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgc3dpdGNoIGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIE1ESU8gd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjMxZTU3NzY4ZmEyOWMyZGZlYWU2OWU4MTVjMjY2NWEwNjcyN2RlMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTU6MDQ6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMKaW5kZXggMTU5YjE2NjA2ZjZjYS4uOWJlYTQyYjYxODQ3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS95dDkyMXguYwpAQCAtMTUxLDYgJiM0MzsxNTEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvIHl0OTIxeF9pbmZvc1tdID0gewogCXt9CiB9OwogCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8geXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW107CiYjNDM7CiAjZGVmaW5lIFlUOTIxWF9OQU1FCSYjMzQ7eXQ5MjF4JiMzNDsKIAogI2RlZmluZSBZVDkyMVhfVklEX1VOV0FSRQk0MDk1CkBAIC01NjMsNyAmIzQzOzU2NSw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKQogCXUxNiB2YWw7CiAJaW50IHJlczsKIAotCWlmIChwb3J0ICZndDs9IFlUOTIxWF9QT1JUX05VTSkKJiM0MzsJaWYgKHBvcnQgJmd0Oz0gcHJpdi0mZ3Q7c2VyaWVzX2luZm8tJmd0O21heF9wb3J0cykKIAkJcmV0dXJuIFUxNl9NQVg7CiAKIAltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7cmVnX2xvY2spOwpAQCAtNTgxLDcgJiM0Mzs1ODMsNyBAQCB5dDkyMXhfbWJ1c19pbnRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSkKIAlzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLSZndDtwcml2OwogCWludCByZXM7CiAKLQlpZiAocG9ydCAmZ3Q7PSBZVDkyMVhfUE9SVF9OVU0pCiYjNDM7CWlmIChwb3J0ICZndDs9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDttYXhfcG9ydHMpCiAJCXJldHVybiAtRU5PREVWOwogCiAJbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O3JlZ19sb2NrKTsKQEAgLTU5Niw2ICYjNDM7NTk4LDcgQEAgeXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucCkKIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7CiAJc3RydWN0IG1paV9idXMgKm1idXM7CiYjNDM7CXUzMiBtYXhfcG9ydDsKIAlpbnQgcmVzOwogCiAJbWJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpOwpAQCAtNjA4LDcgJiM0Mzs2MTEsOCBAQCB5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKQogCW1idXMtJmd0O3JlYWQgPSB5dDkyMXhfbWJ1c19pbnRfcmVhZDsKIAltYnVzLSZndDt3cml0ZSA9IHl0OTIxeF9tYnVzX2ludF93cml0ZTsKIAltYnVzLSZndDtwYXJlbnQgPSBkZXY7Ci0JbWJ1cy0mZ3Q7cGh5X21hc2sgPSAodTMyKX5HRU5NQVNLKFlUOTIxWF9QT1JUX05VTSAtIDEsIDApOwomIzQzOwltYXhfcG9ydCA9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDttYXhfcG9ydHM7CiYjNDM7CW1idXMtJmd0O3BoeV9tYXNrID0gKHUzMil+R0VOTUFTSyhtYXhfcG9ydCAtIDEsIDApOwogCiAJcmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTsKIAlpZiAocmVzKQpAQCAtNDQzMCw4ICYjNDM7NDQzNCwzNiBAQCBzdGF0aWMgaW50IHl0OTIxeF9lZGF0YV9yZWFkKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTggYWRkciwgdTggKnZhbHApCiAJcmV0dXJuIHl0OTIxeF9lZGF0YV9yZWFkX2NvbnQocHJpdiwgYWRkciwgdmFscCk7CiB9CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXSA9IHsKJiM0MzsJW1lUOTIxWF0gPSB7CiYjNDM7CQkuY2hpcF9tb2RlID0gWVQ5MjFYLAomIzQzOwkJLm1heF9wb3J0cyA9IFlUOTIxWF9QT1JUX05VTSwKJiM0MzsJCS5udW1fbGFnX2lkcyA9IFlUOTIxWF9MQUdfTlVNLAomIzQzOwkJLmFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwLAomIzQzOwkJLmFnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwLAomIzQzOwkJLmRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9IHRydWUsCiYjNDM7CQkuYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlLAomIzQzOwl9LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnl0OTJ4eF9zZXJpZXNfbG9va3VwX2luZm8odTMyIG1ham9yKQomIzQzO3sKJiM0MzsJZW51bSBjaGlwX21vZGUgbW9kZSA9IFlUX01BWDsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CWlmIChtYWpvciA9PSBZVDkyMTVfTUFKT1IgfHwgbWFqb3IgPT0gWVQ5MjE4X01BSk9SKQomIzQzOwkJbW9kZSA9IFlUOTIxWDsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlKTsgJiM0MzsmIzQzO2kpCiYjNDM7CQlpZiAoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldLmNoaXBfbW9kZSA9PSBtb2RlKQomIzQzOwkJCXJldHVybiAmYW1wO3l0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtpXTsKJiM0MzsKJiM0MzsJcmV0dXJuIE5VTEw7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCB5dDkyMXhfY2hpcF9kZXRlY3Qoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KQogewomIzQzOwljb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpzZXJpZXNfaW5mbzsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7CiAJY29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvICppbmZvOwogCXU4IGV4dG1vZGU7CkBAIC00NDQ3LDYgJiM0Mzs0NDc5LDExIEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2NoaXBfZGV0ZWN0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdikKIAogCW1ham9yID0gRklFTERfR0VUKFlUOTIxWF9DSElQX0lEX01BSk9SLCBjaGlwaWQpOwogCiYjNDM7CXNlcmllc19pbmZvID0geXQ5Mnh4X3Nlcmllc19sb29rdXBfaW5mbyhtYWpvcik7CiYjNDM7CWlmICghc2VyaWVzX2luZm8pCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJcHJpdi0mZ3Q7c2VyaWVzX2luZm8gPSBzZXJpZXNfaW5mbzsKJiM0MzsKIAlmb3IgKGluZm8gPSB5dDkyMXhfaW5mb3M7IGluZm8tJmd0O25hbWU7IGluZm8mIzQzOyYjNDM7KQogCQlpZiAoaW5mby0mZ3Q7bWFqb3IgPT0gbWFqb3IpCiAJCQlicmVhazsKQEAgLTQ3NDAsNiAmIzQzOzQ3NzcsMjAgQEAgc3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB5dDkyeHhfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTsKJiM0MzsKJiM0MzsJZHMtJmd0O2Fzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0ID0KJiM0MzsJCXByaXYtJmd0O3Nlcmllc19pbmZvLSZndDthc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydDsKJiM0MzsJZHMtJmd0O2RzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9CiYjNDM7CQlwcml2LSZndDtzZXJpZXNfaW5mby0mZ3Q7ZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsOwomIzQzOwlkcy0mZ3Q7YWdlaW5nX3RpbWVfbWluID0gcHJpdi0mZ3Q7c2VyaWVzX2luZm8tJmd0O2FnZWluZ190aW1lX21pbjsKJiM0MzsJZHMtJmd0O2FnZWluZ190aW1lX21heCA9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDthZ2VpbmdfdGltZV9tYXg7CiYjNDM7CWRzLSZndDtudW1fbGFnX2lkcyA9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDtudW1fbGFnX2lkczsKJiM0MzsJZHMtJmd0O251bV9wb3J0cyA9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDttYXhfcG9ydHM7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIHsKIAlzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7CkBAIC00Nzg2LDYgJiM0Mzs0ODM3LDggQEAgc3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIAlpZiAocmVzKQogCQlyZXR1cm4gcmVzOwogCiYjNDM7CXl0OTJ4eF9yZWdpc3Rlcl9zd2l0Y2goZHMpOwomIzQzOwogCXJldHVybiAwOwogfQogCkBAIC00OTEzLDExICYjNDM7NDk2NiwxNiBAQCBzdGF0aWMgdm9pZCB5dDkyMXhfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KQogCiBzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldikKIHsKJiM0MzsJY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyAqY29tcGF0X2luZm8gPSBOVUxMOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7bWRpb2Rldi0mZ3Q7ZGV2OwogCXN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87CiAJc3RydWN0IHl0OTIxeF9wcml2ICpwcml2OwogCXN0cnVjdCBkc2Ffc3dpdGNoICpkczsKIAomIzQzOwljb21wYXRfaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwomIzQzOwlpZiAoIWNvbXBhdF9pbmZvKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJcHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwogCWlmICghcHJpdikKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC00OTMyLDYgJiM0Mzs0OTkwLDcgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpCiAKIAltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7cmVnX2xvY2spOwogCiYjNDM7CXByaXYtJmd0O3Nlcmllc19pbmZvID0gY29tcGF0X2luZm87CiAJcHJpdi0mZ3Q7cmVnX29wcyA9ICZhbXA7eXQ5MjF4X3JlZ19vcHNfbWRpbzsKIAlwcml2LSZndDtyZWdfY3R4ID0gbWRpbzsKIApAQCAtNDk0NCwxNSAmIzQzOzUwMDMsOSBAQCBzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldikKIAogCWRzID0gJmFtcDtwcml2LSZndDtkczsKIAlkcy0mZ3Q7ZGV2ID0gZGV2OwotCWRzLSZndDthc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9IHRydWU7Ci0JZHMtJmd0O2RzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9IHRydWU7CiAJZHMtJmd0O3ByaXYgPSBwcml2OwogCWRzLSZndDtvcHMgPSAmYW1wO3l0OTIxeF9kc2Ffc3dpdGNoX29wczsKLQlkcy0mZ3Q7YWdlaW5nX3RpbWVfbWluID0gMSAqIDUwMDA7Ci0JZHMtJmd0O2FnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwOwogCWRzLSZndDtwaHlsaW5rX21hY19vcHMgPSAmYW1wO3l0OTIxeF9waHlsaW5rX21hY19vcHM7Ci0JZHMtJmd0O251bV9sYWdfaWRzID0gWVQ5MjFYX0xBR19OVU07Ci0JZHMtJmd0O251bV9wb3J0cyA9IFlUOTIxWF9QT1JUX05VTTsKIAogCW1kaW9kZXZfc2V0X2RydmRhdGEobWRpb2RldiwgcHJpdik7CiAKQEAgLTQ5NjAsOCAmIzQzOzUwMTMsMTEgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0gewotCXsgLmNvbXBhdGlibGUgPSAmIzM0O21vdG9yY29tbSx5dDkyMTUmIzM0OyB9LAotCXt9CiYjNDM7CXsKJiM0MzsJCS5jb21wYXRpYmxlID0gJiMzNDttb3RvcmNvbW0seXQ5MjE1JiMzNDssCiYjNDM7CQkuZGF0YSA9ICZhbXA7eXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW1lUOTIxWF0sCiYjNDM7CX0sCiYjNDM7CXsgLyogc2VudGluZWwgKi8gfSwKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmggYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmgKaW5kZXggNWYzYjk5ZTE4OWM0MS4uY2M4MjIzZWE1ZjI5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS95dDkyMXguaApAQCAtOTQ1LDkgJiM0Mzs5NDUsMjUgQEAgc3RydWN0IHl0OTIxeF9yZWdfb3BzIHsKIAlpbnQgKCp3cml0ZSkodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyIHZhbCk7CiB9OwogCiYjNDM7ZW51bSBjaGlwX21vZGUgewomIzQzOwlZVDkyMVgsCiYjNDM7CVlUX01BWCwKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gewomIzQzOwllbnVtIGNoaXBfbW9kZSBjaGlwX21vZGU7CiYjNDM7CXVuc2lnbmVkIGludCBtYXhfcG9ydHM7CiYjNDM7CXVuc2lnbmVkIGludCBudW1fbGFnX2lkczsKJiM0MzsJdW5zaWduZWQgaW50IGFnZWluZ190aW1lX21pbjsKJiM0MzsJdW5zaWduZWQgaW50IGFnZWluZ190aW1lX21heDsKJiM0MzsJdTMyIGRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbDsKJiM0MzsJdTMyIGFzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0OwomIzQzO307CiYjNDM7CiBzdHJ1Y3QgeXQ5MjF4X3ByaXYgewogCXN0cnVjdCBkc2Ffc3dpdGNoIGRzOwogCiYjNDM7CWNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvOwogCWNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyAqaW5mbzsKIAl1bnNpZ25lZCBpbnQgbWV0ZXJfc2xvdF9uczsKIAl1bnNpZ25lZCBpbnQgcG9ydF9zaGFwZV9zbG90X25zOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODU3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGlzIHBhdGNo4oCUaXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3Igc29tZSBmdXp6aW5nIGxvdmU/IEZpcnN0IHRoaW5ncyBmaXJzdCwgd2hhdCYjMzk7cyBiZWluZyB0b3VjaGVkPyBBaCwgYGRyaXZlcnMvbmV0L2RzYS95dDkyMXguY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhgLiBSaWdodCwgdGhhdCBtZWFucyBhIG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGB5dDkyMXhgLiBOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHdoYXQgKmtpbmQqIG9mIGRyaXZlciBpcyB0aGlzLCByZWFsbHk/IElzIGl0IGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIsIGEgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24sIGEgZGF0YSBwYXRoIGhhbmRsZXI/IEkgbmVlZCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIHRvIGp1ZGdlIGl0cyBmdXp6aW5nIHBvdGVudGlhbCBlZmZlY3RpdmVseS4gVGltZSB0byBjb25zdWx0IHRoZSBLY29uZmlnIGFuZCBkaXZlIGludG8gdGhlIGRyaXZlciBkZXRhaWxzLiBHcmVwcGluZyBvciBhIHF1aWNrIGByZWFkLWZpbGVgIHdpbGwgaG9wZWZ1bGx5IGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIGVudHJ5IHBvaW50cywgZGF0YSBmbG93cywgYW5kIHBvdGVudGlhbCBhcmVhcyBzdXNjZXB0aWJsZSB0byB1bmV4cGVjdGVkIGlucHV0cyBvciBtaXNjb25maWd1cmF0aW9ucy4gVGhlbiBJIGNhbiBkZXRlcm1pbmUgaWYgdGhpcyBpcyB3b3J0aCB0aGUgZWZmb3J0IHRvIHNldCB1cCBmdXp6aW5nIGFuZCBob3cgdG8gYmVzdCBhcHByb2FjaCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt5dDkyMXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIyNjYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfU1BJKSAmIzQzOz0gdml0ZXNzZS12c2M3M3h4LXNwaS5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX05FVF9EU0FfWVQ5MjFYKSAmIzQzOz0geXQ5MjF4Lm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0xOS1vYmoteVx0XHRcdFx0JiM0Mzs9IGI1My9cbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjgtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjk6I2luY2x1ZGUgXCYjMzQ7eXQ5MjF4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMTpzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMi1cdHVuc2lnbmVkIGludCBzaXplO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0MDovKiBNdXN0IGFncmVlIHdpdGggeXQ5MjF4X21pYlxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQxLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ1LSAqL1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHl0OTIxeF9taWJfZGVzY3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00Ny1cdE1JQl9ERVNDKDEsIFlUOTIxWF9NSUJfREFUQV9SWF9CUk9BRENBU1QsIE5VTEwpLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05Ny1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5ODpzdHJ1Y3QgeXQ5MjF4X2luZm8ge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk5LVx0Y29uc3QgY2hhciAqbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA1LVx0dTE2IGludGVybmFsX21hc2s7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA2Olx0LyogVE9ETzogc2VlIGNvbW1lbnRzIGluIHl0OTIxeF9kc2FfcGh5bGlua19nZXRfY2FwcygpICovXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA3LVx0dTE2IGV4dGVybmFsX21hc2s7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTExNC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMTU6c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyB5dDkyMXhfaW5mb3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMTYtXHR7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTE1ND1zdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNTUtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTU2OiNkZWZpbmUgWVQ5MjFYX05BTUVcdFwmIzM0O3l0OTIxeFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE1Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTcwLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjE3MTpzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNzItXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xODctXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTg4OiNkZWZpbmUgdG9feXQ5MjF4X3ByaXYoX2RzKSBjb250YWluZXJfb2ZfY29uc3QoX2RzLCBzdHJ1Y3QgeXQ5MjF4X3ByaXYsIGRzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE4OS0jZGVmaW5lIHRvX2RldmljZShwcml2KSAoKHByaXYpLVx1MDAzZWRzLmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTk2PXN0YXRpYyB1MzIgZXRoYWRkcl9sbzJfdG9fdTMyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIwMC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMDE6c3RhdGljIGludCB5dDkyMXhfcmVnX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbHApXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjAyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjA3LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjIwODpzdGF0aWMgaW50IHl0OTIxeF9yZWdfd3JpdGUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIwOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTIxNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjE2Onl0OTIxeF9yZWdfd2FpdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgKnZhbHApXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjE3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjIxLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjIyMjpcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KHl0OTIxeF9yZWdfcmVhZCwgcmVzLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIyMy1cdFx0XHRcdHJlcyB8fCAodmFsIFx1MDAyNiBtYXNrKSA9PSAqdmFscCxcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MjM1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMzY6eXQ5MjF4X3JlZ191cGRhdGVfYml0cyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIzNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI0MS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNDI6XHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcdTAwMjZ2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNDMtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNTEtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjUyOlx0cmV0dXJuIHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgcmVnLCB1KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNTMtfVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1NC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNTU6c3RhdGljIGludCB5dDkyMXhfcmVnX3NldF9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjU2LXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNTc6XHRyZXR1cm4geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCByZWcsIDAsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1OC19XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjU5LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjI2MDpzdGF0aWMgaW50IHl0OTIxeF9yZWdfY2xlYXJfYml0cyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2MS17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjYyOlx0cmV0dXJuIHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgcmVnLCBtYXNrLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0yNjU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjI2Njp5dDkyMXhfcmVnX3RvZ2dsZV9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2ssIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2Ny17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjY4Olx0cmV0dXJuIHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgcmVnLCBtYXNrLCAhc2V0ID8gMCA6IG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2OS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTI4Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjg4Onl0OTIxeF9yZWdzX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbHMsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjg5LVx0XHQgdW5zaWduZWQgaW50IG51bV9yZWdzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yOTMtXHRmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSBcdTAwM2MgbnVtX3JlZ3M7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjk0Olx0XHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnICYjNDM7IDQgKiBpLCBcdTAwMjZ2YWxzW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yOTUtXHRcdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTMwMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzAzOnl0OTIxeF9yZWdzX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICp2YWxzLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMwNC1cdFx0ICB1bnNpZ25lZCBpbnQgbnVtX3JlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMwOC1cdGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIFx1MDAzYyBudW1fcmVnczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMDk6XHRcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgcmVnICYjNDM7IDQgKiBpLCB2YWxzW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMTAtXHRcdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTMxNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzE4Onl0OTIxeF9yZWdzX3VwZGF0ZV9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcyxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMTktXHRcdFx0Y29uc3QgdTMyICp2YWxzLCB1bnNpZ25lZCBpbnQgbnVtX3JlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMyNi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMjc6XHRyZXMgPSB5dDkyMXhfcmVnc19yZWFkKHByaXYsIHJlZywgdnMsIG51bV9yZWdzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMjgtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNDQtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzQ1Olx0cmV0dXJuIHl0OTIxeF9yZWdzX3dyaXRlKHByaXYsIHJlZywgdnMsIG51bV9yZWdzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNDYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zNDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM0OTp5dDkyMXhfcmVnc19jbGVhcl9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcyxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNTAtXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3JlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM1Ny1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozNTg6XHRyZXMgPSB5dDkyMXhfcmVnc19yZWFkKHByaXYsIHJlZywgdnMsIG51bV9yZWdzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNTktXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNzQtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzc1Olx0cmV0dXJuIHl0OTIxeF9yZWdzX3dyaXRlKHByaXYsIHJlZywgdnMsIG51bV9yZWdzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNzYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zNzg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM3OTp5dDkyMXhfcmVnNjRfd3JpdGUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKnZhbHMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzgwLXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozODE6XHRyZXR1cm4geXQ5MjF4X3JlZ3Nfd3JpdGUocHJpdiwgcmVnLCB2YWxzLCAyKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODItfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zODQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM4NTp5dDkyMXhfcmVnNjRfdXBkYXRlX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKm1hc2tzLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4Ni1cdFx0XHQgY29uc3QgdTMyICp2YWxzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4Ny17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg4Olx0cmV0dXJuIHl0OTIxeF9yZWdzX3VwZGF0ZV9iaXRzKHByaXYsIHJlZywgbWFza3MsIHZhbHMsIDIpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4OS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTM5MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkyOnl0OTIxeF9yZWc2NF9jbGVhcl9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcylcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTMte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM5NDpcdHJldHVybiB5dDkyMXhfcmVnc19jbGVhcl9iaXRzKHByaXYsIHJlZywgbWFza3MsIDIpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM5NS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTM5Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzk4Onl0OTIxeF9yZWc5Nl93cml0ZShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIGNvbnN0IHUzMiAqdmFscylcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTkte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwMDpcdHJldHVybiB5dDkyMXhfcmVnc193cml0ZShwcml2LCByZWcsIHZhbHMsIDMpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQwMS19XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDAyLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwMzpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb19yZWFkKHZvaWQgKmNvbnRleHQsIHUzMiByZWcsIHUzMiAqdmFscClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00MDQte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwNTpcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW8gPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQwNi1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBtZGlvLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDQzLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ0NDpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb193cml0ZSh2b2lkICpjb250ZXh0LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ0NS17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDQ2Olx0c3RydWN0IHl0OTIxeF9yZWdfbWRpbyAqbWRpbyA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDQ3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NzktXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDgwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X3JlZ19vcHMgeXQ5MjF4X3JlZ19vcHNfbWRpbyA9IHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0ODE6XHQucmVhZCA9IHl0OTIxeF9yZWdfbWRpb19yZWFkLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4MjpcdC53cml0ZSA9IHl0OTIxeF9yZWdfbWRpb193cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODMtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4NzpzdGF0aWMgaW50IHl0OTIxeF9pbnRpZl93YWl0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTAtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDkxOlx0cmV0dXJuIHl0OTIxeF9yZWdfd2FpdChwcml2LCBZVDkyMVhfSU5UX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJULFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5Mi1cdFx0XHQgICAgICAgXHUwMDI2dmFsKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NDk1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0OTY6eXQ5MjF4X2ludGlmX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZywgdTE2ICp2YWxwKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUwMy1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MDQ6XHRyZXMgPSB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MDUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTEtXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9SRUFEO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxMjpcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUxMy1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTE0LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxNTpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTE2LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTE4LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxOTpcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUyMC1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTIxLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUyMjpcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCBZVDkyMVhfSU5UX01CVVNfRElOLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUyMy1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTUzND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTM1Onl0OTIxeF9pbnRpZl93cml0ZShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUzNi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU0MC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NDE6XHRyZXMgPSB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NDItXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NDgtXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NDk6XHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9JTlRfTUJVU19DVFJMLCBtYXNrLCBjdHJsKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTAtXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU1MS1cdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NTI6XHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ET1VULCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU1My1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTU0LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1NTpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTU2LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTU4LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1OTpcdHJldHVybiB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NjAtfVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU2MS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NjI6c3RhdGljIGludCB5dDkyMXhfbWJ1c19pbnRfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTYzLXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NjQ6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTY1LVx0dTE2IHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTcxLVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NzI6XHRyZXMgPSB5dDkyMXhfaW50aWZfcmVhZChwcml2LCBwb3J0LCByZWcsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTczLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01ODA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU4MTp5dDkyMXhfbWJ1c19pbnRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODIte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU4MzpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODQtXHRpbnQgcmVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODktXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU5MDpcdHJlcyA9IHl0OTIxeF9pbnRpZl93cml0ZShwcml2LCBwb3J0LCByZWcsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU5MS1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1OTc6eXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01OTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTAtXHRtYnVzLVx1MDAzZXByaXYgPSBwcml2O1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYxMTpcdG1idXMtXHUwMDNlcmVhZCA9IHl0OTIxeF9tYnVzX2ludF9yZWFkO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYxMjpcdG1idXMtXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19pbnRfd3JpdGU7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjEzLVx0bWJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYyNS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MjY6c3RhdGljIGludCB5dDkyMXhfZXh0aWZfd2FpdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjI3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjI5LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYzMDpcdHJldHVybiB5dDkyMXhfcmVnX3dhaXQocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MzEtXHRcdFx0ICAgICAgIFx1MDAyNnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTYzND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjM1Onl0OTIxeF9leHRpZl9yZWFkKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiAqdmFscClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MzYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NDItXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjQzOlx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjQ0LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjUwLVx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfVFlQRV9DMjIgfCBZVDkyMVhfTUJVU19DVFJMX1JFQUQ7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjUxOlx0cmVzID0geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCBZVDkyMVhfRVhUX01CVVNfQ1RSTCwgbWFzaywgY3RybCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjUyLVx0aWYgKHJlcylcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTMtXHRcdHJldHVybiByZXM7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjU0Olx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfRVhUX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTctXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjU4Olx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjU5LVx0aWYgKHJlcylcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NjAtXHRcdHJldHVybiByZXM7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjYxOlx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ESU4sIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjYyLVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NjczPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2NzQ6eXQ5MjF4X2V4dGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjc1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjc5LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY4MDpcdHJlcyA9IHl0OTIxeF9leHRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY4MS1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY4Ny1cdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1RZUEVfQzIyIHwgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2ODg6XHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9FWFRfTUJVU19DVFJMLCBtYXNrLCBjdHJsKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02ODktXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY5MC1cdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2OTE6XHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ET1VULCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY5Mi1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjkzLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5NDpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjk1LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjk3LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5ODpcdHJldHVybiB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02OTktfVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcwMC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MDE6c3RhdGljIGludCB5dDkyMXhfbWJ1c19leHRfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzAyLXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MDM6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA0LVx0dTE2IHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA3LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MDg6XHRyZXMgPSB5dDkyMXhfZXh0aWZfcmVhZChwcml2LCBwb3J0LCByZWcsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjcxNzp5dDkyMXhfbWJ1c19leHRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MTgte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjcxOTpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MjAtXHRpbnQgcmVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MjItXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjcyMzpcdHJlcyA9IHl0OTIxeF9leHRpZl93cml0ZShwcml2LCBwb3J0LCByZWcsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcyNC1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NzI5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MzA6eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDMtXHQvKiBUT0RPOiBjNDU/ICovXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0Olx0bWJ1cy1cdTAwM2VyZWFkID0geXQ5MjF4X21idXNfZXh0X3JlYWQ7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ1Olx0bWJ1cy1cdTAwM2V3cml0ZSA9IHl0OTIxeF9tYnVzX2V4dF93cml0ZTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDYtXHRtYnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzU3LS8qIFJlYWQgYW5kIGhhbmRsZSBvdmVyZmxvdyBvZiAzMmJpdCBNSUJzLiBNSUIgYnVmZmVyIG11c3QgYmUgemVyb2VkIGJlZm9yZS4gKi9cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NTg6c3RhdGljIGludCB5dDkyMXhfcmVhZF9taWIoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NTkte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc2MDpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2MS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IHRvX2RldmljZShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NjI6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2My1cdGludCByZXMgPSAwO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2NC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NjU6XHQvKiBSZWFkaW5nIG9mIHl0OTIxeF9wb3J0OjptaWIgaXMgbm90IHByb3RlY3RlZCBieSBhIGxvY2sgYW5kIGl0JiMzOTtzIHZhaW5cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NjYtXHQgKiB0byBrZWVwIGl0cyBjb25zaXN0ZW5jeSwgc2luY2Ugd2UgaGF2ZSB0byByZWFkIHJlZ2lzdGVycyBvbmUgYnkgb25lXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc3Mi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NzM6XHRmb3IgKHNpemVfdCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NzQ6XHRcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc3NS1cdFx0dTMyIHJlZyA9IFlUOTIxWF9NSUJuX0RBVEEwKHBvcnQpICYjNDM7IGRlc2MtXHUwMDNlb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NzktXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzgwOlx0XHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcdTAwMjZ2YWwwKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03ODEtXHRcdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc5Mi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3OTM6XHRcdFx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIHJlZyAmIzQzOyA0LCBcdTAwMjZ2YWwxKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03OTQtXHRcdFx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODE2LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgxNzpzdGF0aWMgdm9pZCB5dDkyMXhfcG9sbF9taWIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTgxOC17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODE5Olx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IGNvbnRhaW5lcl9vZl9jb25zdCh3b3JrLCBzdHJ1Y3QgeXQ5MjF4X3BvcnQsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODIwLVx0XHRcdFx0XHRcdCAgICBtaWJfcmVhZC53b3JrKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4MjE6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSAodm9pZCAqKShwcCAtIHBwLVx1MDAzZWluZGV4KSAtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODIyOlx0XHRcdFx0ICAgb2Zmc2V0b2Yoc3RydWN0IHl0OTIxeF9wcml2LCBwb3J0cyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODIzLVx0dW5zaWduZWQgbG9uZyBkZWxheSA9IFlUOTIxWF9TVEFUU19JTlRFUlZBTF9KSUZGSUVTO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04MjctXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgyODpcdHJlcyA9IHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04MjktXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTgzNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgzNzp5dDkyMXhfZHNhX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJpbmdzZXQsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODM4LVx0XHQgICAgICAgdWludDhfdCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODQyLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg0MzpcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg0NDpcdFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz04NTE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTI6eXQ5MjF4X2RzYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1aW50NjRfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NTMte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg1NDpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTU6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTY6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg1Ny1cdHNpemVfdCBqO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NTktXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2MDpcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NjEtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg2My1cdGogPSAwO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2NDpcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2NTpcdFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODY2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NzQtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODc1OnN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NzYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04ODEtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODgyOlx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODgzOlx0XHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjICpkZXNjID0gXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04ODQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTg5Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg5Mzp5dDkyMXhfZHNhX2dldF9ldGhfbWFjX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODk0LVx0XHRcdCAgICAgc3RydWN0IGV0aHRvb2xfZXRoX21hY19zdGF0cyAqbWFjX3N0YXRzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg5NS17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODk2Olx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg5NzpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg5ODpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODk5LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkwMC1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTAxOlx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkwMi1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9OTI4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTI5Onl0OTIxeF9kc2FfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTMwLVx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2V0aF9jdHJsX3N0YXRzICpjdHJsX3N0YXRzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzMS17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTMyOlx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzMzpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzNDpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTM1LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzNi1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTM3Olx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzOC1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTQ0LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk0NTpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfcm1vbl9oaXN0X3JhbmdlIHl0OTIxeF9ybW9uX3Jhbmdlc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk0Ni1cdHsgMCwgNjQgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9OTU2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTU3Onl0OTIxeF9kc2FfZ2V0X3Jtb25fc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NTgtXHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF9ybW9uX3N0YXRzICpybW9uX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NjAte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2MTpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5NjI6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5NjM6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk2NC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NjUtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2NjpcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NjctXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTY4LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2OTpcdCpyYW5nZXMgPSB5dDkyMXhfcm1vbl9yYW5nZXM7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTcwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz05OTM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5OTQ6eXQ5MjF4X2RzYV9nZXRfc3RhdHM2NChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk5NS1cdFx0ICAgICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTk2LXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5OTc6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTk4Olx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbcG9ydF07XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTk5Olx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFx1MDAyNnBwLVx1MDAzZW1pYjtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDAwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0xMDI5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzMDp5dDkyMXhfZHNhX2dldF9wYXVzZV9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwMzEtXHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2Vfc3RhdHMgKnBhdXNlX3N0YXRzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwMzIte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwMzM6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzNDpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwMzU6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwMzYtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTAzNy1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzODpcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDM5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0xMDQ1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDQ2Onl0OTIxeF9zZXRfZWVlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIHN0cnVjdCBldGh0b29sX2tlZWUgKmUpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA0Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNTktXHRpZiAoISFuZXdfbWFzayAhPSAhIXByaXYtXHUwMDNlZWVlX3BvcnRzX21hc2spIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDYwOlx0XHRyZXMgPSB5dDkyMXhfcmVnX3RvZ2dsZV9iaXRzKHByaXYsIFlUOTIxWF9QT05fU1RSQVBfRlVOQyxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDYxLVx0XHRcdFx0XHQgICAgIFlUOTIxWF9QT05fU1RSQVBfRUVFLCAhIW5ld19tYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA2My1cdFx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwNjQ6XHRcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX1BPTl9TVFJBUF9WQUwsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA2NS1cdFx0XHRcdFx0ICAgICBZVDkyMVhfUE9OX1NUUkFQX0VFRSwgISFuZXdfbWFzayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzItXHQvKiBFbmFibGUgLyBkaXNhYmxlIHBvcnQgRUVFICovXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA3MzpcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX0VFRV9DVFJMLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzQtXHRcdFx0XHQgICAgIFlUOTIxWF9FRUVfQ1RSTF9FTm4ocG9ydCksIGVuYWJsZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzYtXHRcdHJldHVybiByZXM7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA3NzpcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX0VFRW5fVkFMKHBvcnQpLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzgtXHRcdFx0XHQgICAgIFlUOTIxWF9FRUVfVkFMX0RBVEEsIGVuYWJsZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTEwODU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwODY6eXQ5MjF4X2RzYV9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwODcte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwODg6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA4OS1cdGludCByZXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwOTEtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwOTI6XHRyZXMgPSB5dDkyMXhfc2V0X2VlZShwcml2LCBwb3J0LCBlKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDkzLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDk3LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwOTg6c3RhdGljIGludCB5dDkyMXhfbXR1X2ZldGNoKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc0NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE5FVF9EU0FfWVQ5MjFYIEtjb25maWcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgS2NvbmZpZ2AgZm9yIGBORVRfRFNBX1lUOTIxWGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSB3aGF0JiMzOTtzIGJlaW5nIGNvbmZpZ3VyZWQgaGVyZS4gSXMgaXQgYSBtb2R1bGUsIGJ1aWx0LWluLCBvciBwYXJ0IG9mIGEgbGFyZ2VyLCBtb3JlIGNvbXBsZXggc3Vic3lzdGVtPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBzd2l0Y2ggb3Igc29tZXRoaW5nIG1vcmUgaW52b2x2ZWQsIG1heWJlIHdpdGggTUFDc2VjIG9yIFZMQU4gZmVhdHVyZXMgYmFrZWQgaW4/CgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIG91dCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcGF0aHMuIElmIHRoZXJlIGFyZSBuZXN0ZWQgYGlmYCBzdGF0ZW1lbnRzLCBJIG5lZWQgdG8gYnJlYWsgZG93biB0aGUgbG9naWMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9uIG9mIGVhY2ggY2hvaWNlLiBJIHdpbGwgaGF2ZSBhIGxvb2sgYXQgYW55IGhlbHAgdGV4dHM7IHRoZXkgdXN1YWxseSBwcm92aWRlIGNvbnRleHQuIEFyZSB0aGVyZSBhbnkgZGVmYXVsdCBzZXR0aW5ncz8gQW5kIGhvdyBhcmUgdGhlc2UgZGVmYXVsdHMgY2hvc2VuLCBpcyBpdCBhIHZhbHVlIGRlZmluZWQgZWxzZXdoZXJlLCBvciBiYXNlZCBvbiBoYXJkd2FyZT8KCkZ1cnRoZXJtb3JlLCBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSB0cmlzdGF0ZSBzZXR0aW5ncywgZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgbW9kdWxlIGNob2ljZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGRlY2lzaW9ucyBjYW4gZ2V0IG1vcmUgY29tcGxleCwgZXNwZWNpYWxseSBkdXJpbmcgYnVpbGQgdGltZS4gQWxzbywgaXMgdGhpcyBuZXcsIG9yIGFuIGV4aXN0aW5nIGRldmljZT8gSWYgaXQmIzM5O3MgZXhpc3RpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGN1cnJlbnQga2VybmVsIGluZnJhc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9EU0FfWVQ5MjFYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTE2Mz1jb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfUExBVEZPUk1cbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9EU0FfWVQ5MjFYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX05FVF9EU0FfVklURVNTRV9WU0M3M1hYX1NQSSkgJiM0Mzs9IHZpdGVzc2UtdnNjNzN4eC1zcGkub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1lUOTIxWCkgJiM0Mzs9IHl0OTIxeC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMTktb2JqLXlcdFx0XHRcdCYjNDM7PSBiNTMvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzMTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgS2NvbmZpZzoKCioqRGVlcCBEaXZlIGludG8gYE5FVF9EU0FfWVQ5MjFYYCBLY29uZmlnKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBzZWVpbmcgYE5FVF9EU0FfWVQ5MjFYYCwgd2hpY2ggdGVsbHMgbWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFlUOTIxWCBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIHdpdGhpbiB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSAoRFNBKSBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgaGFyZHdhcmUgZG9lcyB0aGlzIHNwZWNpZmljYWxseSB0YXJnZXQ/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBEU0EgZWNvc3lzdGVtLiBJcyBpdCBhIGNvcmUgZHJpdmVyLCBhIHBsYXRmb3JtLXNwZWNpZmljIHZhcmlhbnQsIG9yIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPwoKSSYjMzk7bSBzY2FubmluZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiBgZGVwZW5kcyBvbmAsIGBzZWxlY3RgLCBgaGVscGAsIGFuZCBhbnkgYGRlZmF1bHRgIHZhbHVlcyB0aGF0IG1pZ2h0IGdpdmUgbWUgYSBjbHVlIGFib3V0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZCBjb21tb24gY29uZmlndXJhdGlvbnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBhYm91dCB0aGUgdW5kZXJseWluZyBQSFkgKFBoeXNpY2FsIExheWVyKSBpdCBzdXBwb3J0cywgdGhlIENQVSBpbnRlcmZhY2UgKFNQSSwgSTJDLCBNRElPKSwgYW5kIGFueSBzcGVjaWZpYyBib2FyZCBvciBjaGlwc2V0IGNvbnN0cmFpbnRzLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGNvbWUgaW50byBwbGF5IHdpdGggb3RoZXIgRFNBIGRyaXZlcnMgb3IgbmV0d29yayBjb21wb25lbnRzPwoKSSYjMzk7bSBhbHNvIGN1cmlvdXMgYWJvdXQgYW55IHN5bWJvbHMgdGhpcyBkcml2ZXIgbWlnaHQgYHNlbGVjdGAuIFdoYXQgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyBwdWxsZWQgaW4/IERvZXMgaXQgaW52b2x2ZSBzcGVjaWZpYyBEU0EgZmVhdHVyZXMgbGlrZSBWTEFOIHRhZ2dpbmcsIHBvcnQgbWlycm9yaW5nLCBvciB0cmFmZmljIHNoYXBpbmc/IEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3IgYGJvb2xgLCBgdHJpc3RhdGVgLCBvciBgaW50YCB2YXJpYWJsZXMuCgpGdXJ0aGVybW9yZSwgbGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvYnZpb3VzKiBwaXRmYWxscywgb3IgZ290Y2hhcywgd2hpY2ggc2hvdWxkIGJlIGhpZ2hsaWdodGVkIHdpdGggYGhlbHBgIHRleHQuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbiBhbmQgdW5yYXZlbCB0aGUgS2NvbmZpZyBwdXp6bGUuIExldOKAmXMgc2VlIHdoYXQgZ29vZGllcyBpdCBob2xkcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjU6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gMTY2Olx0XHRzZWxlY3QgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcbiAxNjc6XHRcdGhlbHBcbiAxNjg6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBWaXRlc3NlIFZTQzczODUsIFZTQzczODgsIFZTQzczOTVcbiAxNjk6XHRcdCAgYW5kIFZTQzczOTggU3BhclggaW50ZWdyYXRlZCBldGhlcm5ldCBzd2l0Y2hlcywgY29ubmVjdGVkIG92ZXJcbiAxNzA6XHRcdCAgYSBDUFUtYXR0YWNoZWQgYWRkcmVzcyBidXMgYW5kIHdvcmsgaW4gbWVtb3J5LW1hcHBlZCBJL08gbW9kZS5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgTkVUX0RTQV9ZVDkyMVhcbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O01vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFwmIzM0O1xuIDE3NDpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX1lUOTIxWFxuIDE3NTpcdFx0c2VsZWN0IE5FVF9JRUVFODAyMVFfSEVMUEVSUyBpZiBEQ0JcbiAxNzY6XHRcdGhlbHBcbiAxNzc6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaFxuIDE3ODpcdFx0ICBjaGlwLlxuIDE3OTpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAwOAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgYHl0OTIxeGAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYHl0OTIxeGAgaXMgYnJvdWdodCB0byBsaWZlIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IGl0JiMzOTtzICp1c2VkKi4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IGlzIHRoaXMgc29tZXRoaW5nIHRoYXQgbmVlZHMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhIHNvZnR3YXJlIGFic3RyYWN0aW9uPyBJIGNhbiYjMzk7dCBhc3N1bWUgYW55dGhpbmcgYXQgdGhpcyBwb2ludC4KCk5leHQsIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBrbm93IGhvdyBpdCBpZGVudGlmaWVzIGl0c2VsZiB0byB0aGUgc3lzdGVtLiBXaGVyZSBkb2VzIGl0IGZpdCBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmU/IElzIGl0IHVzaW5nIE1ESU8sIHBsYXRmb3JtLXNwZWNpZmljIHJlc291cmNlcywgb3Igb25lIG9mIHRoZSBtb3JlIGNvbW1vbiBpbnRlcmZhY2VzIGxpa2UgU1BJIG9yIEkyQz8gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdOKAmXMgY29tbXVuaWNhdGluZyBhbmQgcmVnaXN0ZXJpbmcgaXRzZWxmIHdpdGggdGhlIGNvbnRyb2xsaW5nIGRldmljZXMuCgpNeSB1c3VhbCBzdGFydGluZyBwb2ludCwgd2hlbiBJJiMzOTttIHJldmVyc2UtZW5naW5lZXJpbmcgb3IgY29taW5nIHVwIHRvIHNwZWVkIG9uIGEgbW9kdWxlIGxpa2UgdGhpcywgaXMgdG8gaW1tZWRpYXRlbHkgbG9vayBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBlbmQgb2YgYHl0OTIxeC5jYCBnaXZlcyBtZSBhbnkgaW5zaWdodHMgaW50byBob3cgaXQmIzM5O3MgaW5pdGlhbGl6ZWQgYW5kIGJyb3VnaHQgaW50byBzZXJ2aWNlLiBPZnRlbiwgdGhlIGVuZCBvZiB0aGUgZmlsZSBob2xkcyB0aGUga2V5IGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX21kaW9fZHJpdmVyfG1vZHVsZV9pbml0fHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00OTM1PXN0YXRpYyB2b2lkIHl0OTIxeF9tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5NjYtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDk2NzpzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTY4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTAyND1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHl0OTIxeF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MDI1Olx0LnByb2JlID0geXQ5MjF4X21kaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTAyNi1cdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjMyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGB5dDkyMXhfbWRpb19kcml2ZXJgIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgeXQ5MjF4X21kaW9fZHJpdmVyYCwgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyBhbiBNRElPIGRyaXZlci4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpczogY2FuIE1ESU8gZGV2aWNlcyBvciBEU0Egc3dpdGNoZXMsIGluIGdlbmVyYWwsIGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBuZWVkIGZvciBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmU/IE9yLCBhcmUgdGhleSBzdHJpY3RseSBoYXJkd2FyZS1kZXBlbmRlbnQ/IEkgbmVlZCB0byBmaWd1cmUgdGhpcyBvdXQgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZy4KCkxldCYjMzk7cyBzZWUsIHdoYXQgZG9lcyB0aGUgcHJvbXB0IHNheSB0byBmaWx0ZXIgb3V0PyBPa2F5LCBpdCB3YW50cyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGhhcyBjZXJ0YWluIGNoYXJhY3RlcmlzdGljcy4gSXQgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbi4gSXQgYWxzbyBsaXN0cyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVcywgd2hpY2ggcmVxdWlyZSByZWFsIFBDSWUgaGFyZHdhcmUuIEZpbmFsbHksIGl0IG5vdGVzIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIGNhbGxiYWNrcy4KClNvLCB0aGUgY29yZSBxdWVzdGlvbiBpcywgY2FuIEkgcmVhY2ggdGhlIE1ESU8gYnVzIGFuZCBzd2l0Y2ggZHJpdmVyIGluIHN0YW5kYXJkIFFFTVUgb3IgZXZlbiBvdGhlciB2aXJ0dWFsIGVudmlyb25tZW50cyB1c2VkIGZvciBzeXprYWxsZXIsIG9yIEdDRT8gT3IgaXMgdGhpcyBpbXBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIGFuIE1ESU8gc3dpdGNoIG9yIGFuIE1ESU8gZGV2aWNlIHZpYSBEZXZpY2UgVHJlZSBpbiB0aGVzZSBzZXR0aW5ncz8KCkkgbmVlZCB0byBleHBsb3JlIGhvdyBNRElPIGRldmljZXMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZC4gQ2FuIHRoZXkgYmUgY3JlYXRlZCB1c2luZyB0aGluZ3MgbGlrZSBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIGBtb2NrLW1kaW9gLCBvciBldmVuIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIERUIG92ZXJsYXlzLCBldGMuPyBBcmUgdGhlcmUgdmlydHVhbCBvciBzb2Z0d2FyZSBtZXRob2RzPyBJIHNob3VsZCBkb3VibGUtY2hlY2sgb3RoZXIgRFNBIHN3aXRjaGVzIG9yIE1ESU8gZHJpdmVycyBpbiB0aGUgc3l6a2FsbGVyIGZ1enppbmcgb3Iga2VybmVsIGd1aWRlbGluZXMgdG8gbG9vayBmb3IgcGF0dGVybnMuCgpUaGlua2luZyBhYm91dCBEU0EsIGhvdyBkb2VzIGl0IGFjdHVhbGx5IHdvcms/IERTQSBzd2l0Y2hlcyBhcmUgKnR5cGljYWxseSogaW5zdGFudGlhdGVkIHVzaW5nIERldmljZSBUcmVlIChgb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhYCkgb3IgcGxhdGZvcm0gZGF0YSwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjYW4gYmUgZW11bGF0ZWQuCgpMb29raW5nIGF0IGB5dDkyMXhfbWRpb19wcm9iZWAsIEkgc2VlIGEgY3JpdGljYWwgc2VjdGlvbjoKCmBgYGMKY29tcGF0X2luZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKaWYgKCFjb21wYXRfaW5mbykKICAgIHJldHVybiAtRUlOVkFMOwouLi4KcmVzID0geXQ5MjF4X2NoaXBfZGV0ZWN0KHByaXYpOwpgYGAKU28sIHRoaXMgZHJpdmVyIGFwcGVhcnMgdG8gcmVseSBvbiBEZXZpY2UgVHJlZSEgQnV0IGRvZXMgdGhlIGB5dDkyMXhfY2hpcF9kZXRlY3RgIGZ1bmN0aW9uIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gZGV0ZWN0IGNoaXBzPyBJIG11c3QgcmVhZCB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jYCwgc3BlY2lmaWNhbGx5IGZyb20gbGluZXMgNDk2NSB0byA1MDM1IG9mIGB5dDkyMXhfbWRpb19wcm9iZWAgdG8gdW5kZXJzdGFuZCB0aGlzIHByb2Nlc3MgYW5kIGlmIGl0IGlzIGRlcGVuZGVudCBvbiBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0OTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQ5NjU6XHR9XG40OTY2Olx0XG40OTY3Olx0c3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG40OTY4Olx0e1xuNDk2OTpcdFx0Y29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyAqY29tcGF0X2luZm8gPSBOVUxMO1xuNDk3MDpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG40OTcxOlx0XHRzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvICptZGlvO1xuNDk3MjpcdFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2O1xuNDk3MzpcdFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuNDk3NDpcdFxuNDk3NTpcdFx0Y29tcGF0X2luZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbjQ5NzY6XHRcdGlmICghY29tcGF0X2luZm8pXG40OTc3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuNDk3ODpcdFxuNDk3OTpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuNDk4MDpcdFx0aWYgKCFwcml2KVxuNDk4MTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjQ5ODI6XHRcbjQ5ODM6XHRcdG1kaW8gPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1kaW8pLCBHRlBfS0VSTkVMKTtcbjQ5ODQ6XHRcdGlmICghbWRpbylcbjQ5ODU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG40OTg2Olx0XG40OTg3Olx0XHRtZGlvLVx1MDAzZWJ1cyA9IG1kaW9kZXYtXHUwMDNlYnVzO1xuNDk4ODpcdFx0bWRpby1cdTAwM2VhZGRyID0gbWRpb2Rldi1cdTAwM2VhZGRyO1xuNDk4OTpcdFx0bWRpby1cdTAwM2Vzd2l0Y2hpZCA9IDA7XG40OTkwOlx0XG40OTkxOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuNDk5MjpcdFxuNDk5MzpcdFx0cHJpdi1cdTAwM2VzZXJpZXNfaW5mbyA9IGNvbXBhdF9pbmZvO1xuNDk5NDpcdFx0cHJpdi1cdTAwM2VyZWdfb3BzID0gXHUwMDI2eXQ5MjF4X3JlZ19vcHNfbWRpbztcbjQ5OTU6XHRcdHByaXYtXHUwMDNlcmVnX2N0eCA9IG1kaW87XG40OTk2Olx0XG40OTk3Olx0XHRmb3IgKHNpemVfdCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShwcml2LVx1MDAzZXBvcnRzKTsgaSYjNDM7JiM0MzspIHtcbjQ5OTg6XHRcdFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbaV07XG40OTk5Olx0XG41MDAwOlx0XHRcdHBwLVx1MDAzZWluZGV4ID0gaTtcbjUwMDE6XHRcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHAtXHUwMDNlbWliX3JlYWQsIHl0OTIxeF9wb2xsX21pYik7XG41MDAyOlx0XHR9XG41MDAzOlx0XG41MDA0Olx0XHRkcyA9IFx1MDAyNnByaXYtXHUwMDNlZHM7XG41MDA1Olx0XHRkcy1cdTAwM2VkZXYgPSBkZXY7XG41MDA2Olx0XHRkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjUwMDc6XHRcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNnl0OTIxeF9kc2Ffc3dpdGNoX29wcztcbjUwMDg6XHRcdGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNnl0OTIxeF9waHlsaW5rX21hY19vcHM7XG41MDA5Olx0XG41MDEwOlx0XHRtZGlvZGV2X3NldF9kcnZkYXRhKG1kaW9kZXYsIHByaXYpO1xuNTAxMTpcdFxuNTAxMjpcdFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuNTAxMzpcdH1cbjUwMTQ6XHRcbjUwMTU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB5dDkyMXhfb2ZfbWF0Y2hbXSA9IHtcbjUwMTY6XHRcdHtcbjUwMTc6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttb3RvcmNvbW0seXQ5MjE1XCYjMzQ7LFxuNTAxODpcdFx0XHQuZGF0YSA9IFx1MDAyNnl0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtZVDkyMVhdLFxuNTAxOTpcdFx0fSxcbjUwMjA6XHRcdHsgLyogc2VudGluZWwgKi8gfSxcbjUwMjE6XHR9O1xuNTAyMjpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHl0OTIxeF9vZl9tYXRjaCk7XG41MDIzOlx0XG41MDI0Olx0c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciB5dDkyMXhfbWRpb19kcml2ZXIgPSB7XG41MDI1Olx0XHQucHJvYmUgPSB5dDkyMXhfbWRpb19wcm9iZSxcbjUwMjY6XHRcdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXG41MDI3Olx0XHQuc2h1dGRvd24gPSB5dDkyMXhfbWRpb19zaHV0ZG93bixcbjUwMjg6XHRcdC5tZGlvZHJ2LmRyaXZlciA9IHtcbjUwMjk6XHRcdFx0Lm5hbWUgPSBZVDkyMVhfTkFNRSxcbjUwMzA6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0geXQ5MjF4X29mX21hdGNoLFxuNTAzMTpcdFx0fSxcbjUwMzI6XHR9O1xuNTAzMzpcdFxuNTAzNDpcdG1kaW9fbW9kdWxlX2RyaXZlcih5dDkyMXhfbWRpb19kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg2MAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWXQ5MjF4IE1ESU8gUHJvYmUgUHJvY2VzcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHl0OTIxeF9tZGlvX3Byb2JlYCByZWdpc3RlcnMgdGhlIHN3aXRjaCB3aXRoIGBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKWAuIFRoYXQmIzM5O3MgdGhlIGV4cGVjdGVkIGluaXRpYWxpemF0aW9uLiBBaCwgYnV0ICpkdXJpbmcqIGBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKWAsIHRoZSBEU0Egc3dpdGNoIHNldHVwIGFjdHVhbGx5ICpydW5zKiBgZHMtJmd0O29wcy0mZ3Q7c2V0dXAoZHMpYC4gQW5kIHRoYXTigKYgdGhhdCBjYWxscyBgeXQ5MjF4X2RzYV9zZXR1cChkcylgLiBTbywgdGhhdCYjMzk7cyB3aGVyZSB0aGUgKnJlYWwqIGNvbmZpZ3VyYXRpb24gaGFwcGVucy4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgeXQ5MjF4X2RzYV9zZXR1cGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIHN3aXRjaCYjMzk7cyBpbml0aWFsaXphdGlvbiBpcyBnb2luZyB0byBiZS4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDc5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0NzkwOlx0XHRkcy1cdTAwM2VudW1fbGFnX2lkcyA9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbnVtX2xhZ19pZHM7XG40NzkxOlx0XHRkcy1cdTAwM2VudW1fcG9ydHMgPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZW1heF9wb3J0cztcbjQ3OTI6XHR9XG40NzkzOlx0XG40Nzk0Olx0c3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbjQ3OTU6XHR7XG40Nzk2Olx0XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG40Nzk3Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7XG40Nzk4Olx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LVx1MDAzZW9mX25vZGU7XG40Nzk5Olx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkO1xuNDgwMDpcdFx0aW50IHJlcztcbjQ4MDE6XHRcbjQ4MDI6XHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG40ODAzOlx0XHRyZXMgPSB5dDkyMXhfY2hpcF9yZXNldChwcml2KTtcbjQ4MDQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbjQ4MDU6XHRcbjQ4MDY6XHRcdGlmIChyZXMpXG40ODA3Olx0XHRcdHJldHVybiByZXM7XG40ODA4Olx0XG40ODA5Olx0XHQvKiBSZWdpc3RlciB0aGUgaW50ZXJuYWwgbWRpbyBidXMuIE5vZGVzIGZvciBpbnRlcm5hbCBwb3J0cyBzaG91bGQgaGF2ZVxuNDgxMDpcdFx0ICogcHJvcGVyIHBoeS1oYW5kbGUgcG9pbnRpbmcgdG8gdGhlaXIgUEhZcy4gTm90IGVuYWJsaW5nIHRoZSBpbnRlcm5hbFxuNDgxMTpcdFx0ICogYnVzIGlzIHBvc3NpYmxlLCB0aG91Z2ggcHJldHR5IHdpcmVkLCBpZiBpbnRlcm5hbCBwb3J0cyBhcmUgbm90IHVzZWQuXG40ODEyOlx0XHQgKi9cbjQ4MTM6XHRcdGNoaWxkID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFwmIzM0O21kaW9cJiMzNDspO1xuNDgxNDpcdFx0aWYgKGNoaWxkKSB7XG40ODE1Olx0XHRcdHJlcyA9IHl0OTIxeF9tYnVzX2ludF9pbml0KHByaXYsIGNoaWxkKTtcbjQ4MTY6XHRcdFx0b2Zfbm9kZV9wdXQoY2hpbGQpO1xuNDgxNzpcdFx0XHRpZiAocmVzKVxuNDgxODpcdFx0XHRcdHJldHVybiByZXM7XG40ODE5Olx0XHR9XG40ODIwOlx0XG40ODIxOlx0XHQvKiBFeHRlcm5hbCBtZGlvIGJ1cyBpcyBvcHRpb25hbCAqL1xuNDgyMjpcdFx0Y2hpbGQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXCYjMzQ7bWRpby1leHRlcm5hbFwmIzM0Oyk7XG40ODIzOlx0XHRpZiAoY2hpbGQpIHtcbjQ4MjQ6XHRcdFx0cmVzID0geXQ5MjF4X21idXNfZXh0X2luaXQocHJpdiwgY2hpbGQpO1xuNDgyNTpcdFx0XHRvZl9ub2RlX3B1dChjaGlsZCk7XG40ODI2Olx0XHRcdGlmIChyZXMpXG40ODI3Olx0XHRcdFx0cmV0dXJuIHJlcztcbjQ4Mjg6XHRcbjQ4Mjk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O1VudGVzdGVkIGV4dGVybmFsIG1kaW8gYnVzXFxuXCYjMzQ7KTtcbjQ4MzA6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG40ODMxOlx0XHR9XG40ODMyOlx0XG40ODMzOlx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuNDgzNDpcdFx0cmVzID0geXQ5MjF4X2NoaXBfc2V0dXAocHJpdik7XG40ODM1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG40ODM2Olx0XG40ODM3Olx0XHRpZiAocmVzKVxuNDgzODpcdFx0XHRyZXR1cm4gcmVzO1xuNDgzOTpcdFxuNDg0MDpcdFx0eXQ5Mnh4X3JlZ2lzdGVyX3N3aXRjaChkcyk7XG40ODQxOlx0XG40ODQyOlx0XHRyZXR1cm4gMDtcbjQ4NDM6XHR9XG40ODQ0Olx0XG40ODQ1Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgeXQ5MjF4X3BoeWxpbmtfbWFjX29wcyA9IHtcbjQ4NDY6XHRcdC5tYWNfbGlua19kb3duXHQ9IHl0OTIxeF9waHlsaW5rX21hY19saW5rX2Rvd24sXG40ODQ3Olx0XHQubWFjX2xpbmtfdXBcdD0geXQ5MjF4X3BoeWxpbmtfbWFjX2xpbmtfdXAsXG40ODQ4Olx0XHQubWFjX2NvbmZpZ1x0PSB5dDkyMXhfcGh5bGlua19tYWNfY29uZmlnLFxuNDg0OTpcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MTA2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBORVRfRFNBX1lUOTIxWCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYE5FVF9EU0FfWVQ5MjFYYCDigJMgc3BlY2lmaWNhbGx5LCB0aGlzIGB5dDkyMXhgIGRyaXZlciDigJMgaXMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gYSBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gSSBrbm93IHRoYXQgYHl0OTIxeGAgcmVsaWVzIG9uIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIGFuZCBpdHMgTURJTyBpbnRlcmZhY2UgKGBtZGlvX2RyaXZlcmApLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogRG9lcyBRRU1VIGV2ZW4gKmVtdWxhdGUqIHRoYXQgc3BlY2lmaWMgY2hpcCwgb3IgaXRzIE1ESU8gcmVnaXN0ZXJzPyBBbmQgdGhlIHF1aWNrIGFuc3dlciBpcyAqbm8qLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIFlUOTIxNS4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIHJ1bGVzLiBJIG5lZWQgdG8gc2VlIGlmIHRoaXMgY2hhbmdlIGZhbGxzIHVuZGVyIG9uZSBvZiB0aGUgZXhlbXB0aW9ucyBmb3IgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UuJiMzNDsgVGhlIHJlbGV2YW50IG9uZXMgYXJlIG1vZGlmaWNhdGlvbnMgdG8gdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoYXQgaW5jbHVkZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUuIFRoaXMgKmNvdWxkKiBhcHBseS4gQnV0IEkgaGF2ZSB0byBiZSBzdXJlLgoKTXkgbmV4dCBsaW5lIG9mIHRob3VnaHQgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgTURJTyBldGhlcm5ldCBzd2l0Y2ggZHJpdmVycyAoRFNBIGRyaXZlcnMpIGluIGdlbmVyYWwgKmNhbiogYmUgcmVhY2hlZCBvciBpbnN0YW50aWF0ZWQgaW4gUUVNVS9HQ0UuIFRoaXMgaXMgdGhlIGtleSBxdWVzdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgc29tZSBraW5kIG9mIG1vY2sgb3IgZW11bGF0aW9uIGZvciBtZGlvL0RTQSwgb3IgaWYgdGhlc2UgYXJlIHVuaXZlcnNhbGx5IGNvbnNpZGVyZWQgaGFyZHdhcmUgZHJpdmVycyB0aGF0IGFyZSB1bnJlYWNoYWJsZS4KCkkgbmVlZCB0byBsb29rIGZvciBleGFtcGxlcyBpbiB0aGUga2VybmVsIGl0c2VsZiwgb3IgaW4gc3l6a2FsbGVyLiBBcmUgRFNBIGRyaXZlcnMgdGVzdGVkLCBvciBmdXp6ZWQgb24gUUVNVT8gQW5kIHRoZW4uLi4gKmFoYSEqIFRoZXJlJiMzOTtzIGBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY2AuIFRoYXQmIzM5O3MgYSBzb2Z0d2FyZSBsb29wYmFjayBEU0Egc3dpdGNoLCAqc3BlY2lmaWNhbGx5KiBkZXNpZ25lZCBmb3IgdGVzdGluZyB0aGUgRFNBIGNvcmUhIFRoYXQgaW1wbGllcyBpdCYjMzk7cyAqcG9zc2libGUqIHRvIHRlc3QgYW5kLCB0aGVyZWZvcmUsIGZ1enogc29tZSBEU0EgZHJpdmVycyBpbiBRRU1VLiBUaGlzIGlzIHByb21pc2luZy4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZHNhX2xvb3AuY2AgdG8gc2VlIGhvdyBpdCB3b3JrcyBhbmQgZGV0ZXJtaW5lIGlmIGBORVRfRFNBX1lUOTIxWGAgY2FuIGJlIGFkYXB0ZWQgb3IgdGVzdGVkIGluIGEgc2ltaWxhciBmYXNoaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcdFx0XHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcdCYjNDM7PSBkc2FfbG9vcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjcyCgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDg1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYGRzYV9sb29wLmNgIGFuZCBgeXQ5MjF4LmNgIGp1bXBzIG91dCBhdCBtZS4gVGhlIGBkc2FfbG9vcC5jYCBmaWxlIGlzIGNsZWFybHkgc2V0IHVwIGZvciAqbW9jayogTURJTyBkZXZpY2UgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byB0ZXN0IHRoZSBEU0EgY29yZS4gSXQgZG9lc24mIzM5O3QgcmVxdWlyZSBhbnkgYWN0dWFsIGhhcmR3YXJlLiBPbiB0aGUgb3RoZXIgaGFuZCwgYHl0OTIxeC5jYCBpcyBhICpoYXJkd2FyZS1zcGVjaWZpYyogZHJpdmVyIGZvciB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIHNlZSB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGhpdCB0aGUgYFlUOTIxWF9DSElQX0lEYCByZWdpc3RlciwgYW5kIG5lZWRzIHRvIGJlIGFibGUgdG8gcmVhZCBiYWNrIHRoZSBgWVQ5MjFYX0NISVBfSURfTUFKT1JgIGZpZWxkIHRvIGlkZW50aWZ5IHRoZSBjaGlwJiMzOTtzIHNlcmllcy4gVGhlIHByb2JlIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGZhaWwgd2l0aG91dCB0aGF0IHBoeXNpY2FsIGNoaXAgcHJlc2VudCwgbWF0Y2hpbmcgdGhlIGRldmljZSB3aXRoIHRoZSAmIzM0O21vdG9yY29tbSx5dDkyMTUmIzM0OyBPRiBjb21wYXRpYmxlIHN0cmluZy4KCk5vdywgY29uc2lkZXJpbmcgdGhlIGluc3RydWN0aW9ucy4gVGhlIGNyaXRpY2FsIGJpdCBpczogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBmb2N1cyBvbi4gU2luY2UgdGhlIGB5dDkyMXhgIGRyaXZlciAqZXhwbGljaXRseSogcmVxdWlyZXMgdGhlIHJlYWwgaGFyZHdhcmUsIGFuZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhhdCBzcGVjaWZpYyBNb3RvcmNvbW0gY2hpcCwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gYW55IHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBkcml2ZXIgZXhwZWN0cyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gcmVzcG9uZCB0byBNRElPIHJlZ2lzdGVyIHJlYWRzLCBhIHJlcXVpcmVtZW50IHRoYXQgY2Fubm90IGJlIHNhdGlzZmllZCBpbiBhIFFFTVUgaW5zdGFuY2UuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2s6IHRoZSBkaWZmIGlzICpvbmx5KiBtb2RpZnlpbmcgYGRyaXZlcnMvbmV0L2RzYS95dDkyMXguY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhgLiBUaGUgZHJpdmVyIGlzIGRlZmluaXRlbHkgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1L1lUOTIxOCBoYXJkd2FyZS4gSSBhbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoaXMgaGFyZHdhcmUgYXZhaWxhYmxlIGZvciBzdGFuZGFyZCBRRU1VIC8gR0NFIGluc3RhbmNlcywgbWFraW5nIHRoaXMgcGF0Y2ggY2xlYXJseSBmYWxsIHVuZGVyIHRoZSBleGNsdXNpb24gY3JpdGVyaWEuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBJJiMzOTtsbCBzZXQgdGhlIG90aGVyIHBhcmFtZXRlcnMgYXBwcm9wcmlhdGVseS4gVGhlIGZpbmFsIHJlYXNvbmluZyB0byBiZSByZWNvcmRlZCBzaG91bGQgY29uY2lzZWx5IGV4cGxhaW4gdGhhdCBgeXQ5MjF4YCBpcyBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIHRoZSBNb3RvcmNvbW0gaGFyZHdhcmUgYW5kIGlzIG5vdCBlbXVsYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTW90b3Jjb21tIFlUOTIxNS9ZVDkyMTggRFNBIGV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS95dDkyMXguYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIHN3aXRjaCBoYXJkd2FyZSBjb25uZWN0ZWQgb3ZlciBNRElPIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1vdG9yY29tbSBZVDkyMTUvWVQ5MjE4IERTQSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBzd2l0Y2ggaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgTURJTyB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDoyOS45NDE5ODI1ODdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgxMTUwODg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNb3RvcmNvbW0gWVQ5MjE1L1lUOTIxOCBEU0EgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgc3dpdGNoIGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIE1ESU8gd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDoyOS45NDE5OTM0MzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDc5NDUyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMzFlNTc3NjhmYTI5YzJkZmVhZTY5ZTgxNWMyNjY1YTA2NzI3ZGUzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMTU6MDQ6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jIGIvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jXFxuaW5kZXggMTU5YjE2NjA2ZjZjYS4uOWJlYTQyYjYxODQ3ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcXG5AQCAtMTUxLDYgKzE1MSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X2luZm8geXQ5MjF4X2luZm9zW10gPSB7XFxuIFxcdHt9XFxuIH07XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXTtcXG4rXFxuICNkZWZpbmUgWVQ5MjFYX05BTUVcXHRcXFwieXQ5MjF4XFxcIlxcbiBcXG4gI2RlZmluZSBZVDkyMVhfVklEX1VOV0FSRVxcdDQwOTVcXG5AQCAtNTYzLDcgKzU2NSw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxcbiBcXHR1MTYgdmFsO1xcbiBcXHRpbnQgcmVzO1xcbiBcXG4tXFx0aWYgKHBvcnQgXFx1MDAzZT0gWVQ5MjFYX1BPUlRfTlVNKVxcbitcXHRpZiAocG9ydCBcXHUwMDNlPSBwcml2LVxcdTAwM2VzZXJpZXNfaW5mby1cXHUwMDNlbWF4X3BvcnRzKVxcbiBcXHRcXHRyZXR1cm4gVTE2X01BWDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5AQCAtNTgxLDcgKzU4Myw3IEBAIHl0OTIxeF9tYnVzX2ludF93cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcsIHUxNiBkYXRhKVxcbiBcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbiBcXHRpbnQgcmVzO1xcbiBcXG4tXFx0aWYgKHBvcnQgXFx1MDAzZT0gWVQ5MjFYX1BPUlRfTlVNKVxcbitcXHRpZiAocG9ydCBcXHUwMDNlPSBwcml2LVxcdTAwM2VzZXJpZXNfaW5mby1cXHUwMDNlbWF4X3BvcnRzKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5AQCAtNTk2LDYgKzU5OCw3IEBAIHl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbiBcXHRzdHJ1Y3QgbWlpX2J1cyAqbWJ1cztcXG4rXFx0dTMyIG1heF9wb3J0O1xcbiBcXHRpbnQgcmVzO1xcbiBcXG4gXFx0bWJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpO1xcbkBAIC02MDgsNyArNjExLDggQEAgeXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG4gXFx0bWJ1cy1cXHUwMDNlcmVhZCA9IHl0OTIxeF9tYnVzX2ludF9yZWFkO1xcbiBcXHRtYnVzLVxcdTAwM2V3cml0ZSA9IHl0OTIxeF9tYnVzX2ludF93cml0ZTtcXG4gXFx0bWJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbi1cXHRtYnVzLVxcdTAwM2VwaHlfbWFzayA9ICh1MzIpfkdFTk1BU0soWVQ5MjFYX1BPUlRfTlVNIC0gMSwgMCk7XFxuK1xcdG1heF9wb3J0ID0gcHJpdi1cXHUwMDNlc2VyaWVzX2luZm8tXFx1MDAzZW1heF9wb3J0cztcXG4rXFx0bWJ1cy1cXHUwMDNlcGh5X21hc2sgPSAodTMyKX5HRU5NQVNLKG1heF9wb3J0IC0gMSwgMCk7XFxuIFxcbiBcXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbiBcXHRpZiAocmVzKVxcbkBAIC00NDMwLDggKzQ0MzQsMzYgQEAgc3RhdGljIGludCB5dDkyMXhfZWRhdGFfcmVhZChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHU4IGFkZHIsIHU4ICp2YWxwKVxcbiBcXHRyZXR1cm4geXQ5MjF4X2VkYXRhX3JlYWRfY29udChwcml2LCBhZGRyLCB2YWxwKTtcXG4gfVxcbiBcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8geXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW10gPSB7XFxuK1xcdFtZVDkyMVhdID0ge1xcbitcXHRcXHQuY2hpcF9tb2RlID0gWVQ5MjFYLFxcbitcXHRcXHQubWF4X3BvcnRzID0gWVQ5MjFYX1BPUlRfTlVNLFxcbitcXHRcXHQubnVtX2xhZ19pZHMgPSBZVDkyMVhfTEFHX05VTSxcXG4rXFx0XFx0LmFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwLFxcbitcXHRcXHQuYWdlaW5nX3RpbWVfbWF4ID0gVTE2X01BWCAqIDUwMDAsXFxuK1xcdFxcdC5kc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWwgPSB0cnVlLFxcbitcXHRcXHQuYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlLFxcbitcXHR9LFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnl0OTJ4eF9zZXJpZXNfbG9va3VwX2luZm8odTMyIG1ham9yKVxcbit7XFxuK1xcdGVudW0gY2hpcF9tb2RlIG1vZGUgPSBZVF9NQVg7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0aWYgKG1ham9yID09IFlUOTIxNV9NQUpPUiB8fCBtYWpvciA9PSBZVDkyMThfTUFKT1IpXFxuK1xcdFxcdG1vZGUgPSBZVDkyMVg7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5dDkyeHhfc2VyaWVzX2luZm9fdGFibGUpOyArK2kpXFxuK1xcdFxcdGlmICh5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbaV0uY2hpcF9tb2RlID09IG1vZGUpXFxuK1xcdFxcdFxcdHJldHVybiBcXHUwMDI2eXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldO1xcbitcXG4rXFx0cmV0dXJuIE5VTEw7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgeXQ5MjF4X2NoaXBfZGV0ZWN0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG4ge1xcbitcXHRjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpzZXJpZXNfaW5mbztcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbiBcXHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X2luZm8gKmluZm87XFxuIFxcdHU4IGV4dG1vZGU7XFxuQEAgLTQ0NDcsNiArNDQ3OSwxMSBAQCBzdGF0aWMgaW50IHl0OTIxeF9jaGlwX2RldGVjdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXFxuIFxcbiBcXHRtYWpvciA9IEZJRUxEX0dFVChZVDkyMVhfQ0hJUF9JRF9NQUpPUiwgY2hpcGlkKTtcXG4gXFxuK1xcdHNlcmllc19pbmZvID0geXQ5Mnh4X3Nlcmllc19sb29rdXBfaW5mbyhtYWpvcik7XFxuK1xcdGlmICghc2VyaWVzX2luZm8pXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHRwcml2LVxcdTAwM2VzZXJpZXNfaW5mbyA9IHNlcmllc19pbmZvO1xcbitcXG4gXFx0Zm9yIChpbmZvID0geXQ5MjF4X2luZm9zOyBpbmZvLVxcdTAwM2VuYW1lOyBpbmZvKyspXFxuIFxcdFxcdGlmIChpbmZvLVxcdTAwM2VtYWpvciA9PSBtYWpvcilcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTQ3NDAsNiArNDc3NywyMCBAQCBzdGF0aWMgaW50IHl0OTIxeF9jaGlwX3NldHVwKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHl0OTJ4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbit7XFxuK1xcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG4rXFxuK1xcdGRzLVxcdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9XFxuK1xcdFxcdHByaXYtXFx1MDAzZXNlcmllc19pbmZvLVxcdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydDtcXG4rXFx0ZHMtXFx1MDAzZWRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9XFxuK1xcdFxcdHByaXYtXFx1MDAzZXNlcmllc19pbmZvLVxcdTAwM2Vkc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWw7XFxuK1xcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9taW4gPSBwcml2LVxcdTAwM2VzZXJpZXNfaW5mby1cXHUwMDNlYWdlaW5nX3RpbWVfbWluO1xcbitcXHRkcy1cXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gcHJpdi1cXHUwMDNlc2VyaWVzX2luZm8tXFx1MDAzZWFnZWluZ190aW1lX21heDtcXG4rXFx0ZHMtXFx1MDAzZW51bV9sYWdfaWRzID0gcHJpdi1cXHUwMDNlc2VyaWVzX2luZm8tXFx1MDAzZW51bV9sYWdfaWRzO1xcbitcXHRkcy1cXHUwMDNlbnVtX3BvcnRzID0gcHJpdi1cXHUwMDNlc2VyaWVzX2luZm8tXFx1MDAzZW1heF9wb3J0cztcXG4rfVxcbitcXG4gc3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4ge1xcbiBcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuQEAgLTQ3ODYsNiArNDgzNyw4IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIFxcdGlmIChyZXMpXFxuIFxcdFxcdHJldHVybiByZXM7XFxuIFxcbitcXHR5dDkyeHhfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC00OTEzLDExICs0OTY2LDE2IEBAIHN0YXRpYyB2b2lkIHl0OTIxeF9tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuIFxcbiBzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4ge1xcbitcXHRjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpjb21wYXRfaW5mbyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuIFxcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87XFxuIFxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdjtcXG4gXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbiBcXG4rXFx0Y29tcGF0X2luZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG4rXFx0aWYgKCFjb21wYXRfaW5mbylcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICghcHJpdilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuQEAgLTQ5MzIsNiArNDk5MCw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbiBcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlc2VyaWVzX2luZm8gPSBjb21wYXRfaW5mbztcXG4gXFx0cHJpdi1cXHUwMDNlcmVnX29wcyA9IFxcdTAwMjZ5dDkyMXhfcmVnX29wc19tZGlvO1xcbiBcXHRwcml2LVxcdTAwM2VyZWdfY3R4ID0gbWRpbztcXG4gXFxuQEAgLTQ5NDQsMTUgKzUwMDMsOSBAQCBzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4gXFxuIFxcdGRzID0gXFx1MDAyNnByaXYtXFx1MDAzZWRzO1xcbiBcXHRkcy1cXHUwMDNlZGV2ID0gZGV2O1xcbi1cXHRkcy1cXHUwMDNlYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlO1xcbi1cXHRkcy1cXHUwMDNlZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsID0gdHJ1ZTtcXG4gXFx0ZHMtXFx1MDAzZXByaXYgPSBwcml2O1xcbiBcXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNnl0OTIxeF9kc2Ffc3dpdGNoX29wcztcXG4tXFx0ZHMtXFx1MDAzZWFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwO1xcbi1cXHRkcy1cXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gVTE2X01BWCAqIDUwMDA7XFxuIFxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2eXQ5MjF4X3BoeWxpbmtfbWFjX29wcztcXG4tXFx0ZHMtXFx1MDAzZW51bV9sYWdfaWRzID0gWVQ5MjFYX0xBR19OVU07XFxuLVxcdGRzLVxcdTAwM2VudW1fcG9ydHMgPSBZVDkyMVhfUE9SVF9OVU07XFxuIFxcbiBcXHRtZGlvZGV2X3NldF9kcnZkYXRhKG1kaW9kZXYsIHByaXYpO1xcbiBcXG5AQCAtNDk2MCw4ICs1MDEzLDExIEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB5dDkyMXhfb2ZfbWF0Y2hbXSA9IHtcXG4tXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtb3RvcmNvbW0seXQ5MjE1XFxcIiB9LFxcbi1cXHR7fVxcbitcXHR7XFxuK1xcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1vdG9yY29tbSx5dDkyMTVcXFwiLFxcbitcXHRcXHQuZGF0YSA9IFxcdTAwMjZ5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbWVQ5MjFYXSxcXG4rXFx0fSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9LFxcbiB9O1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oIGIvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXFxuaW5kZXggNWYzYjk5ZTE4OWM0MS4uY2M4MjIzZWE1ZjI5OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhcXG5AQCAtOTQ1LDkgKzk0NSwyNSBAQCBzdHJ1Y3QgeXQ5MjF4X3JlZ19vcHMge1xcbiBcXHRpbnQgKCp3cml0ZSkodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyIHZhbCk7XFxuIH07XFxuIFxcbitlbnVtIGNoaXBfbW9kZSB7XFxuK1xcdFlUOTIxWCxcXG4rXFx0WVRfTUFYLFxcbit9O1xcbitcXG4rc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB7XFxuK1xcdGVudW0gY2hpcF9tb2RlIGNoaXBfbW9kZTtcXG4rXFx0dW5zaWduZWQgaW50IG1heF9wb3J0cztcXG4rXFx0dW5zaWduZWQgaW50IG51bV9sYWdfaWRzO1xcbitcXHR1bnNpZ25lZCBpbnQgYWdlaW5nX3RpbWVfbWluO1xcbitcXHR1bnNpZ25lZCBpbnQgYWdlaW5nX3RpbWVfbWF4O1xcbitcXHR1MzIgZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsO1xcbitcXHR1MzIgYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQ7XFxuK307XFxuK1xcbiBzdHJ1Y3QgeXQ5MjF4X3ByaXYge1xcbiBcXHRzdHJ1Y3QgZHNhX3N3aXRjaCBkcztcXG4gXFxuK1xcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvO1xcbiBcXHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X2luZm8gKmluZm87XFxuIFxcdHVuc2lnbmVkIGludCBtZXRlcl9zbG90X25zO1xcbiBcXHR1bnNpZ25lZCBpbnQgcG9ydF9zaGFwZV9zbG90X25zO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDozMS40OTA4NTg3NzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU2MjYyNTE5NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTW90b3Jjb21tIFlUOTIxNS9ZVDkyMTggRFNBIGV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS95dDkyMXguYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIHN3aXRjaCBoYXJkd2FyZSBjb25uZWN0ZWQgb3ZlciBNRElPIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjMxZTU3NzY4ZmEyOWMyZGZlYWU2OWU4MTVjMjY2NWEwNjcyN2RlM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTU6MDQ6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcbmluZGV4IDE1OWIxNjYwNmY2Y2EuLjliZWE0MmI2MTg0N2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS95dDkyMXguY1xuQEAgLTE1MSw2ICsxNTEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvIHl0OTIxeF9pbmZvc1tdID0ge1xuIFx0e31cbiB9O1xuIFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvIHl0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtdO1xuK1xuICNkZWZpbmUgWVQ5MjFYX05BTUVcdFwieXQ5MjF4XCJcbiBcbiAjZGVmaW5lIFlUOTIxWF9WSURfVU5XQVJFXHQ0MDk1XG5AQCAtNTYzLDcgKzU2NSw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxuIFx0dTE2IHZhbDtcbiBcdGludCByZXM7XG4gXG4tXHRpZiAocG9ydCBcdTAwM2U9IFlUOTIxWF9QT1JUX05VTSlcbitcdGlmIChwb3J0IFx1MDAzZT0gcHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2VtYXhfcG9ydHMpXG4gXHRcdHJldHVybiBVMTZfTUFYO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbkBAIC01ODEsNyArNTgzLDcgQEAgeXQ5MjF4X21idXNfaW50X3dyaXRlKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IGRhdGEpXG4gXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG4gXHRpbnQgcmVzO1xuIFxuLVx0aWYgKHBvcnQgXHUwMDNlPSBZVDkyMVhfUE9SVF9OVU0pXG4rXHRpZiAocG9ydCBcdTAwM2U9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbWF4X3BvcnRzKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5AQCAtNTk2LDYgKzU5OCw3IEBAIHl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuIFx0c3RydWN0IG1paV9idXMgKm1idXM7XG4rXHR1MzIgbWF4X3BvcnQ7XG4gXHRpbnQgcmVzO1xuIFxuIFx0bWJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpO1xuQEAgLTYwOCw3ICs2MTEsOCBAQCB5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuIFx0bWJ1cy1cdTAwM2VyZWFkID0geXQ5MjF4X21idXNfaW50X3JlYWQ7XG4gXHRtYnVzLVx1MDAzZXdyaXRlID0geXQ5MjF4X21idXNfaW50X3dyaXRlO1xuIFx0bWJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4tXHRtYnVzLVx1MDAzZXBoeV9tYXNrID0gKHUzMil+R0VOTUFTSyhZVDkyMVhfUE9SVF9OVU0gLSAxLCAwKTtcbitcdG1heF9wb3J0ID0gcHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2VtYXhfcG9ydHM7XG4rXHRtYnVzLVx1MDAzZXBoeV9tYXNrID0gKHUzMil+R0VOTUFTSyhtYXhfcG9ydCAtIDEsIDApO1xuIFxuIFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbiBcdGlmIChyZXMpXG5AQCAtNDQzMCw4ICs0NDM0LDM2IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2VkYXRhX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1OCBhZGRyLCB1OCAqdmFscClcbiBcdHJldHVybiB5dDkyMXhfZWRhdGFfcmVhZF9jb250KHByaXYsIGFkZHIsIHZhbHApO1xuIH1cbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXSA9IHtcbitcdFtZVDkyMVhdID0ge1xuK1x0XHQuY2hpcF9tb2RlID0gWVQ5MjFYLFxuK1x0XHQubWF4X3BvcnRzID0gWVQ5MjFYX1BPUlRfTlVNLFxuK1x0XHQubnVtX2xhZ19pZHMgPSBZVDkyMVhfTEFHX05VTSxcbitcdFx0LmFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwLFxuK1x0XHQuYWdlaW5nX3RpbWVfbWF4ID0gVTE2X01BWCAqIDUwMDAsXG4rXHRcdC5kc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWwgPSB0cnVlLFxuK1x0XHQuYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlLFxuK1x0fSxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICp5dDkyeHhfc2VyaWVzX2xvb2t1cF9pbmZvKHUzMiBtYWpvcilcbit7XG4rXHRlbnVtIGNoaXBfbW9kZSBtb2RlID0gWVRfTUFYO1xuK1x0aW50IGk7XG4rXG4rXHRpZiAobWFqb3IgPT0gWVQ5MjE1X01BSk9SIHx8IG1ham9yID09IFlUOTIxOF9NQUpPUilcbitcdFx0bW9kZSA9IFlUOTIxWDtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlKTsgKytpKVxuK1x0XHRpZiAoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldLmNoaXBfbW9kZSA9PSBtb2RlKVxuK1x0XHRcdHJldHVybiBcdTAwMjZ5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbaV07XG4rXG4rXHRyZXR1cm4gTlVMTDtcbit9XG4rXG4gc3RhdGljIGludCB5dDkyMXhfY2hpcF9kZXRlY3Qoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxuIHtcbitcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvO1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuIFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvICppbmZvO1xuIFx0dTggZXh0bW9kZTtcbkBAIC00NDQ3LDYgKzQ0NzksMTEgQEAgc3RhdGljIGludCB5dDkyMXhfY2hpcF9kZXRlY3Qoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxuIFxuIFx0bWFqb3IgPSBGSUVMRF9HRVQoWVQ5MjFYX0NISVBfSURfTUFKT1IsIGNoaXBpZCk7XG4gXG4rXHRzZXJpZXNfaW5mbyA9IHl0OTJ4eF9zZXJpZXNfbG9va3VwX2luZm8obWFqb3IpO1xuK1x0aWYgKCFzZXJpZXNfaW5mbylcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHRwcml2LVx1MDAzZXNlcmllc19pbmZvID0gc2VyaWVzX2luZm87XG4rXG4gXHRmb3IgKGluZm8gPSB5dDkyMXhfaW5mb3M7IGluZm8tXHUwMDNlbmFtZTsgaW5mbysrKVxuIFx0XHRpZiAoaW5mby1cdTAwM2VtYWpvciA9PSBtYWpvcilcbiBcdFx0XHRicmVhaztcbkBAIC00NzQwLDYgKzQ3NzcsMjAgQEAgc3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgeXQ5Mnh4X3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4re1xuK1x0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuK1xuK1x0ZHMtXHUwMDNlYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPVxuK1x0XHRwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0O1xuK1x0ZHMtXHUwMDNlZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsID1cbitcdFx0cHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2Vkc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWw7XG4rXHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9taW4gPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFnZWluZ190aW1lX21pbjtcbitcdGRzLVx1MDAzZWFnZWluZ190aW1lX21heCA9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlYWdlaW5nX3RpbWVfbWF4O1xuK1x0ZHMtXHUwMDNlbnVtX2xhZ19pZHMgPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZW51bV9sYWdfaWRzO1xuK1x0ZHMtXHUwMDNlbnVtX3BvcnRzID0gcHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2VtYXhfcG9ydHM7XG4rfVxuK1xuIHN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4ge1xuIFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuQEAgLTQ3ODYsNiArNDgzNyw4IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHRpZiAocmVzKVxuIFx0XHRyZXR1cm4gcmVzO1xuIFxuK1x0eXQ5Mnh4X3JlZ2lzdGVyX3N3aXRjaChkcyk7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNDkxMywxMSArNDk2NiwxNiBAQCBzdGF0aWMgdm9pZCB5dDkyMXhfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFxuIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIHtcbitcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcbiBcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuIFx0c3RydWN0IHl0OTIxeF9yZWdfbWRpbyAqbWRpbztcbiBcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdjtcbiBcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbiBcbitcdGNvbXBhdF9pbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG4rXHRpZiAoIWNvbXBhdF9pbmZvKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcHJpdilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5AQCAtNDkzMiw2ICs0OTkwLDcgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuIFxuK1x0cHJpdi1cdTAwM2VzZXJpZXNfaW5mbyA9IGNvbXBhdF9pbmZvO1xuIFx0cHJpdi1cdTAwM2VyZWdfb3BzID0gXHUwMDI2eXQ5MjF4X3JlZ19vcHNfbWRpbztcbiBcdHByaXYtXHUwMDNlcmVnX2N0eCA9IG1kaW87XG4gXG5AQCAtNDk0NCwxNSArNTAwMyw5IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFxuIFx0ZHMgPSBcdTAwMjZwcml2LVx1MDAzZWRzO1xuIFx0ZHMtXHUwMDNlZGV2ID0gZGV2O1xuLVx0ZHMtXHUwMDNlYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlO1xuLVx0ZHMtXHUwMDNlZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsID0gdHJ1ZTtcbiBcdGRzLVx1MDAzZXByaXYgPSBwcml2O1xuIFx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2eXQ5MjF4X2RzYV9zd2l0Y2hfb3BzO1xuLVx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWluID0gMSAqIDUwMDA7XG4tXHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9tYXggPSBVMTZfTUFYICogNTAwMDtcbiBcdGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNnl0OTIxeF9waHlsaW5rX21hY19vcHM7XG4tXHRkcy1cdTAwM2VudW1fbGFnX2lkcyA9IFlUOTIxWF9MQUdfTlVNO1xuLVx0ZHMtXHUwMDNlbnVtX3BvcnRzID0gWVQ5MjFYX1BPUlRfTlVNO1xuIFxuIFx0bWRpb2Rldl9zZXRfZHJ2ZGF0YShtZGlvZGV2LCBwcml2KTtcbiBcbkBAIC00OTYwLDggKzUwMTMsMTEgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwibW90b3Jjb21tLHl0OTIxNVwiIH0sXG4tXHR7fVxuK1x0e1xuK1x0XHQuY29tcGF0aWJsZSA9IFwibW90b3Jjb21tLHl0OTIxNVwiLFxuK1x0XHQuZGF0YSA9IFx1MDAyNnl0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtZVDkyMVhdLFxuK1x0fSxcbitcdHsgLyogc2VudGluZWwgKi8gfSxcbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHl0OTIxeF9vZl9tYXRjaCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oIGIvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXG5pbmRleCA1ZjNiOTllMTg5YzQxLi5jYzgyMjNlYTVmMjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhcbkBAIC05NDUsOSArOTQ1LDI1IEBAIHN0cnVjdCB5dDkyMXhfcmVnX29wcyB7XG4gXHRpbnQgKCp3cml0ZSkodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyIHZhbCk7XG4gfTtcbiBcbitlbnVtIGNoaXBfbW9kZSB7XG4rXHRZVDkyMVgsXG4rXHRZVF9NQVgsXG4rfTtcbitcbitzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvIHtcbitcdGVudW0gY2hpcF9tb2RlIGNoaXBfbW9kZTtcbitcdHVuc2lnbmVkIGludCBtYXhfcG9ydHM7XG4rXHR1bnNpZ25lZCBpbnQgbnVtX2xhZ19pZHM7XG4rXHR1bnNpZ25lZCBpbnQgYWdlaW5nX3RpbWVfbWluO1xuK1x0dW5zaWduZWQgaW50IGFnZWluZ190aW1lX21heDtcbitcdHUzMiBkc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWw7XG4rXHR1MzIgYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQ7XG4rfTtcbitcbiBzdHJ1Y3QgeXQ5MjF4X3ByaXYge1xuIFx0c3RydWN0IGRzYV9zd2l0Y2ggZHM7XG4gXG4rXHRjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpzZXJpZXNfaW5mbztcbiBcdGNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyAqaW5mbztcbiBcdHVuc2lnbmVkIGludCBtZXRlcl9zbG90X25zO1xuIFx0dW5zaWduZWQgaW50IHBvcnRfc2hhcGVfc2xvdF9ucztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE1OjA0OjMxLjQ5MDg2MTA3MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyNzE1ODAyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGhpcyBwYXRjaOKAlGlzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIHNvbWUgZnV6emluZyBsb3ZlPyBGaXJzdCB0aGluZ3MgZmlyc3QsIHdoYXQncyBiZWluZyB0b3VjaGVkPyBBaCwgYGRyaXZlcnMvbmV0L2RzYS95dDkyMXguY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhgLiBSaWdodCwgdGhhdCBtZWFucyBhIG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGB5dDkyMXhgLiBOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHdoYXQgKmtpbmQqIG9mIGRyaXZlciBpcyB0aGlzLCByZWFsbHk/IElzIGl0IGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIsIGEgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24sIGEgZGF0YSBwYXRoIGhhbmRsZXI/IEkgbmVlZCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIHRvIGp1ZGdlIGl0cyBmdXp6aW5nIHBvdGVudGlhbCBlZmZlY3RpdmVseS4gVGltZSB0byBjb25zdWx0IHRoZSBLY29uZmlnIGFuZCBkaXZlIGludG8gdGhlIGRyaXZlciBkZXRhaWxzLiBHcmVwcGluZyBvciBhIHF1aWNrIGByZWFkLWZpbGVgIHdpbGwgaG9wZWZ1bGx5IGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBJJ20gbG9va2luZyBmb3IgZW50cnkgcG9pbnRzLCBkYXRhIGZsb3dzLCBhbmQgcG90ZW50aWFsIGFyZWFzIHN1c2NlcHRpYmxlIHRvIHVuZXhwZWN0ZWQgaW5wdXRzIG9yIG1pc2NvbmZpZ3VyYXRpb25zLiBUaGVuIEkgY2FuIGRldGVybWluZSBpZiB0aGlzIGlzIHdvcnRoIHRoZSBlZmZvcnQgdG8gc2V0IHVwIGZ1enppbmcgYW5kIGhvdyB0byBiZXN0IGFwcHJvYWNoIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODU3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDozNC43NjI0NDYzOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NDkzNDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ5dDkyMXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI2NiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19ORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWF9TUEkpICs9IHZpdGVzc2UtdnNjNzN4eC1zcGkub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9ZVDkyMVgpICs9IHl0OTIxeC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTE5LW9iai15XFx0XFx0XFx0XFx0Kz0gYjUzL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI4LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyOTojaW5jbHVkZSBcXFwieXQ5MjF4LmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMwLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMTpzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzItXFx0dW5zaWduZWQgaW50IHNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzktXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwOi8qIE11c3QgYWdyZWUgd2l0aCB5dDkyMXhfbWliXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQxLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDUtICovXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHl0OTIxeF9taWJfZGVzY3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDctXFx0TUlCX0RFU0MoMSwgWVQ5MjFYX01JQl9EQVRBX1JYX0JST0FEQ0FTVCwgTlVMTCksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTctXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk4OnN0cnVjdCB5dDkyMXhfaW5mbyB7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk5LVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA1LVxcdHUxNiBpbnRlcm5hbF9tYXNrO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDY6XFx0LyogVE9ETzogc2VlIGNvbW1lbnRzIGluIHl0OTIxeF9kc2FfcGh5bGlua19nZXRfY2FwcygpICovXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNy1cXHR1MTYgZXh0ZXJuYWxfbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMTQtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjExNTpzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvIHl0OTIxeF9pbmZvc1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMTYtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTE1ND1zdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTU1LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxNTY6I2RlZmluZSBZVDkyMVhfTkFNRVxcdFxcXCJ5dDkyMXhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNzAtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjE3MTpzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTcyLVxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTg3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxODg6I2RlZmluZSB0b195dDkyMXhfcHJpdihfZHMpIGNvbnRhaW5lcl9vZl9jb25zdChfZHMsIHN0cnVjdCB5dDkyMXhfcHJpdiwgZHMpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE4OS0jZGVmaW5lIHRvX2RldmljZShwcml2KSAoKHByaXYpLVxcdTAwM2Vkcy5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTk2PXN0YXRpYyB1MzIgZXRoYWRkcl9sbzJfdG9fdTMyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjAwLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMDE6c3RhdGljIGludCB5dDkyMXhfcmVnX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbHApXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIwMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjA3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMDg6c3RhdGljIGludCB5dDkyMXhfcmVnX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0yMTU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMTY6eXQ5MjF4X3JlZ193YWl0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiAqdmFscClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yMjEtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjIyMjpcXHRyZXQgPSByZWFkX3BvbGxfdGltZW91dCh5dDkyMXhfcmVnX3JlYWQsIHJlcyxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjIzLVxcdFxcdFxcdFxcdHJlcyB8fCAodmFsIFxcdTAwMjYgbWFzaykgPT0gKnZhbHAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MjM1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjM2Onl0OTIxeF9yZWdfdXBkYXRlX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNDEtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjI0MjpcXHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcXHUwMDI2dik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI0My1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1MS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjUyOlxcdHJldHVybiB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIHJlZywgdSk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1My19XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1NC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjU1OnN0YXRpYyBpbnQgeXQ5MjF4X3JlZ19zZXRfYml0cyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNTYte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNTc6XFx0cmV0dXJuIHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgcmVnLCAwLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjU4LX1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjU5LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNjA6c3RhdGljIGludCB5dDkyMXhfcmVnX2NsZWFyX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjYxLXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjYyOlxcdHJldHVybiB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIHJlZywgbWFzaywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2My19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MjY1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjY2Onl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaywgYm9vbCBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2Ny17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjI2ODpcXHRyZXR1cm4geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCByZWcsIG1hc2ssICFzZXQgPyAwIDogbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2OS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mjg3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjg4Onl0OTIxeF9yZWdzX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbHMsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI4OS1cXHRcXHQgdW5zaWduZWQgaW50IG51bV9yZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI5My1cXHRmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSBcXHUwMDNjIG51bV9yZWdzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjk0OlxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCByZWcgKyA0ICogaSwgXFx1MDAyNnZhbHNbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yOTUtXFx0XFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zMDI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMDM6eXQ5MjF4X3JlZ3Nfd3JpdGUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKnZhbHMsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMwNC1cXHRcXHQgIHVuc2lnbmVkIGludCBudW1fcmVncylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMDgtXFx0Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgXFx1MDAzYyBudW1fcmVnczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjMwOTpcXHRcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIHJlZyArIDQgKiBpLCB2YWxzW2ldKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzEwLVxcdFxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MzE3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzE4Onl0OTIxeF9yZWdzX3VwZGF0ZV9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcyxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzE5LVxcdFxcdFxcdGNvbnN0IHUzMiAqdmFscywgdW5zaWduZWQgaW50IG51bV9yZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMyNi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzI3OlxcdHJlcyA9IHl0OTIxeF9yZWdzX3JlYWQocHJpdiwgcmVnLCB2cywgbnVtX3JlZ3MpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMjgtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNDQtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM0NTpcXHRyZXR1cm4geXQ5MjF4X3JlZ3Nfd3JpdGUocHJpdiwgcmVnLCB2cywgbnVtX3JlZ3MpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNDYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTM0OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM0OTp5dDkyMXhfcmVnc19jbGVhcl9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcyxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzUwLVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3JlZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzU3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozNTg6XFx0cmVzID0geXQ5MjF4X3JlZ3NfcmVhZChwcml2LCByZWcsIHZzLCBudW1fcmVncyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM1OS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM3NC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzc1OlxcdHJldHVybiB5dDkyMXhfcmVnc193cml0ZShwcml2LCByZWcsIHZzLCBudW1fcmVncyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM3Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mzc4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzc5Onl0OTIxeF9yZWc2NF93cml0ZShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIGNvbnN0IHUzMiAqdmFscylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzgwLXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzgxOlxcdHJldHVybiB5dDkyMXhfcmVnc193cml0ZShwcml2LCByZWcsIHZhbHMsIDIpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODItfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTM4ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM4NTp5dDkyMXhfcmVnNjRfdXBkYXRlX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKm1hc2tzLFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODYtXFx0XFx0XFx0IGNvbnN0IHUzMiAqdmFscylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg3LXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg4OlxcdHJldHVybiB5dDkyMXhfcmVnc191cGRhdGVfYml0cyhwcml2LCByZWcsIG1hc2tzLCB2YWxzLCAyKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zOTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTI6eXQ5MjF4X3JlZzY0X2NsZWFyX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKm1hc2tzKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTMte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTQ6XFx0cmV0dXJuIHl0OTIxeF9yZWdzX2NsZWFyX2JpdHMocHJpdiwgcmVnLCBtYXNrcywgMik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM5NS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mzk3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzk4Onl0OTIxeF9yZWc5Nl93cml0ZShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIGNvbnN0IHUzMiAqdmFscylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzk5LXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDAwOlxcdHJldHVybiB5dDkyMXhfcmVnc193cml0ZShwcml2LCByZWcsIHZhbHMsIDMpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00MDEtfVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00MDItXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwMzpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb19yZWFkKHZvaWQgKmNvbnRleHQsIHUzMiByZWcsIHUzMiAqdmFscClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDA0LXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDA1OlxcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW8gPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00MDYtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NDMtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ0NDpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb193cml0ZSh2b2lkICpjb250ZXh0LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NDUte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0NDY6XFx0c3RydWN0IHl0OTIxeF9yZWdfbWRpbyAqbWRpbyA9IGNvbnRleHQ7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ0Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gbWRpby1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ3OS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDgwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X3JlZ19vcHMgeXQ5MjF4X3JlZ19vcHNfbWRpbyA9IHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDgxOlxcdC5yZWFkID0geXQ5MjF4X3JlZ19tZGlvX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4MjpcXHQud3JpdGUgPSB5dDkyMXhfcmVnX21kaW9fd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ4My19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDg3OnN0YXRpYyBpbnQgeXQ5MjF4X2ludGlmX3dhaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5MC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDkxOlxcdHJldHVybiB5dDkyMXhfcmVnX3dhaXQocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDkyLVxcdFxcdFxcdCAgICAgICBcXHUwMDI2dmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00OTU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0OTY6eXQ5MjF4X2ludGlmX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZywgdTE2ICp2YWxwKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUwMy1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTA0OlxcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MDUtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTEtXFx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfUkVBRDtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTEyOlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTMtXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTE0LVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxNTpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTYtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTgtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxOTpcXHRyZXMgPSB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTIwLVxcdGlmIChyZXMpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUyMS1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MjI6XFx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ESU4sIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MjMtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01MzQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MzU6eXQ5MjF4X2ludGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTQwLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NDE6XFx0cmVzID0geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU0Mi1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU0OC1cXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTQ5OlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTAtXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTUxLVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1MjpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ET1VULCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTMtXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTU0LVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1NTpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTYtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTgtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1OTpcXHRyZXR1cm4geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU2MC19XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU2MS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTYyOnN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NjMte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NjQ6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gbWJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTY1LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTcxLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTcyOlxcdHJlcyA9IHl0OTIxeF9pbnRpZl9yZWFkKHByaXYsIHBvcnQsIHJlZywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU3My1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01ODA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1ODE6eXQ5MjF4X21idXNfaW50X3dyaXRlKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU4Mi17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU4MzpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODQtXFx0aW50IHJlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODktXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1OTA6XFx0cmVzID0geXQ5MjF4X2ludGlmX3dyaXRlKHByaXYsIHBvcnQsIHJlZywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU5MS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01OTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1OTc6eXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTAtXFx0bWJ1cy1cXHUwMDNlcHJpdiA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYxMTpcXHRtYnVzLVxcdTAwM2VyZWFkID0geXQ5MjF4X21idXNfaW50X3JlYWQ7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYxMjpcXHRtYnVzLVxcdTAwM2V3cml0ZSA9IHl0OTIxeF9tYnVzX2ludF93cml0ZTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjEzLVxcdG1idXMtXFx1MDAzZXBhcmVudCA9IGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MjUtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYyNjpzdGF0aWMgaW50IHl0OTIxeF9leHRpZl93YWl0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MjktXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYzMDpcXHRyZXR1cm4geXQ5MjF4X3JlZ193YWl0KHByaXYsIFlUOTIxWF9FWFRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYzMS1cXHRcXHRcXHQgICAgICAgXFx1MDAyNnZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NjM0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjM1Onl0OTIxeF9leHRpZl9yZWFkKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiAqdmFscClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NDItXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY0MzpcXHRyZXMgPSB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjQ0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjUwLVxcdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1RZUEVfQzIyIHwgWVQ5MjFYX01CVVNfQ1RSTF9SRUFEO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2NTE6XFx0cmVzID0geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCBZVDkyMVhfRVhUX01CVVNfQ1RSTCwgbWFzaywgY3RybCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY1Mi1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTMtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjU0OlxcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY1NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY1Ny1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjU4OlxcdHJlcyA9IHl0OTIxeF9leHRpZl93YWl0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTktXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjYwLVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY2MTpcXHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX0RJTiwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY2Mi1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTY3Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY3NDp5dDkyMXhfZXh0aWZfd3JpdGUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NzktXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY4MDpcXHRyZXMgPSB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjgxLVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjg3LVxcdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1RZUEVfQzIyIHwgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Njg4OlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02ODktXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjkwLVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5MTpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ET1VULCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02OTItXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjkzLVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5NDpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02OTUtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02OTctXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5ODpcXHRyZXR1cm4geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY5OS19XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcwMC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzAxOnN0YXRpYyBpbnQgeXQ5MjF4X21idXNfZXh0X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MDIte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MDM6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gbWJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA0LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA3LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzA4OlxcdHJlcyA9IHl0OTIxeF9leHRpZl9yZWFkKHByaXYsIHBvcnQsIHJlZywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcwOS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MTc6eXQ5MjF4X21idXNfZXh0X3dyaXRlKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcxOC17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjcxOTpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MjAtXFx0aW50IHJlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MjItXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MjM6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3dyaXRlKHByaXYsIHBvcnQsIHJlZywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcyNC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03Mjk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MzA6eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDMtXFx0LyogVE9ETzogYzQ1PyAqL1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NDQ6XFx0bWJ1cy1cXHUwMDNlcmVhZCA9IHl0OTIxeF9tYnVzX2V4dF9yZWFkO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NDU6XFx0bWJ1cy1cXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19leHRfd3JpdGU7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0Ni1cXHRtYnVzLVxcdTAwM2VwYXJlbnQgPSBkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzU3LS8qIFJlYWQgYW5kIGhhbmRsZSBvdmVyZmxvdyBvZiAzMmJpdCBNSUJzLiBNSUIgYnVmZmVyIG11c3QgYmUgemVyb2VkIGJlZm9yZS4gKi9cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzU4OnN0YXRpYyBpbnQgeXQ5MjF4X3JlYWRfbWliKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc1OS17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc2MDpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NjEtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NjI6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NjMtXFx0aW50IHJlcyA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2NC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzY1OlxcdC8qIFJlYWRpbmcgb2YgeXQ5MjF4X3BvcnQ6Om1pYiBpcyBub3QgcHJvdGVjdGVkIGJ5IGEgbG9jayBhbmQgaXQncyB2YWluXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2Ni1cXHQgKiB0byBrZWVwIGl0cyBjb25zaXN0ZW5jeSwgc2luY2Ugd2UgaGF2ZSB0byByZWFkIHJlZ2lzdGVycyBvbmUgYnkgb25lXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzcyLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NzM6XFx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Nzc0OlxcdFxcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzc1LVxcdFxcdHUzMiByZWcgPSBZVDkyMVhfTUlCbl9EQVRBMChwb3J0KSArIGRlc2MtXFx1MDAzZW9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NzktXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc4MDpcXHRcXHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcXHUwMDI2dmFsMCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc4MS1cXHRcXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc5Mi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzkzOlxcdFxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCByZWcgKyA0LCBcXHUwMDI2dmFsMSk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc5NC1cXHRcXHRcXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTgxNi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODE3OnN0YXRpYyB2b2lkIHl0OTIxeF9wb2xsX21pYihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTgxOC17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgxOTpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gY29udGFpbmVyX29mX2NvbnN0KHdvcmssIHN0cnVjdCB5dDkyMXhfcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODIwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBtaWJfcmVhZC53b3JrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODIxOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9ICh2b2lkICopKHBwIC0gcHAtXFx1MDAzZWluZGV4KSAtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgyMjpcXHRcXHRcXHRcXHQgICBvZmZzZXRvZihzdHJ1Y3QgeXQ5MjF4X3ByaXYsIHBvcnRzKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODIzLVxcdHVuc2lnbmVkIGxvbmcgZGVsYXkgPSBZVDkyMVhfU1RBVFNfSU5URVJWQUxfSklGRklFUztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04MjctXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4Mjg6XFx0cmVzID0geXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04MjktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9ODM2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgzNzp5dDkyMXhfZHNhX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJpbmdzZXQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTgzOC1cXHRcXHQgICAgICAgdWludDhfdCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NDItXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg0MzpcXHRmb3IgKHNpemVfdCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NDQ6XFx0XFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFxcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NDUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9ODUxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg1Mjp5dDkyMXhfZHNhX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NTMte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTQ6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTU6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODU2OlxcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcXHUwMDI2cHAtXFx1MDAzZW1pYjtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODU3LVxcdHNpemVfdCBqO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg1OS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2MDpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg2MS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NjMtXFx0aiA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2NDpcXHRmb3IgKHNpemVfdCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NjU6XFx0XFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFxcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODc0LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NzU6c3RhdGljIGludCB5dDkyMXhfZHNhX2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg4MS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODgyOlxcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg4MzpcXHRcXHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjICpkZXNjID0gXFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz04OTI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODkzOnl0OTIxeF9kc2FfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODk0LVxcdFxcdFxcdCAgICAgc3RydWN0IGV0aHRvb2xfZXRoX21hY19zdGF0cyAqbWFjX3N0YXRzKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04OTUte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4OTY6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4OTc6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODk4OlxcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcXHUwMDI2cHAtXFx1MDAzZW1pYjtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODk5LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05MDAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5MDE6XFx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05MDItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9OTI4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkyOTp5dDkyMXhfZHNhX2dldF9ldGhfY3RybF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05MzAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZXRoX2N0cmxfc3RhdHMgKmN0cmxfc3RhdHMpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzMS17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzMjpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzMzpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5MzQ6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05MzUtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzNi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzNzpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzOC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NDQtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk0NTpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfcm1vbl9oaXN0X3JhbmdlIHl0OTIxeF9ybW9uX3Jhbmdlc1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NDYtXFx0eyAwLCA2NCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTk1Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5NTc6eXQ5MjF4X2RzYV9nZXRfcm1vbl9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NTgtXFx0XFx0XFx0ICBzdHJ1Y3QgZXRodG9vbF9ybW9uX3N0YXRzICpybW9uX3N0YXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk2MC17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2MTpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2MjpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5NjM6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NjQtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk2NS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2NjpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk2Ny1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTY4LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5Njk6XFx0KnJhbmdlcyA9IHl0OTIxeF9ybW9uX3JhbmdlcztcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTk5Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5OTQ6eXQ5MjF4X2RzYV9nZXRfc3RhdHM2NChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05OTUtXFx0XFx0ICAgICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk5Ni17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk5NzpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk5ODpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5OTk6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTEwMjk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzMDp5dDkyMXhfZHNhX2dldF9wYXVzZV9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDMxLVxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX3BhdXNlX3N0YXRzICpwYXVzZV9zdGF0cylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTAzMi17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwMzM6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDM0OlxcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcXHUwMDI2cHJpdi1cXHUwMDNlcG9ydHNbcG9ydF07XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwMzU6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDM2LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDM3LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzODpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwMzktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTA0NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwNDY6eXQ5MjF4X3NldF9lZWUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZSlcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA1OS1cXHRpZiAoISFuZXdfbWFzayAhPSAhIXByaXYtXFx1MDAzZWVlZV9wb3J0c19tYXNrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwNjA6XFx0XFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfUE9OX1NUUkFQX0ZVTkMsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNjEtXFx0XFx0XFx0XFx0XFx0ICAgICBZVDkyMVhfUE9OX1NUUkFQX0VFRSwgISFuZXdfbWFzayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA2My1cXHRcXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDY0OlxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX1BPTl9TVFJBUF9WQUwsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNjUtXFx0XFx0XFx0XFx0XFx0ICAgICBZVDkyMVhfUE9OX1NUUkFQX0VFRSwgISFuZXdfbWFzayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA3Mi1cXHQvKiBFbmFibGUgLyBkaXNhYmxlIHBvcnQgRUVFICovXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwNzM6XFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfRUVFX0NUUkwsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzQtXFx0XFx0XFx0XFx0ICAgICBZVDkyMVhfRUVFX0NUUkxfRU5uKHBvcnQpLCBlbmFibGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzYtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA3NzpcXHRyZXMgPSB5dDkyMXhfcmVnX3RvZ2dsZV9iaXRzKHByaXYsIFlUOTIxWF9FRUVuX1ZBTChwb3J0KSxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgIFlUOTIxWF9FRUVfVkFMX0RBVEEsIGVuYWJsZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTA4NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwODY6eXQ5MjF4X2RzYV9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDg3LXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA4ODpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwODktXFx0aW50IHJlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDkxLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA5MjpcXHRyZXMgPSB5dDkyMXhfc2V0X2VlZShwcml2LCBwb3J0LCBlKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA5My1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDk3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDk4OnN0YXRpYyBpbnQgeXQ5MjF4X210dV9mZXRjaChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDozNi4yNTczODgyOTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzcyOTM2NTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBORVRfRFNBX1lUOTIxWCBLY29uZmlnKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBLY29uZmlnYCBmb3IgYE5FVF9EU0FfWVQ5MjFYYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoYXQncyBiZWluZyBjb25maWd1cmVkIGhlcmUuIElzIGl0IGEgbW9kdWxlLCBidWlsdC1pbiwgb3IgcGFydCBvZiBhIGxhcmdlciwgbW9yZSBjb21wbGV4IHN1YnN5c3RlbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgc3dpdGNoIG9yIHNvbWV0aGluZyBtb3JlIGludm9sdmVkLCBtYXliZSB3aXRoIE1BQ3NlYyBvciBWTEFOIGZlYXR1cmVzIGJha2VkIGluP1xuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLiBJJ2xsIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHBhdGhzLiBJZiB0aGVyZSBhcmUgbmVzdGVkIGBpZmAgc3RhdGVtZW50cywgSSBuZWVkIHRvIGJyZWFrIGRvd24gdGhlIGxvZ2ljIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbiBvZiBlYWNoIGNob2ljZS4gSSB3aWxsIGhhdmUgYSBsb29rIGF0IGFueSBoZWxwIHRleHRzOyB0aGV5IHVzdWFsbHkgcHJvdmlkZSBjb250ZXh0LiBBcmUgdGhlcmUgYW55IGRlZmF1bHQgc2V0dGluZ3M/IEFuZCBob3cgYXJlIHRoZXNlIGRlZmF1bHRzIGNob3NlbiwgaXMgaXQgYSB2YWx1ZSBkZWZpbmVkIGVsc2V3aGVyZSwgb3IgYmFzZWQgb24gaGFyZHdhcmU/XG5cbkZ1cnRoZXJtb3JlLCBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHRyaXN0YXRlIHNldHRpbmdzLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBtb2R1bGUgY2hvaWNlcy4gVGhpcyBpcyB3aGVyZSB0aGUgZGVjaXNpb25zIGNhbiBnZXQgbW9yZSBjb21wbGV4LCBlc3BlY2lhbGx5IGR1cmluZyBidWlsZCB0aW1lLiBBbHNvLCBpcyB0aGlzIG5ldywgb3IgYW4gZXhpc3RpbmcgZGV2aWNlPyBJZiBpdCdzIGV4aXN0aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBjdXJyZW50IGtlcm5lbCBpbmZyYXN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NDUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDo0MS4wMzAzMjc5NzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMDg3MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9EU0FfWVQ5MjFYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0xNjM9Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYX1BMQVRGT1JNXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1lUOTIxWFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19ORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWF9TUEkpICs9IHZpdGVzc2UtdnNjNzN4eC1zcGkub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9ZVDkyMVgpICs9IHl0OTIxeC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTE5LW9iai15XFx0XFx0XFx0XFx0Kz0gYjUzL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDo0MS4xOTE0MjA2MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzQyNjA0ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgS2NvbmZpZzpcblxuKipEZWVwIERpdmUgaW50byBgTkVUX0RTQV9ZVDkyMVhgIEtjb25maWcqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHNlZWluZyBgTkVUX0RTQV9ZVDkyMVhgLCB3aGljaCB0ZWxscyBtZSB3ZSdyZSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBZVDkyMVggRXRoZXJuZXQgc3dpdGNoIGRyaXZlciB3aXRoaW4gdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgKERTQSkgZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBXaGF0IGhhcmR3YXJlIGRvZXMgdGhpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0P1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgRFNBIGVjb3N5c3RlbS4gSXMgaXQgYSBjb3JlIGRyaXZlciwgYSBwbGF0Zm9ybS1zcGVjaWZpYyB2YXJpYW50LCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD9cblxuSSdtIHNjYW5uaW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IGBkZXBlbmRzIG9uYCwgYHNlbGVjdGAsIGBoZWxwYCwgYW5kIGFueSBgZGVmYXVsdGAgdmFsdWVzIHRoYXQgbWlnaHQgZ2l2ZSBtZSBhIGNsdWUgYWJvdXQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kIGNvbW1vbiBjb25maWd1cmF0aW9ucy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgdGhlIHVuZGVybHlpbmcgUEhZIChQaHlzaWNhbCBMYXllcikgaXQgc3VwcG9ydHMsIHRoZSBDUFUgaW50ZXJmYWNlIChTUEksIEkyQywgTURJTyksIGFuZCBhbnkgc3BlY2lmaWMgYm9hcmQgb3IgY2hpcHNldCBjb25zdHJhaW50cy4gQXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBjb25mbGljdHMgdGhhdCBtaWdodCBjb21lIGludG8gcGxheSB3aXRoIG90aGVyIERTQSBkcml2ZXJzIG9yIG5ldHdvcmsgY29tcG9uZW50cz9cblxuSSdtIGFsc28gY3VyaW91cyBhYm91dCBhbnkgc3ltYm9scyB0aGlzIGRyaXZlciBtaWdodCBgc2VsZWN0YC4gV2hhdCBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIHB1bGxlZCBpbj8gRG9lcyBpdCBpbnZvbHZlIHNwZWNpZmljIERTQSBmZWF0dXJlcyBsaWtlIFZMQU4gdGFnZ2luZywgcG9ydCBtaXJyb3JpbmcsIG9yIHRyYWZmaWMgc2hhcGluZz8gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYGludGAgdmFyaWFibGVzLlxuXG5GdXJ0aGVybW9yZSwgbGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvYnZpb3VzKiBwaXRmYWxscywgb3IgZ290Y2hhcywgd2hpY2ggc2hvdWxkIGJlIGhpZ2hsaWdodGVkIHdpdGggYGhlbHBgIHRleHQuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluIGFuZCB1bnJhdmVsIHRoZSBLY29uZmlnIHB1enpsZS4gTGV04oCZcyBzZWUgd2hhdCBnb29kaWVzIGl0IGhvbGRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTMxNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE1OjA0OjQ4LjUzNDAzMDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzExNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTY1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY1OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuIDE2NjpcXHRcXHRzZWxlY3QgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcXG4gMTY3OlxcdFxcdGhlbHBcXG4gMTY4OlxcdFxcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBWaXRlc3NlIFZTQzczODUsIFZTQzczODgsIFZTQzczOTVcXG4gMTY5OlxcdFxcdCAgYW5kIFZTQzczOTggU3BhclggaW50ZWdyYXRlZCBldGhlcm5ldCBzd2l0Y2hlcywgY29ubmVjdGVkIG92ZXJcXG4gMTcwOlxcdFxcdCAgYSBDUFUtYXR0YWNoZWQgYWRkcmVzcyBidXMgYW5kIHdvcmsgaW4gbWVtb3J5LW1hcHBlZCBJL08gbW9kZS5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIE5FVF9EU0FfWVQ5MjFYXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcbiAxNzQ6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX1lUOTIxWFxcbiAxNzU6XFx0XFx0c2VsZWN0IE5FVF9JRUVFODAyMVFfSEVMUEVSUyBpZiBEQ0JcXG4gMTc2OlxcdFxcdGhlbHBcXG4gMTc3OlxcdFxcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaFxcbiAxNzg6XFx0XFx0ICBjaGlwLlxcbiAxNzk6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDo0OC41MzQxNjQzOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MzA1MjgzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgeXQ5MjF4YCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGB5dDkyMXhgIGlzIGJyb3VnaHQgdG8gbGlmZSBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGhvdyBpdCdzICp1c2VkKi4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IGlzIHRoaXMgc29tZXRoaW5nIHRoYXQgbmVlZHMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhIHNvZnR3YXJlIGFic3RyYWN0aW9uPyBJIGNhbid0IGFzc3VtZSBhbnl0aGluZyBhdCB0aGlzIHBvaW50LlxuXG5OZXh0LCBJJ20gZ29pbmcgdG8gd2FudCB0byBrbm93IGhvdyBpdCBpZGVudGlmaWVzIGl0c2VsZiB0byB0aGUgc3lzdGVtLiBXaGVyZSBkb2VzIGl0IGZpdCBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmU/IElzIGl0IHVzaW5nIE1ESU8sIHBsYXRmb3JtLXNwZWNpZmljIHJlc291cmNlcywgb3Igb25lIG9mIHRoZSBtb3JlIGNvbW1vbiBpbnRlcmZhY2VzIGxpa2UgU1BJIG9yIEkyQz8gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl04oCZcyBjb21tdW5pY2F0aW5nIGFuZCByZWdpc3RlcmluZyBpdHNlbGYgd2l0aCB0aGUgY29udHJvbGxpbmcgZGV2aWNlcy5cblxuTXkgdXN1YWwgc3RhcnRpbmcgcG9pbnQsIHdoZW4gSSdtIHJldmVyc2UtZW5naW5lZXJpbmcgb3IgY29taW5nIHVwIHRvIHNwZWVkIG9uIGEgbW9kdWxlIGxpa2UgdGhpcywgaXMgdG8gaW1tZWRpYXRlbHkgbG9vayBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLiBMZXQncyBzZWUgaWYgdGhlIGVuZCBvZiBgeXQ5MjF4LmNgIGdpdmVzIG1lIGFueSBpbnNpZ2h0cyBpbnRvIGhvdyBpdCdzIGluaXRpYWxpemVkIGFuZCBicm91Z2h0IGludG8gc2VydmljZS4gT2Z0ZW4sIHRoZSBlbmQgb2YgdGhlIGZpbGUgaG9sZHMgdGhlIGtleSBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDA4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDo1NC4wNjQ2OTYzMThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMzQ5NDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9tZGlvX2RyaXZlcnxtb2R1bGVfaW5pdHxwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ5MzU9c3RhdGljIHZvaWQgeXQ5MjF4X21kaW9fcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTY2LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0OTY3OnN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01MDI0PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgeXQ5MjF4X21kaW9fZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MDI1OlxcdC5wcm9iZSA9IHl0OTIxeF9tZGlvX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MDI2LVxcdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE1OjA0OjU0LjE0NjA1OTg0N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4ODc2NzA2OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGB5dDkyMXhfbWRpb19kcml2ZXJgIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHl0OTIxeF9tZGlvX2RyaXZlcmAsIHdoaWNoLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgaXMgYW4gTURJTyBkcml2ZXIuIE15IGluaXRpYWwgcXVlc3Rpb24gaXM6IGNhbiBNRElPIGRldmljZXMgb3IgRFNBIHN3aXRjaGVzLCBpbiBnZW5lcmFsLCBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGUgbmVlZCBmb3IgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlPyBPciwgYXJlIHRoZXkgc3RyaWN0bHkgaGFyZHdhcmUtZGVwZW5kZW50PyBJIG5lZWQgdG8gZmlndXJlIHRoaXMgb3V0IGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcuXG5cbkxldCdzIHNlZSwgd2hhdCBkb2VzIHRoZSBwcm9tcHQgc2F5IHRvIGZpbHRlciBvdXQ/IE9rYXksIGl0IHdhbnRzIG1lIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaGFzIGNlcnRhaW4gY2hhcmFjdGVyaXN0aWNzLiBJdCBtZW50aW9ucyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLiBJdCBhbHNvIGxpc3RzIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciB0aGluZ3MgbGlrZSBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFVzLCB3aGljaCByZXF1aXJlIHJlYWwgUENJZSBoYXJkd2FyZS4gRmluYWxseSwgaXQgbm90ZXMgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgY2FsbGJhY2tzLlxuXG5TbywgdGhlIGNvcmUgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIHRoZSBNRElPIGJ1cyBhbmQgc3dpdGNoIGRyaXZlciBpbiBzdGFuZGFyZCBRRU1VIG9yIGV2ZW4gb3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudHMgdXNlZCBmb3Igc3l6a2FsbGVyLCBvciBHQ0U/IE9yIGlzIHRoaXMgaW1wb3NzaWJsZSB0byBpbnN0YW50aWF0ZSBhbiBNRElPIHN3aXRjaCBvciBhbiBNRElPIGRldmljZSB2aWEgRGV2aWNlIFRyZWUgaW4gdGhlc2Ugc2V0dGluZ3M/XG5cbkkgbmVlZCB0byBleHBsb3JlIGhvdyBNRElPIGRldmljZXMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZC4gQ2FuIHRoZXkgYmUgY3JlYXRlZCB1c2luZyB0aGluZ3MgbGlrZSBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIGBtb2NrLW1kaW9gLCBvciBldmVuIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIERUIG92ZXJsYXlzLCBldGMuPyBBcmUgdGhlcmUgdmlydHVhbCBvciBzb2Z0d2FyZSBtZXRob2RzPyBJIHNob3VsZCBkb3VibGUtY2hlY2sgb3RoZXIgRFNBIHN3aXRjaGVzIG9yIE1ESU8gZHJpdmVycyBpbiB0aGUgc3l6a2FsbGVyIGZ1enppbmcgb3Iga2VybmVsIGd1aWRlbGluZXMgdG8gbG9vayBmb3IgcGF0dGVybnMuXG5cblRoaW5raW5nIGFib3V0IERTQSwgaG93IGRvZXMgaXQgYWN0dWFsbHkgd29yaz8gRFNBIHN3aXRjaGVzIGFyZSAqdHlwaWNhbGx5KiBpbnN0YW50aWF0ZWQgdXNpbmcgRGV2aWNlIFRyZWUgKGBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGFgKSBvciBwbGF0Zm9ybSBkYXRhLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNhbiBiZSBlbXVsYXRlZC5cblxuTG9va2luZyBhdCBgeXQ5MjF4X21kaW9fcHJvYmVgLCBJIHNlZSBhIGNyaXRpY2FsIHNlY3Rpb246XG5cbmBgYGNcbmNvbXBhdF9pbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5pZiAoIWNvbXBhdF9pbmZvKVxuICAgIHJldHVybiAtRUlOVkFMO1xuLi4uXG5yZXMgPSB5dDkyMXhfY2hpcF9kZXRlY3QocHJpdik7XG5gYGBcblNvLCB0aGlzIGRyaXZlciBhcHBlYXJzIHRvIHJlbHkgb24gRGV2aWNlIFRyZWUhIEJ1dCBkb2VzIHRoZSBgeXQ5MjF4X2NoaXBfZGV0ZWN0YCBmdW5jdGlvbiByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGRldGVjdCBjaGlwcz8gSSBtdXN0IHJlYWQgdGhlIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2RzYS95dDkyMXguY2AsIHNwZWNpZmljYWxseSBmcm9tIGxpbmVzIDQ5NjUgdG8gNTAzNSBvZiBgeXQ5MjF4X21kaW9fcHJvYmVgIHRvIHVuZGVyc3RhbmQgdGhpcyBwcm9jZXNzIGFuZCBpZiBpdCBpcyBkZXBlbmRlbnQgb24gaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjMyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE1OjA1OjAzLjAyMjc3MjUwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTk1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ5NjUsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQ5NjU6XFx0fVxcbjQ5NjY6XFx0XFxuNDk2NzpcXHRzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG40OTY4OlxcdHtcXG40OTY5OlxcdFxcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcXG40OTcwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuNDk3MTpcXHRcXHRzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvICptZGlvO1xcbjQ5NzI6XFx0XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2O1xcbjQ5NzM6XFx0XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbjQ5NzQ6XFx0XFxuNDk3NTpcXHRcXHRjb21wYXRfaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbjQ5NzY6XFx0XFx0aWYgKCFjb21wYXRfaW5mbylcXG40OTc3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjQ5Nzg6XFx0XFxuNDk3OTpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuNDk4MDpcXHRcXHRpZiAoIXByaXYpXFxuNDk4MTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG40OTgyOlxcdFxcbjQ5ODM6XFx0XFx0bWRpbyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWRpbyksIEdGUF9LRVJORUwpO1xcbjQ5ODQ6XFx0XFx0aWYgKCFtZGlvKVxcbjQ5ODU6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuNDk4NjpcXHRcXG40OTg3OlxcdFxcdG1kaW8tXFx1MDAzZWJ1cyA9IG1kaW9kZXYtXFx1MDAzZWJ1cztcXG40OTg4OlxcdFxcdG1kaW8tXFx1MDAzZWFkZHIgPSBtZGlvZGV2LVxcdTAwM2VhZGRyO1xcbjQ5ODk6XFx0XFx0bWRpby1cXHUwMDNlc3dpdGNoaWQgPSAwO1xcbjQ5OTA6XFx0XFxuNDk5MTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuNDk5MjpcXHRcXG40OTkzOlxcdFxcdHByaXYtXFx1MDAzZXNlcmllc19pbmZvID0gY29tcGF0X2luZm87XFxuNDk5NDpcXHRcXHRwcml2LVxcdTAwM2VyZWdfb3BzID0gXFx1MDAyNnl0OTIxeF9yZWdfb3BzX21kaW87XFxuNDk5NTpcXHRcXHRwcml2LVxcdTAwM2VyZWdfY3R4ID0gbWRpbztcXG40OTk2OlxcdFxcbjQ5OTc6XFx0XFx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXFx1MDAzZXBvcnRzKTsgaSsrKSB7XFxuNDk5ODpcXHRcXHRcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW2ldO1xcbjQ5OTk6XFx0XFxuNTAwMDpcXHRcXHRcXHRwcC1cXHUwMDNlaW5kZXggPSBpO1xcbjUwMDE6XFx0XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnBwLVxcdTAwM2VtaWJfcmVhZCwgeXQ5MjF4X3BvbGxfbWliKTtcXG41MDAyOlxcdFxcdH1cXG41MDAzOlxcdFxcbjUwMDQ6XFx0XFx0ZHMgPSBcXHUwMDI2cHJpdi1cXHUwMDNlZHM7XFxuNTAwNTpcXHRcXHRkcy1cXHUwMDNlZGV2ID0gZGV2O1xcbjUwMDY6XFx0XFx0ZHMtXFx1MDAzZXByaXYgPSBwcml2O1xcbjUwMDc6XFx0XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZ5dDkyMXhfZHNhX3N3aXRjaF9vcHM7XFxuNTAwODpcXHRcXHRkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNnl0OTIxeF9waHlsaW5rX21hY19vcHM7XFxuNTAwOTpcXHRcXG41MDEwOlxcdFxcdG1kaW9kZXZfc2V0X2RydmRhdGEobWRpb2RldiwgcHJpdik7XFxuNTAxMTpcXHRcXG41MDEyOlxcdFxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG41MDEzOlxcdH1cXG41MDE0OlxcdFxcbjUwMTU6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeXQ5MjF4X29mX21hdGNoW10gPSB7XFxuNTAxNjpcXHRcXHR7XFxuNTAxNzpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtb3RvcmNvbW0seXQ5MjE1XFxcIixcXG41MDE4OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNnl0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtZVDkyMVhdLFxcbjUwMTk6XFx0XFx0fSxcXG41MDIwOlxcdFxcdHsgLyogc2VudGluZWwgKi8gfSxcXG41MDIxOlxcdH07XFxuNTAyMjpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpO1xcbjUwMjM6XFx0XFxuNTAyNDpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHl0OTIxeF9tZGlvX2RyaXZlciA9IHtcXG41MDI1OlxcdFxcdC5wcm9iZSA9IHl0OTIxeF9tZGlvX3Byb2JlLFxcbjUwMjY6XFx0XFx0LnJlbW92ZSA9IHl0OTIxeF9tZGlvX3JlbW92ZSxcXG41MDI3OlxcdFxcdC5zaHV0ZG93biA9IHl0OTIxeF9tZGlvX3NodXRkb3duLFxcbjUwMjg6XFx0XFx0Lm1kaW9kcnYuZHJpdmVyID0ge1xcbjUwMjk6XFx0XFx0XFx0Lm5hbWUgPSBZVDkyMVhfTkFNRSxcXG41MDMwOlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHl0OTIxeF9vZl9tYXRjaCxcXG41MDMxOlxcdFxcdH0sXFxuNTAzMjpcXHR9O1xcbjUwMzM6XFx0XFxuNTAzNDpcXHRtZGlvX21vZHVsZV9kcml2ZXIoeXQ5MjF4X21kaW9fZHJpdmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTU6MDU6MDMuMDIzMDc1MjkyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNTk2ODUzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBZdDkyMXggTURJTyBQcm9iZSBQcm9jZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHl0OTIxeF9tZGlvX3Byb2JlYCByZWdpc3RlcnMgdGhlIHN3aXRjaCB3aXRoIGBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKWAuIFRoYXQncyB0aGUgZXhwZWN0ZWQgaW5pdGlhbGl6YXRpb24uIEFoLCBidXQgKmR1cmluZyogYGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpYCwgdGhlIERTQSBzd2l0Y2ggc2V0dXAgYWN0dWFsbHkgKnJ1bnMqIGBkcy1cdTAwM2VvcHMtXHUwMDNlc2V0dXAoZHMpYC4gQW5kIHRoYXTigKYgdGhhdCBjYWxscyBgeXQ5MjF4X2RzYV9zZXR1cChkcylgLiBTbywgdGhhdCdzIHdoZXJlIHRoZSAqcmVhbCogY29uZmlndXJhdGlvbiBoYXBwZW5zLiBJJ20gZ29pbmcgdG8gd2FudCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHl0OTIxeF9kc2Ffc2V0dXBgLiBUaGF0J3Mgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIHN3aXRjaCdzIGluaXRpYWxpemF0aW9uIGlzIGdvaW5nIHRvIGJlLiBUaW1lIHRvIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg2MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTU6MDU6MDkuMTgyNzYyNzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS95dDkyMXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NzkwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0NzkwOlxcdFxcdGRzLVxcdTAwM2VudW1fbGFnX2lkcyA9IHByaXYtXFx1MDAzZXNlcmllc19pbmZvLVxcdTAwM2VudW1fbGFnX2lkcztcXG40NzkxOlxcdFxcdGRzLVxcdTAwM2VudW1fcG9ydHMgPSBwcml2LVxcdTAwM2VzZXJpZXNfaW5mby1cXHUwMDNlbWF4X3BvcnRzO1xcbjQ3OTI6XFx0fVxcbjQ3OTM6XFx0XFxuNDc5NDpcXHRzdGF0aWMgaW50IHl0OTIxeF9kc2Ffc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbjQ3OTU6XFx0e1xcbjQ3OTY6XFx0XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbjQ3OTc6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbjQ3OTg6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi1cXHUwMDNlb2Zfbm9kZTtcXG40Nzk5OlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQ7XFxuNDgwMDpcXHRcXHRpbnQgcmVzO1xcbjQ4MDE6XFx0XFxuNDgwMjpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuNDgwMzpcXHRcXHRyZXMgPSB5dDkyMXhfY2hpcF9yZXNldChwcml2KTtcXG40ODA0OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbjQ4MDU6XFx0XFxuNDgwNjpcXHRcXHRpZiAocmVzKVxcbjQ4MDc6XFx0XFx0XFx0cmV0dXJuIHJlcztcXG40ODA4OlxcdFxcbjQ4MDk6XFx0XFx0LyogUmVnaXN0ZXIgdGhlIGludGVybmFsIG1kaW8gYnVzLiBOb2RlcyBmb3IgaW50ZXJuYWwgcG9ydHMgc2hvdWxkIGhhdmVcXG40ODEwOlxcdFxcdCAqIHByb3BlciBwaHktaGFuZGxlIHBvaW50aW5nIHRvIHRoZWlyIFBIWXMuIE5vdCBlbmFibGluZyB0aGUgaW50ZXJuYWxcXG40ODExOlxcdFxcdCAqIGJ1cyBpcyBwb3NzaWJsZSwgdGhvdWdoIHByZXR0eSB3aXJlZCwgaWYgaW50ZXJuYWwgcG9ydHMgYXJlIG5vdCB1c2VkLlxcbjQ4MTI6XFx0XFx0ICovXFxuNDgxMzpcXHRcXHRjaGlsZCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcXFwibWRpb1xcXCIpO1xcbjQ4MTQ6XFx0XFx0aWYgKGNoaWxkKSB7XFxuNDgxNTpcXHRcXHRcXHRyZXMgPSB5dDkyMXhfbWJ1c19pbnRfaW5pdChwcml2LCBjaGlsZCk7XFxuNDgxNjpcXHRcXHRcXHRvZl9ub2RlX3B1dChjaGlsZCk7XFxuNDgxNzpcXHRcXHRcXHRpZiAocmVzKVxcbjQ4MTg6XFx0XFx0XFx0XFx0cmV0dXJuIHJlcztcXG40ODE5OlxcdFxcdH1cXG40ODIwOlxcdFxcbjQ4MjE6XFx0XFx0LyogRXh0ZXJuYWwgbWRpbyBidXMgaXMgb3B0aW9uYWwgKi9cXG40ODIyOlxcdFxcdGNoaWxkID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFxcXCJtZGlvLWV4dGVybmFsXFxcIik7XFxuNDgyMzpcXHRcXHRpZiAoY2hpbGQpIHtcXG40ODI0OlxcdFxcdFxcdHJlcyA9IHl0OTIxeF9tYnVzX2V4dF9pbml0KHByaXYsIGNoaWxkKTtcXG40ODI1OlxcdFxcdFxcdG9mX25vZGVfcHV0KGNoaWxkKTtcXG40ODI2OlxcdFxcdFxcdGlmIChyZXMpXFxuNDgyNzpcXHRcXHRcXHRcXHRyZXR1cm4gcmVzO1xcbjQ4Mjg6XFx0XFxuNDgyOTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlVudGVzdGVkIGV4dGVybmFsIG1kaW8gYnVzXFxcXG5cXFwiKTtcXG40ODMwOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjQ4MzE6XFx0XFx0fVxcbjQ4MzI6XFx0XFxuNDgzMzpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuNDgzNDpcXHRcXHRyZXMgPSB5dDkyMXhfY2hpcF9zZXR1cChwcml2KTtcXG40ODM1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbjQ4MzY6XFx0XFxuNDgzNzpcXHRcXHRpZiAocmVzKVxcbjQ4Mzg6XFx0XFx0XFx0cmV0dXJuIHJlcztcXG40ODM5OlxcdFxcbjQ4NDA6XFx0XFx0eXQ5Mnh4X3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuNDg0MTpcXHRcXG40ODQyOlxcdFxcdHJldHVybiAwO1xcbjQ4NDM6XFx0fVxcbjQ4NDQ6XFx0XFxuNDg0NTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyB5dDkyMXhfcGh5bGlua19tYWNfb3BzID0ge1xcbjQ4NDY6XFx0XFx0Lm1hY19saW5rX2Rvd25cXHQ9IHl0OTIxeF9waHlsaW5rX21hY19saW5rX2Rvd24sXFxuNDg0NzpcXHRcXHQubWFjX2xpbmtfdXBcXHQ9IHl0OTIxeF9waHlsaW5rX21hY19saW5rX3VwLFxcbjQ4NDg6XFx0XFx0Lm1hY19jb25maWdcXHQ9IHl0OTIxeF9waHlsaW5rX21hY19jb25maWcsXFxuNDg0OTpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNTowOS4xODI5NzI5NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5ODU5NTk2Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBORVRfRFNBX1lUOTIxWCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGBORVRfRFNBX1lUOTIxWGAg4oCTIHNwZWNpZmljYWxseSwgdGhpcyBgeXQ5MjF4YCBkcml2ZXIg4oCTIGlzIGV2ZW4gKnJlYWNoYWJsZSogd2l0aGluIGEgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIEkga25vdyB0aGF0IGB5dDkyMXhgIHJlbGllcyBvbiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBhbmQgaXRzIE1ESU8gaW50ZXJmYWNlIChgbWRpb19kcml2ZXJgKS4gVGhlIGNydWNpYWwgcXVlc3Rpb24gaXM6IERvZXMgUUVNVSBldmVuICplbXVsYXRlKiB0aGF0IHNwZWNpZmljIGNoaXAsIG9yIGl0cyBNRElPIHJlZ2lzdGVycz8gQW5kIHRoZSBxdWljayBhbnN3ZXIgaXMgKm5vKi4gUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIFlUOTIxNS5cblxuQWxyaWdodCwgYmFjayB0byB0aGUgcnVsZXMuIEkgbmVlZCB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgZmFsbHMgdW5kZXIgb25lIG9mIHRoZSBleGVtcHRpb25zIGZvciBcIldvcnRoRnV6emluZz1mYWxzZS5cIiBUaGUgcmVsZXZhbnQgb25lcyBhcmUgbW9kaWZpY2F0aW9ucyB0byB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCBpbmNsdWRlcyBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlLiBUaGlzICpjb3VsZCogYXBwbHkuIEJ1dCBJIGhhdmUgdG8gYmUgc3VyZS5cblxuTXkgbmV4dCBsaW5lIG9mIHRob3VnaHQgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgTURJTyBldGhlcm5ldCBzd2l0Y2ggZHJpdmVycyAoRFNBIGRyaXZlcnMpIGluIGdlbmVyYWwgKmNhbiogYmUgcmVhY2hlZCBvciBpbnN0YW50aWF0ZWQgaW4gUUVNVS9HQ0UuIFRoaXMgaXMgdGhlIGtleSBxdWVzdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgc29tZSBraW5kIG9mIG1vY2sgb3IgZW11bGF0aW9uIGZvciBtZGlvL0RTQSwgb3IgaWYgdGhlc2UgYXJlIHVuaXZlcnNhbGx5IGNvbnNpZGVyZWQgaGFyZHdhcmUgZHJpdmVycyB0aGF0IGFyZSB1bnJlYWNoYWJsZS5cblxuSSBuZWVkIHRvIGxvb2sgZm9yIGV4YW1wbGVzIGluIHRoZSBrZXJuZWwgaXRzZWxmLCBvciBpbiBzeXprYWxsZXIuIEFyZSBEU0EgZHJpdmVycyB0ZXN0ZWQsIG9yIGZ1enplZCBvbiBRRU1VPyBBbmQgdGhlbi4uLiAqYWhhISogVGhlcmUncyBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgLiBUaGF0J3MgYSBzb2Z0d2FyZSBsb29wYmFjayBEU0Egc3dpdGNoLCAqc3BlY2lmaWNhbGx5KiBkZXNpZ25lZCBmb3IgdGVzdGluZyB0aGUgRFNBIGNvcmUhIFRoYXQgaW1wbGllcyBpdCdzICpwb3NzaWJsZSogdG8gdGVzdCBhbmQsIHRoZXJlZm9yZSwgZnV6eiBzb21lIERTQSBkcml2ZXJzIGluIFFFTVUuIFRoaXMgaXMgcHJvbWlzaW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBkc2FfbG9vcC5jYCB0byBzZWUgaG93IGl0IHdvcmtzIGFuZCBkZXRlcm1pbmUgaWYgYE5FVF9EU0FfWVQ5MjFYYCBjYW4gYmUgYWRhcHRlZCBvciB0ZXN0ZWQgaW4gYSBzaW1pbGFyIGZhc2hpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTA2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTU6MDU6MTkuMDQyNTc0Mzk5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA2ODYyMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1xcdFxcdFxcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcXHQrPSBkc2FfbG9vcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX05FVF9EU0FfS1M4OTk1KSBcXHQrPSBrczg5OTUub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU6c3RydWN0IGRzYV9sb29wX3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVxcdHUxNiBtZW1iZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEtXFx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXFx0RFNBX0xPT1BfUEhZX1JFQURfT0ssXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzpzdHJ1Y3QgZHNhX2xvb3BfcG9ydCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XFx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NS1cXHR1MTYgcHZpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cXHRzdHJ1Y3QgbWlpX2J1c1xcdCpidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXFx0dW5zaWduZWQgaW50XFx0cG9ydF9iYXNlO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuIHZsYW5zW1ZMQU5fTl9WSURdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTQ6XFx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVxcdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo2NzpzdGF0aWMgc3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBkc2FfbG9vcF9taWJzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXFx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVxcdD0geyBcXFwicGh5X3JlYWRfb2tcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Nzc6ZW51bSBkc2FfbG9vcF9kZXZsaW5rX3Jlc291cmNlX2lkIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODUtXFx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTktXFx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVxcdFxcdFxcdFxcdFxcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcXHRcXHRcXHRcXHRcXHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM0OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHMtXFx1MDAzZW51bV9wb3J0czsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcXHRcXHRtZW1jcHkocHMtXFx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XFx0XFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcXHRyZXR1cm4gZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0ODpzdGF0aWMgdm9pZCBkc2FfbG9vcF90ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2Mi1cXHRcXHRcXHRcXHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjUtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVxcdFxcdFxcdFxcdCAgICAgICB1aW50NjRfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg0OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVxcdFxcdFxcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDEte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjE1OnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVxcdFxcdFxcdFxcdFxcdHU4IHN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXFx0XFx0XFx0XFx0XFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVxcdGJvb2wgcHZpZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU4OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4NC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Ni1cXHRib29sIHVudGFnZ2VkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXFx0dTE2IHB2aWQgPSBwcy1cXHUwMDNlcG9ydHNbcG9ydF0ucHZpZDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzExOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVxcdFxcdFxcdFxcdCAgICBpbnQgbmV3X210dSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1OlxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2OlxcdC5zZXR1cFxcdFxcdFxcdD0gZHNhX2xvb3Bfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3OlxcdC50ZWFyZG93blxcdFxcdD0gZHNhX2xvb3BfdGVhcmRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4OlxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM5OlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQwOlxcdC5nZXRfc3NldF9jb3VudFxcdFxcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlxcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcXHQucGh5X3JlYWRcXHRcXHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcXHQucGh5X3dyaXRlXFx0XFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ0OlxcdC5wb3J0X2JyaWRnZV9qb2luXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NTpcXHQucG9ydF9icmlkZ2VfbGVhdmVcXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NjpcXHQucG9ydF9zdHBfc3RhdGVfc2V0XFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ3OlxcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0ODpcXHQucG9ydF92bGFuX2FkZFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XFx0LnBvcnRfdmxhbl9kZWxcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlxcdC5wb3J0X2NoYW5nZV9tdHVcXHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgyLVxcdGRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODQtXFx0ZHMtXFx1MDAzZXByaXYgPSBwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNC1cXHQubWRpb2Rydi5kcml2ZXJcXHQ9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNzpcXHQucHJvYmVcXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjg6XFx0LnJlbW92ZVxcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjk6XFx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1OlxcdHJldHVybiBkcnYgPT0gXFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mzg6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDg6XFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXFx0XFx0LmNkID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODc6XFx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk0OlxcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2OlxcdFxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cXHRcXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAyLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNTpzdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3OlxcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4OlxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNToxOS4xNTMyNzAxNjdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODU5OTg4MTU1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYGRzYV9sb29wLmNgIGFuZCBgeXQ5MjF4LmNgIGp1bXBzIG91dCBhdCBtZS4gVGhlIGBkc2FfbG9vcC5jYCBmaWxlIGlzIGNsZWFybHkgc2V0IHVwIGZvciAqbW9jayogTURJTyBkZXZpY2UgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byB0ZXN0IHRoZSBEU0EgY29yZS4gSXQgZG9lc24ndCByZXF1aXJlIGFueSBhY3R1YWwgaGFyZHdhcmUuIE9uIHRoZSBvdGhlciBoYW5kLCBgeXQ5MjF4LmNgIGlzIGEgKmhhcmR3YXJlLXNwZWNpZmljKiBkcml2ZXIgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgc2VlIHRoYXQgaXQncyBnb2luZyB0byBoaXQgdGhlIGBZVDkyMVhfQ0hJUF9JRGAgcmVnaXN0ZXIsIGFuZCBuZWVkcyB0byBiZSBhYmxlIHRvIHJlYWQgYmFjayB0aGUgYFlUOTIxWF9DSElQX0lEX01BSk9SYCBmaWVsZCB0byBpZGVudGlmeSB0aGUgY2hpcCdzIHNlcmllcy4gVGhlIHByb2JlIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGZhaWwgd2l0aG91dCB0aGF0IHBoeXNpY2FsIGNoaXAgcHJlc2VudCwgbWF0Y2hpbmcgdGhlIGRldmljZSB3aXRoIHRoZSBcIm1vdG9yY29tbSx5dDkyMTVcIiBPRiBjb21wYXRpYmxlIHN0cmluZy5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGUgY3JpdGljYWwgYml0IGlzOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gZm9jdXMgb24uIFNpbmNlIHRoZSBgeXQ5MjF4YCBkcml2ZXIgKmV4cGxpY2l0bHkqIHJlcXVpcmVzIHRoZSByZWFsIGhhcmR3YXJlLCBhbmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhhdCBzcGVjaWZpYyBNb3RvcmNvbW0gY2hpcCwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gYW55IHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBkcml2ZXIgZXhwZWN0cyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gcmVzcG9uZCB0byBNRElPIHJlZ2lzdGVyIHJlYWRzLCBhIHJlcXVpcmVtZW50IHRoYXQgY2Fubm90IGJlIHNhdGlzZmllZCBpbiBhIFFFTVUgaW5zdGFuY2UuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrOiB0aGUgZGlmZiBpcyAqb25seSogbW9kaWZ5aW5nIGBkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNgIGFuZCBgZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oYC4gVGhlIGRyaXZlciBpcyBkZWZpbml0ZWx5IGZvciB0aGUgTW90b3Jjb21tIFlUOTIxNS9ZVDkyMTggaGFyZHdhcmUuIEkgYW0gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoaXMgaGFyZHdhcmUgYXZhaWxhYmxlIGZvciBzdGFuZGFyZCBRRU1VIC8gR0NFIGluc3RhbmNlcywgbWFraW5nIHRoaXMgcGF0Y2ggY2xlYXJseSBmYWxsIHVuZGVyIHRoZSBleGNsdXNpb24gY3JpdGVyaWEuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuIEknbGwgc2V0IHRoZSBvdGhlciBwYXJhbWV0ZXJzIGFwcHJvcHJpYXRlbHkuIFRoZSBmaW5hbCByZWFzb25pbmcgdG8gYmUgcmVjb3JkZWQgc2hvdWxkIGNvbmNpc2VseSBleHBsYWluIHRoYXQgYHl0OTIxeGAgaXMgYSBkcml2ZXIgdGhhdCByZXF1aXJlcyB0aGUgTW90b3Jjb21tIGhhcmR3YXJlIGFuZCBpcyBub3QgZW11bGF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjcyLCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNToyNy43NTMxNTUyMzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1vdG9yY29tbSBZVDkyMTUvWVQ5MjE4IERTQSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBzd2l0Y2ggaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgTURJTyB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNb3RvcmNvbW0gWVQ5MjE1L1lUOTIxOCBEU0EgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgc3dpdGNoIGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIE1ESU8gd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNToyNy43NTMzODI2MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkxpg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-02 14:19:38 +0000 UTC FinishedAt: 2026-09-02 15:05:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1vdG9yY29tbSBZVDkyMTUvWVQ5MjE4IERTQSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBzd2l0Y2ggaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgTURJTyB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiMzFlNTc3NjhmYTI5YzJkZmVhZTY5ZTgxNWMyNjY1YTA2NzI3ZGUzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgMiAxNTowNDoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcbmluZGV4IDE1OWIxNjYwNmY2Y2EuLjliZWE0MmI2MTg0N2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS95dDkyMXguY1xuQEAgLTE1MSw2ICYjNDM7MTUxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyB5dDkyMXhfaW5mb3NbXSA9IHtcbiBcdHt9XG4gfTtcbiBcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8geXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW107XG4mIzQzO1xuICNkZWZpbmUgWVQ5MjFYX05BTUVcdFwmIzM0O3l0OTIxeFwmIzM0O1xuIFxuICNkZWZpbmUgWVQ5MjFYX1ZJRF9VTldBUkVcdDQwOTVcbkBAIC01NjMsNyAmIzQzOzU2NSw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxuIFx0dTE2IHZhbDtcbiBcdGludCByZXM7XG4gXG4tXHRpZiAocG9ydCBcdTAwM2U9IFlUOTIxWF9QT1JUX05VTSlcbiYjNDM7XHRpZiAocG9ydCBcdTAwM2U9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbWF4X3BvcnRzKVxuIFx0XHRyZXR1cm4gVTE2X01BWDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5AQCAtNTgxLDcgJiM0Mzs1ODMsNyBAQCB5dDkyMXhfbWJ1c19pbnRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcbiBcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXHUwMDNlcHJpdjtcbiBcdGludCByZXM7XG4gXG4tXHRpZiAocG9ydCBcdTAwM2U9IFlUOTIxWF9QT1JUX05VTSlcbiYjNDM7XHRpZiAocG9ydCBcdTAwM2U9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbWF4X3BvcnRzKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5AQCAtNTk2LDYgJiM0Mzs1OTgsNyBAQCB5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuIHtcbiBcdHN0cnVjdCBkZXZpY2UgKmRldiA9IHRvX2RldmljZShwcml2KTtcbiBcdHN0cnVjdCBtaWlfYnVzICptYnVzO1xuJiM0MztcdHUzMiBtYXhfcG9ydDtcbiBcdGludCByZXM7XG4gXG4gXHRtYnVzID0gZGV2bV9tZGlvYnVzX2FsbG9jKGRldik7XG5AQCAtNjA4LDcgJiM0Mzs2MTEsOCBAQCB5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuIFx0bWJ1cy1cdTAwM2VyZWFkID0geXQ5MjF4X21idXNfaW50X3JlYWQ7XG4gXHRtYnVzLVx1MDAzZXdyaXRlID0geXQ5MjF4X21idXNfaW50X3dyaXRlO1xuIFx0bWJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4tXHRtYnVzLVx1MDAzZXBoeV9tYXNrID0gKHUzMil+R0VOTUFTSyhZVDkyMVhfUE9SVF9OVU0gLSAxLCAwKTtcbiYjNDM7XHRtYXhfcG9ydCA9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbWF4X3BvcnRzO1xuJiM0MztcdG1idXMtXHUwMDNlcGh5X21hc2sgPSAodTMyKX5HRU5NQVNLKG1heF9wb3J0IC0gMSwgMCk7XG4gXG4gXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xuIFx0aWYgKHJlcylcbkBAIC00NDMwLDggJiM0Mzs0NDM0LDM2IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2VkYXRhX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1OCBhZGRyLCB1OCAqdmFscClcbiBcdHJldHVybiB5dDkyMXhfZWRhdGFfcmVhZF9jb250KHByaXYsIGFkZHIsIHZhbHApO1xuIH1cbiBcbiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8geXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW10gPSB7XG4mIzQzO1x0W1lUOTIxWF0gPSB7XG4mIzQzO1x0XHQuY2hpcF9tb2RlID0gWVQ5MjFYLFxuJiM0MztcdFx0Lm1heF9wb3J0cyA9IFlUOTIxWF9QT1JUX05VTSxcbiYjNDM7XHRcdC5udW1fbGFnX2lkcyA9IFlUOTIxWF9MQUdfTlVNLFxuJiM0MztcdFx0LmFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwLFxuJiM0MztcdFx0LmFnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwLFxuJiM0MztcdFx0LmRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9IHRydWUsXG4mIzQzO1x0XHQuYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlLFxuJiM0MztcdH0sXG4mIzQzO307XG4mIzQzO1xuJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyAqeXQ5Mnh4X3Nlcmllc19sb29rdXBfaW5mbyh1MzIgbWFqb3IpXG4mIzQzO3tcbiYjNDM7XHRlbnVtIGNoaXBfbW9kZSBtb2RlID0gWVRfTUFYO1xuJiM0MztcdGludCBpO1xuJiM0MztcbiYjNDM7XHRpZiAobWFqb3IgPT0gWVQ5MjE1X01BSk9SIHx8IG1ham9yID09IFlUOTIxOF9NQUpPUilcbiYjNDM7XHRcdG1vZGUgPSBZVDkyMVg7XG4mIzQzO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlKTsgJiM0MzsmIzQzO2kpXG4mIzQzO1x0XHRpZiAoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldLmNoaXBfbW9kZSA9PSBtb2RlKVxuJiM0MztcdFx0XHRyZXR1cm4gXHUwMDI2eXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gTlVMTDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHl0OTIxeF9jaGlwX2RldGVjdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG4ge1xuJiM0MztcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvO1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuIFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvICppbmZvO1xuIFx0dTggZXh0bW9kZTtcbkBAIC00NDQ3LDYgJiM0Mzs0NDc5LDExIEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2NoaXBfZGV0ZWN0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcbiBcbiBcdG1ham9yID0gRklFTERfR0VUKFlUOTIxWF9DSElQX0lEX01BSk9SLCBjaGlwaWQpO1xuIFxuJiM0MztcdHNlcmllc19pbmZvID0geXQ5Mnh4X3Nlcmllc19sb29rdXBfaW5mbyhtYWpvcik7XG4mIzQzO1x0aWYgKCFzZXJpZXNfaW5mbylcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcdHByaXYtXHUwMDNlc2VyaWVzX2luZm8gPSBzZXJpZXNfaW5mbztcbiYjNDM7XG4gXHRmb3IgKGluZm8gPSB5dDkyMXhfaW5mb3M7IGluZm8tXHUwMDNlbmFtZTsgaW5mbyYjNDM7JiM0MzspXG4gXHRcdGlmIChpbmZvLVx1MDAzZW1ham9yID09IG1ham9yKVxuIFx0XHRcdGJyZWFrO1xuQEAgLTQ3NDAsNiAmIzQzOzQ3NzcsMjAgQEAgc3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHl0OTJ4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuJiM0MztcbiYjNDM7XHRkcy1cdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9XG4mIzQzO1x0XHRwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0O1xuJiM0MztcdGRzLVx1MDAzZWRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9XG4mIzQzO1x0XHRwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbDtcbiYjNDM7XHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9taW4gPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFnZWluZ190aW1lX21pbjtcbiYjNDM7XHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9tYXggPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFnZWluZ190aW1lX21heDtcbiYjNDM7XHRkcy1cdTAwM2VudW1fbGFnX2lkcyA9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbnVtX2xhZ19pZHM7XG4mIzQzO1x0ZHMtXHUwMDNlbnVtX3BvcnRzID0gcHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2VtYXhfcG9ydHM7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbiB7XG4gXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5AQCAtNDc4Niw2ICYjNDM7NDgzNyw4IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHRpZiAocmVzKVxuIFx0XHRyZXR1cm4gcmVzO1xuIFxuJiM0MztcdHl0OTJ4eF9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC00OTEzLDExICYjNDM7NDk2NiwxNiBAQCBzdGF0aWMgdm9pZCB5dDkyMXhfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFxuIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIHtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpjb21wYXRfaW5mbyA9IE5VTEw7XG4gXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbiBcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87XG4gXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXY7XG4gXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHM7XG4gXG4mIzQzO1x0Y29tcGF0X2luZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbiYjNDM7XHRpZiAoIWNvbXBhdF9pbmZvKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFwcml2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbkBAIC00OTMyLDYgJiM0Mzs0OTkwLDcgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuIFxuJiM0MztcdHByaXYtXHUwMDNlc2VyaWVzX2luZm8gPSBjb21wYXRfaW5mbztcbiBcdHByaXYtXHUwMDNlcmVnX29wcyA9IFx1MDAyNnl0OTIxeF9yZWdfb3BzX21kaW87XG4gXHRwcml2LVx1MDAzZXJlZ19jdHggPSBtZGlvO1xuIFxuQEAgLTQ5NDQsMTUgJiM0Mzs1MDAzLDkgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gXHRkcyA9IFx1MDAyNnByaXYtXHUwMDNlZHM7XG4gXHRkcy1cdTAwM2VkZXYgPSBkZXY7XG4tXHRkcy1cdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9IHRydWU7XG4tXHRkcy1cdTAwM2Vkc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWwgPSB0cnVlO1xuIFx0ZHMtXHUwMDNlcHJpdiA9IHByaXY7XG4gXHRkcy1cdTAwM2VvcHMgPSBcdTAwMjZ5dDkyMXhfZHNhX3N3aXRjaF9vcHM7XG4tXHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9taW4gPSAxICogNTAwMDtcbi1cdGRzLVx1MDAzZWFnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwO1xuIFx0ZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2eXQ5MjF4X3BoeWxpbmtfbWFjX29wcztcbi1cdGRzLVx1MDAzZW51bV9sYWdfaWRzID0gWVQ5MjFYX0xBR19OVU07XG4tXHRkcy1cdTAwM2VudW1fcG9ydHMgPSBZVDkyMVhfUE9SVF9OVU07XG4gXG4gXHRtZGlvZGV2X3NldF9kcnZkYXRhKG1kaW9kZXYsIHByaXYpO1xuIFxuQEAgLTQ5NjAsOCAmIzQzOzUwMTMsMTEgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O21vdG9yY29tbSx5dDkyMTVcJiMzNDsgfSxcbi1cdHt9XG4mIzQzO1x0e1xuJiM0MztcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttb3RvcmNvbW0seXQ5MjE1XCYjMzQ7LFxuJiM0MztcdFx0LmRhdGEgPSBcdTAwMjZ5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbWVQ5MjFYXSxcbiYjNDM7XHR9LFxuJiM0MztcdHsgLyogc2VudGluZWwgKi8gfSxcbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHl0OTIxeF9vZl9tYXRjaCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oIGIvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXG5pbmRleCA1ZjNiOTllMTg5YzQxLi5jYzgyMjNlYTVmMjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhcbkBAIC05NDUsOSAmIzQzOzk0NSwyNSBAQCBzdHJ1Y3QgeXQ5MjF4X3JlZ19vcHMge1xuIFx0aW50ICgqd3JpdGUpKHZvaWQgKmNvbnRleHQsIHUzMiByZWcsIHUzMiB2YWwpO1xuIH07XG4gXG4mIzQzO2VudW0gY2hpcF9tb2RlIHtcbiYjNDM7XHRZVDkyMVgsXG4mIzQzO1x0WVRfTUFYLFxuJiM0Mzt9O1xuJiM0MztcbiYjNDM7c3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB7XG4mIzQzO1x0ZW51bSBjaGlwX21vZGUgY2hpcF9tb2RlO1xuJiM0MztcdHVuc2lnbmVkIGludCBtYXhfcG9ydHM7XG4mIzQzO1x0dW5zaWduZWQgaW50IG51bV9sYWdfaWRzO1xuJiM0MztcdHVuc2lnbmVkIGludCBhZ2VpbmdfdGltZV9taW47XG4mIzQzO1x0dW5zaWduZWQgaW50IGFnZWluZ190aW1lX21heDtcbiYjNDM7XHR1MzIgZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsO1xuJiM0MztcdHUzMiBhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydDtcbiYjNDM7fTtcbiYjNDM7XG4gc3RydWN0IHl0OTIxeF9wcml2IHtcbiBcdHN0cnVjdCBkc2Ffc3dpdGNoIGRzO1xuIFxuJiM0MztcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvO1xuIFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvICppbmZvO1xuIFx0dW5zaWduZWQgaW50IG1ldGVyX3Nsb3RfbnM7XG4gXHR1bnNpZ25lZCBpbnQgcG9ydF9zaGFwZV9zbG90X25zO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNb3RvcmNvbW0gWVQ5MjE1L1lUOTIxOCBEU0EgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgc3dpdGNoIGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIE1ESU8gd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjMxZTU3NzY4ZmEyOWMyZGZlYWU2OWU4MTVjMjY2NWEwNjcyN2RlMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgU2VwIDIgMTU6MDQ6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMKaW5kZXggMTU5YjE2NjA2ZjZjYS4uOWJlYTQyYjYxODQ3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS95dDkyMXguYwpAQCAtMTUxLDYgJiM0MzsxNTEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvIHl0OTIxeF9pbmZvc1tdID0gewogCXt9CiB9OwogCiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8geXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW107CiYjNDM7CiAjZGVmaW5lIFlUOTIxWF9OQU1FCSYjMzQ7eXQ5MjF4JiMzNDsKIAogI2RlZmluZSBZVDkyMVhfVklEX1VOV0FSRQk0MDk1CkBAIC01NjMsNyAmIzQzOzU2NSw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKQogCXUxNiB2YWw7CiAJaW50IHJlczsKIAotCWlmIChwb3J0ICZndDs9IFlUOTIxWF9QT1JUX05VTSkKJiM0MzsJaWYgKHBvcnQgJmd0Oz0gcHJpdi0mZ3Q7c2VyaWVzX2luZm8tJmd0O21heF9wb3J0cykKIAkJcmV0dXJuIFUxNl9NQVg7CiAKIAltdXRleF9sb2NrKCZhbXA7cHJpdi0mZ3Q7cmVnX2xvY2spOwpAQCAtNTgxLDcgJiM0Mzs1ODMsNyBAQCB5dDkyMXhfbWJ1c19pbnRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSkKIAlzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLSZndDtwcml2OwogCWludCByZXM7CiAKLQlpZiAocG9ydCAmZ3Q7PSBZVDkyMVhfUE9SVF9OVU0pCiYjNDM7CWlmIChwb3J0ICZndDs9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDttYXhfcG9ydHMpCiAJCXJldHVybiAtRU5PREVWOwogCiAJbXV0ZXhfbG9jaygmYW1wO3ByaXYtJmd0O3JlZ19sb2NrKTsKQEAgLTU5Niw2ICYjNDM7NTk4LDcgQEAgeXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucCkKIHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7CiAJc3RydWN0IG1paV9idXMgKm1idXM7CiYjNDM7CXUzMiBtYXhfcG9ydDsKIAlpbnQgcmVzOwogCiAJbWJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpOwpAQCAtNjA4LDcgJiM0Mzs2MTEsOCBAQCB5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKQogCW1idXMtJmd0O3JlYWQgPSB5dDkyMXhfbWJ1c19pbnRfcmVhZDsKIAltYnVzLSZndDt3cml0ZSA9IHl0OTIxeF9tYnVzX2ludF93cml0ZTsKIAltYnVzLSZndDtwYXJlbnQgPSBkZXY7Ci0JbWJ1cy0mZ3Q7cGh5X21hc2sgPSAodTMyKX5HRU5NQVNLKFlUOTIxWF9QT1JUX05VTSAtIDEsIDApOwomIzQzOwltYXhfcG9ydCA9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDttYXhfcG9ydHM7CiYjNDM7CW1idXMtJmd0O3BoeV9tYXNrID0gKHUzMil+R0VOTUFTSyhtYXhfcG9ydCAtIDEsIDApOwogCiAJcmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTsKIAlpZiAocmVzKQpAQCAtNDQzMCw4ICYjNDM7NDQzNCwzNiBAQCBzdGF0aWMgaW50IHl0OTIxeF9lZGF0YV9yZWFkKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTggYWRkciwgdTggKnZhbHApCiAJcmV0dXJuIHl0OTIxeF9lZGF0YV9yZWFkX2NvbnQocHJpdiwgYWRkciwgdmFscCk7CiB9CiAKJiM0MztzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXSA9IHsKJiM0MzsJW1lUOTIxWF0gPSB7CiYjNDM7CQkuY2hpcF9tb2RlID0gWVQ5MjFYLAomIzQzOwkJLm1heF9wb3J0cyA9IFlUOTIxWF9QT1JUX05VTSwKJiM0MzsJCS5udW1fbGFnX2lkcyA9IFlUOTIxWF9MQUdfTlVNLAomIzQzOwkJLmFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwLAomIzQzOwkJLmFnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwLAomIzQzOwkJLmRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9IHRydWUsCiYjNDM7CQkuYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlLAomIzQzOwl9LAomIzQzO307CiYjNDM7CiYjNDM7c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnl0OTJ4eF9zZXJpZXNfbG9va3VwX2luZm8odTMyIG1ham9yKQomIzQzO3sKJiM0MzsJZW51bSBjaGlwX21vZGUgbW9kZSA9IFlUX01BWDsKJiM0MzsJaW50IGk7CiYjNDM7CiYjNDM7CWlmIChtYWpvciA9PSBZVDkyMTVfTUFKT1IgfHwgbWFqb3IgPT0gWVQ5MjE4X01BSk9SKQomIzQzOwkJbW9kZSA9IFlUOTIxWDsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IEFSUkFZX1NJWkUoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlKTsgJiM0MzsmIzQzO2kpCiYjNDM7CQlpZiAoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldLmNoaXBfbW9kZSA9PSBtb2RlKQomIzQzOwkJCXJldHVybiAmYW1wO3l0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtpXTsKJiM0MzsKJiM0MzsJcmV0dXJuIE5VTEw7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCB5dDkyMXhfY2hpcF9kZXRlY3Qoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KQogewomIzQzOwljb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpzZXJpZXNfaW5mbzsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7CiAJY29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvICppbmZvOwogCXU4IGV4dG1vZGU7CkBAIC00NDQ3LDYgJiM0Mzs0NDc5LDExIEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2NoaXBfZGV0ZWN0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdikKIAogCW1ham9yID0gRklFTERfR0VUKFlUOTIxWF9DSElQX0lEX01BSk9SLCBjaGlwaWQpOwogCiYjNDM7CXNlcmllc19pbmZvID0geXQ5Mnh4X3Nlcmllc19sb29rdXBfaW5mbyhtYWpvcik7CiYjNDM7CWlmICghc2VyaWVzX2luZm8pCiYjNDM7CQlyZXR1cm4gLUVOT0RFVjsKJiM0MzsJcHJpdi0mZ3Q7c2VyaWVzX2luZm8gPSBzZXJpZXNfaW5mbzsKJiM0MzsKIAlmb3IgKGluZm8gPSB5dDkyMXhfaW5mb3M7IGluZm8tJmd0O25hbWU7IGluZm8mIzQzOyYjNDM7KQogCQlpZiAoaW5mby0mZ3Q7bWFqb3IgPT0gbWFqb3IpCiAJCQlicmVhazsKQEAgLTQ3NDAsNiAmIzQzOzQ3NzcsMjAgQEAgc3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpCiAJcmV0dXJuIDA7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB5dDkyeHhfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKJiM0Mzt7CiYjNDM7CXN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTsKJiM0MzsKJiM0MzsJZHMtJmd0O2Fzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0ID0KJiM0MzsJCXByaXYtJmd0O3Nlcmllc19pbmZvLSZndDthc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydDsKJiM0MzsJZHMtJmd0O2RzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9CiYjNDM7CQlwcml2LSZndDtzZXJpZXNfaW5mby0mZ3Q7ZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsOwomIzQzOwlkcy0mZ3Q7YWdlaW5nX3RpbWVfbWluID0gcHJpdi0mZ3Q7c2VyaWVzX2luZm8tJmd0O2FnZWluZ190aW1lX21pbjsKJiM0MzsJZHMtJmd0O2FnZWluZ190aW1lX21heCA9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDthZ2VpbmdfdGltZV9tYXg7CiYjNDM7CWRzLSZndDtudW1fbGFnX2lkcyA9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDtudW1fbGFnX2lkczsKJiM0MzsJZHMtJmd0O251bV9wb3J0cyA9IHByaXYtJmd0O3Nlcmllc19pbmZvLSZndDttYXhfcG9ydHM7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIHsKIAlzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7CkBAIC00Nzg2LDYgJiM0Mzs0ODM3LDggQEAgc3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcykKIAlpZiAocmVzKQogCQlyZXR1cm4gcmVzOwogCiYjNDM7CXl0OTJ4eF9yZWdpc3Rlcl9zd2l0Y2goZHMpOwomIzQzOwogCXJldHVybiAwOwogfQogCkBAIC00OTEzLDExICYjNDM7NDk2NiwxNiBAQCBzdGF0aWMgdm9pZCB5dDkyMXhfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KQogCiBzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldikKIHsKJiM0MzsJY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyAqY29tcGF0X2luZm8gPSBOVUxMOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7bWRpb2Rldi0mZ3Q7ZGV2OwogCXN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87CiAJc3RydWN0IHl0OTIxeF9wcml2ICpwcml2OwogCXN0cnVjdCBkc2Ffc3dpdGNoICpkczsKIAomIzQzOwljb21wYXRfaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwomIzQzOwlpZiAoIWNvbXBhdF9pbmZvKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJcHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwogCWlmICghcHJpdikKIAkJcmV0dXJuIC1FTk9NRU07CkBAIC00OTMyLDYgJiM0Mzs0OTkwLDcgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpCiAKIAltdXRleF9pbml0KCZhbXA7cHJpdi0mZ3Q7cmVnX2xvY2spOwogCiYjNDM7CXByaXYtJmd0O3Nlcmllc19pbmZvID0gY29tcGF0X2luZm87CiAJcHJpdi0mZ3Q7cmVnX29wcyA9ICZhbXA7eXQ5MjF4X3JlZ19vcHNfbWRpbzsKIAlwcml2LSZndDtyZWdfY3R4ID0gbWRpbzsKIApAQCAtNDk0NCwxNSAmIzQzOzUwMDMsOSBAQCBzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldikKIAogCWRzID0gJmFtcDtwcml2LSZndDtkczsKIAlkcy0mZ3Q7ZGV2ID0gZGV2OwotCWRzLSZndDthc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9IHRydWU7Ci0JZHMtJmd0O2RzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9IHRydWU7CiAJZHMtJmd0O3ByaXYgPSBwcml2OwogCWRzLSZndDtvcHMgPSAmYW1wO3l0OTIxeF9kc2Ffc3dpdGNoX29wczsKLQlkcy0mZ3Q7YWdlaW5nX3RpbWVfbWluID0gMSAqIDUwMDA7Ci0JZHMtJmd0O2FnZWluZ190aW1lX21heCA9IFUxNl9NQVggKiA1MDAwOwogCWRzLSZndDtwaHlsaW5rX21hY19vcHMgPSAmYW1wO3l0OTIxeF9waHlsaW5rX21hY19vcHM7Ci0JZHMtJmd0O251bV9sYWdfaWRzID0gWVQ5MjFYX0xBR19OVU07Ci0JZHMtJmd0O251bV9wb3J0cyA9IFlUOTIxWF9QT1JUX05VTTsKIAogCW1kaW9kZXZfc2V0X2RydmRhdGEobWRpb2RldiwgcHJpdik7CiAKQEAgLTQ5NjAsOCAmIzQzOzUwMTMsMTEgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0gewotCXsgLmNvbXBhdGlibGUgPSAmIzM0O21vdG9yY29tbSx5dDkyMTUmIzM0OyB9LAotCXt9CiYjNDM7CXsKJiM0MzsJCS5jb21wYXRpYmxlID0gJiMzNDttb3RvcmNvbW0seXQ5MjE1JiMzNDssCiYjNDM7CQkuZGF0YSA9ICZhbXA7eXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW1lUOTIxWF0sCiYjNDM7CX0sCiYjNDM7CXsgLyogc2VudGluZWwgKi8gfSwKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmggYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmgKaW5kZXggNWYzYjk5ZTE4OWM0MS4uY2M4MjIzZWE1ZjI5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS95dDkyMXguaApAQCAtOTQ1LDkgJiM0Mzs5NDUsMjUgQEAgc3RydWN0IHl0OTIxeF9yZWdfb3BzIHsKIAlpbnQgKCp3cml0ZSkodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyIHZhbCk7CiB9OwogCiYjNDM7ZW51bSBjaGlwX21vZGUgewomIzQzOwlZVDkyMVgsCiYjNDM7CVlUX01BWCwKJiM0Mzt9OwomIzQzOwomIzQzO3N0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gewomIzQzOwllbnVtIGNoaXBfbW9kZSBjaGlwX21vZGU7CiYjNDM7CXVuc2lnbmVkIGludCBtYXhfcG9ydHM7CiYjNDM7CXVuc2lnbmVkIGludCBudW1fbGFnX2lkczsKJiM0MzsJdW5zaWduZWQgaW50IGFnZWluZ190aW1lX21pbjsKJiM0MzsJdW5zaWduZWQgaW50IGFnZWluZ190aW1lX21heDsKJiM0MzsJdTMyIGRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbDsKJiM0MzsJdTMyIGFzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0OwomIzQzO307CiYjNDM7CiBzdHJ1Y3QgeXQ5MjF4X3ByaXYgewogCXN0cnVjdCBkc2Ffc3dpdGNoIGRzOwogCiYjNDM7CWNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvOwogCWNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyAqaW5mbzsKIAl1bnNpZ25lZCBpbnQgbWV0ZXJfc2xvdF9uczsKIAl1bnNpZ25lZCBpbnQgcG9ydF9zaGFwZV9zbG90X25zOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODU3CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBUaGlzIHBhdGNo4oCUaXMgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3Igc29tZSBmdXp6aW5nIGxvdmU/IEZpcnN0IHRoaW5ncyBmaXJzdCwgd2hhdCYjMzk7cyBiZWluZyB0b3VjaGVkPyBBaCwgYGRyaXZlcnMvbmV0L2RzYS95dDkyMXguY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhgLiBSaWdodCwgdGhhdCBtZWFucyBhIG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGB5dDkyMXhgLiBOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHdoYXQgKmtpbmQqIG9mIGRyaXZlciBpcyB0aGlzLCByZWFsbHk/IElzIGl0IGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIsIGEgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24sIGEgZGF0YSBwYXRoIGhhbmRsZXI/IEkgbmVlZCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIHRvIGp1ZGdlIGl0cyBmdXp6aW5nIHBvdGVudGlhbCBlZmZlY3RpdmVseS4gVGltZSB0byBjb25zdWx0IHRoZSBLY29uZmlnIGFuZCBkaXZlIGludG8gdGhlIGRyaXZlciBkZXRhaWxzLiBHcmVwcGluZyBvciBhIHF1aWNrIGByZWFkLWZpbGVgIHdpbGwgaG9wZWZ1bGx5IGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBJJiMzOTttIGxvb2tpbmcgZm9yIGVudHJ5IHBvaW50cywgZGF0YSBmbG93cywgYW5kIHBvdGVudGlhbCBhcmVhcyBzdXNjZXB0aWJsZSB0byB1bmV4cGVjdGVkIGlucHV0cyBvciBtaXNjb25maWd1cmF0aW9ucy4gVGhlbiBJIGNhbiBkZXRlcm1pbmUgaWYgdGhpcyBpcyB3b3J0aCB0aGUgZWZmb3J0IHRvIHNldCB1cCBmdXp6aW5nIGFuZCBob3cgdG8gYmVzdCBhcHByb2FjaCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt5dDkyMXgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDIyNjYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfU1BJKSAmIzQzOz0gdml0ZXNzZS12c2M3M3h4LXNwaS5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX05FVF9EU0FfWVQ5MjFYKSAmIzQzOz0geXQ5MjF4Lm9cbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZS0xOS1vYmoteVx0XHRcdFx0JiM0Mzs9IGI1My9cbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjgtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjk6I2luY2x1ZGUgXCYjMzQ7eXQ5MjF4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMTpzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMi1cdHVuc2lnbmVkIGludCBzaXplO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0MDovKiBNdXN0IGFncmVlIHdpdGggeXQ5MjF4X21pYlxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQxLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ1LSAqL1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHl0OTIxeF9taWJfZGVzY3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00Ny1cdE1JQl9ERVNDKDEsIFlUOTIxWF9NSUJfREFUQV9SWF9CUk9BRENBU1QsIE5VTEwpLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05Ny1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5ODpzdHJ1Y3QgeXQ5MjF4X2luZm8ge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk5LVx0Y29uc3QgY2hhciAqbmFtZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA1LVx0dTE2IGludGVybmFsX21hc2s7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA2Olx0LyogVE9ETzogc2VlIGNvbW1lbnRzIGluIHl0OTIxeF9kc2FfcGh5bGlua19nZXRfY2FwcygpICovXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA3LVx0dTE2IGV4dGVybmFsX21hc2s7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTExNC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMTU6c3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyB5dDkyMXhfaW5mb3NbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMTYtXHR7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTE1ND1zdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNTUtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTU2OiNkZWZpbmUgWVQ5MjFYX05BTUVcdFwmIzM0O3l0OTIxeFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE1Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTcwLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjE3MTpzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNzItXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xODctXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTg4OiNkZWZpbmUgdG9feXQ5MjF4X3ByaXYoX2RzKSBjb250YWluZXJfb2ZfY29uc3QoX2RzLCBzdHJ1Y3QgeXQ5MjF4X3ByaXYsIGRzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE4OS0jZGVmaW5lIHRvX2RldmljZShwcml2KSAoKHByaXYpLVx1MDAzZWRzLmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTk2PXN0YXRpYyB1MzIgZXRoYWRkcl9sbzJfdG9fdTMyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIwMC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMDE6c3RhdGljIGludCB5dDkyMXhfcmVnX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbHApXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjAyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjA3LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjIwODpzdGF0aWMgaW50IHl0OTIxeF9yZWdfd3JpdGUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIwOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTIxNT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjE2Onl0OTIxeF9yZWdfd2FpdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgKnZhbHApXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjE3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjIxLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjIyMjpcdHJldCA9IHJlYWRfcG9sbF90aW1lb3V0KHl0OTIxeF9yZWdfcmVhZCwgcmVzLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIyMy1cdFx0XHRcdHJlcyB8fCAodmFsIFx1MDAyNiBtYXNrKSA9PSAqdmFscCxcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MjM1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMzY6eXQ5MjF4X3JlZ191cGRhdGVfYml0cyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIzNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI0MS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNDI6XHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcdTAwMjZ2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNDMtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNTEtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjUyOlx0cmV0dXJuIHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgcmVnLCB1KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNTMtfVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1NC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNTU6c3RhdGljIGludCB5dDkyMXhfcmVnX3NldF9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2spXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjU2LXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNTc6XHRyZXR1cm4geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCByZWcsIDAsIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1OC19XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjU5LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjI2MDpzdGF0aWMgaW50IHl0OTIxeF9yZWdfY2xlYXJfYml0cyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2MS17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjYyOlx0cmV0dXJuIHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgcmVnLCBtYXNrLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNjMtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0yNjU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjI2Njp5dDkyMXhfcmVnX3RvZ2dsZV9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2ssIGJvb2wgc2V0KVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2Ny17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjY4Olx0cmV0dXJuIHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgcmVnLCBtYXNrLCAhc2V0ID8gMCA6IG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2OS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTI4Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjg4Onl0OTIxeF9yZWdzX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbHMsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjg5LVx0XHQgdW5zaWduZWQgaW50IG51bV9yZWdzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yOTMtXHRmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSBcdTAwM2MgbnVtX3JlZ3M7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjk0Olx0XHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnICYjNDM7IDQgKiBpLCBcdTAwMjZ2YWxzW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yOTUtXHRcdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTMwMj1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzAzOnl0OTIxeF9yZWdzX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICp2YWxzLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMwNC1cdFx0ICB1bnNpZ25lZCBpbnQgbnVtX3JlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMwOC1cdGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIFx1MDAzYyBudW1fcmVnczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMDk6XHRcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgcmVnICYjNDM7IDQgKiBpLCB2YWxzW2ldKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMTAtXHRcdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTMxNz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzE4Onl0OTIxeF9yZWdzX3VwZGF0ZV9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcyxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMTktXHRcdFx0Y29uc3QgdTMyICp2YWxzLCB1bnNpZ25lZCBpbnQgbnVtX3JlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMyNi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMjc6XHRyZXMgPSB5dDkyMXhfcmVnc19yZWFkKHByaXYsIHJlZywgdnMsIG51bV9yZWdzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMjgtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNDQtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzQ1Olx0cmV0dXJuIHl0OTIxeF9yZWdzX3dyaXRlKHByaXYsIHJlZywgdnMsIG51bV9yZWdzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNDYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zNDg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM0OTp5dDkyMXhfcmVnc19jbGVhcl9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcyxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNTAtXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3JlZ3MpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM1Ny1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozNTg6XHRyZXMgPSB5dDkyMXhfcmVnc19yZWFkKHByaXYsIHJlZywgdnMsIG51bV9yZWdzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNTktXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNzQtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzc1Olx0cmV0dXJuIHl0OTIxeF9yZWdzX3dyaXRlKHByaXYsIHJlZywgdnMsIG51bV9yZWdzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNzYtfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zNzg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM3OTp5dDkyMXhfcmVnNjRfd3JpdGUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKnZhbHMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzgwLXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozODE6XHRyZXR1cm4geXQ5MjF4X3JlZ3Nfd3JpdGUocHJpdiwgcmVnLCB2YWxzLCAyKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODItfVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zODQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM4NTp5dDkyMXhfcmVnNjRfdXBkYXRlX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKm1hc2tzLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4Ni1cdFx0XHQgY29uc3QgdTMyICp2YWxzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4Ny17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg4Olx0cmV0dXJuIHl0OTIxeF9yZWdzX3VwZGF0ZV9iaXRzKHByaXYsIHJlZywgbWFza3MsIHZhbHMsIDIpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM4OS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTM5MT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzkyOnl0OTIxeF9yZWc2NF9jbGVhcl9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcylcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTMte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM5NDpcdHJldHVybiB5dDkyMXhfcmVnc19jbGVhcl9iaXRzKHByaXYsIHJlZywgbWFza3MsIDIpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM5NS19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTM5Nz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzk4Onl0OTIxeF9yZWc5Nl93cml0ZShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIGNvbnN0IHUzMiAqdmFscylcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTkte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwMDpcdHJldHVybiB5dDkyMXhfcmVnc193cml0ZShwcml2LCByZWcsIHZhbHMsIDMpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQwMS19XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDAyLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwMzpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb19yZWFkKHZvaWQgKmNvbnRleHQsIHUzMiByZWcsIHUzMiAqdmFscClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00MDQte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwNTpcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW8gPSBjb250ZXh0O1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQwNi1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBtZGlvLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDQzLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ0NDpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb193cml0ZSh2b2lkICpjb250ZXh0LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ0NS17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDQ2Olx0c3RydWN0IHl0OTIxeF9yZWdfbWRpbyAqbWRpbyA9IGNvbnRleHQ7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDQ3LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NzktXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDgwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X3JlZ19vcHMgeXQ5MjF4X3JlZ19vcHNfbWRpbyA9IHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0ODE6XHQucmVhZCA9IHl0OTIxeF9yZWdfbWRpb19yZWFkLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4MjpcdC53cml0ZSA9IHl0OTIxeF9yZWdfbWRpb193cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODMtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDg2LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4NzpzdGF0aWMgaW50IHl0OTIxeF9pbnRpZl93YWl0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTAtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDkxOlx0cmV0dXJuIHl0OTIxeF9yZWdfd2FpdChwcml2LCBZVDkyMVhfSU5UX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJULFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5Mi1cdFx0XHQgICAgICAgXHUwMDI2dmFsKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NDk1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0OTY6eXQ5MjF4X2ludGlmX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZywgdTE2ICp2YWxwKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUwMy1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MDQ6XHRyZXMgPSB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MDUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTEtXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9SRUFEO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxMjpcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUxMy1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTE0LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxNTpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTE2LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTE4LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxOTpcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUyMC1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTIxLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUyMjpcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCBZVDkyMVhfSU5UX01CVVNfRElOLCBcdTAwMjZ2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUyMy1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTUzND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTM1Onl0OTIxeF9pbnRpZl93cml0ZShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUzNi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU0MC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NDE6XHRyZXMgPSB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NDItXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NDgtXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NDk6XHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9JTlRfTUJVU19DVFJMLCBtYXNrLCBjdHJsKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTAtXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU1MS1cdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NTI6XHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ET1VULCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU1My1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTU0LVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1NTpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTU2LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTU4LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1OTpcdHJldHVybiB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NjAtfVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU2MS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NjI6c3RhdGljIGludCB5dDkyMXhfbWJ1c19pbnRfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTYzLXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NjQ6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTY1LVx0dTE2IHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTcxLVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NzI6XHRyZXMgPSB5dDkyMXhfaW50aWZfcmVhZChwcml2LCBwb3J0LCByZWcsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTczLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01ODA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU4MTp5dDkyMXhfbWJ1c19pbnRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODIte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU4MzpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODQtXHRpbnQgcmVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODktXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU5MDpcdHJlcyA9IHl0OTIxeF9pbnRpZl93cml0ZShwcml2LCBwb3J0LCByZWcsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU5MS1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTk2PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1OTc6eXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01OTgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTAtXHRtYnVzLVx1MDAzZXByaXYgPSBwcml2O1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYxMTpcdG1idXMtXHUwMDNlcmVhZCA9IHl0OTIxeF9tYnVzX2ludF9yZWFkO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYxMjpcdG1idXMtXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19pbnRfd3JpdGU7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjEzLVx0bWJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYyNS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2MjY6c3RhdGljIGludCB5dDkyMXhfZXh0aWZfd2FpdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjI3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjI5LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYzMDpcdHJldHVybiB5dDkyMXhfcmVnX3dhaXQocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MzEtXHRcdFx0ICAgICAgIFx1MDAyNnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTYzND1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjM1Onl0OTIxeF9leHRpZl9yZWFkKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiAqdmFscClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MzYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NDItXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjQzOlx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjQ0LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjUwLVx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfVFlQRV9DMjIgfCBZVDkyMVhfTUJVU19DVFJMX1JFQUQ7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjUxOlx0cmVzID0geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCBZVDkyMVhfRVhUX01CVVNfQ1RSTCwgbWFzaywgY3RybCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjUyLVx0aWYgKHJlcylcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTMtXHRcdHJldHVybiByZXM7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjU0Olx0cmVzID0geXQ5MjF4X3JlZ193cml0ZShwcml2LCBZVDkyMVhfRVhUX01CVVNfT1AsIFlUOTIxWF9NQlVTX09QX1NUQVJUKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTUtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTctXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjU4Olx0cmVzID0geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjU5LVx0aWYgKHJlcylcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NjAtXHRcdHJldHVybiByZXM7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjYxOlx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ESU4sIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjYyLVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NjczPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2NzQ6eXQ5MjF4X2V4dGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjc1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjc5LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY4MDpcdHJlcyA9IHl0OTIxeF9leHRpZl93YWl0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY4MS1cdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY4Ny1cdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1RZUEVfQzIyIHwgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2ODg6XHRyZXMgPSB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIFlUOTIxWF9FWFRfTUJVU19DVFJMLCBtYXNrLCBjdHJsKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02ODktXHRpZiAocmVzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY5MC1cdFx0cmV0dXJuIHJlcztcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2OTE6XHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ET1VULCB2YWwpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY5Mi1cdGlmIChyZXMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjkzLVx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5NDpcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjk1LVx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjk3LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5ODpcdHJldHVybiB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02OTktfVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcwMC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MDE6c3RhdGljIGludCB5dDkyMXhfbWJ1c19leHRfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzAyLXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MDM6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA0LVx0dTE2IHZhbDtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA3LVx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MDg6XHRyZXMgPSB5dDkyMXhfZXh0aWZfcmVhZChwcml2LCBwb3J0LCByZWcsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MTY9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjcxNzp5dDkyMXhfbWJ1c19leHRfd3JpdGUoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnLCB1MTYgZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MTgte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjcxOTpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IG1idXMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MjAtXHRpbnQgcmVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MjItXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjcyMzpcdHJlcyA9IHl0OTIxeF9leHRpZl93cml0ZShwcml2LCBwb3J0LCByZWcsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcyNC1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NzI5PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MzA6eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDMtXHQvKiBUT0RPOiBjNDU/ICovXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ0Olx0bWJ1cy1cdTAwM2VyZWFkID0geXQ5MjF4X21idXNfZXh0X3JlYWQ7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzQ1Olx0bWJ1cy1cdTAwM2V3cml0ZSA9IHl0OTIxeF9tYnVzX2V4dF93cml0ZTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDYtXHRtYnVzLVx1MDAzZXBhcmVudCA9IGRldjtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzU3LS8qIFJlYWQgYW5kIGhhbmRsZSBvdmVyZmxvdyBvZiAzMmJpdCBNSUJzLiBNSUIgYnVmZmVyIG11c3QgYmUgemVyb2VkIGJlZm9yZS4gKi9cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NTg6c3RhdGljIGludCB5dDkyMXhfcmVhZF9taWIoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NTkte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc2MDpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2MS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IHRvX2RldmljZShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NjI6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2My1cdGludCByZXMgPSAwO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2NC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NjU6XHQvKiBSZWFkaW5nIG9mIHl0OTIxeF9wb3J0OjptaWIgaXMgbm90IHByb3RlY3RlZCBieSBhIGxvY2sgYW5kIGl0JiMzOTtzIHZhaW5cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NjYtXHQgKiB0byBrZWVwIGl0cyBjb25zaXN0ZW5jeSwgc2luY2Ugd2UgaGF2ZSB0byByZWFkIHJlZ2lzdGVycyBvbmUgYnkgb25lXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc3Mi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NzM6XHRmb3IgKHNpemVfdCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NzQ6XHRcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc3NS1cdFx0dTMyIHJlZyA9IFlUOTIxWF9NSUJuX0RBVEEwKHBvcnQpICYjNDM7IGRlc2MtXHUwMDNlb2Zmc2V0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NzktXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzgwOlx0XHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcdTAwMjZ2YWwwKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03ODEtXHRcdGlmIChyZXMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc5Mi1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3OTM6XHRcdFx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIHJlZyAmIzQzOyA0LCBcdTAwMjZ2YWwxKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03OTQtXHRcdFx0aWYgKHJlcylcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODE2LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgxNzpzdGF0aWMgdm9pZCB5dDkyMXhfcG9sbF9taWIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTgxOC17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODE5Olx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IGNvbnRhaW5lcl9vZl9jb25zdCh3b3JrLCBzdHJ1Y3QgeXQ5MjF4X3BvcnQsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODIwLVx0XHRcdFx0XHRcdCAgICBtaWJfcmVhZC53b3JrKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4MjE6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSAodm9pZCAqKShwcCAtIHBwLVx1MDAzZWluZGV4KSAtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODIyOlx0XHRcdFx0ICAgb2Zmc2V0b2Yoc3RydWN0IHl0OTIxeF9wcml2LCBwb3J0cyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODIzLVx0dW5zaWduZWQgbG9uZyBkZWxheSA9IFlUOTIxWF9TVEFUU19JTlRFUlZBTF9KSUZGSUVTO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04MjctXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgyODpcdHJlcyA9IHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04MjktXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTgzNj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgzNzp5dDkyMXhfZHNhX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJpbmdzZXQsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODM4LVx0XHQgICAgICAgdWludDhfdCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODQyLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg0MzpcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg0NDpcdFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODQ1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz04NTE9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTI6eXQ5MjF4X2RzYV9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1aW50NjRfdCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NTMte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg1NDpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTU6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTY6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg1Ny1cdHNpemVfdCBqO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NTktXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2MDpcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NjEtXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg2My1cdGogPSAwO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2NDpcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2NTpcdFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODY2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NzQtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODc1OnN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NzYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04ODEtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODgyOlx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODgzOlx0XHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjICpkZXNjID0gXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04ODQtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTg5Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg5Mzp5dDkyMXhfZHNhX2dldF9ldGhfbWFjX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODk0LVx0XHRcdCAgICAgc3RydWN0IGV0aHRvb2xfZXRoX21hY19zdGF0cyAqbWFjX3N0YXRzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg5NS17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODk2Olx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg5NzpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg5ODpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODk5LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkwMC1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTAxOlx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkwMi1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9OTI4PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTI5Onl0OTIxeF9kc2FfZ2V0X2V0aF9jdHJsX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTMwLVx0XHRcdCAgICAgIHN0cnVjdCBldGh0b29sX2V0aF9jdHJsX3N0YXRzICpjdHJsX3N0YXRzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzMS17XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTMyOlx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzMzpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzNDpcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcdTAwMjZwcC1cdTAwM2VtaWI7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTM1LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzNi1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTM3Olx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzOC1cdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTQ0LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk0NTpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfcm1vbl9oaXN0X3JhbmdlIHl0OTIxeF9ybW9uX3Jhbmdlc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk0Ni1cdHsgMCwgNjQgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9OTU2PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTU3Onl0OTIxeF9kc2FfZ2V0X3Jtb25fc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NTgtXHRcdFx0ICBzdHJ1Y3QgZXRodG9vbF9ybW9uX3N0YXRzICpybW9uX3N0YXRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NjAte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2MTpcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5NjI6XHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXHUwMDI2cHJpdi1cdTAwM2Vwb3J0c1twb3J0XTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5NjM6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk2NC1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NjUtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2NjpcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NjctXHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTY4LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2OTpcdCpyYW5nZXMgPSB5dDkyMXhfcm1vbl9yYW5nZXM7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTcwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz05OTM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5OTQ6eXQ5MjF4X2RzYV9nZXRfc3RhdHM2NChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk5NS1cdFx0ICAgICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTk2LXtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5OTc6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTk4Olx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbcG9ydF07XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6OTk5Olx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFx1MDAyNnBwLVx1MDAzZW1pYjtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDAwLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0xMDI5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzMDp5dDkyMXhfZHNhX2dldF9wYXVzZV9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwMzEtXHRcdFx0ICAgc3RydWN0IGV0aHRvb2xfcGF1c2Vfc3RhdHMgKnBhdXNlX3N0YXRzKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwMzIte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwMzM6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzNDpcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcdTAwMjZwcml2LVx1MDAzZXBvcnRzW3BvcnRdO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwMzU6XHRzdHJ1Y3QgeXQ5MjF4X21pYiAqbWliID0gXHUwMDI2cHAtXHUwMDNlbWliO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwMzYtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTAzNy1cdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzODpcdHl0OTIxeF9yZWFkX21pYihwcml2LCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDM5LVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0xMDQ1PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDQ2Onl0OTIxeF9zZXRfZWVlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIHN0cnVjdCBldGh0b29sX2tlZWUgKmUpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA0Ny17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNTktXHRpZiAoISFuZXdfbWFzayAhPSAhIXByaXYtXHUwMDNlZWVlX3BvcnRzX21hc2spIHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDYwOlx0XHRyZXMgPSB5dDkyMXhfcmVnX3RvZ2dsZV9iaXRzKHByaXYsIFlUOTIxWF9QT05fU1RSQVBfRlVOQyxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDYxLVx0XHRcdFx0XHQgICAgIFlUOTIxWF9QT05fU1RSQVBfRUVFLCAhIW5ld19tYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA2My1cdFx0XHRyZXR1cm4gcmVzO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwNjQ6XHRcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX1BPTl9TVFJBUF9WQUwsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA2NS1cdFx0XHRcdFx0ICAgICBZVDkyMVhfUE9OX1NUUkFQX0VFRSwgISFuZXdfbWFzayk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzItXHQvKiBFbmFibGUgLyBkaXNhYmxlIHBvcnQgRUVFICovXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA3MzpcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX0VFRV9DVFJMLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzQtXHRcdFx0XHQgICAgIFlUOTIxWF9FRUVfQ1RSTF9FTm4ocG9ydCksIGVuYWJsZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzYtXHRcdHJldHVybiByZXM7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA3NzpcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX0VFRW5fVkFMKHBvcnQpLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzgtXHRcdFx0XHQgICAgIFlUOTIxWF9FRUVfVkFMX0RBVEEsIGVuYWJsZSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTEwODU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwODY6eXQ5MjF4X2RzYV9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwODcte1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwODg6XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA4OS1cdGludCByZXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwOTEtXHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwOTI6XHRyZXMgPSB5dDkyMXhfc2V0X2VlZShwcml2LCBwb3J0LCBlKTtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDkzLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDk3LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwOTg6c3RhdGljIGludCB5dDkyMXhfbXR1X2ZldGNoKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQpXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc0NQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIE5FVF9EU0FfWVQ5MjFYIEtjb25maWcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgS2NvbmZpZ2AgZm9yIGBORVRfRFNBX1lUOTIxWGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGRldGVybWluZSB3aGF0JiMzOTtzIGJlaW5nIGNvbmZpZ3VyZWQgaGVyZS4gSXMgaXQgYSBtb2R1bGUsIGJ1aWx0LWluLCBvciBwYXJ0IG9mIGEgbGFyZ2VyLCBtb3JlIGNvbXBsZXggc3Vic3lzdGVtPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBzd2l0Y2ggb3Igc29tZXRoaW5nIG1vcmUgaW52b2x2ZWQsIG1heWJlIHdpdGggTUFDc2VjIG9yIFZMQU4gZmVhdHVyZXMgYmFrZWQgaW4/CgpJJiMzOTtsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIG91dCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcGF0aHMuIElmIHRoZXJlIGFyZSBuZXN0ZWQgYGlmYCBzdGF0ZW1lbnRzLCBJIG5lZWQgdG8gYnJlYWsgZG93biB0aGUgbG9naWMgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9uIG9mIGVhY2ggY2hvaWNlLiBJIHdpbGwgaGF2ZSBhIGxvb2sgYXQgYW55IGhlbHAgdGV4dHM7IHRoZXkgdXN1YWxseSBwcm92aWRlIGNvbnRleHQuIEFyZSB0aGVyZSBhbnkgZGVmYXVsdCBzZXR0aW5ncz8gQW5kIGhvdyBhcmUgdGhlc2UgZGVmYXVsdHMgY2hvc2VuLCBpcyBpdCBhIHZhbHVlIGRlZmluZWQgZWxzZXdoZXJlLCBvciBiYXNlZCBvbiBoYXJkd2FyZT8KCkZ1cnRoZXJtb3JlLCBJJiMzOTtsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSB0cmlzdGF0ZSBzZXR0aW5ncywgZXNwZWNpYWxseSBpZiB0aGVyZSBhcmUgbW9kdWxlIGNob2ljZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGRlY2lzaW9ucyBjYW4gZ2V0IG1vcmUgY29tcGxleCwgZXNwZWNpYWxseSBkdXJpbmcgYnVpbGQgdGltZS4gQWxzbywgaXMgdGhpcyBuZXcsIG9yIGFuIGV4aXN0aW5nIGRldmljZT8gSWYgaXQmIzM5O3MgZXhpc3RpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGN1cnJlbnQga2VybmVsIGluZnJhc3RydWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9EU0FfWVQ5MjFYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnPTE2Mz1jb25maWcgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhfUExBVEZPUk1cbi0tXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzEtXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9EU0FfWVQ5MjFYXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX05FVF9EU0FfVklURVNTRV9WU0M3M1hYX1NQSSkgJiM0Mzs9IHZpdGVzc2UtdnNjNzN4eC1zcGkub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1lUOTIxWCkgJiM0Mzs9IHl0OTIxeC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtMTktb2JqLXlcdFx0XHRcdCYjNDM7PSBiNTMvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzMTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgS2NvbmZpZzoKCioqRGVlcCBEaXZlIGludG8gYE5FVF9EU0FfWVQ5MjFYYCBLY29uZmlnKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBzZWVpbmcgYE5FVF9EU0FfWVQ5MjFYYCwgd2hpY2ggdGVsbHMgbWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFlUOTIxWCBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIHdpdGhpbiB0aGUgRGlzdHJpYnV0ZWQgU3dpdGNoIEFyY2hpdGVjdHVyZSAoRFNBKSBmcmFtZXdvcmsuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgaGFyZHdhcmUgZG9lcyB0aGlzIHNwZWNpZmljYWxseSB0YXJnZXQ/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgYnJvYWRlciBEU0EgZWNvc3lzdGVtLiBJcyBpdCBhIGNvcmUgZHJpdmVyLCBhIHBsYXRmb3JtLXNwZWNpZmljIHZhcmlhbnQsIG9yIHNvbWV0aGluZyBtb3JlIHNwZWNpYWxpemVkPwoKSSYjMzk7bSBzY2FubmluZyBmb3IgdGhlIHVzdWFsIHN1c3BlY3RzOiBgZGVwZW5kcyBvbmAsIGBzZWxlY3RgLCBgaGVscGAsIGFuZCBhbnkgYGRlZmF1bHRgIHZhbHVlcyB0aGF0IG1pZ2h0IGdpdmUgbWUgYSBjbHVlIGFib3V0IHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZCBjb21tb24gY29uZmlndXJhdGlvbnMuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGFueSBoaW50cyBhYm91dCB0aGUgdW5kZXJseWluZyBQSFkgKFBoeXNpY2FsIExheWVyKSBpdCBzdXBwb3J0cywgdGhlIENQVSBpbnRlcmZhY2UgKFNQSSwgSTJDLCBNRElPKSwgYW5kIGFueSBzcGVjaWZpYyBib2FyZCBvciBjaGlwc2V0IGNvbnN0cmFpbnRzLiBBcmUgdGhlcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGNvbWUgaW50byBwbGF5IHdpdGggb3RoZXIgRFNBIGRyaXZlcnMgb3IgbmV0d29yayBjb21wb25lbnRzPwoKSSYjMzk7bSBhbHNvIGN1cmlvdXMgYWJvdXQgYW55IHN5bWJvbHMgdGhpcyBkcml2ZXIgbWlnaHQgYHNlbGVjdGAuIFdoYXQgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyBwdWxsZWQgaW4/IERvZXMgaXQgaW52b2x2ZSBzcGVjaWZpYyBEU0EgZmVhdHVyZXMgbGlrZSBWTEFOIHRhZ2dpbmcsIHBvcnQgbWlycm9yaW5nLCBvciB0cmFmZmljIHNoYXBpbmc/IEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3IgYGJvb2xgLCBgdHJpc3RhdGVgLCBvciBgaW50YCB2YXJpYWJsZXMuCgpGdXJ0aGVybW9yZSwgbGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvYnZpb3VzKiBwaXRmYWxscywgb3IgZ290Y2hhcywgd2hpY2ggc2hvdWxkIGJlIGhpZ2hsaWdodGVkIHdpdGggYGhlbHBgIHRleHQuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbiBhbmQgdW5yYXZlbCB0aGUgS2NvbmZpZyBwdXp6bGUuIExldOKAmXMgc2VlIHdoYXQgZ29vZGllcyBpdCBob2xkcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjU6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gMTY2Olx0XHRzZWxlY3QgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcbiAxNjc6XHRcdGhlbHBcbiAxNjg6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBWaXRlc3NlIFZTQzczODUsIFZTQzczODgsIFZTQzczOTVcbiAxNjk6XHRcdCAgYW5kIFZTQzczOTggU3BhclggaW50ZWdyYXRlZCBldGhlcm5ldCBzd2l0Y2hlcywgY29ubmVjdGVkIG92ZXJcbiAxNzA6XHRcdCAgYSBDUFUtYXR0YWNoZWQgYWRkcmVzcyBidXMgYW5kIHdvcmsgaW4gbWVtb3J5LW1hcHBlZCBJL08gbW9kZS5cbiAxNzE6XHRcbiAxNzI6XHRjb25maWcgTkVUX0RTQV9ZVDkyMVhcbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O01vdG9yY29tbSBZVDkyMTUgZXRoZXJuZXQgc3dpdGNoIGNoaXAgc3VwcG9ydFwmIzM0O1xuIDE3NDpcdFx0c2VsZWN0IE5FVF9EU0FfVEFHX1lUOTIxWFxuIDE3NTpcdFx0c2VsZWN0IE5FVF9JRUVFODAyMVFfSEVMUEVSUyBpZiBEQ0JcbiAxNzY6XHRcdGhlbHBcbiAxNzc6XHRcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaFxuIDE3ODpcdFx0ICBjaGlwLlxuIDE3OTpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDAwOAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgYHl0OTIxeGAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYHl0OTIxeGAgaXMgYnJvdWdodCB0byBsaWZlIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IGl0JiMzOTtzICp1c2VkKi4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IGlzIHRoaXMgc29tZXRoaW5nIHRoYXQgbmVlZHMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhIHNvZnR3YXJlIGFic3RyYWN0aW9uPyBJIGNhbiYjMzk7dCBhc3N1bWUgYW55dGhpbmcgYXQgdGhpcyBwb2ludC4KCk5leHQsIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBrbm93IGhvdyBpdCBpZGVudGlmaWVzIGl0c2VsZiB0byB0aGUgc3lzdGVtLiBXaGVyZSBkb2VzIGl0IGZpdCBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmU/IElzIGl0IHVzaW5nIE1ESU8sIHBsYXRmb3JtLXNwZWNpZmljIHJlc291cmNlcywgb3Igb25lIG9mIHRoZSBtb3JlIGNvbW1vbiBpbnRlcmZhY2VzIGxpa2UgU1BJIG9yIEkyQz8gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdOKAmXMgY29tbXVuaWNhdGluZyBhbmQgcmVnaXN0ZXJpbmcgaXRzZWxmIHdpdGggdGhlIGNvbnRyb2xsaW5nIGRldmljZXMuCgpNeSB1c3VhbCBzdGFydGluZyBwb2ludCwgd2hlbiBJJiMzOTttIHJldmVyc2UtZW5naW5lZXJpbmcgb3IgY29taW5nIHVwIHRvIHNwZWVkIG9uIGEgbW9kdWxlIGxpa2UgdGhpcywgaXMgdG8gaW1tZWRpYXRlbHkgbG9vayBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBlbmQgb2YgYHl0OTIxeC5jYCBnaXZlcyBtZSBhbnkgaW5zaWdodHMgaW50byBob3cgaXQmIzM5O3MgaW5pdGlhbGl6ZWQgYW5kIGJyb3VnaHQgaW50byBzZXJ2aWNlLiBPZnRlbiwgdGhlIGVuZCBvZiB0aGUgZmlsZSBob2xkcyB0aGUga2V5IGVudHJ5IHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX21kaW9fZHJpdmVyfG1vZHVsZV9pbml0fHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00OTM1PXN0YXRpYyB2b2lkIHl0OTIxeF9tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5NjYtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDk2NzpzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTY4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NTAyND1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHl0OTIxeF9tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MDI1Olx0LnByb2JlID0geXQ5MjF4X21kaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTAyNi1cdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjMyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGB5dDkyMXhfbWRpb19kcml2ZXJgIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgeXQ5MjF4X21kaW9fZHJpdmVyYCwgd2hpY2gsIGFzIHRoZSBuYW1lIHN1Z2dlc3RzLCBpcyBhbiBNRElPIGRyaXZlci4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpczogY2FuIE1ESU8gZGV2aWNlcyBvciBEU0Egc3dpdGNoZXMsIGluIGdlbmVyYWwsIGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IHRoZSBuZWVkIGZvciBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmU/IE9yLCBhcmUgdGhleSBzdHJpY3RseSBoYXJkd2FyZS1kZXBlbmRlbnQ/IEkgbmVlZCB0byBmaWd1cmUgdGhpcyBvdXQgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZy4KCkxldCYjMzk7cyBzZWUsIHdoYXQgZG9lcyB0aGUgcHJvbXB0IHNheSB0byBmaWx0ZXIgb3V0PyBPa2F5LCBpdCB3YW50cyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGhhcyBjZXJ0YWluIGNoYXJhY3RlcmlzdGljcy4gSXQgbWVudGlvbnMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbi4gSXQgYWxzbyBsaXN0cyB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgdGhpbmdzIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBhbmQgR1BVcywgd2hpY2ggcmVxdWlyZSByZWFsIFBDSWUgaGFyZHdhcmUuIEZpbmFsbHksIGl0IG5vdGVzIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIGNhbGxiYWNrcy4KClNvLCB0aGUgY29yZSBxdWVzdGlvbiBpcywgY2FuIEkgcmVhY2ggdGhlIE1ESU8gYnVzIGFuZCBzd2l0Y2ggZHJpdmVyIGluIHN0YW5kYXJkIFFFTVUgb3IgZXZlbiBvdGhlciB2aXJ0dWFsIGVudmlyb25tZW50cyB1c2VkIGZvciBzeXprYWxsZXIsIG9yIEdDRT8gT3IgaXMgdGhpcyBpbXBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIGFuIE1ESU8gc3dpdGNoIG9yIGFuIE1ESU8gZGV2aWNlIHZpYSBEZXZpY2UgVHJlZSBpbiB0aGVzZSBzZXR0aW5ncz8KCkkgbmVlZCB0byBleHBsb3JlIGhvdyBNRElPIGRldmljZXMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZC4gQ2FuIHRoZXkgYmUgY3JlYXRlZCB1c2luZyB0aGluZ3MgbGlrZSBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIGBtb2NrLW1kaW9gLCBvciBldmVuIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIERUIG92ZXJsYXlzLCBldGMuPyBBcmUgdGhlcmUgdmlydHVhbCBvciBzb2Z0d2FyZSBtZXRob2RzPyBJIHNob3VsZCBkb3VibGUtY2hlY2sgb3RoZXIgRFNBIHN3aXRjaGVzIG9yIE1ESU8gZHJpdmVycyBpbiB0aGUgc3l6a2FsbGVyIGZ1enppbmcgb3Iga2VybmVsIGd1aWRlbGluZXMgdG8gbG9vayBmb3IgcGF0dGVybnMuCgpUaGlua2luZyBhYm91dCBEU0EsIGhvdyBkb2VzIGl0IGFjdHVhbGx5IHdvcms/IERTQSBzd2l0Y2hlcyBhcmUgKnR5cGljYWxseSogaW5zdGFudGlhdGVkIHVzaW5nIERldmljZSBUcmVlIChgb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhYCkgb3IgcGxhdGZvcm0gZGF0YSwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBjYW4gYmUgZW11bGF0ZWQuCgpMb29raW5nIGF0IGB5dDkyMXhfbWRpb19wcm9iZWAsIEkgc2VlIGEgY3JpdGljYWwgc2VjdGlvbjoKCmBgYGMKY29tcGF0X2luZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKaWYgKCFjb21wYXRfaW5mbykKICAgIHJldHVybiAtRUlOVkFMOwouLi4KcmVzID0geXQ5MjF4X2NoaXBfZGV0ZWN0KHByaXYpOwpgYGAKU28sIHRoaXMgZHJpdmVyIGFwcGVhcnMgdG8gcmVseSBvbiBEZXZpY2UgVHJlZSEgQnV0IGRvZXMgdGhlIGB5dDkyMXhfY2hpcF9kZXRlY3RgIGZ1bmN0aW9uIHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gZGV0ZWN0IGNoaXBzPyBJIG11c3QgcmVhZCB0aGUgY29kZSBpbiBgZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jYCwgc3BlY2lmaWNhbGx5IGZyb20gbGluZXMgNDk2NSB0byA1MDM1IG9mIGB5dDkyMXhfbWRpb19wcm9iZWAgdG8gdW5kZXJzdGFuZCB0aGlzIHByb2Nlc3MgYW5kIGlmIGl0IGlzIGRlcGVuZGVudCBvbiBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0OTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzQ5NjU6XHR9XG40OTY2Olx0XG40OTY3Olx0c3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG40OTY4Olx0e1xuNDk2OTpcdFx0Y29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyAqY29tcGF0X2luZm8gPSBOVUxMO1xuNDk3MDpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG40OTcxOlx0XHRzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvICptZGlvO1xuNDk3MjpcdFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2O1xuNDk3MzpcdFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xuNDk3NDpcdFxuNDk3NTpcdFx0Y29tcGF0X2luZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbjQ5NzY6XHRcdGlmICghY29tcGF0X2luZm8pXG40OTc3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuNDk3ODpcdFxuNDk3OTpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuNDk4MDpcdFx0aWYgKCFwcml2KVxuNDk4MTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjQ5ODI6XHRcbjQ5ODM6XHRcdG1kaW8gPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKm1kaW8pLCBHRlBfS0VSTkVMKTtcbjQ5ODQ6XHRcdGlmICghbWRpbylcbjQ5ODU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG40OTg2Olx0XG40OTg3Olx0XHRtZGlvLVx1MDAzZWJ1cyA9IG1kaW9kZXYtXHUwMDNlYnVzO1xuNDk4ODpcdFx0bWRpby1cdTAwM2VhZGRyID0gbWRpb2Rldi1cdTAwM2VhZGRyO1xuNDk4OTpcdFx0bWRpby1cdTAwM2Vzd2l0Y2hpZCA9IDA7XG40OTkwOlx0XG40OTkxOlx0XHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuNDk5MjpcdFxuNDk5MzpcdFx0cHJpdi1cdTAwM2VzZXJpZXNfaW5mbyA9IGNvbXBhdF9pbmZvO1xuNDk5NDpcdFx0cHJpdi1cdTAwM2VyZWdfb3BzID0gXHUwMDI2eXQ5MjF4X3JlZ19vcHNfbWRpbztcbjQ5OTU6XHRcdHByaXYtXHUwMDNlcmVnX2N0eCA9IG1kaW87XG40OTk2Olx0XG40OTk3Olx0XHRmb3IgKHNpemVfdCBpID0gMDsgaSBcdTAwM2MgQVJSQVlfU0laRShwcml2LVx1MDAzZXBvcnRzKTsgaSYjNDM7JiM0MzspIHtcbjQ5OTg6XHRcdFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFx1MDAyNnByaXYtXHUwMDNlcG9ydHNbaV07XG40OTk5Olx0XG41MDAwOlx0XHRcdHBwLVx1MDAzZWluZGV4ID0gaTtcbjUwMDE6XHRcdFx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2cHAtXHUwMDNlbWliX3JlYWQsIHl0OTIxeF9wb2xsX21pYik7XG41MDAyOlx0XHR9XG41MDAzOlx0XG41MDA0Olx0XHRkcyA9IFx1MDAyNnByaXYtXHUwMDNlZHM7XG41MDA1Olx0XHRkcy1cdTAwM2VkZXYgPSBkZXY7XG41MDA2Olx0XHRkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjUwMDc6XHRcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNnl0OTIxeF9kc2Ffc3dpdGNoX29wcztcbjUwMDg6XHRcdGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNnl0OTIxeF9waHlsaW5rX21hY19vcHM7XG41MDA5Olx0XG41MDEwOlx0XHRtZGlvZGV2X3NldF9kcnZkYXRhKG1kaW9kZXYsIHByaXYpO1xuNTAxMTpcdFxuNTAxMjpcdFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuNTAxMzpcdH1cbjUwMTQ6XHRcbjUwMTU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB5dDkyMXhfb2ZfbWF0Y2hbXSA9IHtcbjUwMTY6XHRcdHtcbjUwMTc6XHRcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDttb3RvcmNvbW0seXQ5MjE1XCYjMzQ7LFxuNTAxODpcdFx0XHQuZGF0YSA9IFx1MDAyNnl0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtZVDkyMVhdLFxuNTAxOTpcdFx0fSxcbjUwMjA6XHRcdHsgLyogc2VudGluZWwgKi8gfSxcbjUwMjE6XHR9O1xuNTAyMjpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHl0OTIxeF9vZl9tYXRjaCk7XG41MDIzOlx0XG41MDI0Olx0c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciB5dDkyMXhfbWRpb19kcml2ZXIgPSB7XG41MDI1Olx0XHQucHJvYmUgPSB5dDkyMXhfbWRpb19wcm9iZSxcbjUwMjY6XHRcdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXG41MDI3Olx0XHQuc2h1dGRvd24gPSB5dDkyMXhfbWRpb19zaHV0ZG93bixcbjUwMjg6XHRcdC5tZGlvZHJ2LmRyaXZlciA9IHtcbjUwMjk6XHRcdFx0Lm5hbWUgPSBZVDkyMVhfTkFNRSxcbjUwMzA6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0geXQ5MjF4X29mX21hdGNoLFxuNTAzMTpcdFx0fSxcbjUwMzI6XHR9O1xuNTAzMzpcdFxuNTAzNDpcdG1kaW9fbW9kdWxlX2RyaXZlcih5dDkyMXhfbWRpb19kcml2ZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg2MAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWXQ5MjF4IE1ESU8gUHJvYmUgUHJvY2VzcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHl0OTIxeF9tZGlvX3Byb2JlYCByZWdpc3RlcnMgdGhlIHN3aXRjaCB3aXRoIGBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKWAuIFRoYXQmIzM5O3MgdGhlIGV4cGVjdGVkIGluaXRpYWxpemF0aW9uLiBBaCwgYnV0ICpkdXJpbmcqIGBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKWAsIHRoZSBEU0Egc3dpdGNoIHNldHVwIGFjdHVhbGx5ICpydW5zKiBgZHMtJmd0O29wcy0mZ3Q7c2V0dXAoZHMpYC4gQW5kIHRoYXTigKYgdGhhdCBjYWxscyBgeXQ5MjF4X2RzYV9zZXR1cChkcylgLiBTbywgdGhhdCYjMzk7cyB3aGVyZSB0aGUgKnJlYWwqIGNvbmZpZ3VyYXRpb24gaGFwcGVucy4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgeXQ5MjF4X2RzYV9zZXR1cGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIHN3aXRjaCYjMzk7cyBpbml0aWFsaXphdGlvbiBpcyBnb2luZyB0byBiZS4gVGltZSB0byBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDc5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs0NzkwOlx0XHRkcy1cdTAwM2VudW1fbGFnX2lkcyA9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbnVtX2xhZ19pZHM7XG40NzkxOlx0XHRkcy1cdTAwM2VudW1fcG9ydHMgPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZW1heF9wb3J0cztcbjQ3OTI6XHR9XG40NzkzOlx0XG40Nzk0Olx0c3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbjQ3OTU6XHR7XG40Nzk2Olx0XHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XG40Nzk3Olx0XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSB0b19kZXZpY2UocHJpdik7XG40Nzk4Olx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LVx1MDAzZW9mX25vZGU7XG40Nzk5Olx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKmNoaWxkO1xuNDgwMDpcdFx0aW50IHJlcztcbjQ4MDE6XHRcbjQ4MDI6XHRcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG40ODAzOlx0XHRyZXMgPSB5dDkyMXhfY2hpcF9yZXNldChwcml2KTtcbjQ4MDQ6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbjQ4MDU6XHRcbjQ4MDY6XHRcdGlmIChyZXMpXG40ODA3Olx0XHRcdHJldHVybiByZXM7XG40ODA4Olx0XG40ODA5Olx0XHQvKiBSZWdpc3RlciB0aGUgaW50ZXJuYWwgbWRpbyBidXMuIE5vZGVzIGZvciBpbnRlcm5hbCBwb3J0cyBzaG91bGQgaGF2ZVxuNDgxMDpcdFx0ICogcHJvcGVyIHBoeS1oYW5kbGUgcG9pbnRpbmcgdG8gdGhlaXIgUEhZcy4gTm90IGVuYWJsaW5nIHRoZSBpbnRlcm5hbFxuNDgxMTpcdFx0ICogYnVzIGlzIHBvc3NpYmxlLCB0aG91Z2ggcHJldHR5IHdpcmVkLCBpZiBpbnRlcm5hbCBwb3J0cyBhcmUgbm90IHVzZWQuXG40ODEyOlx0XHQgKi9cbjQ4MTM6XHRcdGNoaWxkID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFwmIzM0O21kaW9cJiMzNDspO1xuNDgxNDpcdFx0aWYgKGNoaWxkKSB7XG40ODE1Olx0XHRcdHJlcyA9IHl0OTIxeF9tYnVzX2ludF9pbml0KHByaXYsIGNoaWxkKTtcbjQ4MTY6XHRcdFx0b2Zfbm9kZV9wdXQoY2hpbGQpO1xuNDgxNzpcdFx0XHRpZiAocmVzKVxuNDgxODpcdFx0XHRcdHJldHVybiByZXM7XG40ODE5Olx0XHR9XG40ODIwOlx0XG40ODIxOlx0XHQvKiBFeHRlcm5hbCBtZGlvIGJ1cyBpcyBvcHRpb25hbCAqL1xuNDgyMjpcdFx0Y2hpbGQgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShucCwgXCYjMzQ7bWRpby1leHRlcm5hbFwmIzM0Oyk7XG40ODIzOlx0XHRpZiAoY2hpbGQpIHtcbjQ4MjQ6XHRcdFx0cmVzID0geXQ5MjF4X21idXNfZXh0X2luaXQocHJpdiwgY2hpbGQpO1xuNDgyNTpcdFx0XHRvZl9ub2RlX3B1dChjaGlsZCk7XG40ODI2Olx0XHRcdGlmIChyZXMpXG40ODI3Olx0XHRcdFx0cmV0dXJuIHJlcztcbjQ4Mjg6XHRcbjQ4Mjk6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O1VudGVzdGVkIGV4dGVybmFsIG1kaW8gYnVzXFxuXCYjMzQ7KTtcbjQ4MzA6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG40ODMxOlx0XHR9XG40ODMyOlx0XG40ODMzOlx0XHRtdXRleF9sb2NrKFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuNDgzNDpcdFx0cmVzID0geXQ5MjF4X2NoaXBfc2V0dXAocHJpdik7XG40ODM1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG40ODM2Olx0XG40ODM3Olx0XHRpZiAocmVzKVxuNDgzODpcdFx0XHRyZXR1cm4gcmVzO1xuNDgzOTpcdFxuNDg0MDpcdFx0eXQ5Mnh4X3JlZ2lzdGVyX3N3aXRjaChkcyk7XG40ODQxOlx0XG40ODQyOlx0XHRyZXR1cm4gMDtcbjQ4NDM6XHR9XG40ODQ0Olx0XG40ODQ1Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgeXQ5MjF4X3BoeWxpbmtfbWFjX29wcyA9IHtcbjQ4NDY6XHRcdC5tYWNfbGlua19kb3duXHQ9IHl0OTIxeF9waHlsaW5rX21hY19saW5rX2Rvd24sXG40ODQ3Olx0XHQubWFjX2xpbmtfdXBcdD0geXQ5MjF4X3BoeWxpbmtfbWFjX2xpbmtfdXAsXG40ODQ4Olx0XHQubWFjX2NvbmZpZ1x0PSB5dDkyMXhfcGh5bGlua19tYWNfY29uZmlnLFxuNDg0OTpcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MTA2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBORVRfRFNBX1lUOTIxWCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYE5FVF9EU0FfWVQ5MjFYYCDigJMgc3BlY2lmaWNhbGx5LCB0aGlzIGB5dDkyMXhgIGRyaXZlciDigJMgaXMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gYSBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gSSBrbm93IHRoYXQgYHl0OTIxeGAgcmVsaWVzIG9uIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwIGFuZCBpdHMgTURJTyBpbnRlcmZhY2UgKGBtZGlvX2RyaXZlcmApLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogRG9lcyBRRU1VIGV2ZW4gKmVtdWxhdGUqIHRoYXQgc3BlY2lmaWMgY2hpcCwgb3IgaXRzIE1ESU8gcmVnaXN0ZXJzPyBBbmQgdGhlIHF1aWNrIGFuc3dlciBpcyAqbm8qLiBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIFlUOTIxNS4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIHJ1bGVzLiBJIG5lZWQgdG8gc2VlIGlmIHRoaXMgY2hhbmdlIGZhbGxzIHVuZGVyIG9uZSBvZiB0aGUgZXhlbXB0aW9ucyBmb3IgJiMzNDtXb3J0aEZ1enppbmc9ZmFsc2UuJiMzNDsgVGhlIHJlbGV2YW50IG9uZXMgYXJlIG1vZGlmaWNhdGlvbnMgdG8gdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoYXQgaW5jbHVkZXMgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUuIFRoaXMgKmNvdWxkKiBhcHBseS4gQnV0IEkgaGF2ZSB0byBiZSBzdXJlLgoKTXkgbmV4dCBsaW5lIG9mIHRob3VnaHQgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgTURJTyBldGhlcm5ldCBzd2l0Y2ggZHJpdmVycyAoRFNBIGRyaXZlcnMpIGluIGdlbmVyYWwgKmNhbiogYmUgcmVhY2hlZCBvciBpbnN0YW50aWF0ZWQgaW4gUUVNVS9HQ0UuIFRoaXMgaXMgdGhlIGtleSBxdWVzdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgc29tZSBraW5kIG9mIG1vY2sgb3IgZW11bGF0aW9uIGZvciBtZGlvL0RTQSwgb3IgaWYgdGhlc2UgYXJlIHVuaXZlcnNhbGx5IGNvbnNpZGVyZWQgaGFyZHdhcmUgZHJpdmVycyB0aGF0IGFyZSB1bnJlYWNoYWJsZS4KCkkgbmVlZCB0byBsb29rIGZvciBleGFtcGxlcyBpbiB0aGUga2VybmVsIGl0c2VsZiwgb3IgaW4gc3l6a2FsbGVyLiBBcmUgRFNBIGRyaXZlcnMgdGVzdGVkLCBvciBmdXp6ZWQgb24gUUVNVT8gQW5kIHRoZW4uLi4gKmFoYSEqIFRoZXJlJiMzOTtzIGBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY2AuIFRoYXQmIzM5O3MgYSBzb2Z0d2FyZSBsb29wYmFjayBEU0Egc3dpdGNoLCAqc3BlY2lmaWNhbGx5KiBkZXNpZ25lZCBmb3IgdGVzdGluZyB0aGUgRFNBIGNvcmUhIFRoYXQgaW1wbGllcyBpdCYjMzk7cyAqcG9zc2libGUqIHRvIHRlc3QgYW5kLCB0aGVyZWZvcmUsIGZ1enogc29tZSBEU0EgZHJpdmVycyBpbiBRRU1VLiBUaGlzIGlzIHByb21pc2luZy4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZHNhX2xvb3AuY2AgdG8gc2VlIGhvdyBpdCB3b3JrcyBhbmQgZGV0ZXJtaW5lIGlmIGBORVRfRFNBX1lUOTIxWGAgY2FuIGJlIGFkYXB0ZWQgb3IgdGVzdGVkIGluIGEgc2ltaWxhciBmYXNoaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMiAxNTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkc2FfbG9vcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvTWFrZWZpbGU9Mz1iY20tc2YyLW9ianNcdFx0XHQ6PSBiY21fc2YyLm8gYmNtX3NmMl9jZnAub1xuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcdCYjNDM7PSBkc2FfbG9vcC5vXG5kcml2ZXJzL25ldC9kc2EvTWFrZWZpbGUtNS1vYmotJChDT05GSUdfTkVUX0RTQV9LUzg5OTUpIFx0JiM0Mzs9IGtzODk5NS5vXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjcyCgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDg1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYGRzYV9sb29wLmNgIGFuZCBgeXQ5MjF4LmNgIGp1bXBzIG91dCBhdCBtZS4gVGhlIGBkc2FfbG9vcC5jYCBmaWxlIGlzIGNsZWFybHkgc2V0IHVwIGZvciAqbW9jayogTURJTyBkZXZpY2UgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byB0ZXN0IHRoZSBEU0EgY29yZS4gSXQgZG9lc24mIzM5O3QgcmVxdWlyZSBhbnkgYWN0dWFsIGhhcmR3YXJlLiBPbiB0aGUgb3RoZXIgaGFuZCwgYHl0OTIxeC5jYCBpcyBhICpoYXJkd2FyZS1zcGVjaWZpYyogZHJpdmVyIGZvciB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcC4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIHNlZSB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGhpdCB0aGUgYFlUOTIxWF9DSElQX0lEYCByZWdpc3RlciwgYW5kIG5lZWRzIHRvIGJlIGFibGUgdG8gcmVhZCBiYWNrIHRoZSBgWVQ5MjFYX0NISVBfSURfTUFKT1JgIGZpZWxkIHRvIGlkZW50aWZ5IHRoZSBjaGlwJiMzOTtzIHNlcmllcy4gVGhlIHByb2JlIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGZhaWwgd2l0aG91dCB0aGF0IHBoeXNpY2FsIGNoaXAgcHJlc2VudCwgbWF0Y2hpbmcgdGhlIGRldmljZSB3aXRoIHRoZSAmIzM0O21vdG9yY29tbSx5dDkyMTUmIzM0OyBPRiBjb21wYXRpYmxlIHN0cmluZy4KCk5vdywgY29uc2lkZXJpbmcgdGhlIGluc3RydWN0aW9ucy4gVGhlIGNyaXRpY2FsIGJpdCBpczogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhhdCYjMzk7cyB3aGF0IEkgbmVlZCB0byBmb2N1cyBvbi4gU2luY2UgdGhlIGB5dDkyMXhgIGRyaXZlciAqZXhwbGljaXRseSogcmVxdWlyZXMgdGhlIHJlYWwgaGFyZHdhcmUsIGFuZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhhdCBzcGVjaWZpYyBNb3RvcmNvbW0gY2hpcCwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gYW55IHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBkcml2ZXIgZXhwZWN0cyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gcmVzcG9uZCB0byBNRElPIHJlZ2lzdGVyIHJlYWRzLCBhIHJlcXVpcmVtZW50IHRoYXQgY2Fubm90IGJlIHNhdGlzZmllZCBpbiBhIFFFTVUgaW5zdGFuY2UuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2s6IHRoZSBkaWZmIGlzICpvbmx5KiBtb2RpZnlpbmcgYGRyaXZlcnMvbmV0L2RzYS95dDkyMXguY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhgLiBUaGUgZHJpdmVyIGlzIGRlZmluaXRlbHkgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1L1lUOTIxOCBoYXJkd2FyZS4gSSBhbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoaXMgaGFyZHdhcmUgYXZhaWxhYmxlIGZvciBzdGFuZGFyZCBRRU1VIC8gR0NFIGluc3RhbmNlcywgbWFraW5nIHRoaXMgcGF0Y2ggY2xlYXJseSBmYWxsIHVuZGVyIHRoZSBleGNsdXNpb24gY3JpdGVyaWEuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBJJiMzOTtsbCBzZXQgdGhlIG90aGVyIHBhcmFtZXRlcnMgYXBwcm9wcmlhdGVseS4gVGhlIGZpbmFsIHJlYXNvbmluZyB0byBiZSByZWNvcmRlZCBzaG91bGQgY29uY2lzZWx5IGV4cGxhaW4gdGhhdCBgeXQ5MjF4YCBpcyBhIGRyaXZlciB0aGF0IHJlcXVpcmVzIHRoZSBNb3RvcmNvbW0gaGFyZHdhcmUgYW5kIGlzIG5vdCBlbXVsYXRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDIgMTU6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgTW90b3Jjb21tIFlUOTIxNS9ZVDkyMTggRFNBIGV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS95dDkyMXguYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIHN3aXRjaCBoYXJkd2FyZSBjb25uZWN0ZWQgb3ZlciBNRElPIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1vdG9yY29tbSBZVDkyMTUvWVQ5MjE4IERTQSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBzd2l0Y2ggaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgTURJTyB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAyIDE1OjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDoyOS45NDE5ODI1ODdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgxMTUwODg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNb3RvcmNvbW0gWVQ5MjE1L1lUOTIxOCBEU0EgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgc3dpdGNoIGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIE1ESU8gd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDoyOS45NDE5OTM0MzdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NDc5NDUyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiMzFlNTc3NjhmYTI5YzJkZmVhZTY5ZTgxNWMyNjY1YTA2NzI3ZGUzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDIgMTU6MDQ6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jIGIvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jXFxuaW5kZXggMTU5YjE2NjA2ZjZjYS4uOWJlYTQyYjYxODQ3ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcXG5AQCAtMTUxLDYgKzE1MSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X2luZm8geXQ5MjF4X2luZm9zW10gPSB7XFxuIFxcdHt9XFxuIH07XFxuIFxcbitzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXTtcXG4rXFxuICNkZWZpbmUgWVQ5MjFYX05BTUVcXHRcXFwieXQ5MjF4XFxcIlxcbiBcXG4gI2RlZmluZSBZVDkyMVhfVklEX1VOV0FSRVxcdDQwOTVcXG5AQCAtNTYzLDcgKzU2NSw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxcbiBcXHR1MTYgdmFsO1xcbiBcXHRpbnQgcmVzO1xcbiBcXG4tXFx0aWYgKHBvcnQgXFx1MDAzZT0gWVQ5MjFYX1BPUlRfTlVNKVxcbitcXHRpZiAocG9ydCBcXHUwMDNlPSBwcml2LVxcdTAwM2VzZXJpZXNfaW5mby1cXHUwMDNlbWF4X3BvcnRzKVxcbiBcXHRcXHRyZXR1cm4gVTE2X01BWDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5AQCAtNTgxLDcgKzU4Myw3IEBAIHl0OTIxeF9tYnVzX2ludF93cml0ZShzdHJ1Y3QgbWlpX2J1cyAqbWJ1cywgaW50IHBvcnQsIGludCByZWcsIHUxNiBkYXRhKVxcbiBcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbiBcXHRpbnQgcmVzO1xcbiBcXG4tXFx0aWYgKHBvcnQgXFx1MDAzZT0gWVQ5MjFYX1BPUlRfTlVNKVxcbitcXHRpZiAocG9ydCBcXHUwMDNlPSBwcml2LVxcdTAwM2VzZXJpZXNfaW5mby1cXHUwMDNlbWF4X3BvcnRzKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5AQCAtNTk2LDYgKzU5OCw3IEBAIHl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXFxuIHtcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbiBcXHRzdHJ1Y3QgbWlpX2J1cyAqbWJ1cztcXG4rXFx0dTMyIG1heF9wb3J0O1xcbiBcXHRpbnQgcmVzO1xcbiBcXG4gXFx0bWJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpO1xcbkBAIC02MDgsNyArNjExLDggQEAgeXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG4gXFx0bWJ1cy1cXHUwMDNlcmVhZCA9IHl0OTIxeF9tYnVzX2ludF9yZWFkO1xcbiBcXHRtYnVzLVxcdTAwM2V3cml0ZSA9IHl0OTIxeF9tYnVzX2ludF93cml0ZTtcXG4gXFx0bWJ1cy1cXHUwMDNlcGFyZW50ID0gZGV2O1xcbi1cXHRtYnVzLVxcdTAwM2VwaHlfbWFzayA9ICh1MzIpfkdFTk1BU0soWVQ5MjFYX1BPUlRfTlVNIC0gMSwgMCk7XFxuK1xcdG1heF9wb3J0ID0gcHJpdi1cXHUwMDNlc2VyaWVzX2luZm8tXFx1MDAzZW1heF9wb3J0cztcXG4rXFx0bWJ1cy1cXHUwMDNlcGh5X21hc2sgPSAodTMyKX5HRU5NQVNLKG1heF9wb3J0IC0gMSwgMCk7XFxuIFxcbiBcXHRyZXMgPSBkZXZtX29mX21kaW9idXNfcmVnaXN0ZXIoZGV2LCBtYnVzLCBtbnApO1xcbiBcXHRpZiAocmVzKVxcbkBAIC00NDMwLDggKzQ0MzQsMzYgQEAgc3RhdGljIGludCB5dDkyMXhfZWRhdGFfcmVhZChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHU4IGFkZHIsIHU4ICp2YWxwKVxcbiBcXHRyZXR1cm4geXQ5MjF4X2VkYXRhX3JlYWRfY29udChwcml2LCBhZGRyLCB2YWxwKTtcXG4gfVxcbiBcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8geXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW10gPSB7XFxuK1xcdFtZVDkyMVhdID0ge1xcbitcXHRcXHQuY2hpcF9tb2RlID0gWVQ5MjFYLFxcbitcXHRcXHQubWF4X3BvcnRzID0gWVQ5MjFYX1BPUlRfTlVNLFxcbitcXHRcXHQubnVtX2xhZ19pZHMgPSBZVDkyMVhfTEFHX05VTSxcXG4rXFx0XFx0LmFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwLFxcbitcXHRcXHQuYWdlaW5nX3RpbWVfbWF4ID0gVTE2X01BWCAqIDUwMDAsXFxuK1xcdFxcdC5kc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWwgPSB0cnVlLFxcbitcXHRcXHQuYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlLFxcbitcXHR9LFxcbit9O1xcbitcXG4rc3RhdGljIGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnl0OTJ4eF9zZXJpZXNfbG9va3VwX2luZm8odTMyIG1ham9yKVxcbit7XFxuK1xcdGVudW0gY2hpcF9tb2RlIG1vZGUgPSBZVF9NQVg7XFxuK1xcdGludCBpO1xcbitcXG4rXFx0aWYgKG1ham9yID09IFlUOTIxNV9NQUpPUiB8fCBtYWpvciA9PSBZVDkyMThfTUFKT1IpXFxuK1xcdFxcdG1vZGUgPSBZVDkyMVg7XFxuK1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5dDkyeHhfc2VyaWVzX2luZm9fdGFibGUpOyArK2kpXFxuK1xcdFxcdGlmICh5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbaV0uY2hpcF9tb2RlID09IG1vZGUpXFxuK1xcdFxcdFxcdHJldHVybiBcXHUwMDI2eXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldO1xcbitcXG4rXFx0cmV0dXJuIE5VTEw7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgeXQ5MjF4X2NoaXBfZGV0ZWN0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG4ge1xcbitcXHRjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpzZXJpZXNfaW5mbztcXG4gXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbiBcXHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X2luZm8gKmluZm87XFxuIFxcdHU4IGV4dG1vZGU7XFxuQEAgLTQ0NDcsNiArNDQ3OSwxMSBAQCBzdGF0aWMgaW50IHl0OTIxeF9jaGlwX2RldGVjdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXFxuIFxcbiBcXHRtYWpvciA9IEZJRUxEX0dFVChZVDkyMVhfQ0hJUF9JRF9NQUpPUiwgY2hpcGlkKTtcXG4gXFxuK1xcdHNlcmllc19pbmZvID0geXQ5Mnh4X3Nlcmllc19sb29rdXBfaW5mbyhtYWpvcik7XFxuK1xcdGlmICghc2VyaWVzX2luZm8pXFxuK1xcdFxcdHJldHVybiAtRU5PREVWO1xcbitcXHRwcml2LVxcdTAwM2VzZXJpZXNfaW5mbyA9IHNlcmllc19pbmZvO1xcbitcXG4gXFx0Zm9yIChpbmZvID0geXQ5MjF4X2luZm9zOyBpbmZvLVxcdTAwM2VuYW1lOyBpbmZvKyspXFxuIFxcdFxcdGlmIChpbmZvLVxcdTAwM2VtYWpvciA9PSBtYWpvcilcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTQ3NDAsNiArNDc3NywyMCBAQCBzdGF0aWMgaW50IHl0OTIxeF9jaGlwX3NldHVwKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuK3N0YXRpYyB2b2lkIHl0OTJ4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbit7XFxuK1xcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9IHRvX3l0OTIxeF9wcml2KGRzKTtcXG4rXFxuK1xcdGRzLVxcdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydCA9XFxuK1xcdFxcdHByaXYtXFx1MDAzZXNlcmllc19pbmZvLVxcdTAwM2Vhc3Npc3RlZF9sZWFybmluZ19vbl9jcHVfcG9ydDtcXG4rXFx0ZHMtXFx1MDAzZWRzY3BfcHJpb19tYXBwaW5nX2lzX2dsb2JhbCA9XFxuK1xcdFxcdHByaXYtXFx1MDAzZXNlcmllc19pbmZvLVxcdTAwM2Vkc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWw7XFxuK1xcdGRzLVxcdTAwM2VhZ2VpbmdfdGltZV9taW4gPSBwcml2LVxcdTAwM2VzZXJpZXNfaW5mby1cXHUwMDNlYWdlaW5nX3RpbWVfbWluO1xcbitcXHRkcy1cXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gcHJpdi1cXHUwMDNlc2VyaWVzX2luZm8tXFx1MDAzZWFnZWluZ190aW1lX21heDtcXG4rXFx0ZHMtXFx1MDAzZW51bV9sYWdfaWRzID0gcHJpdi1cXHUwMDNlc2VyaWVzX2luZm8tXFx1MDAzZW51bV9sYWdfaWRzO1xcbitcXHRkcy1cXHUwMDNlbnVtX3BvcnRzID0gcHJpdi1cXHUwMDNlc2VyaWVzX2luZm8tXFx1MDAzZW1heF9wb3J0cztcXG4rfVxcbitcXG4gc3RhdGljIGludCB5dDkyMXhfZHNhX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4ge1xcbiBcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuQEAgLTQ3ODYsNiArNDgzNyw4IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuIFxcdGlmIChyZXMpXFxuIFxcdFxcdHJldHVybiByZXM7XFxuIFxcbitcXHR5dDkyeHhfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC00OTEzLDExICs0OTY2LDE2IEBAIHN0YXRpYyB2b2lkIHl0OTIxeF9tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuIFxcbiBzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4ge1xcbitcXHRjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpjb21wYXRfaW5mbyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuIFxcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW87XFxuIFxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdjtcXG4gXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbiBcXG4rXFx0Y29tcGF0X2luZm8gPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG4rXFx0aWYgKCFjb21wYXRfaW5mbylcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICghcHJpdilcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuQEAgLTQ5MzIsNiArNDk5MCw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbiBcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbiBcXG4rXFx0cHJpdi1cXHUwMDNlc2VyaWVzX2luZm8gPSBjb21wYXRfaW5mbztcXG4gXFx0cHJpdi1cXHUwMDNlcmVnX29wcyA9IFxcdTAwMjZ5dDkyMXhfcmVnX29wc19tZGlvO1xcbiBcXHRwcml2LVxcdTAwM2VyZWdfY3R4ID0gbWRpbztcXG4gXFxuQEAgLTQ5NDQsMTUgKzUwMDMsOSBAQCBzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4gXFxuIFxcdGRzID0gXFx1MDAyNnByaXYtXFx1MDAzZWRzO1xcbiBcXHRkcy1cXHUwMDNlZGV2ID0gZGV2O1xcbi1cXHRkcy1cXHUwMDNlYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlO1xcbi1cXHRkcy1cXHUwMDNlZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsID0gdHJ1ZTtcXG4gXFx0ZHMtXFx1MDAzZXByaXYgPSBwcml2O1xcbiBcXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNnl0OTIxeF9kc2Ffc3dpdGNoX29wcztcXG4tXFx0ZHMtXFx1MDAzZWFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwO1xcbi1cXHRkcy1cXHUwMDNlYWdlaW5nX3RpbWVfbWF4ID0gVTE2X01BWCAqIDUwMDA7XFxuIFxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2eXQ5MjF4X3BoeWxpbmtfbWFjX29wcztcXG4tXFx0ZHMtXFx1MDAzZW51bV9sYWdfaWRzID0gWVQ5MjFYX0xBR19OVU07XFxuLVxcdGRzLVxcdTAwM2VudW1fcG9ydHMgPSBZVDkyMVhfUE9SVF9OVU07XFxuIFxcbiBcXHRtZGlvZGV2X3NldF9kcnZkYXRhKG1kaW9kZXYsIHByaXYpO1xcbiBcXG5AQCAtNDk2MCw4ICs1MDEzLDExIEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB5dDkyMXhfb2ZfbWF0Y2hbXSA9IHtcXG4tXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJtb3RvcmNvbW0seXQ5MjE1XFxcIiB9LFxcbi1cXHR7fVxcbitcXHR7XFxuK1xcdFxcdC5jb21wYXRpYmxlID0gXFxcIm1vdG9yY29tbSx5dDkyMTVcXFwiLFxcbitcXHRcXHQuZGF0YSA9IFxcdTAwMjZ5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbWVQ5MjFYXSxcXG4rXFx0fSxcXG4rXFx0eyAvKiBzZW50aW5lbCAqLyB9LFxcbiB9O1xcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oIGIvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXFxuaW5kZXggNWYzYjk5ZTE4OWM0MS4uY2M4MjIzZWE1ZjI5OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhcXG5AQCAtOTQ1LDkgKzk0NSwyNSBAQCBzdHJ1Y3QgeXQ5MjF4X3JlZ19vcHMge1xcbiBcXHRpbnQgKCp3cml0ZSkodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyIHZhbCk7XFxuIH07XFxuIFxcbitlbnVtIGNoaXBfbW9kZSB7XFxuK1xcdFlUOTIxWCxcXG4rXFx0WVRfTUFYLFxcbit9O1xcbitcXG4rc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB7XFxuK1xcdGVudW0gY2hpcF9tb2RlIGNoaXBfbW9kZTtcXG4rXFx0dW5zaWduZWQgaW50IG1heF9wb3J0cztcXG4rXFx0dW5zaWduZWQgaW50IG51bV9sYWdfaWRzO1xcbitcXHR1bnNpZ25lZCBpbnQgYWdlaW5nX3RpbWVfbWluO1xcbitcXHR1bnNpZ25lZCBpbnQgYWdlaW5nX3RpbWVfbWF4O1xcbitcXHR1MzIgZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsO1xcbitcXHR1MzIgYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQ7XFxuK307XFxuK1xcbiBzdHJ1Y3QgeXQ5MjF4X3ByaXYge1xcbiBcXHRzdHJ1Y3QgZHNhX3N3aXRjaCBkcztcXG4gXFxuK1xcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvO1xcbiBcXHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X2luZm8gKmluZm87XFxuIFxcdHVuc2lnbmVkIGludCBtZXRlcl9zbG90X25zO1xcbiBcXHR1bnNpZ25lZCBpbnQgcG9ydF9zaGFwZV9zbG90X25zO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDozMS40OTA4NTg3NzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjU2MjYyNTE5NDQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTW90b3Jjb21tIFlUOTIxNS9ZVDkyMTggRFNBIGV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGRyaXZlcnMvbmV0L2RzYS95dDkyMXguYykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIHN3aXRjaCBoYXJkd2FyZSBjb25uZWN0ZWQgb3ZlciBNRElPIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjMxZTU3NzY4ZmEyOWMyZGZlYWU2OWU4MTVjMjY2NWEwNjcyN2RlM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgU2VwIDIgMTU6MDQ6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcbmluZGV4IDE1OWIxNjYwNmY2Y2EuLjliZWE0MmI2MTg0N2QgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS95dDkyMXguY1xuQEAgLTE1MSw2ICsxNTEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvIHl0OTIxeF9pbmZvc1tdID0ge1xuIFx0e31cbiB9O1xuIFxuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvIHl0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtdO1xuK1xuICNkZWZpbmUgWVQ5MjFYX05BTUVcdFwieXQ5MjF4XCJcbiBcbiAjZGVmaW5lIFlUOTIxWF9WSURfVU5XQVJFXHQ0MDk1XG5AQCAtNTYzLDcgKzU2NSw3IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxuIFx0dTE2IHZhbDtcbiBcdGludCByZXM7XG4gXG4tXHRpZiAocG9ydCBcdTAwM2U9IFlUOTIxWF9QT1JUX05VTSlcbitcdGlmIChwb3J0IFx1MDAzZT0gcHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2VtYXhfcG9ydHMpXG4gXHRcdHJldHVybiBVMTZfTUFYO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZXJlZ19sb2NrKTtcbkBAIC01ODEsNyArNTgzLDcgQEAgeXQ5MjF4X21idXNfaW50X3dyaXRlKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IGRhdGEpXG4gXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVx1MDAzZXByaXY7XG4gXHRpbnQgcmVzO1xuIFxuLVx0aWYgKHBvcnQgXHUwMDNlPSBZVDkyMVhfUE9SVF9OVU0pXG4rXHRpZiAocG9ydCBcdTAwM2U9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlbWF4X3BvcnRzKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cHJpdi1cdTAwM2VyZWdfbG9jayk7XG5AQCAtNTk2LDYgKzU5OCw3IEBAIHl0OTIxeF9tYnVzX2ludF9pbml0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICptbnApXG4ge1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuIFx0c3RydWN0IG1paV9idXMgKm1idXM7XG4rXHR1MzIgbWF4X3BvcnQ7XG4gXHRpbnQgcmVzO1xuIFxuIFx0bWJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhkZXYpO1xuQEAgLTYwOCw3ICs2MTEsOCBAQCB5dDkyMXhfbWJ1c19pbnRfaW5pdChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbW5wKVxuIFx0bWJ1cy1cdTAwM2VyZWFkID0geXQ5MjF4X21idXNfaW50X3JlYWQ7XG4gXHRtYnVzLVx1MDAzZXdyaXRlID0geXQ5MjF4X21idXNfaW50X3dyaXRlO1xuIFx0bWJ1cy1cdTAwM2VwYXJlbnQgPSBkZXY7XG4tXHRtYnVzLVx1MDAzZXBoeV9tYXNrID0gKHUzMil+R0VOTUFTSyhZVDkyMVhfUE9SVF9OVU0gLSAxLCAwKTtcbitcdG1heF9wb3J0ID0gcHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2VtYXhfcG9ydHM7XG4rXHRtYnVzLVx1MDAzZXBoeV9tYXNrID0gKHUzMil+R0VOTUFTSyhtYXhfcG9ydCAtIDEsIDApO1xuIFxuIFx0cmVzID0gZGV2bV9vZl9tZGlvYnVzX3JlZ2lzdGVyKGRldiwgbWJ1cywgbW5wKTtcbiBcdGlmIChyZXMpXG5AQCAtNDQzMCw4ICs0NDM0LDM2IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2VkYXRhX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1OCBhZGRyLCB1OCAqdmFscClcbiBcdHJldHVybiB5dDkyMXhfZWRhdGFfcmVhZF9jb250KHByaXYsIGFkZHIsIHZhbHApO1xuIH1cbiBcbitzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXSA9IHtcbitcdFtZVDkyMVhdID0ge1xuK1x0XHQuY2hpcF9tb2RlID0gWVQ5MjFYLFxuK1x0XHQubWF4X3BvcnRzID0gWVQ5MjFYX1BPUlRfTlVNLFxuK1x0XHQubnVtX2xhZ19pZHMgPSBZVDkyMVhfTEFHX05VTSxcbitcdFx0LmFnZWluZ190aW1lX21pbiA9IDEgKiA1MDAwLFxuK1x0XHQuYWdlaW5nX3RpbWVfbWF4ID0gVTE2X01BWCAqIDUwMDAsXG4rXHRcdC5kc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWwgPSB0cnVlLFxuK1x0XHQuYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlLFxuK1x0fSxcbit9O1xuK1xuK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICp5dDkyeHhfc2VyaWVzX2xvb2t1cF9pbmZvKHUzMiBtYWpvcilcbit7XG4rXHRlbnVtIGNoaXBfbW9kZSBtb2RlID0gWVRfTUFYO1xuK1x0aW50IGk7XG4rXG4rXHRpZiAobWFqb3IgPT0gWVQ5MjE1X01BSk9SIHx8IG1ham9yID09IFlUOTIxOF9NQUpPUilcbitcdFx0bW9kZSA9IFlUOTIxWDtcbitcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFSUkFZX1NJWkUoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlKTsgKytpKVxuK1x0XHRpZiAoeXQ5Mnh4X3Nlcmllc19pbmZvX3RhYmxlW2ldLmNoaXBfbW9kZSA9PSBtb2RlKVxuK1x0XHRcdHJldHVybiBcdTAwMjZ5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbaV07XG4rXG4rXHRyZXR1cm4gTlVMTDtcbit9XG4rXG4gc3RhdGljIGludCB5dDkyMXhfY2hpcF9kZXRlY3Qoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxuIHtcbitcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKnNlcmllc19pbmZvO1xuIFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xuIFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvICppbmZvO1xuIFx0dTggZXh0bW9kZTtcbkBAIC00NDQ3LDYgKzQ0NzksMTEgQEAgc3RhdGljIGludCB5dDkyMXhfY2hpcF9kZXRlY3Qoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxuIFxuIFx0bWFqb3IgPSBGSUVMRF9HRVQoWVQ5MjFYX0NISVBfSURfTUFKT1IsIGNoaXBpZCk7XG4gXG4rXHRzZXJpZXNfaW5mbyA9IHl0OTJ4eF9zZXJpZXNfbG9va3VwX2luZm8obWFqb3IpO1xuK1x0aWYgKCFzZXJpZXNfaW5mbylcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXHRwcml2LVx1MDAzZXNlcmllc19pbmZvID0gc2VyaWVzX2luZm87XG4rXG4gXHRmb3IgKGluZm8gPSB5dDkyMXhfaW5mb3M7IGluZm8tXHUwMDNlbmFtZTsgaW5mbysrKVxuIFx0XHRpZiAoaW5mby1cdTAwM2VtYWpvciA9PSBtYWpvcilcbiBcdFx0XHRicmVhaztcbkBAIC00NzQwLDYgKzQ3NzcsMjAgQEAgc3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rc3RhdGljIHZvaWQgeXQ5Mnh4X3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4re1xuK1x0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuK1xuK1x0ZHMtXHUwMDNlYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPVxuK1x0XHRwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFzc2lzdGVkX2xlYXJuaW5nX29uX2NwdV9wb3J0O1xuK1x0ZHMtXHUwMDNlZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsID1cbitcdFx0cHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2Vkc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWw7XG4rXHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9taW4gPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZWFnZWluZ190aW1lX21pbjtcbitcdGRzLVx1MDAzZWFnZWluZ190aW1lX21heCA9IHByaXYtXHUwMDNlc2VyaWVzX2luZm8tXHUwMDNlYWdlaW5nX3RpbWVfbWF4O1xuK1x0ZHMtXHUwMDNlbnVtX2xhZ19pZHMgPSBwcml2LVx1MDAzZXNlcmllc19pbmZvLVx1MDAzZW51bV9sYWdfaWRzO1xuK1x0ZHMtXHUwMDNlbnVtX3BvcnRzID0gcHJpdi1cdTAwM2VzZXJpZXNfaW5mby1cdTAwM2VtYXhfcG9ydHM7XG4rfVxuK1xuIHN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4ge1xuIFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xuQEAgLTQ3ODYsNiArNDgzNyw4IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X2RzYV9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4gXHRpZiAocmVzKVxuIFx0XHRyZXR1cm4gcmVzO1xuIFxuK1x0eXQ5Mnh4X3JlZ2lzdGVyX3N3aXRjaChkcyk7XG4rXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtNDkxMywxMSArNDk2NiwxNiBAQCBzdGF0aWMgdm9pZCB5dDkyMXhfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFxuIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIHtcbitcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcbiBcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuIFx0c3RydWN0IHl0OTIxeF9yZWdfbWRpbyAqbWRpbztcbiBcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdjtcbiBcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbiBcbitcdGNvbXBhdF9pbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG4rXHRpZiAoIWNvbXBhdF9pbmZvKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcbiBcdGlmICghcHJpdilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG5AQCAtNDkzMiw2ICs0OTkwLDcgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gXG4gXHRtdXRleF9pbml0KFx1MDAyNnByaXYtXHUwMDNlcmVnX2xvY2spO1xuIFxuK1x0cHJpdi1cdTAwM2VzZXJpZXNfaW5mbyA9IGNvbXBhdF9pbmZvO1xuIFx0cHJpdi1cdTAwM2VyZWdfb3BzID0gXHUwMDI2eXQ5MjF4X3JlZ19vcHNfbWRpbztcbiBcdHByaXYtXHUwMDNlcmVnX2N0eCA9IG1kaW87XG4gXG5AQCAtNDk0NCwxNSArNTAwMyw5IEBAIHN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuIFxuIFx0ZHMgPSBcdTAwMjZwcml2LVx1MDAzZWRzO1xuIFx0ZHMtXHUwMDNlZGV2ID0gZGV2O1xuLVx0ZHMtXHUwMDNlYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQgPSB0cnVlO1xuLVx0ZHMtXHUwMDNlZHNjcF9wcmlvX21hcHBpbmdfaXNfZ2xvYmFsID0gdHJ1ZTtcbiBcdGRzLVx1MDAzZXByaXYgPSBwcml2O1xuIFx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2eXQ5MjF4X2RzYV9zd2l0Y2hfb3BzO1xuLVx0ZHMtXHUwMDNlYWdlaW5nX3RpbWVfbWluID0gMSAqIDUwMDA7XG4tXHRkcy1cdTAwM2VhZ2VpbmdfdGltZV9tYXggPSBVMTZfTUFYICogNTAwMDtcbiBcdGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNnl0OTIxeF9waHlsaW5rX21hY19vcHM7XG4tXHRkcy1cdTAwM2VudW1fbGFnX2lkcyA9IFlUOTIxWF9MQUdfTlVNO1xuLVx0ZHMtXHUwMDNlbnVtX3BvcnRzID0gWVQ5MjFYX1BPUlRfTlVNO1xuIFxuIFx0bWRpb2Rldl9zZXRfZHJ2ZGF0YShtZGlvZGV2LCBwcml2KTtcbiBcbkBAIC00OTYwLDggKzUwMTMsMTEgQEAgc3RhdGljIGludCB5dDkyMXhfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHl0OTIxeF9vZl9tYXRjaFtdID0ge1xuLVx0eyAuY29tcGF0aWJsZSA9IFwibW90b3Jjb21tLHl0OTIxNVwiIH0sXG4tXHR7fVxuK1x0e1xuK1x0XHQuY29tcGF0aWJsZSA9IFwibW90b3Jjb21tLHl0OTIxNVwiLFxuK1x0XHQuZGF0YSA9IFx1MDAyNnl0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtZVDkyMVhdLFxuK1x0fSxcbitcdHsgLyogc2VudGluZWwgKi8gfSxcbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHl0OTIxeF9vZl9tYXRjaCk7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oIGIvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXG5pbmRleCA1ZjNiOTllMTg5YzQxLi5jYzgyMjNlYTVmMjk5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oXG4rKysgYi9kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhcbkBAIC05NDUsOSArOTQ1LDI1IEBAIHN0cnVjdCB5dDkyMXhfcmVnX29wcyB7XG4gXHRpbnQgKCp3cml0ZSkodm9pZCAqY29udGV4dCwgdTMyIHJlZywgdTMyIHZhbCk7XG4gfTtcbiBcbitlbnVtIGNoaXBfbW9kZSB7XG4rXHRZVDkyMVgsXG4rXHRZVF9NQVgsXG4rfTtcbitcbitzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvIHtcbitcdGVudW0gY2hpcF9tb2RlIGNoaXBfbW9kZTtcbitcdHVuc2lnbmVkIGludCBtYXhfcG9ydHM7XG4rXHR1bnNpZ25lZCBpbnQgbnVtX2xhZ19pZHM7XG4rXHR1bnNpZ25lZCBpbnQgYWdlaW5nX3RpbWVfbWluO1xuK1x0dW5zaWduZWQgaW50IGFnZWluZ190aW1lX21heDtcbitcdHUzMiBkc2NwX3ByaW9fbWFwcGluZ19pc19nbG9iYWw7XG4rXHR1MzIgYXNzaXN0ZWRfbGVhcm5pbmdfb25fY3B1X3BvcnQ7XG4rfTtcbitcbiBzdHJ1Y3QgeXQ5MjF4X3ByaXYge1xuIFx0c3RydWN0IGRzYV9zd2l0Y2ggZHM7XG4gXG4rXHRjb25zdCBzdHJ1Y3QgeXQ5Mnh4X3Nlcmllc19pbmZvICpzZXJpZXNfaW5mbztcbiBcdGNvbnN0IHN0cnVjdCB5dDkyMXhfaW5mbyAqaW5mbztcbiBcdHVuc2lnbmVkIGludCBtZXRlcl9zbG90X25zO1xuIFx0dW5zaWduZWQgaW50IHBvcnRfc2hhcGVfc2xvdF9ucztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE1OjA0OjMxLjQ5MDg2MTA3MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyNzE1ODAyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gVGhpcyBwYXRjaOKAlGlzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIHNvbWUgZnV6emluZyBsb3ZlPyBGaXJzdCB0aGluZ3MgZmlyc3QsIHdoYXQncyBiZWluZyB0b3VjaGVkPyBBaCwgYGRyaXZlcnMvbmV0L2RzYS95dDkyMXguY2AgYW5kIGBkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmhgLiBSaWdodCwgdGhhdCBtZWFucyBhIG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGB5dDkyMXhgLiBOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHdoYXQgKmtpbmQqIG9mIGRyaXZlciBpcyB0aGlzLCByZWFsbHk/IElzIGl0IGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXIsIGEgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24sIGEgZGF0YSBwYXRoIGhhbmRsZXI/IEkgbmVlZCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIHRvIGp1ZGdlIGl0cyBmdXp6aW5nIHBvdGVudGlhbCBlZmZlY3RpdmVseS4gVGltZSB0byBjb25zdWx0IHRoZSBLY29uZmlnIGFuZCBkaXZlIGludG8gdGhlIGRyaXZlciBkZXRhaWxzLiBHcmVwcGluZyBvciBhIHF1aWNrIGByZWFkLWZpbGVgIHdpbGwgaG9wZWZ1bGx5IGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBJJ20gbG9va2luZyBmb3IgZW50cnkgcG9pbnRzLCBkYXRhIGZsb3dzLCBhbmQgcG90ZW50aWFsIGFyZWFzIHN1c2NlcHRpYmxlIHRvIHVuZXhwZWN0ZWQgaW5wdXRzIG9yIG1pc2NvbmZpZ3VyYXRpb25zLiBUaGVuIEkgY2FuIGRldGVybWluZSBpZiB0aGlzIGlzIHdvcnRoIHRoZSBlZmZvcnQgdG8gc2V0IHVwIGZ1enppbmcgYW5kIGhvdyB0byBiZXN0IGFwcHJvYWNoIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODU3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDozNC43NjI0NDYzOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5NDkzNDcxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ5dDkyMXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjI2NiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19ORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWF9TUEkpICs9IHZpdGVzc2UtdnNjNzN4eC1zcGkub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9ZVDkyMVgpICs9IHl0OTIxeC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTE5LW9iai15XFx0XFx0XFx0XFx0Kz0gYjUzL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI4LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyOTojaW5jbHVkZSBcXFwieXQ5MjF4LmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMwLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMTpzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzItXFx0dW5zaWduZWQgaW50IHNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzktXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwOi8qIE11c3QgYWdyZWUgd2l0aCB5dDkyMXhfbWliXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQxLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDUtICovXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjIHl0OTIxeF9taWJfZGVzY3NbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDctXFx0TUlCX0RFU0MoMSwgWVQ5MjFYX01JQl9EQVRBX1JYX0JST0FEQ0FTVCwgTlVMTCksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTctXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk4OnN0cnVjdCB5dDkyMXhfaW5mbyB7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk5LVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA1LVxcdHUxNiBpbnRlcm5hbF9tYXNrO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDY6XFx0LyogVE9ETzogc2VlIGNvbW1lbnRzIGluIHl0OTIxeF9kc2FfcGh5bGlua19nZXRfY2FwcygpICovXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNy1cXHR1MTYgZXh0ZXJuYWxfbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMTQtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjExNTpzdGF0aWMgY29uc3Qgc3RydWN0IHl0OTIxeF9pbmZvIHl0OTIxeF9pbmZvc1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMTYtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTE1ND1zdGF0aWMgY29uc3Qgc3RydWN0IHl0OTJ4eF9zZXJpZXNfaW5mbyB5dDkyeHhfc2VyaWVzX2luZm9fdGFibGVbXTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTU1LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxNTY6I2RlZmluZSBZVDkyMVhfTkFNRVxcdFxcXCJ5dDkyMXhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNzAtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjE3MTpzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTcyLVxcdHN0cnVjdCBtaWlfYnVzICpidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTg3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxODg6I2RlZmluZSB0b195dDkyMXhfcHJpdihfZHMpIGNvbnRhaW5lcl9vZl9jb25zdChfZHMsIHN0cnVjdCB5dDkyMXhfcHJpdiwgZHMpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE4OS0jZGVmaW5lIHRvX2RldmljZShwcml2KSAoKHByaXYpLVxcdTAwM2Vkcy5kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTk2PXN0YXRpYyB1MzIgZXRoYWRkcl9sbzJfdG9fdTMyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjAwLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMDE6c3RhdGljIGludCB5dDkyMXhfcmVnX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbHApXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTIwMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjA3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMDg6c3RhdGljIGludCB5dDkyMXhfcmVnX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0yMTU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyMTY6eXQ5MjF4X3JlZ193YWl0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgdTMyIG1hc2ssIHUzMiAqdmFscClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yMjEtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjIyMjpcXHRyZXQgPSByZWFkX3BvbGxfdGltZW91dCh5dDkyMXhfcmVnX3JlYWQsIHJlcyxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjIzLVxcdFxcdFxcdFxcdHJlcyB8fCAodmFsIFxcdTAwMjYgbWFzaykgPT0gKnZhbHAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MjM1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjM2Onl0OTIxeF9yZWdfdXBkYXRlX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaywgdTMyIHZhbClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNDEtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjI0MjpcXHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcXHUwMDI2dik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI0My1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1MS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjUyOlxcdHJldHVybiB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIHJlZywgdSk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1My19XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI1NC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjU1OnN0YXRpYyBpbnQgeXQ5MjF4X3JlZ19zZXRfYml0cyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIHUzMiBtYXNrKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yNTYte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNTc6XFx0cmV0dXJuIHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgcmVnLCAwLCBtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjU4LX1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjU5LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoyNjA6c3RhdGljIGludCB5dDkyMXhfcmVnX2NsZWFyX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMjYxLXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjYyOlxcdHJldHVybiB5dDkyMXhfcmVnX3VwZGF0ZV9iaXRzKHByaXYsIHJlZywgbWFzaywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2My19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MjY1PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MjY2Onl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgbWFzaywgYm9vbCBzZXQpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2Ny17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjI2ODpcXHRyZXR1cm4geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCByZWcsIG1hc2ssICFzZXQgPyAwIDogbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI2OS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mjg3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjg4Onl0OTIxeF9yZWdzX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCB1MzIgKnZhbHMsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI4OS1cXHRcXHQgdW5zaWduZWQgaW50IG51bV9yZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTI5My1cXHRmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSBcXHUwMDNjIG51bV9yZWdzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mjk0OlxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCByZWcgKyA0ICogaSwgXFx1MDAyNnZhbHNbaV0pO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0yOTUtXFx0XFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zMDI9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozMDM6eXQ5MjF4X3JlZ3Nfd3JpdGUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKnZhbHMsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMwNC1cXHRcXHQgIHVuc2lnbmVkIGludCBudW1fcmVncylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMDgtXFx0Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgXFx1MDAzYyBudW1fcmVnczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjMwOTpcXHRcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIHJlZyArIDQgKiBpLCB2YWxzW2ldKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzEwLVxcdFxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MzE3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzE4Onl0OTIxeF9yZWdzX3VwZGF0ZV9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcyxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzE5LVxcdFxcdFxcdGNvbnN0IHUzMiAqdmFscywgdW5zaWduZWQgaW50IG51bV9yZWdzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTMyNi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzI3OlxcdHJlcyA9IHl0OTIxeF9yZWdzX3JlYWQocHJpdiwgcmVnLCB2cywgbnVtX3JlZ3MpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zMjgtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNDQtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM0NTpcXHRyZXR1cm4geXQ5MjF4X3JlZ3Nfd3JpdGUocHJpdiwgcmVnLCB2cywgbnVtX3JlZ3MpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zNDYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTM0OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM0OTp5dDkyMXhfcmVnc19jbGVhcl9iaXRzKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgdTMyIHJlZywgY29uc3QgdTMyICptYXNrcyxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzUwLVxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbnVtX3JlZ3MpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzU3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozNTg6XFx0cmVzID0geXQ5MjF4X3JlZ3NfcmVhZChwcml2LCByZWcsIHZzLCBudW1fcmVncyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM1OS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM3NC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzc1OlxcdHJldHVybiB5dDkyMXhfcmVnc193cml0ZShwcml2LCByZWcsIHZzLCBudW1fcmVncyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM3Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mzc4PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzc5Onl0OTIxeF9yZWc2NF93cml0ZShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIGNvbnN0IHUzMiAqdmFscylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzgwLXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MzgxOlxcdHJldHVybiB5dDkyMXhfcmVnc193cml0ZShwcml2LCByZWcsIHZhbHMsIDIpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODItfVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTM4ND1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjM4NTp5dDkyMXhfcmVnNjRfdXBkYXRlX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKm1hc2tzLFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zODYtXFx0XFx0XFx0IGNvbnN0IHUzMiAqdmFscylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg3LXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzg4OlxcdHJldHVybiB5dDkyMXhfcmVnc191cGRhdGVfYml0cyhwcml2LCByZWcsIG1hc2tzLCB2YWxzLCAyKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzg5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz0zOTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTI6eXQ5MjF4X3JlZzY0X2NsZWFyX2JpdHMoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCB1MzIgcmVnLCBjb25zdCB1MzIgKm1hc2tzKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0zOTMte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzozOTQ6XFx0cmV0dXJuIHl0OTIxeF9yZWdzX2NsZWFyX2JpdHMocHJpdiwgcmVnLCBtYXNrcywgMik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTM5NS19XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9Mzk3PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Mzk4Onl0OTIxeF9yZWc5Nl93cml0ZShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIHUzMiByZWcsIGNvbnN0IHUzMiAqdmFscylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMzk5LXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDAwOlxcdHJldHVybiB5dDkyMXhfcmVnc193cml0ZShwcml2LCByZWcsIHZhbHMsIDMpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00MDEtfVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00MDItXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQwMzpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb19yZWFkKHZvaWQgKmNvbnRleHQsIHUzMiByZWcsIHUzMiAqdmFscClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDA0LXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDA1OlxcdHN0cnVjdCB5dDkyMXhfcmVnX21kaW8gKm1kaW8gPSBjb250ZXh0O1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00MDYtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IG1kaW8tXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NDMtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ0NDpzdGF0aWMgaW50IHl0OTIxeF9yZWdfbWRpb193cml0ZSh2b2lkICpjb250ZXh0LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NDUte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0NDY6XFx0c3RydWN0IHl0OTIxeF9yZWdfbWRpbyAqbWRpbyA9IGNvbnRleHQ7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ0Ny1cXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gbWRpby1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ3OS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDgwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgeXQ5MjF4X3JlZ19vcHMgeXQ5MjF4X3JlZ19vcHNfbWRpbyA9IHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDgxOlxcdC5yZWFkID0geXQ5MjF4X3JlZ19tZGlvX3JlYWQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4MjpcXHQud3JpdGUgPSB5dDkyMXhfcmVnX21kaW9fd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ4My19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDg3OnN0YXRpYyBpbnQgeXQ5MjF4X2ludGlmX3dhaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODgte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ5MC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDkxOlxcdHJldHVybiB5dDkyMXhfcmVnX3dhaXQocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDkyLVxcdFxcdFxcdCAgICAgICBcXHUwMDI2dmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00OTU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0OTY6eXQ5MjF4X2ludGlmX3JlYWQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZywgdTE2ICp2YWxwKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUwMy1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTA0OlxcdHJlcyA9IHl0OTIxeF9pbnRpZl93YWl0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MDUtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTEtXFx0ICAgICAgIFlUOTIxWF9NQlVTX0NUUkxfUkVBRDtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTEyOlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTMtXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTE0LVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxNTpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTYtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MTgtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjUxOTpcXHRyZXMgPSB5dDkyMXhfaW50aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTIwLVxcdGlmIChyZXMpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUyMS1cXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MjI6XFx0cmVzID0geXQ5MjF4X3JlZ19yZWFkKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ESU4sIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MjMtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01MzQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MzU6eXQ5MjF4X2ludGlmX3dyaXRlKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTUzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTQwLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NDE6XFx0cmVzID0geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU0Mi1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU0OC1cXHQgICAgICAgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTQ5OlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0lOVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTAtXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTUxLVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1MjpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19ET1VULCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTMtXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTU0LVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1NTpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9JTlRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTYtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NTgtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU1OTpcXHRyZXR1cm4geXQ5MjF4X2ludGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU2MC19XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU2MS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTYyOnN0YXRpYyBpbnQgeXQ5MjF4X21idXNfaW50X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01NjMte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1NjQ6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gbWJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTY1LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTcxLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NTcyOlxcdHJlcyA9IHl0OTIxeF9pbnRpZl9yZWFkKHByaXYsIHBvcnQsIHJlZywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU3My1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01ODA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1ODE6eXQ5MjF4X21idXNfaW50X3dyaXRlKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU4Mi17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjU4MzpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODQtXFx0aW50IHJlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01ODktXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1OTA6XFx0cmVzID0geXQ5MjF4X2ludGlmX3dyaXRlKHByaXYsIHBvcnQsIHJlZywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTU5MS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01OTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1OTc6eXQ5MjF4X21idXNfaW50X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MTAtXFx0bWJ1cy1cXHUwMDNlcHJpdiA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYxMTpcXHRtYnVzLVxcdTAwM2VyZWFkID0geXQ5MjF4X21idXNfaW50X3JlYWQ7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYxMjpcXHRtYnVzLVxcdTAwM2V3cml0ZSA9IHl0OTIxeF9tYnVzX2ludF93cml0ZTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjEzLVxcdG1idXMtXFx1MDAzZXBhcmVudCA9IGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MjUtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYyNjpzdGF0aWMgaW50IHl0OTIxeF9leHRpZl93YWl0KHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjI3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02MjktXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjYzMDpcXHRyZXR1cm4geXQ5MjF4X3JlZ193YWl0KHByaXYsIFlUOTIxWF9FWFRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTYzMS1cXHRcXHRcXHQgICAgICAgXFx1MDAyNnZhbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NjM0PXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjM1Onl0OTIxeF9leHRpZl9yZWFkKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCByZWcsIHUxNiAqdmFscClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjM2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NDItXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY0MzpcXHRyZXMgPSB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjQ0LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjUwLVxcdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1RZUEVfQzIyIHwgWVQ5MjFYX01CVVNfQ1RSTF9SRUFEO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo2NTE6XFx0cmVzID0geXQ5MjF4X3JlZ191cGRhdGVfYml0cyhwcml2LCBZVDkyMVhfRVhUX01CVVNfQ1RSTCwgbWFzaywgY3RybCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY1Mi1cXHRpZiAocmVzKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTMtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjU0OlxcdHJlcyA9IHl0OTIxeF9yZWdfd3JpdGUocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX09QLCBZVDkyMVhfTUJVU19PUF9TVEFSVCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY1NS1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY1Ny1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NjU4OlxcdHJlcyA9IHl0OTIxeF9leHRpZl93YWl0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NTktXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjYwLVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY2MTpcXHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX0RJTiwgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY2Mi1cXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTY3Mz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY3NDp5dDkyMXhfZXh0aWZfd3JpdGUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IHZhbClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02NzktXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY4MDpcXHRyZXMgPSB5dDkyMXhfZXh0aWZfd2FpdChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjgxLVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjg3LVxcdCAgICAgICBZVDkyMVhfTUJVU19DVFJMX1RZUEVfQzIyIHwgWVQ5MjFYX01CVVNfQ1RSTF9XUklURTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Njg4OlxcdHJlcyA9IHl0OTIxeF9yZWdfdXBkYXRlX2JpdHMocHJpdiwgWVQ5MjFYX0VYVF9NQlVTX0NUUkwsIG1hc2ssIGN0cmwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02ODktXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjkwLVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5MTpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19ET1VULCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02OTItXFx0aWYgKHJlcylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNjkzLVxcdFxcdHJldHVybiByZXM7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5NDpcXHRyZXMgPSB5dDkyMXhfcmVnX3dyaXRlKHByaXYsIFlUOTIxWF9FWFRfTUJVU19PUCwgWVQ5MjFYX01CVVNfT1BfU1RBUlQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02OTUtXFx0aWYgKHJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy02OTctXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjY5ODpcXHRyZXR1cm4geXQ5MjF4X2V4dGlmX3dhaXQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTY5OS19XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcwMC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzAxOnN0YXRpYyBpbnQgeXQ5MjF4X21idXNfZXh0X3JlYWQoc3RydWN0IG1paV9idXMgKm1idXMsIGludCBwb3J0LCBpbnQgcmVnKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MDIte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MDM6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gbWJ1cy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA0LVxcdHUxNiB2YWw7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzA3LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzA4OlxcdHJlcyA9IHl0OTIxeF9leHRpZl9yZWFkKHByaXYsIHBvcnQsIHJlZywgXFx1MDAyNnZhbCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcwOS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03MTY9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MTc6eXQ5MjF4X21idXNfZXh0X3dyaXRlKHN0cnVjdCBtaWlfYnVzICptYnVzLCBpbnQgcG9ydCwgaW50IHJlZywgdTE2IGRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcxOC17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjcxOTpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSBtYnVzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MjAtXFx0aW50IHJlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03MjItXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MjM6XFx0cmVzID0geXQ5MjF4X2V4dGlmX3dyaXRlKHByaXYsIHBvcnQsIHJlZywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTcyNC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz03Mjk9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3MzA6eXQ5MjF4X21idXNfZXh0X2luaXQoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm1ucClcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NDMtXFx0LyogVE9ETzogYzQ1PyAqL1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NDQ6XFx0bWJ1cy1cXHUwMDNlcmVhZCA9IHl0OTIxeF9tYnVzX2V4dF9yZWFkO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NDU6XFx0bWJ1cy1cXHUwMDNld3JpdGUgPSB5dDkyMXhfbWJ1c19leHRfd3JpdGU7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc0Ni1cXHRtYnVzLVxcdTAwM2VwYXJlbnQgPSBkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzU3LS8qIFJlYWQgYW5kIGhhbmRsZSBvdmVyZmxvdyBvZiAzMmJpdCBNSUJzLiBNSUIgYnVmZmVyIG11c3QgYmUgemVyb2VkIGJlZm9yZS4gKi9cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzU4OnN0YXRpYyBpbnQgeXQ5MjF4X3JlYWRfbWliKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiwgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc1OS17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc2MDpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NjEtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NjI6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NjMtXFx0aW50IHJlcyA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2NC1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzY1OlxcdC8qIFJlYWRpbmcgb2YgeXQ5MjF4X3BvcnQ6Om1pYiBpcyBub3QgcHJvdGVjdGVkIGJ5IGEgbG9jayBhbmQgaXQncyB2YWluXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc2Ni1cXHQgKiB0byBrZWVwIGl0cyBjb25zaXN0ZW5jeSwgc2luY2Ugd2UgaGF2ZSB0byByZWFkIHJlZ2lzdGVycyBvbmUgYnkgb25lXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzcyLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo3NzM6XFx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHl0OTIxeF9taWJfZGVzY3MpOyBpKyspIHtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6Nzc0OlxcdFxcdGNvbnN0IHN0cnVjdCB5dDkyMXhfbWliX2Rlc2MgKmRlc2MgPSBcXHUwMDI2eXQ5MjF4X21pYl9kZXNjc1tpXTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNzc1LVxcdFxcdHUzMiByZWcgPSBZVDkyMVhfTUlCbl9EQVRBMChwb3J0KSArIGRlc2MtXFx1MDAzZW9mZnNldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy03NzktXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjc4MDpcXHRcXHRyZXMgPSB5dDkyMXhfcmVnX3JlYWQocHJpdiwgcmVnLCBcXHUwMDI2dmFsMCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc4MS1cXHRcXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc5Mi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NzkzOlxcdFxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfcmVhZChwcml2LCByZWcgKyA0LCBcXHUwMDI2dmFsMSk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTc5NC1cXHRcXHRcXHRpZiAocmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTgxNi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODE3OnN0YXRpYyB2b2lkIHl0OTIxeF9wb2xsX21pYihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTgxOC17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgxOTpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gY29udGFpbmVyX29mX2NvbnN0KHdvcmssIHN0cnVjdCB5dDkyMXhfcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODIwLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBtaWJfcmVhZC53b3JrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODIxOlxcdHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdiA9ICh2b2lkICopKHBwIC0gcHAtXFx1MDAzZWluZGV4KSAtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgyMjpcXHRcXHRcXHRcXHQgICBvZmZzZXRvZihzdHJ1Y3QgeXQ5MjF4X3ByaXYsIHBvcnRzKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODIzLVxcdHVuc2lnbmVkIGxvbmcgZGVsYXkgPSBZVDkyMVhfU1RBVFNfSU5URVJWQUxfSklGRklFUztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04MjctXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4Mjg6XFx0cmVzID0geXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04MjktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9ODM2PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjgzNzp5dDkyMXhfZHNhX2dldF9zdHJpbmdzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHUzMiBzdHJpbmdzZXQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTgzOC1cXHRcXHQgICAgICAgdWludDhfdCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NDItXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg0MzpcXHRmb3IgKHNpemVfdCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NDQ6XFx0XFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFxcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NDUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9ODUxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg1Mjp5dDkyMXhfZHNhX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIHVpbnQ2NF90ICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NTMte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTQ6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NTU6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODU2OlxcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcXHUwMDI2cHAtXFx1MDAzZW1pYjtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODU3LVxcdHNpemVfdCBqO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg1OS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2MDpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg2MS1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NjMtXFx0aiA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg2NDpcXHRmb3IgKHNpemVfdCBpID0gMDsgaSBcXHUwMDNjIEFSUkFZX1NJWkUoeXQ5MjF4X21pYl9kZXNjcyk7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NjU6XFx0XFx0Y29uc3Qgc3RydWN0IHl0OTIxeF9taWJfZGVzYyAqZGVzYyA9IFxcdTAwMjZ5dDkyMXhfbWliX2Rlc2NzW2ldO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NjYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODc0LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4NzU6c3RhdGljIGludCB5dDkyMXhfZHNhX2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBzc2V0KVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04NzYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg4MS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODgyOlxcdGZvciAoc2l6ZV90IGkgPSAwOyBpIFxcdTAwM2MgQVJSQVlfU0laRSh5dDkyMXhfbWliX2Rlc2NzKTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjg4MzpcXHRcXHRjb25zdCBzdHJ1Y3QgeXQ5MjF4X21pYl9kZXNjICpkZXNjID0gXFx1MDAyNnl0OTIxeF9taWJfZGVzY3NbaV07XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTg4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz04OTI9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODkzOnl0OTIxeF9kc2FfZ2V0X2V0aF9tYWNfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODk0LVxcdFxcdFxcdCAgICAgc3RydWN0IGV0aHRvb2xfZXRoX21hY19zdGF0cyAqbWFjX3N0YXRzKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy04OTUte1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4OTY6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo4OTc6XFx0c3RydWN0IHl0OTIxeF9wb3J0ICpwcCA9IFxcdTAwMjZwcml2LVxcdTAwM2Vwb3J0c1twb3J0XTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6ODk4OlxcdHN0cnVjdCB5dDkyMXhfbWliICptaWIgPSBcXHUwMDI2cHAtXFx1MDAzZW1pYjtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtODk5LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05MDAtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5MDE6XFx0eXQ5MjF4X3JlYWRfbWliKHByaXYsIHBvcnQpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05MDItXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9OTI4PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkyOTp5dDkyMXhfZHNhX2dldF9ldGhfY3RybF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05MzAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGV0aHRvb2xfZXRoX2N0cmxfc3RhdHMgKmN0cmxfc3RhdHMpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzMS17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzMjpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzMzpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5MzQ6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05MzUtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzNi1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjkzNzpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTkzOC1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NDQtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk0NTpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfcm1vbl9oaXN0X3JhbmdlIHl0OTIxeF9ybW9uX3Jhbmdlc1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NDYtXFx0eyAwLCA2NCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTk1Nj1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5NTc6eXQ5MjF4X2RzYV9nZXRfcm1vbl9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NTgtXFx0XFx0XFx0ICBzdHJ1Y3QgZXRodG9vbF9ybW9uX3N0YXRzICpybW9uX3N0YXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk2MC17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2MTpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2MjpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5NjM6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05NjQtXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk2NS1cXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk2NjpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk2Ny1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTY4LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5Njk6XFx0KnJhbmdlcyA9IHl0OTIxeF9ybW9uX3JhbmdlcztcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtOTcwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTk5Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5OTQ6eXQ5MjF4X2RzYV9nZXRfc3RhdHM2NChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy05OTUtXFx0XFx0ICAgICAgIHN0cnVjdCBydG5sX2xpbmtfc3RhdHM2NCAqc3RhdHMpXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTk5Ni17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk5NzpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjk5ODpcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW3BvcnRdO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo5OTk6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTEwMjk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzMDp5dDkyMXhfZHNhX2dldF9wYXVzZV9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDMxLVxcdFxcdFxcdCAgIHN0cnVjdCBldGh0b29sX3BhdXNlX3N0YXRzICpwYXVzZV9zdGF0cylcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTAzMi17XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwMzM6XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDM0OlxcdHN0cnVjdCB5dDkyMXhfcG9ydCAqcHAgPSBcXHUwMDI2cHJpdi1cXHUwMDNlcG9ydHNbcG9ydF07XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwMzU6XFx0c3RydWN0IHl0OTIxeF9taWIgKm1pYiA9IFxcdTAwMjZwcC1cXHUwMDNlbWliO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDM2LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDM3LVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTAzODpcXHR5dDkyMXhfcmVhZF9taWIocHJpdiwgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwMzktXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTA0NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwNDY6eXQ5MjF4X3NldF9lZWUoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2LCBpbnQgcG9ydCwgc3RydWN0IGV0aHRvb2xfa2VlZSAqZSlcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA1OS1cXHRpZiAoISFuZXdfbWFzayAhPSAhIXByaXYtXFx1MDAzZWVlZV9wb3J0c19tYXNrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwNjA6XFx0XFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfUE9OX1NUUkFQX0ZVTkMsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNjEtXFx0XFx0XFx0XFx0XFx0ICAgICBZVDkyMVhfUE9OX1NUUkFQX0VFRSwgISFuZXdfbWFzayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA2My1cXHRcXHRcXHRyZXR1cm4gcmVzO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDY0OlxcdFxcdHJlcyA9IHl0OTIxeF9yZWdfdG9nZ2xlX2JpdHMocHJpdiwgWVQ5MjFYX1BPTl9TVFJBUF9WQUwsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNjUtXFx0XFx0XFx0XFx0XFx0ICAgICBZVDkyMVhfUE9OX1NUUkFQX0VFRSwgISFuZXdfbWFzayk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA3Mi1cXHQvKiBFbmFibGUgLyBkaXNhYmxlIHBvcnQgRUVFICovXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwNzM6XFx0cmVzID0geXQ5MjF4X3JlZ190b2dnbGVfYml0cyhwcml2LCBZVDkyMVhfRUVFX0NUUkwsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzQtXFx0XFx0XFx0XFx0ICAgICBZVDkyMVhfRUVFX0NUUkxfRU5uKHBvcnQpLCBlbmFibGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwNzYtXFx0XFx0cmV0dXJuIHJlcztcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA3NzpcXHRyZXMgPSB5dDkyMXhfcmVnX3RvZ2dsZV9iaXRzKHByaXYsIFlUOTIxWF9FRUVuX1ZBTChwb3J0KSxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgIFlUOTIxWF9FRUVfVkFMX0RBVEEsIGVuYWJsZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTA4NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjEwODY6eXQ5MjF4X2RzYV9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBzdHJ1Y3QgZXRodG9vbF9rZWVlICplKVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDg3LXtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA4ODpcXHRzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYgPSB0b195dDkyMXhfcHJpdihkcyk7XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTEwODktXFx0aW50IHJlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDkxLVxcdG11dGV4X2xvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTA5MjpcXHRyZXMgPSB5dDkyMXhfc2V0X2VlZShwcml2LCBwb3J0LCBlKTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTA5My1cXHRtdXRleF91bmxvY2soXFx1MDAyNnByaXYtXFx1MDAzZXJlZ19sb2NrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xMDk3LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxMDk4OnN0YXRpYyBpbnQgeXQ5MjF4X210dV9mZXRjaChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYsIGludCBwb3J0KVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDozNi4yNTczODgyOTJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NzcyOTM2NTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBORVRfRFNBX1lUOTIxWCBLY29uZmlnKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBLY29uZmlnYCBmb3IgYE5FVF9EU0FfWVQ5MjFYYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoYXQncyBiZWluZyBjb25maWd1cmVkIGhlcmUuIElzIGl0IGEgbW9kdWxlLCBidWlsdC1pbiwgb3IgcGFydCBvZiBhIGxhcmdlciwgbW9yZSBjb21wbGV4IHN1YnN5c3RlbT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzaW1wbGUgc3dpdGNoIG9yIHNvbWV0aGluZyBtb3JlIGludm9sdmVkLCBtYXliZSB3aXRoIE1BQ3NlYyBvciBWTEFOIGZlYXR1cmVzIGJha2VkIGluP1xuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLiBJJ2xsIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHBhdGhzLiBJZiB0aGVyZSBhcmUgbmVzdGVkIGBpZmAgc3RhdGVtZW50cywgSSBuZWVkIHRvIGJyZWFrIGRvd24gdGhlIGxvZ2ljIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbiBvZiBlYWNoIGNob2ljZS4gSSB3aWxsIGhhdmUgYSBsb29rIGF0IGFueSBoZWxwIHRleHRzOyB0aGV5IHVzdWFsbHkgcHJvdmlkZSBjb250ZXh0LiBBcmUgdGhlcmUgYW55IGRlZmF1bHQgc2V0dGluZ3M/IEFuZCBob3cgYXJlIHRoZXNlIGRlZmF1bHRzIGNob3NlbiwgaXMgaXQgYSB2YWx1ZSBkZWZpbmVkIGVsc2V3aGVyZSwgb3IgYmFzZWQgb24gaGFyZHdhcmU/XG5cbkZ1cnRoZXJtb3JlLCBJJ2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IHRyaXN0YXRlIHNldHRpbmdzLCBlc3BlY2lhbGx5IGlmIHRoZXJlIGFyZSBtb2R1bGUgY2hvaWNlcy4gVGhpcyBpcyB3aGVyZSB0aGUgZGVjaXNpb25zIGNhbiBnZXQgbW9yZSBjb21wbGV4LCBlc3BlY2lhbGx5IGR1cmluZyBidWlsZCB0aW1lLiBBbHNvLCBpcyB0aGlzIG5ldywgb3IgYW4gZXhpc3RpbmcgZGV2aWNlPyBJZiBpdCdzIGV4aXN0aW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBjdXJyZW50IGtlcm5lbCBpbmZyYXN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3NDUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDo0MS4wMzAzMjc5NzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYxMDg3MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9EU0FfWVQ5MjFYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvS2NvbmZpZz0xNjM9Y29uZmlnIE5FVF9EU0FfVklURVNTRV9WU0M3M1hYX1BMQVRGT1JNXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvS2NvbmZpZy0xNzEtXFxuZHJpdmVycy9uZXQvZHNhL0tjb25maWc6MTcyOmNvbmZpZyBORVRfRFNBX1lUOTIxWFxcbmRyaXZlcnMvbmV0L2RzYS9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19ORVRfRFNBX1ZJVEVTU0VfVlNDNzNYWF9TUEkpICs9IHZpdGVzc2UtdnNjNzN4eC1zcGkub1xcbmRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9ZVDkyMVgpICs9IHl0OTIxeC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTE5LW9iai15XFx0XFx0XFx0XFx0Kz0gYjUzL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDo0MS4xOTE0MjA2MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzQyNjA0ODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgS2NvbmZpZzpcblxuKipEZWVwIERpdmUgaW50byBgTkVUX0RTQV9ZVDkyMVhgIEtjb25maWcqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHNlZWluZyBgTkVUX0RTQV9ZVDkyMVhgLCB3aGljaCB0ZWxscyBtZSB3ZSdyZSBsb29raW5nIGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBZVDkyMVggRXRoZXJuZXQgc3dpdGNoIGRyaXZlciB3aXRoaW4gdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgKERTQSkgZnJhbWV3b3JrLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBXaGF0IGhhcmR3YXJlIGRvZXMgdGhpcyBzcGVjaWZpY2FsbHkgdGFyZ2V0P1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgRFNBIGVjb3N5c3RlbS4gSXMgaXQgYSBjb3JlIGRyaXZlciwgYSBwbGF0Zm9ybS1zcGVjaWZpYyB2YXJpYW50LCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD9cblxuSSdtIHNjYW5uaW5nIGZvciB0aGUgdXN1YWwgc3VzcGVjdHM6IGBkZXBlbmRzIG9uYCwgYHNlbGVjdGAsIGBoZWxwYCwgYW5kIGFueSBgZGVmYXVsdGAgdmFsdWVzIHRoYXQgbWlnaHQgZ2l2ZSBtZSBhIGNsdWUgYWJvdXQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kIGNvbW1vbiBjb25maWd1cmF0aW9ucy4gSSdsbCBiZSBsb29raW5nIGZvciBhbnkgaGludHMgYWJvdXQgdGhlIHVuZGVybHlpbmcgUEhZIChQaHlzaWNhbCBMYXllcikgaXQgc3VwcG9ydHMsIHRoZSBDUFUgaW50ZXJmYWNlIChTUEksIEkyQywgTURJTyksIGFuZCBhbnkgc3BlY2lmaWMgYm9hcmQgb3IgY2hpcHNldCBjb25zdHJhaW50cy4gQXJlIHRoZXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBjb25mbGljdHMgdGhhdCBtaWdodCBjb21lIGludG8gcGxheSB3aXRoIG90aGVyIERTQSBkcml2ZXJzIG9yIG5ldHdvcmsgY29tcG9uZW50cz9cblxuSSdtIGFsc28gY3VyaW91cyBhYm91dCBhbnkgc3ltYm9scyB0aGlzIGRyaXZlciBtaWdodCBgc2VsZWN0YC4gV2hhdCBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIHB1bGxlZCBpbj8gRG9lcyBpdCBpbnZvbHZlIHNwZWNpZmljIERTQSBmZWF0dXJlcyBsaWtlIFZMQU4gdGFnZ2luZywgcG9ydCBtaXJyb3JpbmcsIG9yIHRyYWZmaWMgc2hhcGluZz8gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGBib29sYCwgYHRyaXN0YXRlYCwgb3IgYGludGAgdmFyaWFibGVzLlxuXG5GdXJ0aGVybW9yZSwgbGV0IG1lIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvYnZpb3VzKiBwaXRmYWxscywgb3IgZ290Y2hhcywgd2hpY2ggc2hvdWxkIGJlIGhpZ2hsaWdodGVkIHdpdGggYGhlbHBgIHRleHQuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluIGFuZCB1bnJhdmVsIHRoZSBLY29uZmlnIHB1enpsZS4gTGV04oCZcyBzZWUgd2hhdCBnb29kaWVzIGl0IGhvbGRzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTMxNSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE1OjA0OjQ4LjUzNDAzMDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzExNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTY1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY1OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuIDE2NjpcXHRcXHRzZWxlY3QgTkVUX0RTQV9WSVRFU1NFX1ZTQzczWFhcXG4gMTY3OlxcdFxcdGhlbHBcXG4gMTY4OlxcdFxcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBWaXRlc3NlIFZTQzczODUsIFZTQzczODgsIFZTQzczOTVcXG4gMTY5OlxcdFxcdCAgYW5kIFZTQzczOTggU3BhclggaW50ZWdyYXRlZCBldGhlcm5ldCBzd2l0Y2hlcywgY29ubmVjdGVkIG92ZXJcXG4gMTcwOlxcdFxcdCAgYSBDUFUtYXR0YWNoZWQgYWRkcmVzcyBidXMgYW5kIHdvcmsgaW4gbWVtb3J5LW1hcHBlZCBJL08gbW9kZS5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIE5FVF9EU0FfWVQ5MjFYXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBzdXBwb3J0XFxcIlxcbiAxNzQ6XFx0XFx0c2VsZWN0IE5FVF9EU0FfVEFHX1lUOTIxWFxcbiAxNzU6XFx0XFx0c2VsZWN0IE5FVF9JRUVFODAyMVFfSEVMUEVSUyBpZiBEQ0JcXG4gMTc2OlxcdFxcdGhlbHBcXG4gMTc3OlxcdFxcdCAgVGhpcyBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaFxcbiAxNzg6XFx0XFx0ICBjaGlwLlxcbiAxNzk6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDo0OC41MzQxNjQzOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU1MzA1MjgzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgeXQ5MjF4YCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGB5dDkyMXhgIGlzIGJyb3VnaHQgdG8gbGlmZSBhbmQsIG1vcmUgaW1wb3J0YW50bHksIGhvdyBpdCdzICp1c2VkKi4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IGlzIHRoaXMgc29tZXRoaW5nIHRoYXQgbmVlZHMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhIHNvZnR3YXJlIGFic3RyYWN0aW9uPyBJIGNhbid0IGFzc3VtZSBhbnl0aGluZyBhdCB0aGlzIHBvaW50LlxuXG5OZXh0LCBJJ20gZ29pbmcgdG8gd2FudCB0byBrbm93IGhvdyBpdCBpZGVudGlmaWVzIGl0c2VsZiB0byB0aGUgc3lzdGVtLiBXaGVyZSBkb2VzIGl0IGZpdCBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmU/IElzIGl0IHVzaW5nIE1ESU8sIHBsYXRmb3JtLXNwZWNpZmljIHJlc291cmNlcywgb3Igb25lIG9mIHRoZSBtb3JlIGNvbW1vbiBpbnRlcmZhY2VzIGxpa2UgU1BJIG9yIEkyQz8gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl04oCZcyBjb21tdW5pY2F0aW5nIGFuZCByZWdpc3RlcmluZyBpdHNlbGYgd2l0aCB0aGUgY29udHJvbGxpbmcgZGV2aWNlcy5cblxuTXkgdXN1YWwgc3RhcnRpbmcgcG9pbnQsIHdoZW4gSSdtIHJldmVyc2UtZW5naW5lZXJpbmcgb3IgY29taW5nIHVwIHRvIHNwZWVkIG9uIGEgbW9kdWxlIGxpa2UgdGhpcywgaXMgdG8gaW1tZWRpYXRlbHkgbG9vayBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLiBMZXQncyBzZWUgaWYgdGhlIGVuZCBvZiBgeXQ5MjF4LmNgIGdpdmVzIG1lIGFueSBpbnNpZ2h0cyBpbnRvIGhvdyBpdCdzIGluaXRpYWxpemVkIGFuZCBicm91Z2h0IGludG8gc2VydmljZS4gT2Z0ZW4sIHRoZSBlbmQgb2YgdGhlIGZpbGUgaG9sZHMgdGhlIGtleSBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDA4LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNDo1NC4wNjQ2OTYzMThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMzQ5NDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9tZGlvX2RyaXZlcnxtb2R1bGVfaW5pdHxwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ5MzU9c3RhdGljIHZvaWQgeXQ5MjF4X21kaW9fcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTY2LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0OTY3OnN0YXRpYyBpbnQgeXQ5MjF4X21kaW9fcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00OTY4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz01MDI0PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgeXQ5MjF4X21kaW9fZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo1MDI1OlxcdC5wcm9iZSA9IHl0OTIxeF9tZGlvX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy01MDI2LVxcdC5yZW1vdmUgPSB5dDkyMXhfbWRpb19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE1OjA0OjU0LjE0NjA1OTg0N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4ODc2NzA2OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGB5dDkyMXhfbWRpb19kcml2ZXJgIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHl0OTIxeF9tZGlvX2RyaXZlcmAsIHdoaWNoLCBhcyB0aGUgbmFtZSBzdWdnZXN0cywgaXMgYW4gTURJTyBkcml2ZXIuIE15IGluaXRpYWwgcXVlc3Rpb24gaXM6IGNhbiBNRElPIGRldmljZXMgb3IgRFNBIHN3aXRjaGVzLCBpbiBnZW5lcmFsLCBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCB0aGUgbmVlZCBmb3IgYWN0dWFsIHBoeXNpY2FsIGhhcmR3YXJlPyBPciwgYXJlIHRoZXkgc3RyaWN0bHkgaGFyZHdhcmUtZGVwZW5kZW50PyBJIG5lZWQgdG8gZmlndXJlIHRoaXMgb3V0IGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcuXG5cbkxldCdzIHNlZSwgd2hhdCBkb2VzIHRoZSBwcm9tcHQgc2F5IHRvIGZpbHRlciBvdXQ/IE9rYXksIGl0IHdhbnRzIG1lIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiB0aGUgcGF0Y2ggaGFzIGNlcnRhaW4gY2hhcmFjdGVyaXN0aWNzLiBJdCBtZW50aW9ucyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLiBJdCBhbHNvIGxpc3RzIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciB0aGluZ3MgbGlrZSBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIGFuZCBHUFVzLCB3aGljaCByZXF1aXJlIHJlYWwgUENJZSBoYXJkd2FyZS4gRmluYWxseSwgaXQgbm90ZXMgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgY2FsbGJhY2tzLlxuXG5TbywgdGhlIGNvcmUgcXVlc3Rpb24gaXMsIGNhbiBJIHJlYWNoIHRoZSBNRElPIGJ1cyBhbmQgc3dpdGNoIGRyaXZlciBpbiBzdGFuZGFyZCBRRU1VIG9yIGV2ZW4gb3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudHMgdXNlZCBmb3Igc3l6a2FsbGVyLCBvciBHQ0U/IE9yIGlzIHRoaXMgaW1wb3NzaWJsZSB0byBpbnN0YW50aWF0ZSBhbiBNRElPIHN3aXRjaCBvciBhbiBNRElPIGRldmljZSB2aWEgRGV2aWNlIFRyZWUgaW4gdGhlc2Ugc2V0dGluZ3M/XG5cbkkgbmVlZCB0byBleHBsb3JlIGhvdyBNRElPIGRldmljZXMgYXJlIGFjdHVhbGx5IGluc3RhbnRpYXRlZC4gQ2FuIHRoZXkgYmUgY3JlYXRlZCB1c2luZyB0aGluZ3MgbGlrZSBgbWRpby1ncGlvYCwgYG1kaW8tYml0YmFuZ2AsIGBtb2NrLW1kaW9gLCBvciBldmVuIHRocm91Z2ggbmV0bGluaywgc3lzZnMsIERUIG92ZXJsYXlzLCBldGMuPyBBcmUgdGhlcmUgdmlydHVhbCBvciBzb2Z0d2FyZSBtZXRob2RzPyBJIHNob3VsZCBkb3VibGUtY2hlY2sgb3RoZXIgRFNBIHN3aXRjaGVzIG9yIE1ESU8gZHJpdmVycyBpbiB0aGUgc3l6a2FsbGVyIGZ1enppbmcgb3Iga2VybmVsIGd1aWRlbGluZXMgdG8gbG9vayBmb3IgcGF0dGVybnMuXG5cblRoaW5raW5nIGFib3V0IERTQSwgaG93IGRvZXMgaXQgYWN0dWFsbHkgd29yaz8gRFNBIHN3aXRjaGVzIGFyZSAqdHlwaWNhbGx5KiBpbnN0YW50aWF0ZWQgdXNpbmcgRGV2aWNlIFRyZWUgKGBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGFgKSBvciBwbGF0Zm9ybSBkYXRhLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNhbiBiZSBlbXVsYXRlZC5cblxuTG9va2luZyBhdCBgeXQ5MjF4X21kaW9fcHJvYmVgLCBJIHNlZSBhIGNyaXRpY2FsIHNlY3Rpb246XG5cbmBgYGNcbmNvbXBhdF9pbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5pZiAoIWNvbXBhdF9pbmZvKVxuICAgIHJldHVybiAtRUlOVkFMO1xuLi4uXG5yZXMgPSB5dDkyMXhfY2hpcF9kZXRlY3QocHJpdik7XG5gYGBcblNvLCB0aGlzIGRyaXZlciBhcHBlYXJzIHRvIHJlbHkgb24gRGV2aWNlIFRyZWUhIEJ1dCBkb2VzIHRoZSBgeXQ5MjF4X2NoaXBfZGV0ZWN0YCBmdW5jdGlvbiByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHRvIGRldGVjdCBjaGlwcz8gSSBtdXN0IHJlYWQgdGhlIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2RzYS95dDkyMXguY2AsIHNwZWNpZmljYWxseSBmcm9tIGxpbmVzIDQ5NjUgdG8gNTAzNSBvZiBgeXQ5MjF4X21kaW9fcHJvYmVgIHRvIHVuZGVyc3RhbmQgdGhpcyBwcm9jZXNzIGFuZCBpZiBpdCBpcyBkZXBlbmRlbnQgb24gaGFyZHdhcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjMyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAyVDE1OjA1OjAzLjAyMjc3MjUwMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTk1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ5NjUsXG4gIFwiTGluZUNvdW50XCI6IDcwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQ5NjU6XFx0fVxcbjQ5NjY6XFx0XFxuNDk2NzpcXHRzdGF0aWMgaW50IHl0OTIxeF9tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG40OTY4OlxcdHtcXG40OTY5OlxcdFxcdGNvbnN0IHN0cnVjdCB5dDkyeHhfc2VyaWVzX2luZm8gKmNvbXBhdF9pbmZvID0gTlVMTDtcXG40OTcwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXY7XFxuNDk3MTpcXHRcXHRzdHJ1Y3QgeXQ5MjF4X3JlZ19tZGlvICptZGlvO1xcbjQ5NzI6XFx0XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2O1xcbjQ5NzM6XFx0XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbjQ5NzQ6XFx0XFxuNDk3NTpcXHRcXHRjb21wYXRfaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbjQ5NzY6XFx0XFx0aWYgKCFjb21wYXRfaW5mbylcXG40OTc3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjQ5Nzg6XFx0XFxuNDk3OTpcXHRcXHRwcml2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7XFxuNDk4MDpcXHRcXHRpZiAoIXByaXYpXFxuNDk4MTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG40OTgyOlxcdFxcbjQ5ODM6XFx0XFx0bWRpbyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqbWRpbyksIEdGUF9LRVJORUwpO1xcbjQ5ODQ6XFx0XFx0aWYgKCFtZGlvKVxcbjQ5ODU6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuNDk4NjpcXHRcXG40OTg3OlxcdFxcdG1kaW8tXFx1MDAzZWJ1cyA9IG1kaW9kZXYtXFx1MDAzZWJ1cztcXG40OTg4OlxcdFxcdG1kaW8tXFx1MDAzZWFkZHIgPSBtZGlvZGV2LVxcdTAwM2VhZGRyO1xcbjQ5ODk6XFx0XFx0bWRpby1cXHUwMDNlc3dpdGNoaWQgPSAwO1xcbjQ5OTA6XFx0XFxuNDk5MTpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuNDk5MjpcXHRcXG40OTkzOlxcdFxcdHByaXYtXFx1MDAzZXNlcmllc19pbmZvID0gY29tcGF0X2luZm87XFxuNDk5NDpcXHRcXHRwcml2LVxcdTAwM2VyZWdfb3BzID0gXFx1MDAyNnl0OTIxeF9yZWdfb3BzX21kaW87XFxuNDk5NTpcXHRcXHRwcml2LVxcdTAwM2VyZWdfY3R4ID0gbWRpbztcXG40OTk2OlxcdFxcbjQ5OTc6XFx0XFx0Zm9yIChzaXplX3QgaSA9IDA7IGkgXFx1MDAzYyBBUlJBWV9TSVpFKHByaXYtXFx1MDAzZXBvcnRzKTsgaSsrKSB7XFxuNDk5ODpcXHRcXHRcXHRzdHJ1Y3QgeXQ5MjF4X3BvcnQgKnBwID0gXFx1MDAyNnByaXYtXFx1MDAzZXBvcnRzW2ldO1xcbjQ5OTk6XFx0XFxuNTAwMDpcXHRcXHRcXHRwcC1cXHUwMDNlaW5kZXggPSBpO1xcbjUwMDE6XFx0XFx0XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNnBwLVxcdTAwM2VtaWJfcmVhZCwgeXQ5MjF4X3BvbGxfbWliKTtcXG41MDAyOlxcdFxcdH1cXG41MDAzOlxcdFxcbjUwMDQ6XFx0XFx0ZHMgPSBcXHUwMDI2cHJpdi1cXHUwMDNlZHM7XFxuNTAwNTpcXHRcXHRkcy1cXHUwMDNlZGV2ID0gZGV2O1xcbjUwMDY6XFx0XFx0ZHMtXFx1MDAzZXByaXYgPSBwcml2O1xcbjUwMDc6XFx0XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZ5dDkyMXhfZHNhX3N3aXRjaF9vcHM7XFxuNTAwODpcXHRcXHRkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXFx1MDAyNnl0OTIxeF9waHlsaW5rX21hY19vcHM7XFxuNTAwOTpcXHRcXG41MDEwOlxcdFxcdG1kaW9kZXZfc2V0X2RydmRhdGEobWRpb2RldiwgcHJpdik7XFxuNTAxMTpcXHRcXG41MDEyOlxcdFxcdHJldHVybiBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKTtcXG41MDEzOlxcdH1cXG41MDE0OlxcdFxcbjUwMTU6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeXQ5MjF4X29mX21hdGNoW10gPSB7XFxuNTAxNjpcXHRcXHR7XFxuNTAxNzpcXHRcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJtb3RvcmNvbW0seXQ5MjE1XFxcIixcXG41MDE4OlxcdFxcdFxcdC5kYXRhID0gXFx1MDAyNnl0OTJ4eF9zZXJpZXNfaW5mb190YWJsZVtZVDkyMVhdLFxcbjUwMTk6XFx0XFx0fSxcXG41MDIwOlxcdFxcdHsgLyogc2VudGluZWwgKi8gfSxcXG41MDIxOlxcdH07XFxuNTAyMjpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB5dDkyMXhfb2ZfbWF0Y2gpO1xcbjUwMjM6XFx0XFxuNTAyNDpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHl0OTIxeF9tZGlvX2RyaXZlciA9IHtcXG41MDI1OlxcdFxcdC5wcm9iZSA9IHl0OTIxeF9tZGlvX3Byb2JlLFxcbjUwMjY6XFx0XFx0LnJlbW92ZSA9IHl0OTIxeF9tZGlvX3JlbW92ZSxcXG41MDI3OlxcdFxcdC5zaHV0ZG93biA9IHl0OTIxeF9tZGlvX3NodXRkb3duLFxcbjUwMjg6XFx0XFx0Lm1kaW9kcnYuZHJpdmVyID0ge1xcbjUwMjk6XFx0XFx0XFx0Lm5hbWUgPSBZVDkyMVhfTkFNRSxcXG41MDMwOlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHl0OTIxeF9vZl9tYXRjaCxcXG41MDMxOlxcdFxcdH0sXFxuNTAzMjpcXHR9O1xcbjUwMzM6XFx0XFxuNTAzNDpcXHRtZGlvX21vZHVsZV9kcml2ZXIoeXQ5MjF4X21kaW9fZHJpdmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTU6MDU6MDMuMDIzMDc1MjkyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNTk2ODUzNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBZdDkyMXggTURJTyBQcm9iZSBQcm9jZXNzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYHl0OTIxeF9tZGlvX3Byb2JlYCByZWdpc3RlcnMgdGhlIHN3aXRjaCB3aXRoIGBkc2FfcmVnaXN0ZXJfc3dpdGNoKGRzKWAuIFRoYXQncyB0aGUgZXhwZWN0ZWQgaW5pdGlhbGl6YXRpb24uIEFoLCBidXQgKmR1cmluZyogYGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpYCwgdGhlIERTQSBzd2l0Y2ggc2V0dXAgYWN0dWFsbHkgKnJ1bnMqIGBkcy1cdTAwM2VvcHMtXHUwMDNlc2V0dXAoZHMpYC4gQW5kIHRoYXTigKYgdGhhdCBjYWxscyBgeXQ5MjF4X2RzYV9zZXR1cChkcylgLiBTbywgdGhhdCdzIHdoZXJlIHRoZSAqcmVhbCogY29uZmlndXJhdGlvbiBoYXBwZW5zLiBJJ20gZ29pbmcgdG8gd2FudCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHl0OTIxeF9kc2Ffc2V0dXBgLiBUaGF0J3Mgd2hlcmUgdGhlIG1lYXQgb2YgdGhlIHN3aXRjaCdzIGluaXRpYWxpemF0aW9uIGlzIGdvaW5nIHRvIGJlLiBUaW1lIHRvIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg2MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTU6MDU6MDkuMTgyNzYyNzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS95dDkyMXguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NzkwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI0NzkwOlxcdFxcdGRzLVxcdTAwM2VudW1fbGFnX2lkcyA9IHByaXYtXFx1MDAzZXNlcmllc19pbmZvLVxcdTAwM2VudW1fbGFnX2lkcztcXG40NzkxOlxcdFxcdGRzLVxcdTAwM2VudW1fcG9ydHMgPSBwcml2LVxcdTAwM2VzZXJpZXNfaW5mby1cXHUwMDNlbWF4X3BvcnRzO1xcbjQ3OTI6XFx0fVxcbjQ3OTM6XFx0XFxuNDc5NDpcXHRzdGF0aWMgaW50IHl0OTIxeF9kc2Ffc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbjQ3OTU6XFx0e1xcbjQ3OTY6XFx0XFx0c3RydWN0IHl0OTIxeF9wcml2ICpwcml2ID0gdG9feXQ5MjF4X3ByaXYoZHMpO1xcbjQ3OTc6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gdG9fZGV2aWNlKHByaXYpO1xcbjQ3OTg6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi1cXHUwMDNlb2Zfbm9kZTtcXG40Nzk5OlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqY2hpbGQ7XFxuNDgwMDpcXHRcXHRpbnQgcmVzO1xcbjQ4MDE6XFx0XFxuNDgwMjpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuNDgwMzpcXHRcXHRyZXMgPSB5dDkyMXhfY2hpcF9yZXNldChwcml2KTtcXG40ODA0OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbjQ4MDU6XFx0XFxuNDgwNjpcXHRcXHRpZiAocmVzKVxcbjQ4MDc6XFx0XFx0XFx0cmV0dXJuIHJlcztcXG40ODA4OlxcdFxcbjQ4MDk6XFx0XFx0LyogUmVnaXN0ZXIgdGhlIGludGVybmFsIG1kaW8gYnVzLiBOb2RlcyBmb3IgaW50ZXJuYWwgcG9ydHMgc2hvdWxkIGhhdmVcXG40ODEwOlxcdFxcdCAqIHByb3BlciBwaHktaGFuZGxlIHBvaW50aW5nIHRvIHRoZWlyIFBIWXMuIE5vdCBlbmFibGluZyB0aGUgaW50ZXJuYWxcXG40ODExOlxcdFxcdCAqIGJ1cyBpcyBwb3NzaWJsZSwgdGhvdWdoIHByZXR0eSB3aXJlZCwgaWYgaW50ZXJuYWwgcG9ydHMgYXJlIG5vdCB1c2VkLlxcbjQ4MTI6XFx0XFx0ICovXFxuNDgxMzpcXHRcXHRjaGlsZCA9IG9mX2dldF9jaGlsZF9ieV9uYW1lKG5wLCBcXFwibWRpb1xcXCIpO1xcbjQ4MTQ6XFx0XFx0aWYgKGNoaWxkKSB7XFxuNDgxNTpcXHRcXHRcXHRyZXMgPSB5dDkyMXhfbWJ1c19pbnRfaW5pdChwcml2LCBjaGlsZCk7XFxuNDgxNjpcXHRcXHRcXHRvZl9ub2RlX3B1dChjaGlsZCk7XFxuNDgxNzpcXHRcXHRcXHRpZiAocmVzKVxcbjQ4MTg6XFx0XFx0XFx0XFx0cmV0dXJuIHJlcztcXG40ODE5OlxcdFxcdH1cXG40ODIwOlxcdFxcbjQ4MjE6XFx0XFx0LyogRXh0ZXJuYWwgbWRpbyBidXMgaXMgb3B0aW9uYWwgKi9cXG40ODIyOlxcdFxcdGNoaWxkID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUobnAsIFxcXCJtZGlvLWV4dGVybmFsXFxcIik7XFxuNDgyMzpcXHRcXHRpZiAoY2hpbGQpIHtcXG40ODI0OlxcdFxcdFxcdHJlcyA9IHl0OTIxeF9tYnVzX2V4dF9pbml0KHByaXYsIGNoaWxkKTtcXG40ODI1OlxcdFxcdFxcdG9mX25vZGVfcHV0KGNoaWxkKTtcXG40ODI2OlxcdFxcdFxcdGlmIChyZXMpXFxuNDgyNzpcXHRcXHRcXHRcXHRyZXR1cm4gcmVzO1xcbjQ4Mjg6XFx0XFxuNDgyOTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlVudGVzdGVkIGV4dGVybmFsIG1kaW8gYnVzXFxcXG5cXFwiKTtcXG40ODMwOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjQ4MzE6XFx0XFx0fVxcbjQ4MzI6XFx0XFxuNDgzMzpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VyZWdfbG9jayk7XFxuNDgzNDpcXHRcXHRyZXMgPSB5dDkyMXhfY2hpcF9zZXR1cChwcml2KTtcXG40ODM1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX2xvY2spO1xcbjQ4MzY6XFx0XFxuNDgzNzpcXHRcXHRpZiAocmVzKVxcbjQ4Mzg6XFx0XFx0XFx0cmV0dXJuIHJlcztcXG40ODM5OlxcdFxcbjQ4NDA6XFx0XFx0eXQ5Mnh4X3JlZ2lzdGVyX3N3aXRjaChkcyk7XFxuNDg0MTpcXHRcXG40ODQyOlxcdFxcdHJldHVybiAwO1xcbjQ4NDM6XFx0fVxcbjQ4NDQ6XFx0XFxuNDg0NTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyB5dDkyMXhfcGh5bGlua19tYWNfb3BzID0ge1xcbjQ4NDY6XFx0XFx0Lm1hY19saW5rX2Rvd25cXHQ9IHl0OTIxeF9waHlsaW5rX21hY19saW5rX2Rvd24sXFxuNDg0NzpcXHRcXHQubWFjX2xpbmtfdXBcXHQ9IHl0OTIxeF9waHlsaW5rX21hY19saW5rX3VwLFxcbjQ4NDg6XFx0XFx0Lm1hY19jb25maWdcXHQ9IHl0OTIxeF9waHlsaW5rX21hY19jb25maWcsXFxuNDg0OTpcXHR9O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNTowOS4xODI5NzI5NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5ODU5NTk2Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyBvZiBORVRfRFNBX1lUOTIxWCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGBORVRfRFNBX1lUOTIxWGAg4oCTIHNwZWNpZmljYWxseSwgdGhpcyBgeXQ5MjF4YCBkcml2ZXIg4oCTIGlzIGV2ZW4gKnJlYWNoYWJsZSogd2l0aGluIGEgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIEkga25vdyB0aGF0IGB5dDkyMXhgIHJlbGllcyBvbiB0aGUgTW90b3Jjb21tIFlUOTIxNSBldGhlcm5ldCBzd2l0Y2ggY2hpcCBhbmQgaXRzIE1ESU8gaW50ZXJmYWNlIChgbWRpb19kcml2ZXJgKS4gVGhlIGNydWNpYWwgcXVlc3Rpb24gaXM6IERvZXMgUUVNVSBldmVuICplbXVsYXRlKiB0aGF0IHNwZWNpZmljIGNoaXAsIG9yIGl0cyBNRElPIHJlZ2lzdGVycz8gQW5kIHRoZSBxdWljayBhbnN3ZXIgaXMgKm5vKi4gUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIFlUOTIxNS5cblxuQWxyaWdodCwgYmFjayB0byB0aGUgcnVsZXMuIEkgbmVlZCB0byBzZWUgaWYgdGhpcyBjaGFuZ2UgZmFsbHMgdW5kZXIgb25lIG9mIHRoZSBleGVtcHRpb25zIGZvciBcIldvcnRoRnV6emluZz1mYWxzZS5cIiBUaGUgcmVsZXZhbnQgb25lcyBhcmUgbW9kaWZpY2F0aW9ucyB0byB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhhdCBpbmNsdWRlcyBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlLiBUaGlzICpjb3VsZCogYXBwbHkuIEJ1dCBJIGhhdmUgdG8gYmUgc3VyZS5cblxuTXkgbmV4dCBsaW5lIG9mIHRob3VnaHQgaXMgdG8gdmVyaWZ5IHdoZXRoZXIgTURJTyBldGhlcm5ldCBzd2l0Y2ggZHJpdmVycyAoRFNBIGRyaXZlcnMpIGluIGdlbmVyYWwgKmNhbiogYmUgcmVhY2hlZCBvciBpbnN0YW50aWF0ZWQgaW4gUUVNVS9HQ0UuIFRoaXMgaXMgdGhlIGtleSBxdWVzdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgc29tZSBraW5kIG9mIG1vY2sgb3IgZW11bGF0aW9uIGZvciBtZGlvL0RTQSwgb3IgaWYgdGhlc2UgYXJlIHVuaXZlcnNhbGx5IGNvbnNpZGVyZWQgaGFyZHdhcmUgZHJpdmVycyB0aGF0IGFyZSB1bnJlYWNoYWJsZS5cblxuSSBuZWVkIHRvIGxvb2sgZm9yIGV4YW1wbGVzIGluIHRoZSBrZXJuZWwgaXRzZWxmLCBvciBpbiBzeXprYWxsZXIuIEFyZSBEU0EgZHJpdmVycyB0ZXN0ZWQsIG9yIGZ1enplZCBvbiBRRU1VPyBBbmQgdGhlbi4uLiAqYWhhISogVGhlcmUncyBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgLiBUaGF0J3MgYSBzb2Z0d2FyZSBsb29wYmFjayBEU0Egc3dpdGNoLCAqc3BlY2lmaWNhbGx5KiBkZXNpZ25lZCBmb3IgdGVzdGluZyB0aGUgRFNBIGNvcmUhIFRoYXQgaW1wbGllcyBpdCdzICpwb3NzaWJsZSogdG8gdGVzdCBhbmQsIHRoZXJlZm9yZSwgZnV6eiBzb21lIERTQSBkcml2ZXJzIGluIFFFTVUuIFRoaXMgaXMgcHJvbWlzaW5nLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBkc2FfbG9vcC5jYCB0byBzZWUgaG93IGl0IHdvcmtzIGFuZCBkZXRlcm1pbmUgaWYgYE5FVF9EU0FfWVQ5MjFYYCBjYW4gYmUgYWRhcHRlZCBvciB0ZXN0ZWQgaW4gYSBzaW1pbGFyIGZhc2hpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTA2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDJUMTU6MDU6MTkuMDQyNTc0Mzk5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA2ODYyMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHNhX2xvb3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9NYWtlZmlsZT0zPWJjbS1zZjItb2Jqc1xcdFxcdFxcdDo9IGJjbV9zZjIubyBiY21fc2YyX2NmcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX05FVF9EU0FfTE9PUClcXHQrPSBkc2FfbG9vcC5vXFxuZHJpdmVycy9uZXQvZHNhL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX05FVF9EU0FfS1M4OTk1KSBcXHQrPSBrczg5OTUub1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU6c3RydWN0IGRzYV9sb29wX3ZsYW4ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI2LVxcdHUxNiBtZW1iZXJzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEtXFx0Y2hhciBuYW1lW0VUSF9HU1RSSU5HX0xFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTplbnVtIGRzYV9sb29wX21pYl9jb3VudGVycyB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXFx0RFNBX0xPT1BfUEhZX1JFQURfT0ssXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzpzdHJ1Y3QgZHNhX2xvb3BfcG9ydCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ6XFx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NS1cXHR1MTYgcHZpZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5OnN0cnVjdCBkc2FfbG9vcF9wcml2IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cXHRzdHJ1Y3QgbWlpX2J1c1xcdCpidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXFx0dW5zaWduZWQgaW50XFx0cG9ydF9iYXNlO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuIHZsYW5zW1ZMQU5fTl9WSURdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUzLVxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTQ6XFx0c3RydWN0IGRzYV9sb29wX3BvcnQgcG9ydHNbRFNBX01BWF9QT1JUU107XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NzpzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVxcdC8qIE11c3QgYmUgZmlyc3QsIHN1Y2ggdGhhdCBkc2FfcmVnaXN0ZXJfc3dpdGNoKCkgY2FuIGFjY2VzcyB0aGlzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo2NzpzdGF0aWMgc3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBkc2FfbG9vcF9taWJzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjgtXFx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVxcdD0geyBcXFwicGh5X3JlYWRfb2tcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9NzU9c3RhdGljIHN0cnVjdCBtZGlvX2RldmljZSAqc3dpdGNoX21kaW9kZXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Nzc6ZW51bSBkc2FfbG9vcF9kZXZsaW5rX3Jlc291cmNlX2lkIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy03OC1cXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjg0OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODUtXFx0dW5zaWduZWQgaW50IGksIGNvdW50ID0gMDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtODctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo5NzpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTktXFx0c3RydWN0IGRldmxpbmtfcmVzb3VyY2Vfc2l6ZV9wYXJhbXMgc2l6ZV9wYXJhbXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVxcdFxcdFxcdFxcdFxcdCAgICAgIERTQV9MT09QX0RFVkxJTktfUEFSQU1fSURfVlRVLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcXHRcXHRcXHRcXHRcXHQgICAgICBkc2FfbG9vcF9kZXZsaW5rX3Z0dV9nZXQsIHBzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM0OnN0YXRpYyBpbnQgZHNhX2xvb3Bfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNS17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHMtXFx1MDAzZW51bV9wb3J0czsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0MDpcXHRcXHRtZW1jcHkocHMtXFx1MDAzZXBvcnRzW2ldLm1pYiwgZHNhX2xvb3BfbWlicyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XFx0XFx0ICAgICAgIHNpemVvZihkc2FfbG9vcF9taWJzKSk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcXHRyZXR1cm4gZHNhX2xvb3Bfc2V0dXBfZGV2bGlua19yZXNvdXJjZXMoZHMpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ni19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0ODpzdGF0aWMgdm9pZCBkc2FfbG9vcF90ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE1Mi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNTM6c3RhdGljIGludCBkc2FfbG9vcF9nZXRfc3NldF9jb3VudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgc3NldClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2Mi1cXHRcXHRcXHRcXHQgdTMyIHN0cmluZ3NldCwgdWludDhfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjUtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTc0OnN0YXRpYyB2b2lkIGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVxcdFxcdFxcdFxcdCAgICAgICB1aW50NjRfdCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTg0OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3JlYWQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHJlZ251bSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xOTgtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTk5OnN0YXRpYyBpbnQgZHNhX2xvb3BfcGh5X3dyaXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVxcdFxcdFxcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDEte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIwMjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMDMtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjE1OnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIxNi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjctXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzMi1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMzM6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVxcdFxcdFxcdFxcdFxcdHU4IHN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI0MDpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9maWx0ZXJpbmcoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXFx0XFx0XFx0XFx0XFx0Ym9vbCB2bGFuX2ZpbHRlcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0OS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcG9ydF92bGFuICp2bGFuLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVxcdGJvb2wgcHZpZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1NjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTctXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU4OlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4NC1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI4Ni1cXHRib29sIHVudGFnZ2VkID0gdmxhbi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCUklER0VfVkxBTl9JTkZPX1VOVEFHR0VEO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODgtXFx0dTE2IHB2aWQgPSBwcy1cXHUwMDNlcG9ydHNbcG9ydF0ucHZpZDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODktXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVxcdTAwM2VidXM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjkwOlxcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yOTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzExOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEyLVxcdFxcdFxcdFxcdCAgICBpbnQgbmV3X210dSlcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTMte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxNDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI1LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNy1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMzMy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1OlxcdC5nZXRfdGFnX3Byb3RvY29sXFx0PSBkc2FfbG9vcF9nZXRfcHJvdG9jb2wsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2OlxcdC5zZXR1cFxcdFxcdFxcdD0gZHNhX2xvb3Bfc2V0dXAsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM3OlxcdC50ZWFyZG93blxcdFxcdD0gZHNhX2xvb3BfdGVhcmRvd24sXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4OlxcdC5nZXRfc3RyaW5nc1xcdFxcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM5OlxcdC5nZXRfZXRodG9vbF9zdGF0c1xcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQwOlxcdC5nZXRfc3NldF9jb3VudFxcdFxcdD0gZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQxOlxcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MjpcXHQucGh5X3JlYWRcXHRcXHQ9IGRzYV9sb29wX3BoeV9yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcXHQucGh5X3dyaXRlXFx0XFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ0OlxcdC5wb3J0X2JyaWRnZV9qb2luXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NTpcXHQucG9ydF9icmlkZ2VfbGVhdmVcXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NjpcXHQucG9ydF9zdHBfc3RhdGVfc2V0XFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ3OlxcdC5wb3J0X3ZsYW5fZmlsdGVyaW5nXFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0ODpcXHQucG9ydF92bGFuX2FkZFxcdFxcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2FkZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDk6XFx0LnBvcnRfdmxhbl9kZWxcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlxcdC5wb3J0X2NoYW5nZV9tdHVcXHQ9IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NzpcXHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU4OlxcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzgyLVxcdGRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcXHRkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODQtXFx0ZHMtXFx1MDAzZXByaXYgPSBwcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk4LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTktXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDAxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQxMTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9kcnZfc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNC1cXHQubWRpb2Rydi5kcml2ZXJcXHQ9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQyNi1cXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyNzpcXHQucHJvYmVcXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjg6XFx0LnJlbW92ZVxcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjk6XFx0LnNodXRkb3duID0gZHNhX2xvb3BfZHJ2X3NodXRkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MzI6c3RhdGljIGludCBkc2FfbG9vcF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM1OlxcdHJldHVybiBkcnYgPT0gXFx1MDAyNmRzYV9sb29wX2Rydi5tZGlvZHJ2LmRyaXZlcjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mzg6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0NS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDY6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NDg6XFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXFx0XFx0LmNkID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDcwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MTpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ3MjpcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlZGV2LnBsYXRmb3JtX2RhdGEgPSBcXHUwMDI2ZHNhX2xvb3BfcGRhdGE7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgxLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODc6XFx0cmV0ID0gZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk0OlxcdHJldCA9IG1kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2OlxcdFxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cXHRcXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAyLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDM6bW9kdWxlX2luaXQoZHNhX2xvb3BfaW5pdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNTpzdGF0aWMgdm9pZCBfX2V4aXQgZHNhX2xvb3BfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNi17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3OlxcdG1kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmRzYV9sb29wX2Rydik7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4OlxcdGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3RlcigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwOS1cXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTExLX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNToxOS4xNTMyNzAxNjdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODU5OTg4MTU1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgV29ydGhGdXp6aW5nIEV2YWx1YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYGRzYV9sb29wLmNgIGFuZCBgeXQ5MjF4LmNgIGp1bXBzIG91dCBhdCBtZS4gVGhlIGBkc2FfbG9vcC5jYCBmaWxlIGlzIGNsZWFybHkgc2V0IHVwIGZvciAqbW9jayogTURJTyBkZXZpY2UgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byB0ZXN0IHRoZSBEU0EgY29yZS4gSXQgZG9lc24ndCByZXF1aXJlIGFueSBhY3R1YWwgaGFyZHdhcmUuIE9uIHRoZSBvdGhlciBoYW5kLCBgeXQ5MjF4LmNgIGlzIGEgKmhhcmR3YXJlLXNwZWNpZmljKiBkcml2ZXIgZm9yIHRoZSBNb3RvcmNvbW0gWVQ5MjE1IGV0aGVybmV0IHN3aXRjaCBjaGlwLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgc2VlIHRoYXQgaXQncyBnb2luZyB0byBoaXQgdGhlIGBZVDkyMVhfQ0hJUF9JRGAgcmVnaXN0ZXIsIGFuZCBuZWVkcyB0byBiZSBhYmxlIHRvIHJlYWQgYmFjayB0aGUgYFlUOTIxWF9DSElQX0lEX01BSk9SYCBmaWVsZCB0byBpZGVudGlmeSB0aGUgY2hpcCdzIHNlcmllcy4gVGhlIHByb2JlIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGZhaWwgd2l0aG91dCB0aGF0IHBoeXNpY2FsIGNoaXAgcHJlc2VudCwgbWF0Y2hpbmcgdGhlIGRldmljZSB3aXRoIHRoZSBcIm1vdG9yY29tbSx5dDkyMTVcIiBPRiBjb21wYXRpYmxlIHN0cmluZy5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgaW5zdHJ1Y3Rpb25zLiBUaGUgY3JpdGljYWwgYml0IGlzOiBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZVwiLiBUaGF0J3Mgd2hhdCBJIG5lZWQgdG8gZm9jdXMgb24uIFNpbmNlIHRoZSBgeXQ5MjF4YCBkcml2ZXIgKmV4cGxpY2l0bHkqIHJlcXVpcmVzIHRoZSByZWFsIGhhcmR3YXJlLCBhbmQgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhhdCBzcGVjaWZpYyBNb3RvcmNvbW0gY2hpcCwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gYW55IHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBkcml2ZXIgZXhwZWN0cyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gcmVzcG9uZCB0byBNRElPIHJlZ2lzdGVyIHJlYWRzLCBhIHJlcXVpcmVtZW50IHRoYXQgY2Fubm90IGJlIHNhdGlzZmllZCBpbiBhIFFFTVUgaW5zdGFuY2UuXG5cbkxldCdzIGRvIGEgcXVpY2sgZG91YmxlLWNoZWNrOiB0aGUgZGlmZiBpcyAqb25seSogbW9kaWZ5aW5nIGBkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmNgIGFuZCBgZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5oYC4gVGhlIGRyaXZlciBpcyBkZWZpbml0ZWx5IGZvciB0aGUgTW90b3Jjb21tIFlUOTIxNS9ZVDkyMTggaGFyZHdhcmUuIEkgYW0gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIHRoaXMgaGFyZHdhcmUgYXZhaWxhYmxlIGZvciBzdGFuZGFyZCBRRU1VIC8gR0NFIGluc3RhbmNlcywgbWFraW5nIHRoaXMgcGF0Y2ggY2xlYXJseSBmYWxsIHVuZGVyIHRoZSBleGNsdXNpb24gY3JpdGVyaWEuXG5cblRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGJlIGBmYWxzZWAuIEknbGwgc2V0IHRoZSBvdGhlciBwYXJhbWV0ZXJzIGFwcHJvcHJpYXRlbHkuIFRoZSBmaW5hbCByZWFzb25pbmcgdG8gYmUgcmVjb3JkZWQgc2hvdWxkIGNvbmNpc2VseSBleHBsYWluIHRoYXQgYHl0OTIxeGAgaXMgYSBkcml2ZXIgdGhhdCByZXF1aXJlcyB0aGUgTW90b3Jjb21tIGhhcmR3YXJlIGFuZCBpcyBub3QgZW11bGF0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjcyLCJPdXRwdXRUb2tlbnMiOjEwNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNToyNy43NTMxNTUyMzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTc3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE1vdG9yY29tbSBZVDkyMTUvWVQ5MjE4IERTQSBldGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChkcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMpLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBzd2l0Y2ggaGFyZHdhcmUgY29ubmVjdGVkIG92ZXIgTURJTyB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBNb3RvcmNvbW0gWVQ5MjE1L1lUOTIxOCBEU0EgZXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgc3dpdGNoIGhhcmR3YXJlIGNvbm5lY3RlZCBvdmVyIE1ESU8gd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMlQxNTowNToyNy43NTMzODI2MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfkxpg[1] Phase: Running StartedAt: 2026-09-02 15:05:38 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfkxpg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-02 15:05:38 +0000 UTC FinishedAt: 2026-09-02 15:05:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}