Name: series-workflowsr8qx Phase: Failed StartedAt: 2026-09-10 05:32:08 +0000 UTC FinishedAt: 2026-09-10 05:37:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsr8qx[0] Phase: Succeeded StartedAt: 2026-09-10 05:32:08 +0000 UTC FinishedAt: 2026-09-10 05:36:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsr8qx[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 05:32:08 +0000 UTC FinishedAt: 2026-09-10 05:36:54 +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+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVHggRE1BIG1hcHBpbmcgZXJyb3IgdW53aW5kaW5nIGxvZ2ljIGluIGBzdG1tYWNfeG1pdCgpYCB3aXRoaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBTb0MvUENJIGhhcmR3YXJlIElQIGJsb2NrcyAoU1RNTUFDL0RXTUFDKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGE2YzlhYjc0YTM3ODI5ZDVkMGRiZDhhMGI4NjE5YTI3YTFiZDhkMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDA1OjM1OjQwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyNDY1NmIzNTM1MGIxLi4yZTM2YzI3ZTJjZmI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTQ3NjksMTIgJiM0Mzs0NzY5LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbiBcdHUzMiBxdWV1ZSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0aW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbi1cdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgdHhfcGFja2V0cztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIGVudHJ5LCB0eF9wYWNrZXRzO1xuIFx0c3RydWN0IHN0bW1hY190eHFfc3RhdHMgKnR4cV9zdGF0cztcbiBcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYywgKmZpcnN0X2Rlc2M7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xO1xuIFx0aW50IGksIGNzdW1faW5zZXJ0aW9uID0gMDtcbi1cdGludCBlbnRyeSwgZmlyc3RfdHg7XG4mIzQzO1x0aW50IGZpcnN0X3R4LCByZXQ7XG4gXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xuIFx0dTMyIHNkdV9sZW47XG4gXG5AQCAtNDgzMiw5ICYjNDM7NDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGNzdW1faW5zZXJ0aW9uID0gc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMO1xuIFxuIFx0aWYgKHVubGlrZWx5KGlzX2p1bWJvKSkge1xuLVx0XHRlbnRyeSA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XG4tXHRcdGlmICh1bmxpa2VseShlbnRyeSBcdTAwM2MgMCkgXHUwMDI2XHUwMDI2IChlbnRyeSAhPSAtRUlOVkFMKSlcbiYjNDM7XHRcdHJldCA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkocmV0IFx1MDAzYyAwKSBcdTAwMjZcdTAwMjYgKHJldCAhPSAtRUlOVkFMKSlcbiBcdFx0XHRnb3RvIGRtYV9tYXBfZXJyO1xuJiM0MztcdFx0ZW50cnkgPSByZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7XG4gXG5AQCAtNDk4NCw2ICYjNDM7NDk4NSwyNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBkbWFfbWFwX2VycjpcbiBcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O1R4IERNQSBtYXAgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0LyogZW50cnkgcG9pbnRzIG9uZSBwYXN0IHRoZSBsYXN0IGRlc2NyaXB0b3Igd3JpdHRlbiBmb3IgdGhpcyBmcmFtZTpcbiYjNDM7XHQgKiBvbiBmYWlsdXJlIGl0IGlzIHRoZSBkZXNjcmlwdG9yIHdob3NlIERNQSBtYXBwaW5nIGZhaWxlZCwgc28gd2Fsa1xuJiM0MztcdCAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eFxuJiM0MztcdCAqIHVuY29uZGl0aW9uYWxseSBhcyBib3RoIHN0bW1hY192bGFuX2luc2VydCgpIGFuZCBzdG1tYWNfanVtYm9fZnJtKClcbiYjNDM7XHQgKiBtYXkgaGF2ZSBhZHZhbmNlZCBpdCwgYW5kIHJlbGVhc2UgdGhlIFZMQU4gY29udGV4dCBkZXNjcmlwdG9yLlxuJiM0MztcdCAqL1xuJiM0MztcdHdoaWxlIChmaXJzdF9lbnRyeSAhPSBlbnRyeSkge1xuJiM0MztcdFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF9lbnRyeSk7XG4mIzQzO1x0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbiYjNDM7XHRcdHN0bW1hY19mcmVlX3R4X2J1ZmZlcihwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLCBxdWV1ZSwgZmlyc3RfZW50cnkpO1xuJiM0MztcdFx0Zmlyc3RfZW50cnkgPSBTVE1NQUNfTkVYVF9FTlRSWShmaXJzdF9lbnRyeSxcbiYjNDM7XHRcdFx0XHRcdFx0cHJpdi1cdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR0eF9xLVx1MDAzZWN1cl90eCA9IGZpcnN0X3R4O1xuJiM0MztcdGlmIChoYXNfdmxhbikge1xuJiM0MztcdFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF90eCk7XG4mIzQzO1x0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbiYjNDM7XHR9XG4gbWF4X3NkdV9lcnI6XG4gXHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4gXHRwcml2LVx1MDAzZXhzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUeCBETUEgbWFwcGluZyBlcnJvciB1bndpbmRpbmcgbG9naWMgaW4gYHN0bW1hY194bWl0KClgIHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIFNvQy9QQ0kgaGFyZHdhcmUgSVAgYmxvY2tzIChTVE1NQUMvRFdNQUMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0YTZjOWFiNzRhMzc4MjlkNWQwZGJkOGEwYjg2MTlhMjdhMWJkOGQwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMDU6MzU6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCAyNDY1NmIzNTM1MGIxLi4yZTM2YzI3ZTJjZmI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTQ3NjksMTIgJiM0Mzs0NzY5LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXVuc2lnbmVkIGludCBub3BhZ2VkX2xlbiA9IHNrYl9oZWFkbGVuKHNrYik7CiAJdTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7CiAJaW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7bnJfZnJhZ3M7Ci0JdW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCB0eF9wYWNrZXRzOwomIzQzOwl1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIGVudHJ5LCB0eF9wYWNrZXRzOwogCXN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7CiAJc3RydWN0IGRtYV9kZXNjICpkZXNjLCAqZmlyc3RfZGVzYzsKIAlzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xOwogCWludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7Ci0JaW50IGVudHJ5LCBmaXJzdF90eDsKJiM0MzsJaW50IGZpcnN0X3R4LCByZXQ7CiAJZG1hX2FkZHJfdCBkbWFfYWRkcjsKIAl1MzIgc2R1X2xlbjsKIApAQCAtNDgzMiw5ICYjNDM7NDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAljc3VtX2luc2VydGlvbiA9IHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUw7CiAKIAlpZiAodW5saWtlbHkoaXNfanVtYm8pKSB7Ci0JCWVudHJ5ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTsKLQkJaWYgKHVubGlrZWx5KGVudHJ5ICZsdDsgMCkgJmFtcDsmYW1wOyAoZW50cnkgIT0gLUVJTlZBTCkpCiYjNDM7CQlyZXQgPSBzdG1tYWNfanVtYm9fZnJtKHByaXYsIHR4X3EsIHNrYiwgY3N1bV9pbnNlcnRpb24pOwomIzQzOwkJaWYgKHVubGlrZWx5KHJldCAmbHQ7IDApICZhbXA7JmFtcDsgKHJldCAhPSAtRUlOVkFMKSkKIAkJCWdvdG8gZG1hX21hcF9lcnI7CiYjNDM7CQllbnRyeSA9IHJldDsKIAl9IGVsc2UgewogCQlib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7CiAKQEAgLTQ5ODQsNiAmIzQzOzQ5ODUsMjYgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIGRtYV9tYXBfZXJyOgogCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O1R4IERNQSBtYXAgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CS8qIGVudHJ5IHBvaW50cyBvbmUgcGFzdCB0aGUgbGFzdCBkZXNjcmlwdG9yIHdyaXR0ZW4gZm9yIHRoaXMgZnJhbWU6CiYjNDM7CSAqIG9uIGZhaWx1cmUgaXQgaXMgdGhlIGRlc2NyaXB0b3Igd2hvc2UgRE1BIG1hcHBpbmcgZmFpbGVkLCBzbyB3YWxrCiYjNDM7CSAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eAomIzQzOwkgKiB1bmNvbmRpdGlvbmFsbHkgYXMgYm90aCBzdG1tYWNfdmxhbl9pbnNlcnQoKSBhbmQgc3RtbWFjX2p1bWJvX2ZybSgpCiYjNDM7CSAqIG1heSBoYXZlIGFkdmFuY2VkIGl0LCBhbmQgcmVsZWFzZSB0aGUgVkxBTiBjb250ZXh0IGRlc2NyaXB0b3IuCiYjNDM7CSAqLwomIzQzOwl3aGlsZSAoZmlyc3RfZW50cnkgIT0gZW50cnkpIHsKJiM0MzsJCWRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfZW50cnkpOwomIzQzOwkJc3RtbWFjX3JlbGVhc2VfdHhfZGVzYyhwcml2LCBkZXNjLCBwcml2LSZndDtkZXNjcmlwdG9yX21vZGUpOwomIzQzOwkJc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7CiYjNDM7CQlmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LAomIzQzOwkJCQkJCXByaXYtJmd0O2RtYV9jb25mLmRtYV90eF9zaXplKTsKJiM0MzsJfQomIzQzOwomIzQzOwl0eF9xLSZndDtjdXJfdHggPSBmaXJzdF90eDsKJiM0MzsJaWYgKGhhc192bGFuKSB7CiYjNDM7CQlkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X3R4KTsKJiM0MzsJCXN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi0mZ3Q7ZGVzY3JpcHRvcl9tb2RlKTsKJiM0MzsJfQogbWF4X3NkdV9lcnI6CiAJZGV2X2tmcmVlX3NrYihza2IpOwogCXByaXYtJmd0O3hzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY5NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBhbmQgaWYgc28sIGhvdyB0byBhcHByb2FjaCBpdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCBzcGVjaWZpY2FsbHksIHRoZSBgc3RtbWFjX3htaXRgIGZ1bmN0aW9uLiBSaWdodCwgc28gdGhpcyBpcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLWNoYW5uZWwgRXRoZXJuZXQgTUFDIGRyaXZlciwgYWxzbyBrbm93biBhcyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAvIFNUTU1BQy4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBpcyB0aGlzIGhhcmR3YXJlLWRlcGVuZGVudCwgb3IgY2FuIEkgcmVhY2ggdGhpcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IElzIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGVkIGVub3VnaCB0aGF0IGl0IHdpbGwgYmUgZWFzaWx5IHJlYWNoYWJsZT8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gcmVsaWFibHkgdHJpZ2dlciB0aGlzIGNvZGUuIFRvIGFuc3dlciB0aGlzLCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiBJIGNhbiBydW4gdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGVpdGhlciBgZ3JlcHBlcmAgb3IgY2hlY2sgdGhlIEtjb25maWcsIGlkZWFsbHkgbG9va2luZyBhdCBkZXBlbmRlbmNpZXMsIHRvIHNlZSBob3cgZWFzaWx5IHRoaXMgY2FuIGJlIGNvbmZpZ3VyZWQgYW5kIHdoZXRoZXIgaXQgaXMgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgaHVyZGxlLCBkZXRlcm1pbmluZyB0aGUgdGFyZ2V0JiMzOTtzIHJlYWNoYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNDYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlOgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgc2VlIGhvdyB0aGV5JiMzOTt2ZSBzdHJ1Y3R1cmVkIHRoZSBmZWF0dXJlIHNlbGVjdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHVudXN1YWwgZGVwZW5kZW5jaWVzIG9yIGxpbWl0YXRpb25zLCBhbmQgYXNzZXNzaW5nIHRoZSBsZXZlbCBvZiBncmFudWxhcml0eSBpbiB0aGVpciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O20gcGFydGljdWxhcmx5IGN1cmlvdXMgYWJvdXQgaG93IHRoZXkgaGFuZGxlIHRoZSB2YXJpb3VzIFNUTWljcm9lbGVjdHJvbmljcyBTb0NzIHRoYXQgdXRpbGl6ZSB0aGlzIE1BQy4gQXJlIHRoZXkgdXNpbmcgYSBmaW5lLWdyYWluZWQsIGRldmljZS1zcGVjaWZpYyBhcHByb2FjaCwgb3IgYSBtb3JlIGdlbmVyYWxpemVkLCBmZWF0dXJlLWJhc2VkIHN5c3RlbT8KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBDT05GSUdfU1RNTUFDXypgIG9wdGlvbnMsIG9mIGNvdXJzZS4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIHRoZW0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXJzIGFuZCBmdW5jdGlvbmFsaXRpZXMgSSYjMzk7bSBmYW1pbGlhciB3aXRoIOKAkyBQSFkgaW50ZXJmYWNlcywgaW50ZXJydXB0IGhhbmRsaW5nLCBETUEgc2V0dGluZ3MsIGFuZCBhbnkgb2ZmbG9hZCBjYXBhYmlsaXRpZXMuIEkmIzM5O2xsIHdhbnQgdG8gc2VlIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIHZhcmlvdXMgZmVhdHVyZXMgc3VjaCBhcyBKdW1ibyBmcmFtZXMsIGNoZWNrc3VtIG9mZmxvYWRpbmcsIFZMQU4gc3VwcG9ydCwgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zLgoKSSYjMzk7bSBob3BpbmcgdG8gc2VlIGEgd2VsbC1jb21tZW50ZWQgZmlsZSwgdGhhdCBmb2xsb3dzIHN0YW5kYXJkIGtlcm5lbCBjb252ZW50aW9ucyBhbmQgY2xlYXJseSBkZWxpbmVhdGVzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMmIzM5OyBpbXBsaWNhdGlvbnMuIEEgd2VsbC1vcmdhbml6ZWQgYEtjb25maWdgIGlzIGEgc2lnbiBvZiBhIHdlbGwtZGVzaWduZWQgZHJpdmVyLCBzbyBJJiMzOTttIGhvcGluZyBmb3IgZ29vZCBkZXNpZ24gcHJpbmNpcGxlcyB0byBiZSBldmlkZW50LiBUaGlzIHNob3VsZCBiZSBhIGZhaXJseSBxdWljayByZXZpZXcgaWYgaXQmIzM5O3Mgd2VsbC1vcmdhbml6ZWQ7IEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCBzbyBJIGNhbiBrZWVwIG1ha2luZyBwcm9ncmVzcyBvbiBteSBwcm9qZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRpZiBTVE1NQUNfUExBVEZPUk1cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cJiMzNDtcbiAgNDY6XHRcdHNlbGVjdCBDUkMzMlxuICA0NzpcdFx0c2VsZWN0IE1JSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICA0OTpcdFx0aGVscFxuICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBEV01BQ19HRU5FUklDXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiAgNTQ6XHRcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnlcbiAgNTc6XHRcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxuICA1ODpcdFx0ICBkYXRhIGZvciBzZXR1cC5cbiAgNTk6XHRcbiAgNjA6XHRjb25maWcgRFdNQUNfQU5BUklPTlxuICA2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcJiMzNDtcbiAgNjI6XHRcdGRlZmF1bHQgQVJDXG4gIDYzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcbiAgNjQ6XHRcdGhlbHBcbiAgNjU6XHRcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDY2Olx0XG4gIDY3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgRFdNQUNfRUlDNzcwMFxuICA3MDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgNzE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXG4gIDc0Olx0XHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcbiAgNzU6XHRcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXG4gIDc2Olx0XHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBEV01BQ19JTkdFTklDXG4gIDc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbmdlbmljIE1BQyBzdXBwb3J0XCYjMzQ7XG4gIDgwOlx0XHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgc3RtbWFjIERyaXZlcioqCgpBbHJpZ2h0LCBzdG1tYWMuLi4gdGhhdCByaW5ncyBhIGJlbGwuIFJpZ2h0LCBpdCYjMzk7cyB0aGUgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQ3MsIGFuZCBpdCYjMzk7cyBhbHNvIHVzZWQgZm9yIFNUTWljcm9lbGVjdHJvbmljcyYjMzk7IG93biBNQUMgaW1wbGVtZW50YXRpb25zLiBBIHNvbGlkLCBmYWlybHkgd2VsbC1lc3RhYmxpc2hlZCBwaWVjZSBvZiB0aGUgbmV0d29ya2luZyBzdGFjaywgSSBiZWxpZXZlLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMsICp3aGVyZSogZG9lcyBpdCBsaXZlPyBJcyB0aGlzIGEgUENJLWJhc2VkIGludGVyZmFjZSwgb3IgaXMgdGhpcyBhIHBsYXRmb3JtIGRyaXZlcj8gTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IGJ5IGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYWJvdXQgdGhlIGRldmljZSBiaW5kaW5nIG1ldGhvZC4gVGhhdCYjMzk7bGwgdGVsbCBtZSBhIGxvdCBhYm91dCBob3cgdGhpcyBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbSBhbmQgaG93IGl0JiMzOTtzIHR5cGljYWxseSB1c2VkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgc2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChNQUNIX0lOR0VOSUMgfHwgQ09NUElMRV9URVNUKVxuICA4MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgODM6XHRcdGhlbHBcbiAgODQ6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBJbmdlbmljIFNvQ3MuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gIDg3Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcbiAgODg6XHRcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIERXTUFDX0lQUTgwNlhcbiAgOTE6XHRcdHRyaXN0YXRlIFwmIzM0O1FDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcJiMzNDtcbiAgOTI6XHRcdGRlZmF1bHQgQVJDSF9RQ09NXG4gIDkzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbiAgOTQ6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDk1Olx0XHRoZWxwXG4gIDk2Olx0XHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxuICA5NzpcdFxuICA5ODpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIElQUTgwNnggU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuICA5OTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYW55IG9mIHRoZSBoYXJkd2FyZVxuIDEwMDpcdFx0ICBhY2NlbGVyYXRpb24gZmVhdHVyZXMgYXZhaWxhYmxlIG9uIHRoaXMgU29DLiBOZXR3b3JrIGRldmljZXNcbiAxMDE6XHRcdCAgd2lsbCBiZWhhdmUgbGlrZSBzdGFuZGFyZCBub24tYWNjZWxlcmF0ZWQgZXRoZXJuZXQgaW50ZXJmYWNlcy5cbiAxMDI6XHRcbiAxMDM6XHRcdCAgU2VsZWN0IHRoZSBRQ09NX1NPQ0lORk8gY29uZmlnIGZsYWcgdG8gZW5hYmxlIHNwZWNpZmljIGR3bWFjXG4gMTA0Olx0XHQgIGZpeHVwIGJhc2VkIG9uIHRoZSBpcHE4MDZ4IFNvQyByZXZpc2lvbi5cbiAxMDU6XHRcbiAxMDY6XHRjb25maWcgRFdNQUNfTFBDMThYWFxuIDEwNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIExQQzE4eHgvNDN4eCBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMTA4Olx0XHRkZWZhdWx0IEFSQ0hfTFBDMThYWFxuIDEwOTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXG4gMTEwOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDExMTpcdFx0aGVscFxuIDExMjpcdFx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxuIDExMzpcdFxuIDExNDpcdGNvbmZpZyBEV01BQ19NRURJQVRFS1xuIDExNTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQyN3h4IEdNQUMgc3VwcG9ydFwmIzM0O1xuIDExNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUKVxuIDExNzpcdFx0aGVscFxuIDExODpcdFx0ICBTdXBwb3J0IGZvciBNZWRpYVRlayBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMTE5Olx0XG4gMTIwOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTVQyNzEyIFNvQyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAxMjE6XHRcbiAxMjI6XHRjb25maWcgRFdNQUNfTUVTT05cbiAxMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDEyNDpcdFx0ZGVmYXVsdCBBUkNIX01FU09OXG4gMTI1Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9NRVNPTiB8fCBDT01QSUxFX1RFU1QpXG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gQW1sb2dpYyBNZXNvbiBTb0NzLlxuIDEyODpcdFxuIDEyOTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFtbG9naWMgTWVzb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAxMzA6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBNZXNvbjYsXG4gMTMxOlx0XHQgIE1lc29uOCwgTWVzb244YiBhbmQgR1hCQiBTb0NzLlxuIDEzMjpcdFxuIDEzMzpcdGNvbmZpZyBEV01BQ19OVVZPVE9OXG4gMTM0Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdXZvdG9uIE1BMzUgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDEzNTpcdFx0ZGVmYXVsdCBBUkNIX01BMzVcbiAxMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxuIDEzNzpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAxMzg6XHRcdGhlbHBcbiAxMzk6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQy5cbiAxNDA6XHRcbiAxNDE6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbiAxNDI6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXG4gMTQzOlx0XHQgIHVzZWQgZm9yIE1BMzUgc2VyaWVzIFNvQ3MuXG4gMTQ0Olx0XG4gMTQ1Olx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXG4gMTQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBFVEhRT1Mgc3VwcG9ydFwmIzM0O1xuIDE0NzpcdFx0ZGVmYXVsdCBBUkNIX1FDT01cbiAxNDg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgUXVhbGNvbW0gRVRIUU9TIGNvcmUuXG4gMTUxOlx0XG4gMTUyOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMTUzOlx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuIDE1NDpcdFxuIDE1NTpcdGNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXG4gMTU2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL1YySChQKSBHQkVUSCBhbmQgUlovVDJILCBSWi9OMkggR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTU3Olx0XHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1QpXG4gMTU5Olx0XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuIDE2MDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBEZWVwZXIgaW50byB0aGUgS2NvbmZpZyBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBmb2N1c2luZyBvbiBzb21lIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBLY29uZmlnLCBidXQgbm93IEkgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBhIGJpdC4gVGltZSB0byBtb3ZlIGJleW9uZCB0aGUgaW1tZWRpYXRlIHN0dWZmIGFuZCBnZXQgYSBtb3JlIGNvbXBsZXRlIHZpZXcgb2YgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIFNUTU1BQ19QQ0kgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCByZWxhdGlvbnNoaXBzLCBhbmQgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY29uZmlndXJhdGlvbnMgd2l0aGluIHRoZSBicm9hZGVyIEtjb25maWcgZnJhbWV3b3JrLiBUaGlzIGlzIGNydWNpYWwgZm9yIGEgcm9idXN0IHVuZGVyc3RhbmRpbmcsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBoYXJkd2FyZSBhYnN0cmFjdGlvbnMuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgcmVsYXRlZCBLY29uZmlnIG9wdGlvbnMgaXMgdGhlIG9ubHkgd2F5IHRvIGVmZmVjdGl2ZWx5IGRpYWdub3NlIGlzc3VlcywgZXZhbHVhdGUgZGVzaWduIGNob2ljZXMsIGFuZCBtYWtlIGluZm9ybWVkIG1vZGlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYxOlx0XHQgIFN1cHBvcnQgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgSW50ZXJmYWNlIChHQkVUSCkvIEV0aGVybmV0IE1BQyAoR01BQylcbiAxNjI6XHRcdCAgb24gUmVuZXNhcyBTb0NzLlxuIDE2MzpcdFxuIDE2NDpcdFx0ICBUaGlzIHNlbGVjdHMgUmVuZXNhcyBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRldmljZVxuIDE2NTpcdFx0ICBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBSWi9WMkgoUCkgZmFtaWx5LCBSWi9UMkggYW5kXG4gMTY2Olx0XHQgIFJaL04ySCBTb0NzLlxuIDE2NzpcdFxuIDE2ODpcdGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuIDE2OTpcdFx0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDE3MDpcdFx0ZGVmYXVsdCBBUkNIX1JPQ0tDSElQXG4gMTcxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXG4gMTcyOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDE3MzpcdFx0aGVscFxuIDE3NDpcdFx0ICBTdXBwb3J0IGZvciBFdGhlcm5ldCBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzI4OCBTb0MuXG4gMTc1Olx0XG4gMTc2Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG4gMTc3Olx0XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cbiAxNzg6XHRcbiAxNzk6XHRjb25maWcgRFdNQUNfUlpOMVxuIDE4MDpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVuZXNhcyBSWi9OMSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMTgxOlx0XHRkZWZhdWx0IEFSQ0hfUlpOMVxuIDE4MjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUlpOMSB8fCBDT01QSUxFX1RFU1QpXG4gMTgzOlx0XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuIDE4NDpcdFx0aGVscFxuIDE4NTpcdFx0ICBTdXBwb3J0IGZvciBFdGhlcm5ldCBjb250cm9sbGVyIG9uIFJlbmVzYXMgUlovTjEgU29DIGZhbWlseS5cbiAxODY6XHRcbiAxODc6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBSZW5lc2FzIFJaL04xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG4gMTg4Olx0XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBzdXBwb3J0IGNhbiBtYWtlIHVzZSBvZiBhIGN1c3RvbSBNSUlcbiAxODk6XHRcdCAgY29udmVydGVyIFBDUyBkZXZpY2UuXG4gMTkwOlx0XG4gMTkxOlx0Y29uZmlnIERXTUFDX1MzMlxuIDE5MjpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFMzMkcvUzMyUiBHTUFDIHN1cHBvcnRcJiMzNDtcbiAxOTM6XHRcdGRlZmF1bHQgQVJDSF9TMzJcbiAxOTQ6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXG4gMTk1Olx0XHRoZWxwXG4gMTk2Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIFMzMkNDIFNPQ3MuXG4gMTk3Olx0XG4gMTk4Olx0XHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDE5OTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUzMyQ0Mgc2VyaWVzXG4gMjAwOlx0XHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLCBpZS4gUzMyRzJ4eCwgUzMyRzN4eCBhbmRcbiAyMDE6XHRcdCAgUzMyUjQ1LlxuIDIwMjpcdFxuIDIwMzpcdGNvbmZpZyBEV01BQ19TT0NGUEdBXG4gMjA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtTT0NGUEdBIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAyMDU6XHRcdGRlZmF1bHQgQVJDSF9JTlRFTF9TT0NGUEdBXG4gMjA2Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9JTlRFTF9TT0NGUEdBIHx8IENPTVBJTEVfVEVTVClcbiAyMDc6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjA4Olx0XHRzZWxlY3QgTURJT19SRUdNQVBcbiAyMDk6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuIDIxMDpcdFx0c2VsZWN0IFBDU19MWU5YXG4gMjExOlx0XHRoZWxwXG4gMjEyOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gQWx0ZXJhIFNPQ0ZQR0FcbiAyMTM6XHRcbiAyMTQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjE1Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXG4gMjE2Olx0XHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxuIDIxNzpcdFxuIDIxODpcdGNvbmZpZyBEV01BQ19TT1BIR09cbiAyMTk6XHRcdHRyaXN0YXRlIFwmIzM0O1NvcGhnbyBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMjIwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TT1BIR08gfHwgQ09NUElMRV9URVNUKVxuIDIyMTpcdFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU09QSEdPXG4gMjIyOlx0XHRoZWxwXG4gMjIzOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNvcGhnbyBSSVNDLVYgU29Dc1xuIDIyNDpcdFxuIDIyNTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFNvcGhnbyBTb0Mgc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjI2Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDIyNzpcdFx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxuIDIyODpcdFxuIDIyOTpcdGNvbmZpZyBEV01BQ19TUEFDRU1JVFxuIDIzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3BhY2VtaXQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDIzMTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxuIDIzMjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyMzM6XHRcdGRlZmF1bHQgbSBpZiBBUkNIX1NQQUNFTUlUXG4gMjM0Olx0XHRoZWxwXG4gMjM1Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNwYWNlbWl0IFJJU0MtViBTb0NzXG4gMjM2Olx0XG4gMjM3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgU3BhY2VtaXQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjM4Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDIzOTpcdFx0ICBTcGFjZW1pdCBLMyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyNDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg3OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgS2NvbmZpZyBmaWxlLCBwaWNraW5nIHVwIGZyb20gbGluZSAyNDEgb253YXJkcy4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aGF0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyB0aGluZ3MgYXJlIGJlaW5nIGNvbmZpZ3VyZWQgaGVyZS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IGRlcGVuZGVuY2llcywgdGhlIGJvb2xlYW4gZXhwcmVzc2lvbnMsIGFueSBkZWZhdWx0cyBzZXQg4oCTIGV2ZXJ5dGhpbmcgdGhhdCBpbmZsdWVuY2VzIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uLiBXaGVyZSBhcmUgdGhlIGltcG9ydGFudCBmZWF0dXJlcyBkZWZpbmVkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgY29uZmxpY3RzIGJhc2VkIG9uIG15IHByZXZpb3VzIGV4cGVyaWVuY2U/IEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCB0aGUgbG9naWMsIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZ290Y2hhcywgYW5kIG1lbnRhbGx5IGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGlzIG1vZHVsZSBiZWhhdmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gZmluZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MTpcdGNvbmZpZyBEV01BQ19TVEFSRklWRVxuIDI0MjpcdFx0dHJpc3RhdGUgXCYjMzQ7U3RhckZpdmUgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDI0MzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RBUkZJVkUgfHwgQ09NUElMRV9URVNUKVxuIDI0NDpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyNDU6XHRcdGRlZmF1bHQgbSBpZiBBUkNIX1NUQVJGSVZFXG4gMjQ2Olx0XHRoZWxwXG4gMjQ3Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFN0YXJGaXZlIFJJU0MtViBTb0NzXG4gMjQ4Olx0XG4gMjQ5Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgU3RhckZpdmUgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjUwOlx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDI1MTpcdFx0ICBTdGFyRml2ZSBKSDcxMDAgYW5kIEpINzExMCBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyNTI6XHRcbiAyNTM6XHRjb25maWcgRFdNQUNfU1RJXG4gMjU0Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVGkgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMjU1Olx0XHRkZWZhdWx0IEFSQ0hfU1RJXG4gMjU2Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVEkgfHwgQ09NUElMRV9URVNUKVxuIDI1NzpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyNTg6XHRcdGhlbHBcbiAyNTk6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBTVGkgU09Dcy5cbiAyNjA6XHRcbiAyNjE6XHRcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gMjYyOlx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXG4gMjYzOlx0XHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI2NDpcdFxuIDI2NTpcdGNvbmZpZyBEV01BQ19TVE0zMlxuIDI2NjpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNMzIgRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDI2NzpcdFx0ZGVmYXVsdCBBUkNIX1NUTTMyXG4gMjY4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChBUkNIX1NUTTMyIHx8IENPTVBJTEVfVEVTVClcbiAyNjk6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjcwOlx0XHRoZWxwXG4gMjcxOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gU1RNMzIgU09Dcy5cbiAyNzI6XHRcbiAyNzM6XHRcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAyNzQ6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xuIDI3NTpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyNzY6XHRcbiAyNzc6XHRjb25maWcgRFdNQUNfU1VOWElcbiAyNzg6XHRcdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyNzk6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDI4MDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDI4MTpcdFx0aGVscFxuIDI4MjpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgQTIwL0EzMSBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI4MzpcdFxuIDI4NDpcdFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuIDI4NTpcdFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgQTIwL0EzMVxuIDI4NjpcdFx0ICBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjg3Olx0XG4gMjg4Olx0Y29uZmlnIERXTUFDX1NVTjhJXG4gMjg5Olx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgc3VuOGkgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMjkwOlx0XHRkZWZhdWx0IEFSQ0hfU1VOWElcbiAyOTE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcbiAyOTI6XHRcdHNlbGVjdCBNRElPX0JVU19NVVhcbiAyOTM6XHRcdGhlbHBcbiAyOTQ6XHRcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEgzIEE4M1QgQTY0IEVNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMjk1Olx0XG4gMjk2Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMjk3Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxuIDI5ODpcdFx0ICBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjk5Olx0XG4gMzAwOlx0Y29uZmlnIERXTUFDX1NVTjU1SVxuIDMwMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjU1aSBHTUFDMjAwIHN1cHBvcnRcJiMzNDtcbiAzMDI6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDMwMzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDMwNDpcdFx0c2VsZWN0IE1ESU9fQlVTX01VWFxuIDMwNTpcdFx0aGVscFxuIDMwNjpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgQTUyMy9UNTI3IEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMzA3Olx0XG4gMzA4Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMzA5Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcbiAzMTA6XHRcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxuIDMxMTpcdFxuIDMxMjpcdGNvbmZpZyBEV01BQ19USEVBRFxuIDMxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VC1IRUFEIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMTQ6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVClcbiAzMTU6XHRcdGhlbHBcbiAzMTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gVC1IRUFEIFJJU0MtViBTb0NzXG4gMzE3Olx0XG4gMzE4Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgVC1IRUFEIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAzMTk6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBULUhFQUQgVEgxNTIwXG4gMzIwOlx0XHQgIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzQwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBLY29uZmlnIGZpbGUsIHBpY2tpbmcgdXAgd2hlcmUgd2UgbGVmdCBvZmYuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBkZWZpbmVkIGluIHRoZSByZW1haW5pbmcgbGluZXMsIGZyb20gbGluZSAzMjEgb253YXJkLiBUaGlzIHNlY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgcGFydGljdWxhciBtb2R1bGUgb3IgZmVhdHVyZSBpcyBnb3Zlcm5lZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWNzLCB0aGUgdW5kZXJseWluZyBsb2dpYywgYW5kIHRoZSByZWxhdGlvbnNoaXBzIHRoYXQgZXhpc3Qgd2l0aGluIHRoaXMgc3RydWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gdW5lYXJ0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzIxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMjE6XHRcbiAzMjI6XHRjb25maWcgRFdNQUNfSU1YOFxuIDMyMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIElNWDggRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDMyNDpcdFx0ZGVmYXVsdCBBUkNIX01YQ1xuIDMyNTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVClcbiAzMjY6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMzI3Olx0XHRoZWxwXG4gMzI4Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIGkuTVg4IFNPQ3MuXG4gMzI5Olx0XG4gMzMwOlx0XHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDMzMTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuIDMzMjpcdFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzMzOlx0XG4gMzM0Olx0Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbiAzMzU6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IENPTU1PTl9DTEtcbiAzMzc6XHRcdGhlbHBcbiAzMzg6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gSW50ZWwgU29Dc1xuIDMzOTpcdFxuIDM0MDpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAzNDE6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcbiAzNDI6XHRcdCAgU29DLlxuIDM0MzpcdFxuIDM0NDpcdGNvbmZpZyBEV01BQ19MT09OR1NPTjFcbiAzNDU6XHRcdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uMSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAzNDY6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXG4gMzQ3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcbiAzNDg6XHRcdGhlbHBcbiAzNDk6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxuIDM1MDpcdFxuIDM1MTpcdFx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAzNTI6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTG9vbmdzb24xLWJhc2VkIGJvYXJkc1xuIDM1MzpcdFx0ICBsaWtlIExvb25nc29uIExTMUIvTFMxQy5cbiAzNTQ6XHRcbiAzNTU6XHRjb25maWcgRFdNQUNfVEVHUkFcbiAzNTY6XHRcdHRyaXN0YXRlIFwmIzM0O05WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcJiMzNDtcbiAzNTc6XHRcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcbiAzNTg6XHRcdGhlbHBcbiAzNTk6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBNdWx0aS1HaWdhQml0IEV0aGVybmV0IChNR0JFKSBDb250cm9sbGVyIHRoYXQgaXNcbiAzNjA6XHRcdCAgZm91bmQgb24gdGhlIE5WSURJQSBUZWdyYSBTb0MgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgdGhlIGdsdWVcbiAzNjE6XHRcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXG4gMzYyOlx0XHQgIGRldmljZXMuXG4gMzYzOlx0XG4gMzY0Olx0Y29uZmlnIERXTUFDX1ZJU0NPTlRJXG4gMzY1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUb3NoaWJhIFZpc2NvbnRpIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzNjY6XHRcdGRlZmF1bHQgQVJDSF9WSVNDT05USVxuIDM2NzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKEFSQ0hfVklTQ09OVEkgfHwgQ09NUElMRV9URVNUKVxuIDM2ODpcdFx0aGVscFxuIDM2OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFZpc2NvbnRpIFNvQ3MuXG4gMzcwOlx0XG4gMzcxOlx0ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbiAzNzI6XHRcbiAzNzM6XHRjb25maWcgU1RNTUFDX0xJQlBDSVxuIDM3NDpcdFx0dHJpc3RhdGVcbiAzNzU6XHRcdGhlbHBcbiAzNzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJIGJ1cyBoZWxwZXJzIGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAzNzc6XHRcbiAzNzg6XHRjb25maWcgRFdNQUNfSU5URUxcbiAzNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDM4MDpcdFx0ZGVmYXVsdCBYODZcbiAzODE6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBQQ0lcbiAzODI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBBQ1BJXG4gMzg0Olx0XHRoZWxwXG4gMzg1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxuIDM4NjpcdFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuIDM4NzpcdFxuIDM4ODpcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxuIDM4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4gMzk1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcbiAzOTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4gMzk3Olx0XG4gMzk4Olx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuIDM5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTczMAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDQwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIGludG8gUUVNVSBhbmQgRFdNQUMvU1RNTUFDIEVtdWxhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGVtdWxhdGUgRFdNQUMgKERlc2lnbldhcmUgTUFDKSBvciBTVE1NQUMgKFNUTWljcm9lbGVjdHJvbmljcyBNQUMpIGV0aGVybmV0IGNvbnRyb2xsZXJzIHdpdGhpbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBlbnZpcm9ubWVudHMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIGxpc3Qgb3V0IHNvbWUgRFdNQUMgaW1wbGVtZW50YXRpb25zIEkmIzM5O20gYXdhcmUgb2Y6IGBEV01BQ19JTlRFTGAsIGBEV01BQ19MT09OR1NPTmAsIGV0Yy4gSnVzdCBjYXRhbG9naW5nIGtub3duIGltcGxlbWVudGF0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZS4KCk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpcyBjZW50ZXJlZCBhcm91bmQgUUVNVSB2aXJ0dWFsaXphdGlvbi4gRG9lcyB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZXZlbiBHQ0UsIHByb3ZpZGUgdmlydHVhbGl6ZWQgZW11bGF0aW9uIGZvciBEV01BQyBvciBTVE1NQUM/IEkgbmVlZCB0byBrbm93IGlmIHRoZSBkZXZpY2VzIGV4aXN0IGluIHRoZSB2aXJ0dWFsIHdvcmxkLiBPa2F5LCB3YWl0LCB3aGF0ICpkb2VzKiBRRU1VIGVtdWxhdGU/IEkgcXVpY2tseSByZWNhbGwgY29tbW9uIHZpcnR1YWxpemVkIG5ldHdvcmsgZGV2aWNlczogZTEwMDAsIGlnYiwgdmlydGlvLW5ldCwgdGhlIHVzdWFsIHN1c3BlY3RzLiBCdXQsIGRvIGFueSBvZiB0aGVzZSBjb3ZlciB3aGF0IEkgbmVlZD8gTm8sIHRoYXQmIzM5O3Mgbm90IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCkEgc3BlY2lmaWMgcXVlc3Rpb24gaXMgc3VyZmFjaW5nOiBkb2VzIFFFTVUgZW11bGF0ZSBTVE1NQUMgb3IgRFdNQUM/IEkgbmVlZCB0byBjaGVjay4gRGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgcmVtZW1iZXIgdGhhdCBRRU1VIG1pZ2h0IGVtdWxhdGUgZHdtYWMgb24gc29tZSBBUk0gU29DIG1hY2hpbmVzLCBidXQgd2hhdCBhYm91dCBhbWQ2NCAoeDg2KT8gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBxdWVzdGlvbi4gSXQgc2VlbXMgbGlrZSBpdCYjMzk7cyB1bmxpa2VseSBmb3IgeDg2LgoKTm93LCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgcnVsZXMuIFRoaXMgdGFrZXMgbWUgdG8gU2VjdGlvbiAyLCB3aGljaCBvdXRsaW5lcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhhdCBsaXN0OiAmIzM0O1ZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uJiMzNDsgZGV2aWNlcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBzdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUuIFRoaXMgaXMgY3JpdGljYWwuIERvZXMgU1RNTUFDIGZhbGwgaW50byB0aGlzIGNhdGVnb3J5PwoKSSBuZWVkIHRvIGNhcmVmdWxseSBldmFsdWF0ZTogaXMgU1RNTUFDICpzdHJ1Y3R1cmFsbHkqIHVucmVhY2hhYmxlPyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCB2aXJ0dWFsIGJ1c2VzIChsaWtlIHZpcnRpbykgb3IgaWYgaXQgcmVsaWVzICpvbmx5KiBvbiBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZ2V0IHRvIGl0IHRocm91Z2ggYSBkdW1teSBvciBVU0IgcGF0aC4gU28sIGFyZSB0aGVyZSBhbnkgVVNCIG9yIHZpcnR1YWwgZGV2aWNlcyB0aGF0IHVzZSBTVE1NQUM/IEkgbXVzdCBjaGVjay4KClRoZSBmaW5hbCBzdGVwIGluIHRoaXMgcHJvY2VzcyBpcyB0byBkbyBhIGRldGFpbGVkIHNlYXJjaCB1c2luZyBgZ3JlcGAgd2l0aGluIHRoZSBrZXJuZWwgdHJlZSB0byBzZWUgd2hlcmUgU1RNTUFDIGlzIHVzZWQgYW5kIGhvdy4gSSBjYW4gZmluZCBhbiBhbnN3ZXIgdGhpcyB3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTA4MzIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICYjNDM7PSBzdG1tYWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzpzdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNC1cdCAgICAgIGNoYWluX21vZGUubyBkd21hY19saWIubyBkd21hYzEwMDBfY29yZS5vIGR3bWFjMTAwMF9kbWEub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUtXHQgICAgICBkd21hYzEwMF9jb3JlLm8gZHdtYWMxMDBfZG1hLm8gZW5oX2Rlc2MubyBub3JtX2Rlc2Mub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjY6XHQgICAgICBtbWNfY29yZS5vIHN0bW1hY19od3RzdGFtcC5vIHN0bW1hY19wdHAubyBkd21hYzRfZGVzY3Mub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTctXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4Olx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjk6XHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxMDpcdCAgICAgIHN0bW1hY19wY3MubyAkKHN0bW1hYy15KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxMjpzdG1tYWMtJChDT05GSUdfU1RNTUFDX1NFTEZURVNUUykgJiM0Mzs9IHN0bW1hY19zZWxmdGVzdHMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDU9b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVx0JiM0Mzs9IGR3bWFjLXZpc2NvbnRpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ2OnN0bW1hYy1wbGF0Zm9ybS1vYmpzOj0gc3RtbWFjX3BsYXRmb3JtLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQ3LWR3bWFjLWFsdHItc29jZnBnYS1vYmpzIDo9IGR3bWFjLXNvY2ZwZ2Eub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfU1RNTUFDX0xJQlBDSSlcdCYjNDM7PSBzdG1tYWNfbGlicGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUwLW9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXHQmIzQzOz0gZHdtYWMtbW90b3Jjb21tLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0xNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzoxNzpzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE4LVx0XHQgICAgIGludCBjc3VtKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0yMC1cdHVuc2lnbmVkIGludCBub3BhZ2VkX2xlbiA9IHNrYl9oZWFkbGVuKHNrYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MjE6XHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSB0eF9xLVx1MDAzZXByaXZfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0yMi1cdHVuc2lnbmVkIGludCBlbnRyeSA9IHR4X3EtXHUwMDNlY3VyX3R4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy00NS1cdC8qIGRvIG5vdCBjbG9zZSB0aGUgZGVzY3JpcHRvciBhbmQgZG8gbm90IHNldCBvd24gYml0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6NDY6XHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDEsIGJ1Zl9sZW4sIGNzdW0sIFNUTU1BQ19DSEFJTl9NT0RFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTQ3LVx0XHRcdDAsIGZhbHNlLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNjItXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBibWF4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjYzOlx0XHRcdHN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgYm1heCwgY3N1bSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02NC1cdFx0XHRcdFx0U1RNTUFDX0NIQUlOX01PREUsIDEsIGZhbHNlLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNzYtXHRcdFx0LyogbGFzdCBkZXNjcmlwdG9yIGNhbiBiZSBzZXQgbm93ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6Nzc6XHRcdFx0c3RtbWFjX3ByZXBhcmVfdHhfZGVzYyhwcml2LCBkZXNjLCAwLCBsZW4sIGNzdW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNzgtXHRcdFx0XHRcdFNUTU1BQ19DSEFJTl9NT0RFLCAxLCB0cnVlLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM9OTk9c3RhdGljIHZvaWQgaW5pdF9kbWFfY2hhaW4odm9pZCAqZGVzLCBkbWFfYWRkcl90IHBoeV9hZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTI5OnN0YXRpYyB2b2lkIHJlZmlsbF9kZXNjMyhzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xLCBzdHJ1Y3QgZG1hX2Rlc2MgKnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTMwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzoxMzE6XHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSByeF9xLVx1MDAzZXByaXZfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0xMzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzoxNDQ6c3RhdGljIHZvaWQgY2xlYW5fZGVzYzMoc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IGRtYV9kZXNjICpwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE0NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTQ2Olx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gdHhfcS1cdTAwM2Vwcml2X2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTQ3LVx0dW5zaWduZWQgaW50IGVudHJ5ID0gdHhfcS1cdTAwM2VkaXJ0eV90eDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjE2MTpjb25zdCBzdHJ1Y3Qgc3RtbWFjX21vZGVfb3BzIGNoYWluX21vZGVfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE2Mi1cdC5pbml0ID0gaW5pdF9kbWFfY2hhaW4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NzE6c3RydWN0IHN0bW1hY19xX3R4X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTcyLVx0dTY0X3N0YXRzX3QgdHhfYnl0ZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo3ODpzdHJ1Y3Qgc3RtbWFjX25hcGlfdHhfc3RhdHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNzktXHR1NjRfc3RhdHNfdCB0eF9wYWNrZXRzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6ODY6c3RydWN0IHN0bW1hY190eHFfc3RhdHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtODctXHQvKiBVcGRhdGVzIHByb3RlY3RlZCBieSB0eCBxdWV1ZSBsb2NrLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtODgtXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgcV9zeW5jcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjg5Olx0c3RydWN0IHN0bW1hY19xX3R4X3N0YXRzIHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC05MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC05Mi1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBuYXBpX3N5bmNwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6OTM6XHRzdHJ1Y3Qgc3RtbWFjX25hcGlfdHhfc3RhdHMgbmFwaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTk0LX0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTk1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6OTY6c3RydWN0IHN0bW1hY19uYXBpX3J4X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTk3LVx0dTY0X3N0YXRzX3QgcnhfYnl0ZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMTAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MTAzOnN0cnVjdCBzdG1tYWNfcnhxX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwNC1cdC8qIFVwZGF0ZXMgcHJvdGVjdGVkIGJ5IE5BUEkgcG9sbCBsb2dpYy4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwNS1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBuYXBpX3N5bmNwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MTA2Olx0c3RydWN0IHN0bW1hY19uYXBpX3J4X3N0YXRzIG5hcGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMDctfSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwOS0vKiBVcGRhdGVzIG9uIGVhY2ggQ1BVIHByb3RlY3RlZCBieSBub3QgYWxsb3dpbmcgbmVzdGVkIGlycXMuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoxMTA6c3RydWN0IHN0bW1hY19wY3B1X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTExMS1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMTYtLyogRXh0cmEgc3RhdGlzdGljIGFuZCBkZWJ1ZyBpbmZvcm1hdGlvbiBleHBvc2VkIGJ5IGV0aHRvb2wgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjExNzpzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTExOC1cdC8qIFRyYW5zbWl0IGVycm9ycyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTIzNy1cdC8qIHBlciBxdWV1ZSBzdGF0aXN0aWNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyMzg6XHRzdHJ1Y3Qgc3RtbWFjX3R4cV9zdGF0cyB0eHFfc3RhdHNbTVRMX01BWF9UWF9RVUVVRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjM5Olx0c3RydWN0IHN0bW1hY19yeHFfc3RhdHMgcnhxX3N0YXRzW01UTF9NQVhfUlhfUVVFVUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjI0MDpcdHN0cnVjdCBzdG1tYWNfcGNwdV9zdGF0cyBfX3BlcmNwdSAqcGNwdV9zdGF0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI0MS1cdHVuc2lnbmVkIGxvbmcgcnhfZHJvcHBlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNDctLyogU2FmZXR5IEZlYXR1cmUgc3RhdGlzdGljcyBleHBvc2VkIGJ5IGV0aHRvb2wgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjI0ODpzdHJ1Y3Qgc3RtbWFjX3NhZmV0eV9zdGF0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNDktXHR1bnNpZ25lZCBsb25nIG1hY19lcnJvcnNbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI1Ni0jZGVmaW5lIFNUTU1BQ19TQUZFVFlfRkVBVF9TSVpFXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjU3Olx0KHNpemVvZihzdHJ1Y3Qgc3RtbWFjX3NhZmV0eV9zdGF0cykgLyBzaXplb2YodW5zaWduZWQgbG9uZykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDE2PXN0cnVjdCBkbWFfZmVhdHVyZXMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU2NTp2b2lkIHN0bW1hY19heGlfYmxlbl90b19tYXNrKHUzMiAqcmVndmFsLCBjb25zdCB1MzIgKmJsZW4sIHNpemVfdCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTYxMz1zdHJ1Y3QgbWFjX2RldmljZV9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYxNDpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzICptYWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2MTU6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2Rlc2Nfb3BzICpkZXNjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzICpkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2MTc6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX21vZGVfb3BzICptb2RlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE4Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19od3RpbWVzdGFtcCAqcHRwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE5Olx0Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgKnRjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjIwOlx0Y29uc3Qgc3RydWN0IHN0bW1hY19tbWNfb3BzICptbWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2MjE6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2VzdF9vcHMgKmVzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYyMjpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfdmxhbl9vcHMgKnZsYW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02MjMtXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NDU6c3RydWN0IHN0bW1hY19yeF9yb3V0aW5nIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY0Ni1cdHUzMiByZWdfbWFzaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTA6aW50IGR3bWFjMTAwX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTE6aW50IGR3bWFjMTAwMF9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjUyOmludCBkd21hYzRfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MzppbnQgZHd4Z21hYzJfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1NDppbnQgZHd4bGdtYWMyX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTY6dm9pZCBzdG1tYWNfc2V0X21hY19hZGRyKHZvaWQgX19pb21lbSAqaW9hZGRyLCBjb25zdCB1OCBhZGRyWzZdLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjU3LVx0XHRcdCB1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTg6dm9pZCBzdG1tYWNfZ2V0X21hY19hZGRyKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1bnNpZ25lZCBjaGFyICphZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjU5LVx0XHRcdCB1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjA6dm9pZCBzdG1tYWNfc2V0X21hYyh2b2lkIF9faW9tZW0gKmlvYWRkciwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjYyOnZvaWQgc3RtbWFjX2R3bWFjNF9zZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIGNvbnN0IHU4IGFkZHJbNl0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjMtXHRcdFx0XHR1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjQ6dm9pZCBzdG1tYWNfZHdtYWM0X2dldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgdW5zaWduZWQgY2hhciAqYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2NS1cdFx0XHRcdHVuc2lnbmVkIGludCBoaWdoLCB1bnNpZ25lZCBpbnQgbG93KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2Njp2b2lkIHN0bW1hY19kd21hYzRfc2V0X21hYyh2b2lkIF9faW9tZW0gKmlvYWRkciwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjY3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xNC0jaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjE1OiNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTkzPXN0YXRpYyBpbnQgYW5hcmlvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05Ny1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6OTg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEwMDpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEwMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMDQ6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTA1LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTExNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMTY6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTExNy19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTEyNT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhbmFyaW9uX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI4LVx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDthbmFyaW9uLWR3bWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyOTpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzAtXHRcdC5vZl9tYXRjaF90YWJsZSA9IGFuYXJpb25fZHdtYWNfbWF0Y2gsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjQ6I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3BsYXRmb3JtLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjUtI2luY2x1ZGUgXCYjMzQ7ZHdtYWM0LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM2PXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTQzLVx0XHRwbGF0X2RhdC1cdTAwM2VheGkgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjQ0Olx0XHRcdFx0XHQgICAgIHNpemVvZihzdHJ1Y3Qgc3RtbWFjX2F4aSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTQ1LVx0XHRcdFx0XHQgICAgIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9OTY9c3RhdGljIGludCBkd2NfcW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk3LVx0XHRcdCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzo5ODpcdFx0XHQgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MTAwOlx0cGxhdF9kYXQtXHUwMDNlcGNsayA9IHN0bW1hY19wbHRmcl9maW5kX2NsayhwbGF0X2RhdCwgXCYjMzQ7cGh5X3JlZl9jbGtcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xMDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0xMTU9c3RhdGljIHZvaWQgdGVncmFfZXFvc19maXhfc3BlZWQodm9pZCAqYnNwX3ByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xMTktXHRib29sIG5lZWRzX2NhbGlicmF0aW9uID0gZmFsc2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjEyMDpcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTIxLVx0dTMyIHZhbHVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTQxLVx0XHQvKiBDYWxpYnJhdGlvbiBzaG91bGQgYmUgZG9uZSB3aXRoIHRoZSBNRElPIGJ1cyBpZGxlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjE0MjpcdFx0c3RtbWFjX21kaW9fbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTQzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoxNzg6XHRcdHN0bW1hY19tZGlvX3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTc5LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTE4Nj1zdGF0aWMgaW50IHRlZ3JhX2Vxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTg3LVx0XHRcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoxODg6XHRcdFx0ICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTE4OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjIwNDpcdHBsYXRfZGF0LVx1MDAzZWNsa190eF9pID0gc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHBsYXRfZGF0LCBcJiMzNDt0eFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTIwNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTIzNy1cdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSB0ZWdyYV9lcW9zX2ZpeF9zcGVlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjM4Olx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjM5LVx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBlcW9zO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjUyPXN0YXRpYyB2b2lkIHRlZ3JhX2Vxb3NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI1My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI1NDpcdHN0cnVjdCB0ZWdyYV9lcW9zICplcW9zID0gZ2V0X3N0bW1hY19ic3BfcHJpdihcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI2MD1zdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2Mi1cdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNjM6XHRcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2NC1cdHZvaWQgKCpyZW1vdmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNjU6XHRjb25zdCBjaGFyICpzdG1tYWNfY2xrX25hbWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2Ni19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIGR3Y19xb3NfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY5LVx0LnByb2JlID0gZHdjX3Fvc19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjcwOlx0LnN0bW1hY19jbGtfbmFtZSA9IFwmIzM0O2FwYl9wY2xrXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzEtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGR3Y19ldGhfZHdtYWNfZGF0YSB0ZWdyYV9lcW9zX2RhdGEgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzUtXHQucmVtb3ZlID0gdGVncmFfZXFvc19yZW1vdmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI3NjpcdC5zdG1tYWNfY2xrX25hbWUgPSBcJiMzNDtzbGF2ZV9idXNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI3Ny19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9Mjc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIGZzZF9lcW9zX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI4MDpcdC5zdG1tYWNfY2xrX25hbWUgPSBcJiMzNDtzbGF2ZV9idXNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4MS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg2LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6Mjg3Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg4LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjkyOlx0bWVtc2V0KFx1MDAyNnN0bW1hY19yZXMsIDAsIHNpemVvZihzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcykpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5NC1cdC8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyOTU6XHQgKiBTaW5jZSBzdG1tYWNfcGxhdGZvcm0gc3VwcG9ydHMgbmFtZSBJUlEgb25seSwgYmFzaWMgcGxhdGZvcm1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjk2LVx0ICogcmVzb3VyY2UgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbiB0aGUgZ2x1ZSBsb2dpYy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjk3LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI5ODpcdHN0bW1hY19yZXMuaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6Mjk5Olx0aWYgKHN0bW1hY19yZXMuaXJxIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDA6XHRcdHJldHVybiBzdG1tYWNfcmVzLmlycTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzAxOlx0c3RtbWFjX3Jlcy53b2xfaXJxID0gc3RtbWFjX3Jlcy5pcnE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzAzOlx0c3RtbWFjX3Jlcy5hZGRyID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDQ6XHRpZiAoSVNfRVJSKHN0bW1hY19yZXMuYWRkcikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMwNTpcdFx0cmV0dXJuIFBUUl9FUlIoc3RtbWFjX3Jlcy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDc6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwOC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMTY6XHRwbGF0X2RhdC1cdTAwM2VzdG1tYWNfY2xrID0gc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMTc6XHRcdFx0XHRcdFx0ICAgICBkYXRhLVx1MDAzZXN0bW1hY19jbGtfbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzE5LVx0aWYgKGRhdGEtXHUwMDNlcHJvYmUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMyMDpcdFx0cmV0ID0gZGF0YS1cdTAwM2Vwcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyMS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzQzPXN0YXRpYyB2b2lkIGR3Y19ldGhfZHdtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM0NzpcdHN0bW1hY19kdnJfcmVtb3ZlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY1LVx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtkd2MtZXRoLWR3bWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNjY6XHRcdC5wbSAgICAgICAgICAgICA9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2Ny1cdFx0Lm9mX21hdGNoX3RhYmxlID0gZHdjX2V0aF9kd21hY19tYXRjaCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjA6I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3BsYXRmb3JtLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTY3PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xNzAtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE3MTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTcyLVx0c3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgKmR3Y19wcml2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTc2Olx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTc3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE4MTpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xODItXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjMyNDpcdHBsYXRfZGF0LVx1MDAzZWNsa190eF9pID0gc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHBsYXRfZGF0LCBcJiMzNDt0eFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MzI1Olx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zMjYtXHRwbGF0X2RhdC1cdTAwM2VjbGtzX2NvbmZpZyA9IGVpYzc3MDBfY2xrc19jb25maWc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTMzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozMzU6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTMzNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTM2Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBlaWM3NzAwX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzY1LVx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtlaWM3NzAwLWV0aC1kd21hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNjY6XHRcdC5wbSAgICAgICAgICAgICA9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzY3LVx0XHQub2ZfbWF0Y2hfdGFibGUgPSBlaWM3NzAwX2R3bWFjX21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0xNi0jaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjE3OiNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9MTk9c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTIxLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzoyMjpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjMtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjI1Olx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0yOS1cdGlmIChwZGV2LVx1MDAzZWRldi5vZl9ub2RlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MzA6XHRcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0zMS1cdFx0aWYgKElTX0VSUihwbGF0X2RhdCkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NDk6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTUwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9Njk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdtYWNfZ2VuZXJpY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTcyLVx0XHQubmFtZSAgICAgICAgICAgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3MzpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03NC1cdFx0Lm9mX21hdGNoX3RhYmxlID0gZHdtYWNfZ2VuZXJpY19tYXRjaCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIzOiNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz00ND1zdHJ1Y3QgaW14X2R3bWFjX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo0OTpcdGludCAoKmZpeF9zb2NfcmVzZXQpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy01MC1cdGludCAoKnNldF9pbnRmX21vZGUpKHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYywgdTggcGh5X2ludGZfc2VsKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0xNTQ9c3RhdGljIGludCBpbXhfZHdtYWNfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2LCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNjE6XHRyZXR1cm4gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZShic3BfcHJpdiwgY2xrX3R4X2ksIGludGVyZmFjZSwgc3BlZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTYyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0xOTA9c3RhdGljIHZvaWQgaW14OTNfZHdtYWNfZml4X3NwZWVkKHZvaWQgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjI5OnN0YXRpYyBpbnQgaW14X2R3bWFjX214OTNfcmVzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjMwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0yOTM9c3RhdGljIGludCBpbXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTUtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjk2Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5Ny1cdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMDE6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA5Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzEwLVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzM4LVx0ZHdtYWMtXHUwMDNlcGxhdF9kYXQgPSBwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMzOTpcdGR3bWFjLVx1MDAzZWJhc2VfYWRkciA9IHN0bW1hY19yZXMuYWRkcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM0MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNTQ6XHRyZXQgPSBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzU1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zOTI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW14X2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5My1cdC5wcm9iZSAgPSBpbXhfZHdtYWNfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTQ6XHQucmVtb3ZlID0gc3RtbWFjX3BsdGZyX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5NS1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTYtXHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O2lteC1kd21hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM5NzpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5OC1cdFx0Lm9mX21hdGNoX3RhYmxlID0gaW14X2R3bWFjX21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyMTojaW5jbHVkZSBcJiMzNDtzdG1tYWNfcGxhdGZvcm0uaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYz0xNTQ9c3RhdGljIGludCBpbmdlbmljX21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNTYtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjE1NzpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTU4LVx0c3RydWN0IGluZ2VuaWNfbWFjICptYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjM6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MTY3Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2OC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjE1Olx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMTYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYz0yNzI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW5nZW5pY19tYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzUtXHRcdC5uYW1lXHQ9IFwmIzM0O2luZ2VuaWMtbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI3NjpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzctXHRcdC5vZl9tYXRjaF90YWJsZSA9IGluZ2VuaWNfbWFjX29mX21hdGNoZXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTE1LSNpbmNsdWRlIFwmIzM0O3N0bW1hYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTY6I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3BsYXRmb3JtLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy00NC1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NDU6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQ2LVx0c3RydWN0IGludGVsX2R3bWFjICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NTA6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy01MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjU0Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTU1LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE0LVx0cGxhdF9kYXQtXHUwMDNlY2xrX3R4X2kgPSBkd21hYy1cdTAwM2V0eF9jbGs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTE1Olx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTYtXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IGR3bWFjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTMyOlx0c3RydWN0IGludGVsX2R3bWFjICpkd21hYyA9IGdldF9zdG1tYWNfYnNwX3ByaXYoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMzQ6XHRzdG1tYWNfcGx0ZnJfcmVtb3ZlKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzNS1cdGlmIChkd21hYy1cdTAwM2VkYXRhLVx1MDAzZXR4X2Nsa19lbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTM5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsX2V0aF9wbGF0X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O2ludGVsLWV0aC1wbGF0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjE0NDpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDUtXHRcdC5vZl9tYXRjaF90YWJsZSA9IGludGVsX2V0aF9wbGF0X21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTItI2luY2x1ZGUgXCYjMzQ7c3RtbWFjLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM6I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3B0cC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MjU9c3RydWN0IGludGVsX3ByaXZfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA6c3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXHR1bnNpZ25lZCBpbnQgZnVuYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cdHNpemVfdCBuZnVuY3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA1NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGBzdG1tYWNgIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBzdG1tYWNgLCB0aGUgRXRoZXJuZXQgZHJpdmVyIGZvciBhIGJ1bmNoIG9mIGRpZmZlcmVudCBTeXN0ZW1zIG9uIGEgQ2hpcCAoU29Dcyk6IEFsbHdpbm5lciwgU1RpLCBBbWxvZ2ljLCBJbnRlbCBRdWFyay9FSEwvVEdMLCBOWFAgaS5NWDgsIExvb25nc29uLCB5b3UgbmFtZSBpdC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgdGhpbmcgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLCBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSBvciBRRU1VIG9uIHg4Nl82ND8gVGhhdCYjMzk7cyB0aGUgZmlyc3QgaHVyZGxlLCBhcyBwZXIgbXkgdXN1YWwgdHJpYWdlIGFwcHJvYWNoLgoKTGV0JiMzOTtzIHF1aWNrbHkgcmVjYXAgbXkgY29yZSBjcml0ZXJpYS4gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGlzIGEgbm8tZ28sIHJpZ2h0PyBUaGluayB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBvciBgYW1kZ3B1YC4gVGhlc2UgbmVlZCBwaHlzaWNhbCBjYXJkcywgd2hpY2ggb2J2aW91c2x5IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gUmVhY2hhYmlsaXR5IGlzIGtleS4gSSBjYW4gb25seSBleHBlY3QgdG8gZmluZCBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgKmV4ZWN1dGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgb3IgdHVuL3RhcC4gQW55IG1vZGlmaWNhdGlvbnMgdG8gc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGNvZGUsIGV2ZW4gd2l0aCBhZGRlZCBhc3NlcnRpb25zLCBhcmUgY29tcGxldGVseSBvZmYgdGhlIHRhYmxlLgoKTm93LCBiYWNrIHRvIGBzdG1tYWNgLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBvciBJbnRlbCBQQ0kgZHdtYWMsIExvb25nc29uIFBDSSBkd21hYyBhbmQgdGhlIGxpa2UuIFNvLCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogYXJlIHRoZXJlIHZpcnR1YWwgb3IgZW11bGF0ZWQgaW5zdGFuY2VzIG9mIGBzdG1tYWNgIHRoYXQgSSBjYW4gdXNlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCBvbiB4ODYvYW1kNjQ/IFRoZSBhbnN3ZXIgaXMuLi5uby4gUUVNVSBmb3IgeDg2L2FtZDY0IGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDICh0aGF0JiMzOTtzIGBzdG1tYWNgKSwgYW5kIEkgc2hvdWxkIG5vdGUgdGhhdCBpdCBvbmx5IGVtdWxhdGVzIHRoaW5ncyBsaWtlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgZWVwcm8xMDAsIHN1bmdlbSwgdHVsaXAsIHZteG5ldDMsIGlnYiwgdmlydGlvLW5ldCwgZXRjLgoKU28sIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHNvbWVob3cgcHJvYmUgb3IgaW5zdGFudGlhdGUgYHN0bW1hY2Agd2l0aG91dCByZWFsIGhhcmR3YXJlIG9yIGEgZGV2aWNldHJlZSBvbiBhbiBhY3R1YWwgU29DLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBsb2FkIGl0IG9yIHRlc3QgaXQgaW4gYW4gaXNvbGF0ZWQgbWFubmVyLiBMZXQmIzM5O3MgbG9vayBhdCBgc3RtbWFjX3htaXRgLiBUaGF0JiMzOTtzIHRoZSBgbmRvX3N0YXJ0X3htaXRgIGZ1bmN0aW9uIGZyb20gYHN0bW1hY19tYWluLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0JiMzOTtzIGNhbGxlZCBvciByZWdpc3RlcmVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3htaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00NzQ1PXN0YXRpYyBib29sIHN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00NzU3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0NzU4OiAqICBzdG1tYWNfeG1pdCAtIFR4IGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDc1OS0gKiAgQHNrYiA6IHRoZSBzb2NrZXQgYnVmZmVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00NzY0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0NzY1OnN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00NzY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMzI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMzMy1cdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzM0Olx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMzUtXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYyNgoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiAxNzUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGBzdG1tYWNfeG1pdGAgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc3RtbWFjX3htaXRgLCB3aGljaCBpcyB0aGUgdHJhbnNtaXQgaGFuZGxlciBmb3IgU1RNTUFDL0RXTUFDIGV0aGVybmV0IGRldmljZXMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uLCBgc3RtbWFjX3htaXRgLCBvbmx5IGdldHMgY2FsbGVkIGlmIHRoZSBTVE1NQUMgbmV0ZGV2aWNlIGlzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLCBvcGVuZWQsIGFuZCBwYWNrZXRzIGFyZSBiZWluZyB0cmFuc21pdHRlZCBvdmVyIGl0LiBUaGUgY3JlYXRpb24gb2Ygc3VjaCBhIG5ldGRldmljZSByZWxpZXMgb24gdGhlIGRyaXZlciBwcm9iaW5nIHN1Y2Nlc3NmdWxseS4gQW5kIGZvciB0aGUgZHJpdmVyIHRvIHByb2JlLCB0aGVyZSBuZWVkcyB0byBiZSBhIGhhcmR3YXJlIGRldmljZSBwcmVzZW50IOKAkyBzcGVjaWZpY2FsbHksIGEgcGxhdGZvcm0gZGV2aWNlIHdpdGggTU1JTyByZWdpc3RlcnMsIElSUXMsIGEgUEhZLCBvciBhIFBDSSBkZXZpY2Ugd2l0aCBtYXRjaGluZyBTVE1NQUMvRFdNQUMgUENJIElEcywgbGlrZSB0aG9zZSBmb3VuZCBpbiBJbnRlbCBFbGtoYXJ0IExha2UvVGlnZXIgTGFrZS9RdWFyayBTb0NzLiBUaGlzIGludm9sdmVzIGFjY2Vzc2luZyBoYXJkd2FyZSBNTUlPIHJlZ2lzdGVycy4KClRoZSBrZXkgaGVyZSBpcyB0aGF0IHRvIGdldCB0aGlzIGZhciwgeW91IGFic29sdXRlbHkgbmVlZCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSB2ZXJ5IHNwZWNpZmljLCBmdWxsIFFFTVUgZW11bGF0aW9uIG9mIERXTUFDLiAgU3RhbmRhcmQgUUVNVSBvbiB4ODZfNjQgZG9lc24mIzM5O3QgcHJvdmlkZSB0aGlzIGxldmVsIG9mIGVtdWxhdGlvbi4gVGh1cywgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlIGFuZCBuZXZlciByZWdpc3RlciBhIG5ldHdvcmsgaW50ZXJmYWNlLiBUaGF0IG1lYW5zIHRoZSBjb2RlIGluIGBzdG1tYWNfeG1pdGAgd2lsbCBuZXZlciBiZSBleGVjdXRlZC4KCk5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIHJlZmVyZW5jZSB0aGUgdHJpYWdlIGluc3RydWN0aW9ucywgZXNwZWNpYWxseSB0aGUgJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURSYjMzQ7LiBUaGUgaW5zdHJ1Y3Rpb25zIGNsZWFybHkgc3RhdGUgdGhhdCBmdXp6aW5nIGlzIG9ubHkgdmlhYmxlIGZvciBjb2RlIHRoYXQgY2FuIHJ1biBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuICBJZiB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBkdWUgdG8gaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCB3ZSBzaG91bGQgbm90IGJlIGZ1enppbmcgaXQuIEFuZCBzcGVjaWZpY2FsbHkgdW5kZXIgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKSYjMzQ7LCB0aGlzIGRpcmVjdGx5IGFwcGxpZXM6IEl0JiMzOTtzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsuIFRoZSBTVE1NQUMgZHJpdmVyIGlzIHRoZSBjbGFzc2ljIGV4YW1wbGUg4oCTIGl0IG5lZWRzIHBoeXNpY2FsIEFTSUNzL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpJJiMzOTt2ZSBjaGVja2VkIHRoZSBkaWZmIGFuZCB0aGUgb25seSBmaWxlIG1vZGlmaWVkIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gSXQmIzM5O3MgYWxsIGFib3V0IGBzdG1tYWNfeG1pdGAsIGFuZCBzcGVjaWZpY2FsbHkgY2xlYW5pbmcgdXAgRE1BIG1hcHBpbmcgZXJyb3JzLiBCdXQgc2luY2UgdGhlIHVuZGVybHlpbmcgZGV2aWNlIHdvbiYjMzk7dCBwcm9iZSwgd2UgY2FuJiMzOTt0IGdldCB0aGVyZSBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudCwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGVtcHR5LCBhbmQgc28gd2lsbCBgRW5hYmxlQ29uZmlnc2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVHggRE1BIG1hcHBpbmcgZXJyb3IgdW53aW5kaW5nIGxvZ2ljIGluIGBzdG1tYWNfeG1pdCgpYCB3aXRoaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBTb0MvUENJIGhhcmR3YXJlIElQIGJsb2NrcyAoU1RNTUFDL0RXTUFDKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUeCBETUEgbWFwcGluZyBlcnJvciB1bndpbmRpbmcgbG9naWMgaW4gYHN0bW1hY194bWl0KClgIHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIFNvQy9QQ0kgaGFyZHdhcmUgSVAgYmxvY2tzIChTVE1NQUMvRFdNQUMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNTozNTo0MS45MzczNjYwNjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDc1MTE0NDI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFR4IERNQSBtYXBwaW5nIGVycm9yIHVud2luZGluZyBsb2dpYyBpbiBgc3RtbWFjX3htaXQoKWAgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgU29DL1BDSSBoYXJkd2FyZSBJUCBibG9ja3MgKFNUTU1BQy9EV01BQykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzU6NDEuOTM3MzcyMTQ1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI3NTAwNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGE2YzlhYjc0YTM3ODI5ZDVkMGRiZDhhMGI4NjE5YTI3YTFiZDhkMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAwNTozNTo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDI0NjU2YjM1MzUwYjEuLjJlMzZjMjdlMmNmYjQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtNDc2OSwxMiArNDc2OSwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcXG4gXFx0dTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdGludCBuZnJhZ3MgPSBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZW5yX2ZyYWdzO1xcbi1cXHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIHR4X3BhY2tldHM7XFxuK1xcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgZW50cnksIHR4X3BhY2tldHM7XFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7XFxuIFxcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYywgKmZpcnN0X2Rlc2M7XFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3E7XFxuIFxcdGludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7XFxuLVxcdGludCBlbnRyeSwgZmlyc3RfdHg7XFxuK1xcdGludCBmaXJzdF90eCwgcmV0O1xcbiBcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbiBcXHR1MzIgc2R1X2xlbjtcXG4gXFxuQEAgLTQ4MzIsOSArNDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0Y3N1bV9pbnNlcnRpb24gPSBza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KGlzX2p1bWJvKSkge1xcbi1cXHRcXHRlbnRyeSA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XFxuLVxcdFxcdGlmICh1bmxpa2VseShlbnRyeSBcXHUwMDNjIDApIFxcdTAwMjZcXHUwMDI2IChlbnRyeSAhPSAtRUlOVkFMKSlcXG4rXFx0XFx0cmV0ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHJldCBcXHUwMDNjIDApIFxcdTAwMjZcXHUwMDI2IChyZXQgIT0gLUVJTlZBTCkpXFxuIFxcdFxcdFxcdGdvdG8gZG1hX21hcF9lcnI7XFxuK1xcdFxcdGVudHJ5ID0gcmV0O1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7XFxuIFxcbkBAIC00OTg0LDYgKzQ5ODUsMjYgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBkbWFfbWFwX2VycjpcXG4gXFx0bmV0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJUeCBETUEgbWFwIGZhaWxlZFxcXFxuXFxcIik7XFxuK1xcbitcXHQvKiBlbnRyeSBwb2ludHMgb25lIHBhc3QgdGhlIGxhc3QgZGVzY3JpcHRvciB3cml0dGVuIGZvciB0aGlzIGZyYW1lOlxcbitcXHQgKiBvbiBmYWlsdXJlIGl0IGlzIHRoZSBkZXNjcmlwdG9yIHdob3NlIERNQSBtYXBwaW5nIGZhaWxlZCwgc28gd2Fsa1xcbitcXHQgKiBmcm9tIGZpcnN0X2VudHJ5IHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgZW50cnkuICBSZXNldCBjdXJfdHhcXG4rXFx0ICogdW5jb25kaXRpb25hbGx5IGFzIGJvdGggc3RtbWFjX3ZsYW5faW5zZXJ0KCkgYW5kIHN0bW1hY19qdW1ib19mcm0oKVxcbitcXHQgKiBtYXkgaGF2ZSBhZHZhbmNlZCBpdCwgYW5kIHJlbGVhc2UgdGhlIFZMQU4gY29udGV4dCBkZXNjcmlwdG9yLlxcbitcXHQgKi9cXG4rXFx0d2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7XFxuK1xcdFxcdGRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfZW50cnkpO1xcbitcXHRcXHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXFx1MDAzZWRlc2NyaXB0b3JfbW9kZSk7XFxuK1xcdFxcdHN0bW1hY19mcmVlX3R4X2J1ZmZlcihwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7XFxuK1xcdFxcdGZpcnN0X2VudHJ5ID0gU1RNTUFDX05FWFRfRU5UUlkoZmlyc3RfZW50cnksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcXG4rXFx0fVxcbitcXG4rXFx0dHhfcS1cXHUwMDNlY3VyX3R4ID0gZmlyc3RfdHg7XFxuK1xcdGlmIChoYXNfdmxhbikge1xcbitcXHRcXHRkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X3R4KTtcXG4rXFx0XFx0c3RtbWFjX3JlbGVhc2VfdHhfZGVzYyhwcml2LCBkZXNjLCBwcml2LVxcdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xcbitcXHR9XFxuIG1heF9zZHVfZXJyOlxcbiBcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuIFxcdHByaXYtXFx1MDAzZXhzdGF0cy50eF9kcm9wcGVkKys7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM1OjQzLjQ2NTQwNjY1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTkyMjMwOTE5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFR4IERNQSBtYXBwaW5nIGVycm9yIHVud2luZGluZyBsb2dpYyBpbiBgc3RtbWFjX3htaXQoKWAgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgU29DL1BDSSBoYXJkd2FyZSBJUCBibG9ja3MgKFNUTU1BQy9EV01BQykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0YTZjOWFiNzRhMzc4MjlkNWQwZGJkOGEwYjg2MTlhMjdhMWJkOGQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDU6MzU6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggMjQ2NTZiMzUzNTBiMS4uMmUzNmMyN2UyY2ZiNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC00NzY5LDEyICs0NzY5LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbiBcdHUzMiBxdWV1ZSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0aW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbi1cdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgdHhfcGFja2V0cztcbitcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgZW50cnksIHR4X3BhY2tldHM7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3R4cV9zdGF0cyAqdHhxX3N0YXRzO1xuIFx0c3RydWN0IGRtYV9kZXNjICpkZXNjLCAqZmlyc3RfZGVzYztcbiBcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3E7XG4gXHRpbnQgaSwgY3N1bV9pbnNlcnRpb24gPSAwO1xuLVx0aW50IGVudHJ5LCBmaXJzdF90eDtcbitcdGludCBmaXJzdF90eCwgcmV0O1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiBcdHUzMiBzZHVfbGVuO1xuIFxuQEAgLTQ4MzIsOSArNDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGNzdW1faW5zZXJ0aW9uID0gc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMO1xuIFxuIFx0aWYgKHVubGlrZWx5KGlzX2p1bWJvKSkge1xuLVx0XHRlbnRyeSA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XG4tXHRcdGlmICh1bmxpa2VseShlbnRyeSBcdTAwM2MgMCkgXHUwMDI2XHUwMDI2IChlbnRyeSAhPSAtRUlOVkFMKSlcbitcdFx0cmV0ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcbitcdFx0aWYgKHVubGlrZWx5KHJldCBcdTAwM2MgMCkgXHUwMDI2XHUwMDI2IChyZXQgIT0gLUVJTlZBTCkpXG4gXHRcdFx0Z290byBkbWFfbWFwX2VycjtcbitcdFx0ZW50cnkgPSByZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7XG4gXG5AQCAtNDk4NCw2ICs0OTg1LDI2IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIGRtYV9tYXBfZXJyOlxuIFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJUeCBETUEgbWFwIGZhaWxlZFxcblwiKTtcbitcbitcdC8qIGVudHJ5IHBvaW50cyBvbmUgcGFzdCB0aGUgbGFzdCBkZXNjcmlwdG9yIHdyaXR0ZW4gZm9yIHRoaXMgZnJhbWU6XG4rXHQgKiBvbiBmYWlsdXJlIGl0IGlzIHRoZSBkZXNjcmlwdG9yIHdob3NlIERNQSBtYXBwaW5nIGZhaWxlZCwgc28gd2Fsa1xuK1x0ICogZnJvbSBmaXJzdF9lbnRyeSB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGVudHJ5LiAgUmVzZXQgY3VyX3R4XG4rXHQgKiB1bmNvbmRpdGlvbmFsbHkgYXMgYm90aCBzdG1tYWNfdmxhbl9pbnNlcnQoKSBhbmQgc3RtbWFjX2p1bWJvX2ZybSgpXG4rXHQgKiBtYXkgaGF2ZSBhZHZhbmNlZCBpdCwgYW5kIHJlbGVhc2UgdGhlIFZMQU4gY29udGV4dCBkZXNjcmlwdG9yLlxuK1x0ICovXG4rXHR3aGlsZSAoZmlyc3RfZW50cnkgIT0gZW50cnkpIHtcbitcdFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF9lbnRyeSk7XG4rXHRcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xuK1x0XHRzdG1tYWNfZnJlZV90eF9idWZmZXIocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZiwgcXVldWUsIGZpcnN0X2VudHJ5KTtcbitcdFx0Zmlyc3RfZW50cnkgPSBTVE1NQUNfTkVYVF9FTlRSWShmaXJzdF9lbnRyeSxcbitcdFx0XHRcdFx0XHRwcml2LVx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcbitcdH1cbitcbitcdHR4X3EtXHUwMDNlY3VyX3R4ID0gZmlyc3RfdHg7XG4rXHRpZiAoaGFzX3ZsYW4pIHtcbitcdFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF90eCk7XG4rXHRcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xuK1x0fVxuIG1heF9zZHVfZXJyOlxuIFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuIFx0cHJpdi1cdTAwM2V4c3RhdHMudHhfZHJvcHBlZCsrO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzU6NDMuNDY1NDA4MTQ5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTMzMjM0ODcwOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGdvYWwgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGFuZCBpZiBzbywgaG93IHRvIGFwcHJvYWNoIGl0LiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBwYXRjaCBtb2RpZmllcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2Agc3BlY2lmaWNhbGx5LCB0aGUgYHN0bW1hY194bWl0YCBmdW5jdGlvbi4gUmlnaHQsIHNvIHRoaXMgaXMgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1jaGFubmVsIEV0aGVybmV0IE1BQyBkcml2ZXIsIGFsc28ga25vd24gYXMgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgLyBTVE1NQUMuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBpcyB0aGlzIGhhcmR3YXJlLWRlcGVuZGVudCwgb3IgY2FuIEkgcmVhY2ggdGhpcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IElzIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGVkIGVub3VnaCB0aGF0IGl0IHdpbGwgYmUgZWFzaWx5IHJlYWNoYWJsZT8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gcmVsaWFibHkgdHJpZ2dlciB0aGlzIGNvZGUuIFRvIGFuc3dlciB0aGlzLCBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIEkgY2FuIHJ1biB0aGlzIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIHVzZSBlaXRoZXIgYGdyZXBwZXJgIG9yIGNoZWNrIHRoZSBLY29uZmlnLCBpZGVhbGx5IGxvb2tpbmcgYXQgZGVwZW5kZW5jaWVzLCB0byBzZWUgaG93IGVhc2lseSB0aGlzIGNhbiBiZSBjb25maWd1cmVkIGFuZCB3aGV0aGVyIGl0IGlzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIFRoYXQncyB0aGUgZmlyc3QgaHVyZGxlLCBkZXRlcm1pbmluZyB0aGUgdGFyZ2V0J3MgcmVhY2hhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjk3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzU6NTYuNzg4ODk4MjQ2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MzQyMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM1OjU2Ljg3NjI0NzcyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1OTk1ODMzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlOlxuXG4qKkFuYWx5emluZyB0aGUgU1RNTUFDIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgd2hlcmUgSSdsbCBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IHVudXN1YWwgZGVwZW5kZW5jaWVzIG9yIGxpbWl0YXRpb25zLCBhbmQgYXNzZXNzaW5nIHRoZSBsZXZlbCBvZiBncmFudWxhcml0eSBpbiB0aGVpciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBwYXJ0aWN1bGFybHkgY3VyaW91cyBhYm91dCBob3cgdGhleSBoYW5kbGUgdGhlIHZhcmlvdXMgU1RNaWNyb2VsZWN0cm9uaWNzIFNvQ3MgdGhhdCB1dGlsaXplIHRoaXMgTUFDLiBBcmUgdGhleSB1c2luZyBhIGZpbmUtZ3JhaW5lZCwgZGV2aWNlLXNwZWNpZmljIGFwcHJvYWNoLCBvciBhIG1vcmUgZ2VuZXJhbGl6ZWQsIGZlYXR1cmUtYmFzZWQgc3lzdGVtP1xuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBDT05GSUdfU1RNTUFDXypgIG9wdGlvbnMsIG9mIGNvdXJzZS4gSSdsbCBtZW50YWxseSBtYXAgdGhlbSB0byB0aGUgY29ycmVzcG9uZGluZyByZWdpc3RlcnMgYW5kIGZ1bmN0aW9uYWxpdGllcyBJJ20gZmFtaWxpYXIgd2l0aCDigJMgUEhZIGludGVyZmFjZXMsIGludGVycnVwdCBoYW5kbGluZywgRE1BIHNldHRpbmdzLCBhbmQgYW55IG9mZmxvYWQgY2FwYWJpbGl0aWVzLiBJJ2xsIHdhbnQgdG8gc2VlIGhvdyB0aGV5J3ZlIGhhbmRsZWQgdmFyaW91cyBmZWF0dXJlcyBzdWNoIGFzIEp1bWJvIGZyYW1lcywgY2hlY2tzdW0gb2ZmbG9hZGluZywgVkxBTiBzdXBwb3J0LCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMuXG5cbkknbSBob3BpbmcgdG8gc2VlIGEgd2VsbC1jb21tZW50ZWQgZmlsZSwgdGhhdCBmb2xsb3dzIHN0YW5kYXJkIGtlcm5lbCBjb252ZW50aW9ucyBhbmQgY2xlYXJseSBkZWxpbmVhdGVzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMnIGltcGxpY2F0aW9ucy4gQSB3ZWxsLW9yZ2FuaXplZCBgS2NvbmZpZ2AgaXMgYSBzaWduIG9mIGEgd2VsbC1kZXNpZ25lZCBkcml2ZXIsIHNvIEknbSBob3BpbmcgZm9yIGdvb2QgZGVzaWduIHByaW5jaXBsZXMgdG8gYmUgZXZpZGVudC4gVGhpcyBzaG91bGQgYmUgYSBmYWlybHkgcXVpY2sgcmV2aWV3IGlmIGl0J3Mgd2VsbC1vcmdhbml6ZWQ7IEknbSBob3BpbmcgaXQncyBzdHJhaWdodGZvcndhcmQgc28gSSBjYW4ga2VlcCBtYWtpbmcgcHJvZ3Jlc3Mgb24gbXkgcHJvamVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI0NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM1OjU5LjQ3NTgzMjgwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTVE1NQUNfRVRIXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcXG4gICA3OlxcdFxcdHNlbGVjdCBNSUlcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcXG4gIDE2OlxcdFxcdCAgU3lub3BzeXMgSVAgQ29yZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgU1RNTUFDX0VUSFxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbiAgMjE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgMjM6XFx0XFx0ZGVmYXVsdCBuXFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXFxuICAyNjpcXHRcXHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcXG4gIDI3OlxcdFxcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICAzMjpcXHRcXHRkZWZhdWx0IHlcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuICAzNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcXG4gIDM2OlxcdFxcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxcbiAgMzc6XFx0XFxuICAzODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0aWYgU1RNTUFDX1BMQVRGT1JNXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxcbiAgNDU6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cXFwiXFxuICA0NjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDQ3OlxcdFxcdHNlbGVjdCBNSUlcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgNDk6XFx0XFx0aGVscFxcbiAgNTA6XFx0XFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcbiAgNTE6XFx0XFxuICA1MjpcXHRjb25maWcgRFdNQUNfR0VORVJJQ1xcbiAgNTM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG4gIDU0OlxcdFxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuICA1NTpcXHRcXHRoZWxwXFxuICA1NjpcXHRcXHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbiAgNTc6XFx0XFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuICA1ODpcXHRcXHQgIGRhdGEgZm9yIHNldHVwLlxcbiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgRFdNQUNfQU5BUklPTlxcbiAgNjE6XFx0XFx0dHJpc3RhdGUgXFxcIkFkYXB0cnVtIEFuYXJpb24gR01BQyBzdXBwb3J0XFxcIlxcbiAgNjI6XFx0XFx0ZGVmYXVsdCBBUkNcXG4gIDYzOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQyB8fCBDT01QSUxFX1RFU1QpXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEFkYXB0cnVtIEFuYXJpb24gR01BQyBFdGhlcm5ldCBjb250cm9sbGVyLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIERXTUFDX0VJQzc3MDBcXG4gIDcwOlxcdFxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclxcXCJcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBBUkNIX0VTV0lOIHx8IENPTVBJTEVfVEVTVFxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgRXN3aW4gRUlDNzcwMCBFdGhlcm5ldCBjb250cm9sbGVyLFxcbiAgNzQ6XFx0XFx0ICB3aGljaCBpbnRlZ3JhdGVzIFN5bm9wc3lzIERlc2lnbldhcmUgUW9TIGZlYXR1cmVzLiBJdCBlbmFibGVzXFxuICA3NTpcXHRcXHQgIGhpZ2gtc3BlZWQgbmV0d29ya2luZyB3aXRoIERNQSBhY2NlbGVyYXRpb24gYW5kIGlzIG9wdGltaXplZFxcbiAgNzY6XFx0XFx0ICBmb3IgZW1iZWRkZWQgc3lzdGVtcy5cXG4gIDc3OlxcdFxcbiAgNzg6XFx0Y29uZmlnIERXTUFDX0lOR0VOSUNcXG4gIDc5OlxcdFxcdHRyaXN0YXRlIFxcXCJJbmdlbmljIE1BQyBzdXBwb3J0XFxcIlxcbiAgODA6XFx0XFx0ZGVmYXVsdCBNQUNIX0lOR0VOSUNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzU6NTkuNDc1OTE3MTU0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg0NjU5MzE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgc3RtbWFjIERyaXZlcioqXG5cbkFscmlnaHQsIHN0bW1hYy4uLiB0aGF0IHJpbmdzIGEgYmVsbC4gUmlnaHQsIGl0J3MgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUNzLCBhbmQgaXQncyBhbHNvIHVzZWQgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgb3duIE1BQyBpbXBsZW1lbnRhdGlvbnMuIEEgc29saWQsIGZhaXJseSB3ZWxsLWVzdGFibGlzaGVkIHBpZWNlIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBJIGJlbGlldmUuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCAqd2hlcmUqIGRvZXMgaXQgbGl2ZT8gSXMgdGhpcyBhIFBDSS1iYXNlZCBpbnRlcmZhY2UsIG9yIGlzIHRoaXMgYSBwbGF0Zm9ybSBkcml2ZXI/IExldCdzIHF1aWNrbHkgdmVyaWZ5IGJ5IGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYWJvdXQgdGhlIGRldmljZSBiaW5kaW5nIG1ldGhvZC4gVGhhdCdsbCB0ZWxsIG1lIGEgbG90IGFib3V0IGhvdyB0aGlzIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIGFuZCBob3cgaXQncyB0eXBpY2FsbHkgdXNlZC4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgc2F5cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc1MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MDIuMzIyNTE0ODU2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuICA4MjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgODM6XFx0XFx0aGVscFxcbiAgODQ6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEluZ2VuaWMgU29Dcy5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAgODc6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuICA4ODpcXHRcXHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAgODk6XFx0XFxuICA5MDpcXHRjb25maWcgRFdNQUNfSVBRODA2WFxcbiAgOTE6XFx0XFx0dHJpc3RhdGUgXFxcIlFDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcXFwiXFxuICA5MjpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAgOTM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gIDk0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA5NTpcXHRcXHRoZWxwXFxuICA5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSVBRODA2eCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuICA5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXFxuIDEwMDpcXHRcXHQgIGFjY2VsZXJhdGlvbiBmZWF0dXJlcyBhdmFpbGFibGUgb24gdGhpcyBTb0MuIE5ldHdvcmsgZGV2aWNlc1xcbiAxMDE6XFx0XFx0ICB3aWxsIGJlaGF2ZSBsaWtlIHN0YW5kYXJkIG5vbi1hY2NlbGVyYXRlZCBldGhlcm5ldCBpbnRlcmZhY2VzLlxcbiAxMDI6XFx0XFxuIDEwMzpcXHRcXHQgIFNlbGVjdCB0aGUgUUNPTV9TT0NJTkZPIGNvbmZpZyBmbGFnIHRvIGVuYWJsZSBzcGVjaWZpYyBkd21hY1xcbiAxMDQ6XFx0XFx0ICBmaXh1cCBiYXNlZCBvbiB0aGUgaXBxODA2eCBTb0MgcmV2aXNpb24uXFxuIDEwNTpcXHRcXG4gMTA2OlxcdGNvbmZpZyBEV01BQ19MUEMxOFhYXFxuIDEwNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIExQQzE4eHgvNDN4eCBEV01BQyBzdXBwb3J0XFxcIlxcbiAxMDg6XFx0XFx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcXG4gMTA5OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXFxuIDExMDpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAxMTE6XFx0XFx0aGVscFxcbiAxMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxcbiAxMTM6XFx0XFxuIDExNDpcXHRjb25maWcgRFdNQUNfTUVESUFURUtcXG4gMTE1OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDI3eHggR01BQyBzdXBwb3J0XFxcIlxcbiAxMTY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1QpXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIFN1cHBvcnQgZm9yIE1lZGlhVGVrIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cXG4gMTE5OlxcdFxcbiAxMjA6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE1UMjcxMiBTb0Mgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDEyMTpcXHRcXG4gMTIyOlxcdGNvbmZpZyBEV01BQ19NRVNPTlxcbiAxMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFxcXCJcXG4gMTI0OlxcdFxcdGRlZmF1bHQgQVJDSF9NRVNPTlxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLIFxcdTAwMjZcXHUwMDI2IChBUkNIX01FU09OIHx8IENPTVBJTEVfVEVTVClcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBBbWxvZ2ljIE1lc29uIFNvQ3MuXFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDEzMDpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTWVzb242LFxcbiAxMzE6XFx0XFx0ICBNZXNvbjgsIE1lc29uOGIgYW5kIEdYQkIgU29Dcy5cXG4gMTMyOlxcdFxcbiAxMzM6XFx0Y29uZmlnIERXTUFDX05VVk9UT05cXG4gMTM0OlxcdFxcdHRyaXN0YXRlIFxcXCJOdXZvdG9uIE1BMzUgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMTM1OlxcdFxcdGRlZmF1bHQgQVJDSF9NQTM1XFxuIDEzNjpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxcbiAxMzc6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTM4OlxcdFxcdGhlbHBcXG4gMTM5OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQy5cXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE51dm90b24gTUEzNSBzZXJpZXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAxNDI6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcXG4gMTQzOlxcdFxcdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cXG4gMTQ0OlxcdFxcbiAxNDU6XFx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuIDE0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRVRIUU9TIHN1cHBvcnRcXFwiXFxuIDE0NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIFF1YWxjb21tIEVUSFFPUyBjb3JlLlxcbiAxNTE6XFx0XFxuIDE1MjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDE1MzpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRjb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbiAxNTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovVjJIKFApIEdCRVRIIGFuZCBSWi9UMkgsIFJaL04ySCBHTUFDIHN1cHBvcnRcXFwiXFxuIDE1NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xcbiAxNTg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG4gMTU5OlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE2MDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM2OjAyLjMyMjY0NDE1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwOTY5MTA5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBLY29uZmlnIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBmb2N1c2luZyBvbiBzb21lIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBLY29uZmlnLCBidXQgbm93IEkgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBhIGJpdC4gVGltZSB0byBtb3ZlIGJleW9uZCB0aGUgaW1tZWRpYXRlIHN0dWZmIGFuZCBnZXQgYSBtb3JlIGNvbXBsZXRlIHZpZXcgb2YgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZC4gTGV0J3Mgc2VlIGhvdyB0aGUgU1RNTUFDX1BDSSBjb25maWd1cmF0aW9uIG9wdGlvbiwgYW5kIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGZpdCBpbnRvIHRoZSBvdmVyYWxsIHBpY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIHJlbGF0aW9uc2hpcHMsIGFuZCBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjb25maWd1cmF0aW9ucyB3aXRoaW4gdGhlIGJyb2FkZXIgS2NvbmZpZyBmcmFtZXdvcmsuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgYSByb2J1c3QgdW5kZXJzdGFuZGluZywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjb21wbGV4IGhhcmR3YXJlIGFic3RyYWN0aW9ucy4gS25vd2luZyB0aGUgY29udGV4dCBvZiByZWxhdGVkIEtjb25maWcgb3B0aW9ucyBpcyB0aGUgb25seSB3YXkgdG8gZWZmZWN0aXZlbHkgZGlhZ25vc2UgaXNzdWVzLCBldmFsdWF0ZSBkZXNpZ24gY2hvaWNlcywgYW5kIG1ha2UgaW5mb3JtZWQgbW9kaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM1NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MDQuNDE5NTU5MDk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzUwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MTpcXHRcXHQgIFN1cHBvcnQgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgSW50ZXJmYWNlIChHQkVUSCkvIEV0aGVybmV0IE1BQyAoR01BQylcXG4gMTYyOlxcdFxcdCAgb24gUmVuZXNhcyBTb0NzLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXFxuIDE2NTpcXHRcXHQgIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFJaL1YySChQKSBmYW1pbHksIFJaL1QySCBhbmRcXG4gMTY2OlxcdFxcdCAgUlovTjJIIFNvQ3MuXFxuIDE2NzpcXHRcXG4gMTY4OlxcdGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbiAxNjk6XFx0XFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE3MDpcXHRcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxcbiAxNzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTczOlxcdFxcdGhlbHBcXG4gMTc0OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDE3NzpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIERXTUFDX1JaTjFcXG4gMTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE4MTpcXHRcXHRkZWZhdWx0IEFSQ0hfUlpOMVxcbiAxODI6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcXG4gMTgzOlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE4NDpcXHRcXHRoZWxwXFxuIDE4NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUmVuZXNhcyBSWi9OMSBTb0MgZmFtaWx5LlxcbiAxODY6XFx0XFxuIDE4NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbiAxODg6XFx0XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXFxuIDE4OTpcXHRcXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxcbiAxOTA6XFx0XFxuIDE5MTpcXHRjb25maWcgRFdNQUNfUzMyXFxuIDE5MjpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFMzMkcvUzMyUiBHTUFDIHN1cHBvcnRcXFwiXFxuIDE5MzpcXHRcXHRkZWZhdWx0IEFSQ0hfUzMyXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXFxuIDE5NTpcXHRcXHRoZWxwXFxuIDE5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIFMzMkNDIFNPQ3MuXFxuIDE5NzpcXHRcXG4gMTk4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDE5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBTMzJDQyBzZXJpZXNcXG4gMjAwOlxcdFxcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIsIGllLiBTMzJHMnh4LCBTMzJHM3h4IGFuZFxcbiAyMDE6XFx0XFx0ICBTMzJSNDUuXFxuIDIwMjpcXHRcXG4gMjAzOlxcdGNvbmZpZyBEV01BQ19TT0NGUEdBXFxuIDIwNDpcXHRcXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbiAyMDU6XFx0XFx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcXG4gMjA2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXFxuIDIwNzpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyMDg6XFx0XFx0c2VsZWN0IE1ESU9fUkVHTUFQXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG4gMjEwOlxcdFxcdHNlbGVjdCBQQ1NfTFlOWFxcbiAyMTE6XFx0XFx0aGVscFxcbiAyMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXFxuIDIxMzpcXHRcXG4gMjE0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDIxNTpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXFxuIDIxNjpcXHRcXHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxcbiAyMTc6XFx0XFxuIDIxODpcXHRjb25maWcgRFdNQUNfU09QSEdPXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiU29waGdvIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDIyMDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NPUEhHTyB8fCBDT01QSUxFX1RFU1QpXFxuIDIyMTpcXHRcXHRkZWZhdWx0IG0gaWYgQVJDSF9TT1BIR09cXG4gMjIyOlxcdFxcdGhlbHBcXG4gMjIzOlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gU29waGdvIFJJU0MtViBTb0NzXFxuIDIyNDpcXHRcXG4gMjI1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTb3BoZ28gU29DIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAyMjY6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG4gMjI3OlxcdFxcdCAgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gdmFyaW91cyBTb3BoZ28gU29Dcy5cXG4gMjI4OlxcdFxcbiAyMjk6XFx0Y29uZmlnIERXTUFDX1NQQUNFTUlUXFxuIDIzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU3BhY2VtaXQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMjMxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxcbiAyMzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjMzOlxcdFxcdGRlZmF1bHQgbSBpZiBBUkNIX1NQQUNFTUlUXFxuIDIzNDpcXHRcXHRoZWxwXFxuIDIzNTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNwYWNlbWl0IFJJU0MtViBTb0NzXFxuIDIzNjpcXHRcXG4gMjM3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTcGFjZW1pdCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjM4OlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDIzOTpcXHRcXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyNDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM2OjA0LjQxOTY5MDkzOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MjQzNDQ2NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBLY29uZmlnIGZpbGUsIHBpY2tpbmcgdXAgZnJvbSBsaW5lIDI0MSBvbndhcmRzLiBJIG5lZWQgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHdoYXQncyBkZWZpbmVkIGFuZCBob3cgdGhpbmdzIGFyZSBiZWluZyBjb25maWd1cmVkIGhlcmUuIEknbSBsb29raW5nIGZvciB0aGUga2V5IGRlcGVuZGVuY2llcywgdGhlIGJvb2xlYW4gZXhwcmVzc2lvbnMsIGFueSBkZWZhdWx0cyBzZXQg4oCTIGV2ZXJ5dGhpbmcgdGhhdCBpbmZsdWVuY2VzIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uLiBXaGVyZSBhcmUgdGhlIGltcG9ydGFudCBmZWF0dXJlcyBkZWZpbmVkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgY29uZmxpY3RzIGJhc2VkIG9uIG15IHByZXZpb3VzIGV4cGVyaWVuY2U/IEknbGwgbmVlZCB0byBkaXNzZWN0IHRoZSBsb2dpYywgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBnb3RjaGFzLCBhbmQgbWVudGFsbHkgYnVpbGQgYSBtZW50YWwgbW9kZWwgb2YgaG93IHRoaXMgbW9kdWxlIGJlaGF2ZXMuIExldCdzIHNlZSB3aGF0IGdlbXMgd2UgY2FuIGZpbmQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg3OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MTMuNjYzMTM5MzYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjQxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjQxOlxcdGNvbmZpZyBEV01BQ19TVEFSRklWRVxcbiAyNDI6XFx0XFx0dHJpc3RhdGUgXFxcIlN0YXJGaXZlIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDI0MzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVClcXG4gMjQ0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDI0NTpcXHRcXHRkZWZhdWx0IG0gaWYgQVJDSF9TVEFSRklWRVxcbiAyNDY6XFx0XFx0aGVscFxcbiAyNDc6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTdGFyRml2ZSBSSVNDLVYgU29Dc1xcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgU3RhckZpdmUgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDI1MDpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxcbiAyNTE6XFx0XFx0ICBTdGFyRml2ZSBKSDcxMDAgYW5kIEpINzExMCBldGhlcm5ldCBjb250cm9sbGVycy5cXG4gMjUyOlxcdFxcbiAyNTM6XFx0Y29uZmlnIERXTUFDX1NUSVxcbiAyNTQ6XFx0XFx0dHJpc3RhdGUgXFxcIlNUaSBHTUFDIHN1cHBvcnRcXFwiXFxuIDI1NTpcXHRcXHRkZWZhdWx0IEFSQ0hfU1RJXFxuIDI1NjpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NUSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI1NzpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNTg6XFx0XFx0aGVscFxcbiAyNTk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUaSBTT0NzLlxcbiAyNjA6XFx0XFxuIDI2MTpcXHRcXHQgIFRoaXMgc2VsZWN0cyBTVGkgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAyNjI6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xcbiAyNjM6XFx0XFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjY0OlxcdFxcbiAyNjU6XFx0Y29uZmlnIERXTUFDX1NUTTMyXFxuIDI2NjpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNMzIgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMjY3OlxcdFxcdGRlZmF1bHQgQVJDSF9TVE0zMlxcbiAyNjg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RNMzIgfHwgQ09NUElMRV9URVNUKVxcbiAyNjk6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjcwOlxcdFxcdGhlbHBcXG4gMjcxOlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBTVE0zMiBTT0NzLlxcbiAyNzI6XFx0XFxuIDI3MzpcXHRcXHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDI3NDpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVE0zMiBzZXJpZXNcXG4gMjc1OlxcdFxcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDI3NjpcXHRcXG4gMjc3OlxcdGNvbmZpZyBEV01BQ19TVU5YSVxcbiAyNzg6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBHTUFDIHN1cHBvcnRcXFwiXFxuIDI3OTpcXHRcXHRkZWZhdWx0IEFSQ0hfU1VOWElcXG4gMjgwOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxcbiAyODE6XFx0XFx0aGVscFxcbiAyODI6XFx0XFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgQTIwL0EzMSBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyODM6XFx0XFxuIDI4NDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDI4NTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXFxuIDI4NjpcXHRcXHQgIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjg3OlxcdFxcbiAyODg6XFx0Y29uZmlnIERXTUFDX1NVTjhJXFxuIDI4OTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjkwOlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAyOTE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI5MjpcXHRcXHRzZWxlY3QgTURJT19CVVNfTVVYXFxuIDI5MzpcXHRcXHRoZWxwXFxuIDI5NDpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBIMyBBODNUIEE2NCBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyOTU6XFx0XFxuIDI5NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDI5NzpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxcbiAyOTg6XFx0XFx0ICBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDI5OTpcXHRcXG4gMzAwOlxcdGNvbmZpZyBEV01BQ19TVU41NUlcXG4gMzAxOlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3VwcG9ydFxcXCJcXG4gMzAyOlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAzMDM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDMwNDpcXHRcXHRzZWxlY3QgTURJT19CVVNfTVVYXFxuIDMwNTpcXHRcXHRoZWxwXFxuIDMwNjpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBNTIzL1Q1MjcgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVycy5cXG4gMzA3OlxcdFxcbiAzMDg6XFx0XFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbiAzMDk6XFx0XFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgQTUyMy9UNTI3XFxuIDMxMDpcXHRcXHQgIEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMzExOlxcdFxcbiAzMTI6XFx0Y29uZmlnIERXTUFDX1RIRUFEXFxuIDMxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVC1IRUFEIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDMxNDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVClcXG4gMzE1OlxcdFxcdGhlbHBcXG4gMzE2OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gVC1IRUFEIFJJU0MtViBTb0NzXFxuIDMxNzpcXHRcXG4gMzE4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbiAzMTk6XFx0XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIFQtSEVBRCBUSDE1MjBcXG4gMzIwOlxcdFxcdCAgZXRoZXJuZXQgY29udHJvbGxlci5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MTMuNjYzMjM3ODUyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3ODA4MDY0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIEtjb25maWcgZmlsZSwgcGlja2luZyB1cCB3aGVyZSB3ZSBsZWZ0IG9mZi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZGVmaW5lZCBpbiB0aGUgcmVtYWluaW5nIGxpbmVzLCBmcm9tIGxpbmUgMzIxIG9ud2FyZC4gVGhpcyBzZWN0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIHVsdGltYXRlbHksIGhvdyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIG9yIGZlYXR1cmUgaXMgZ292ZXJuZWQuIEknbSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWNzLCB0aGUgdW5kZXJseWluZyBsb2dpYywgYW5kIHRoZSByZWxhdGlvbnNoaXBzIHRoYXQgZXhpc3Qgd2l0aGluIHRoaXMgc3RydWN0dXJlLiBMZXQncyBzZWUgd2hhdCBnZW1zIHdlIGNhbiB1bmVhcnRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM0MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MTUuNDQ0MDQ3Mzg1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMyMTpcXHRcXG4gMzIyOlxcdGNvbmZpZyBEV01BQ19JTVg4XFxuIDMyMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIElNWDggRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzI0OlxcdFxcdGRlZmF1bHQgQVJDSF9NWENcXG4gMzI1OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVClcXG4gMzI2OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDMyNzpcXHRcXHRoZWxwXFxuIDMyODpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIGkuTVg4IFNPQ3MuXFxuIDMyOTpcXHRcXG4gMzMwOlxcdFxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDMzMTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIGkuTVg4IHNlcmllcyBsaWtlXFxuIDMzMjpcXHRcXHQgIGlNWDhNUC9pTVg4RFhMIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMzMzOlxcdFxcbiAzMzQ6XFx0Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcXG4gMzM1OlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbiAzMzY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLXFxuIDMzNzpcXHRcXHRoZWxwXFxuIDMzODpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIEludGVsIFNvQ3NcXG4gMzM5OlxcdFxcbiAzNDA6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcXG4gMzQxOlxcdFxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcXG4gMzQyOlxcdFxcdCAgU29DLlxcbiAzNDM6XFx0XFxuIDM0NDpcXHRjb25maWcgRFdNQUNfTE9PTkdTT04xXFxuIDM0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24xIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzQ2OlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXFxuIDM0NzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChNQUNIX0xPT05HU09OMzIgfHwgQ09NUElMRV9URVNUKVxcbiAzNDg6XFx0XFx0aGVscFxcbiAzNDk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uMSBTb0MuXFxuIDM1MDpcXHRcXG4gMzUxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIExvb25nc29uMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDM1MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIExvb25nc29uMS1iYXNlZCBib2FyZHNcXG4gMzUzOlxcdFxcdCAgbGlrZSBMb29uZ3NvbiBMUzFCL0xTMUMuXFxuIDM1NDpcXHRcXG4gMzU1OlxcdGNvbmZpZyBEV01BQ19URUdSQVxcbiAzNTY6XFx0XFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcXFwiXFxuIDM1NzpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXFxuIDM1ODpcXHRcXHRoZWxwXFxuIDM1OTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTXVsdGktR2lnYUJpdCBFdGhlcm5ldCAoTUdCRSkgQ29udHJvbGxlciB0aGF0IGlzXFxuIDM2MDpcXHRcXHQgIGZvdW5kIG9uIHRoZSBOVklESUEgVGVncmEgU29DIGRldmljZXMuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBnbHVlXFxuIDM2MTpcXHRcXHQgIGxheWVyIG9uIHRvcCBvZiB0aGUgc3RtbWFjIGRyaXZlciByZXF1aXJlZCBmb3IgdGhlc2UgTlZJRElBIFRlZ3JhIFNvQ1xcbiAzNjI6XFx0XFx0ICBkZXZpY2VzLlxcbiAzNjM6XFx0XFxuIDM2NDpcXHRjb25maWcgRFdNQUNfVklTQ09OVElcXG4gMzY1OlxcdFxcdHRyaXN0YXRlIFxcXCJUb3NoaWJhIFZpc2NvbnRpIERXTUFDIHN1cHBvcnRcXFwiXFxuIDM2NjpcXHRcXHRkZWZhdWx0IEFSQ0hfVklTQ09OVElcXG4gMzY3OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXFxuIDM2ODpcXHRcXHRoZWxwXFxuIDM2OTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gVmlzY29udGkgU29Dcy5cXG4gMzcwOlxcdFxcbiAzNzE6XFx0ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG4gMzcyOlxcdFxcbiAzNzM6XFx0Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4gMzc0OlxcdFxcdHRyaXN0YXRlXFxuIDM3NTpcXHRcXHRoZWxwXFxuIDM3NjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDM3NzpcXHRcXG4gMzc4OlxcdGNvbmZpZyBEV01BQ19JTlRFTFxcbiAzNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbiAzOTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM2OjE1LjQ0NDE5NTU0NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDgyNjE3NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBRRU1VIGFuZCBEV01BQy9TVE1NQUMgRW11bGF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZW11bGF0ZSBEV01BQyAoRGVzaWduV2FyZSBNQUMpIG9yIFNUTU1BQyAoU1RNaWNyb2VsZWN0cm9uaWNzIE1BQykgZXRoZXJuZXQgY29udHJvbGxlcnMgd2l0aGluIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gbGlzdCBvdXQgc29tZSBEV01BQyBpbXBsZW1lbnRhdGlvbnMgSSdtIGF3YXJlIG9mOiBgRFdNQUNfSU5URUxgLCBgRFdNQUNfTE9PTkdTT05gLCBldGMuIEp1c3QgY2F0YWxvZ2luZyBrbm93biBpbXBsZW1lbnRhdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUuXG5cbk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpcyBjZW50ZXJlZCBhcm91bmQgUUVNVSB2aXJ0dWFsaXphdGlvbi4gRG9lcyB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZXZlbiBHQ0UsIHByb3ZpZGUgdmlydHVhbGl6ZWQgZW11bGF0aW9uIGZvciBEV01BQyBvciBTVE1NQUM/IEkgbmVlZCB0byBrbm93IGlmIHRoZSBkZXZpY2VzIGV4aXN0IGluIHRoZSB2aXJ0dWFsIHdvcmxkLiBPa2F5LCB3YWl0LCB3aGF0ICpkb2VzKiBRRU1VIGVtdWxhdGU/IEkgcXVpY2tseSByZWNhbGwgY29tbW9uIHZpcnR1YWxpemVkIG5ldHdvcmsgZGV2aWNlczogZTEwMDAsIGlnYiwgdmlydGlvLW5ldCwgdGhlIHVzdWFsIHN1c3BlY3RzLiBCdXQsIGRvIGFueSBvZiB0aGVzZSBjb3ZlciB3aGF0IEkgbmVlZD8gTm8sIHRoYXQncyBub3Qgd2hhdCBJJ20gbG9va2luZyBmb3IuXG5cbkEgc3BlY2lmaWMgcXVlc3Rpb24gaXMgc3VyZmFjaW5nOiBkb2VzIFFFTVUgZW11bGF0ZSBTVE1NQUMgb3IgRFdNQUM/IEkgbmVlZCB0byBjaGVjay4gRGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgcmVtZW1iZXIgdGhhdCBRRU1VIG1pZ2h0IGVtdWxhdGUgZHdtYWMgb24gc29tZSBBUk0gU29DIG1hY2hpbmVzLCBidXQgd2hhdCBhYm91dCBhbWQ2NCAoeDg2KT8gVGhhdCdzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLiBJdCBzZWVtcyBsaWtlIGl0J3MgdW5saWtlbHkgZm9yIHg4Ni5cblxuTm93LCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgcnVsZXMuIFRoaXMgdGFrZXMgbWUgdG8gU2VjdGlvbiAyLCB3aGljaCBvdXRsaW5lcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEknbSBmb2N1c2luZyBvbiB0aGF0IGxpc3Q6IFwiVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuLi5cIiBkZXZpY2VzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IHN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlLiBUaGlzIGlzIGNyaXRpY2FsLiBEb2VzIFNUTU1BQyBmYWxsIGludG8gdGhpcyBjYXRlZ29yeT9cblxuSSBuZWVkIHRvIGNhcmVmdWxseSBldmFsdWF0ZTogaXMgU1RNTUFDICpzdHJ1Y3R1cmFsbHkqIHVucmVhY2hhYmxlPyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgaXQgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHZpcnR1YWwgYnVzZXMgKGxpa2UgdmlydGlvKSBvciBpZiBpdCByZWxpZXMgKm9ubHkqIG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBnZXQgdG8gaXQgdGhyb3VnaCBhIGR1bW15IG9yIFVTQiBwYXRoLiBTbywgYXJlIHRoZXJlIGFueSBVU0Igb3IgdmlydHVhbCBkZXZpY2VzIHRoYXQgdXNlIFNUTU1BQz8gSSBtdXN0IGNoZWNrLlxuXG5UaGUgZmluYWwgc3RlcCBpbiB0aGlzIHByb2Nlc3MgaXMgdG8gZG8gYSBkZXRhaWxlZCBzZWFyY2ggdXNpbmcgYGdyZXBgIHdpdGhpbiB0aGUga2VybmVsIHRyZWUgdG8gc2VlIHdoZXJlIFNUTU1BQyBpcyB1c2VkIGFuZCBob3cuIEkgY2FuIGZpbmQgYW4gYW5zd2VyIHRoaXMgd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTczMCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM2OjE5LjkyNjgxNzA0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NzAwODU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTA4MzIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICs9IHN0bW1hYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzpzdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQtXFx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUtXFx0ICAgICAgZHdtYWMxMDBfY29yZS5vIGR3bWFjMTAwX2RtYS5vIGVuaF9kZXNjLm8gbm9ybV9kZXNjLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NjpcXHQgICAgICBtbWNfY29yZS5vIHN0bW1hY19od3RzdGFtcC5vIHN0bW1hY19wdHAubyBkd21hYzRfZGVzY3Mub1xcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS03LVxcdCAgICAgIGR3bWFjNF9kbWEubyBkd21hYzRfbGliLm8gZHdtYWM0X2NvcmUubyBkd21hYzUubyBod2lmLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjg6XFx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjk6XFx0ICAgICAgc3RtbWFjX3hkcC5vIHN0bW1hY19lc3QubyBzdG1tYWNfZnBlLm8gc3RtbWFjX3ZsYW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTA6XFx0ICAgICAgc3RtbWFjX3Bjcy5vICQoc3RtbWFjLXkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTI6c3RtbWFjLSQoQ09ORklHX1NUTU1BQ19TRUxGVEVTVFMpICs9IHN0bW1hY19zZWxmdGVzdHMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDU9b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVxcdCs9IGR3bWFjLXZpc2NvbnRpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0NjpzdG1tYWMtcGxhdGZvcm0tb2Jqczo9IHN0bW1hY19wbGF0Zm9ybS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDctZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXFx0Kz0gc3RtbWFjX2xpYnBjaS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTAtb2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXFx0Kz0gc3RtbWFjLXBjaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVxcdCs9IGR3bWFjLW1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTQ6c3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjE3OnN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE4LVxcdFxcdCAgICAgaW50IGNzdW0pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMjAtXFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MjE6XFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gdHhfcS1cXHUwMDNlcHJpdl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0yMi1cXHR1bnNpZ25lZCBpbnQgZW50cnkgPSB0eF9xLVxcdTAwM2VjdXJfdHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNDUtXFx0LyogZG8gbm90IGNsb3NlIHRoZSBkZXNjcmlwdG9yIGFuZCBkbyBub3Qgc2V0IG93biBiaXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6NDY6XFx0c3RtbWFjX3ByZXBhcmVfdHhfZGVzYyhwcml2LCBkZXNjLCAxLCBidWZfbGVuLCBjc3VtLCBTVE1NQUNfQ0hBSU5fTU9ERSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNDctXFx0XFx0XFx0MCwgZmFsc2UsIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02Mi1cXHRcXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBibWF4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo2MzpcXHRcXHRcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGJtYXgsIGNzdW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTY0LVxcdFxcdFxcdFxcdFxcdFNUTU1BQ19DSEFJTl9NT0RFLCAxLCBmYWxzZSwgc2tiLVxcdTAwM2VsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTc2LVxcdFxcdFxcdC8qIGxhc3QgZGVzY3JpcHRvciBjYW4gYmUgc2V0IG5vdyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo3NzpcXHRcXHRcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGxlbiwgY3N1bSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNzgtXFx0XFx0XFx0XFx0XFx0U1RNTUFDX0NIQUlOX01PREUsIDEsIHRydWUsIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYz05OT1zdGF0aWMgdm9pZCBpbml0X2RtYV9jaGFpbih2b2lkICpkZXMsIGRtYV9hZGRyX3QgcGh5X2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzoxMjk6c3RhdGljIHZvaWQgcmVmaWxsX2Rlc2MzKHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EsIHN0cnVjdCBkbWFfZGVzYyAqcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTMwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTMxOlxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IHJ4X3EtXFx1MDAzZXByaXZfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTQ0OnN0YXRpYyB2b2lkIGNsZWFuX2Rlc2MzKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBkbWFfZGVzYyAqcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTQ1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTQ2OlxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IHR4X3EtXFx1MDAzZXByaXZfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTQ3LVxcdHVuc2lnbmVkIGludCBlbnRyeSA9IHR4X3EtXFx1MDAzZWRpcnR5X3R4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTYxOmNvbnN0IHN0cnVjdCBzdG1tYWNfbW9kZV9vcHMgY2hhaW5fbW9kZV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE2Mi1cXHQuaW5pdCA9IGluaXRfZG1hX2NoYWluLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NzE6c3RydWN0IHN0bW1hY19xX3R4X3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC03Mi1cXHR1NjRfc3RhdHNfdCB0eF9ieXRlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjc4OnN0cnVjdCBzdG1tYWNfbmFwaV90eF9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNzktXFx0dTY0X3N0YXRzX3QgdHhfcGFja2V0cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjg2OnN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC04Ny1cXHQvKiBVcGRhdGVzIHByb3RlY3RlZCBieSB0eCBxdWV1ZSBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTg4LVxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBxX3N5bmNwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjg5OlxcdHN0cnVjdCBzdG1tYWNfcV90eF9zdGF0cyBxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtOTItXFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIG5hcGlfc3luY3A7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6OTM6XFx0c3RydWN0IHN0bW1hY19uYXBpX3R4X3N0YXRzIG5hcGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtOTQtfSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjk2OnN0cnVjdCBzdG1tYWNfbmFwaV9yeF9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtOTctXFx0dTY0X3N0YXRzX3QgcnhfYnl0ZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MTAzOnN0cnVjdCBzdG1tYWNfcnhxX3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMDQtXFx0LyogVXBkYXRlcyBwcm90ZWN0ZWQgYnkgTkFQSSBwb2xsIGxvZ2ljLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwNS1cXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgbmFwaV9zeW5jcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoxMDY6XFx0c3RydWN0IHN0bW1hY19uYXBpX3J4X3N0YXRzIG5hcGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMTA3LX0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwOS0vKiBVcGRhdGVzIG9uIGVhY2ggQ1BVIHByb3RlY3RlZCBieSBub3QgYWxsb3dpbmcgbmVzdGVkIGlycXMuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MTEwOnN0cnVjdCBzdG1tYWNfcGNwdV9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMTExLVxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTExNi0vKiBFeHRyYSBzdGF0aXN0aWMgYW5kIGRlYnVnIGluZm9ybWF0aW9uIGV4cG9zZWQgYnkgZXRodG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjExNzpzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMTgtXFx0LyogVHJhbnNtaXQgZXJyb3JzICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yMzctXFx0LyogcGVyIHF1ZXVlIHN0YXRpc3RpY3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyMzg6XFx0c3RydWN0IHN0bW1hY190eHFfc3RhdHMgdHhxX3N0YXRzW01UTF9NQVhfVFhfUVVFVUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyMzk6XFx0c3RydWN0IHN0bW1hY19yeHFfc3RhdHMgcnhxX3N0YXRzW01UTF9NQVhfUlhfUVVFVUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyNDA6XFx0c3RydWN0IHN0bW1hY19wY3B1X3N0YXRzIF9fcGVyY3B1ICpwY3B1X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI0MS1cXHR1bnNpZ25lZCBsb25nIHJ4X2Ryb3BwZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNDctLyogU2FmZXR5IEZlYXR1cmUgc3RhdGlzdGljcyBleHBvc2VkIGJ5IGV0aHRvb2wgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyNDg6c3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI0OS1cXHR1bnNpZ25lZCBsb25nIG1hY19lcnJvcnNbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjU2LSNkZWZpbmUgU1RNTUFDX1NBRkVUWV9GRUFUX1NJWkVcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjU3OlxcdChzaXplb2Yoc3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMpIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQxNj1zdHJ1Y3QgZG1hX2ZlYXR1cmVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1NjU6dm9pZCBzdG1tYWNfYXhpX2JsZW5fdG9fbWFzayh1MzIgKnJlZ3ZhbCwgY29uc3QgdTMyICpibGVuLCBzaXplX3QgbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD02MTM9c3RydWN0IG1hY19kZXZpY2VfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE0OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzICptYWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE1OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgKmRlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE2OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyAqZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYxNzpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX21vZGVfb3BzICptb2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYxODpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3dGltZXN0YW1wICpwdHA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE5OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzICp0YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2MjA6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19tbWNfb3BzICptbWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjIxOlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfZXN0X29wcyAqZXN0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYyMjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3ZsYW5fb3BzICp2bGFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTYyMy1cXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NDU6c3RydWN0IHN0bW1hY19yeF9yb3V0aW5nIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NDYtXFx0dTMyIHJlZ19tYXNrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MDppbnQgZHdtYWMxMDBfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTE6aW50IGR3bWFjMTAwMF9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MjppbnQgZHdtYWM0X3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjUzOmludCBkd3hnbWFjMl9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1NDppbnQgZHd4bGdtYWMyX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1Njp2b2lkIHN0bW1hY19zZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIGNvbnN0IHU4IGFkZHJbNl0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjU3LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjU4OnZvaWQgc3RtbWFjX2dldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgdW5zaWduZWQgY2hhciAqYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NTktXFx0XFx0XFx0IHVuc2lnbmVkIGludCBoaWdoLCB1bnNpZ25lZCBpbnQgbG93KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjA6dm9pZCBzdG1tYWNfc2V0X21hYyh2b2lkIF9faW9tZW0gKmlvYWRkciwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjI6dm9pZCBzdG1tYWNfZHdtYWM0X3NldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgY29uc3QgdTggYWRkcls2XSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjMtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGhpZ2gsIHVuc2lnbmVkIGludCBsb3cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2NDp2b2lkIHN0bW1hY19kd21hYzRfZ2V0X21hY19hZGRyKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1bnNpZ25lZCBjaGFyICphZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2NS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjY2OnZvaWQgc3RtbWFjX2R3bWFjNF9zZXRfbWFjKHZvaWQgX19pb21lbSAqaW9hZGRyLCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjY3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTE0LSNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTU6I2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYz05Mz1zdGF0aWMgaW50IGFuYXJpb25fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05Ny1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzo5ODpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTAwOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTAxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMDQ6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMDUtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMTY6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTExNy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFuYXJpb25fZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyOC1cXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiYW5hcmlvbi1kd21hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyOTpcXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzAtXFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gYW5hcmlvbl9kd21hY19tYXRjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNDojaW5jbHVkZSBcXFwic3RtbWFjX3BsYXRmb3JtLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNS0jaW5jbHVkZSBcXFwiZHdtYWM0LmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM2PXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtNDMtXFx0XFx0cGxhdF9kYXQtXFx1MDAzZWF4aSA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6NDQ6XFx0XFx0XFx0XFx0XFx0ICAgICBzaXplb2Yoc3RydWN0IHN0bW1hY19heGkpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtNDUtXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9OTY9c3RhdGljIGludCBkd2NfcW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy05Ny1cXHRcXHRcXHQgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjk4OlxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3JlcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjEwMDpcXHRwbGF0X2RhdC1cXHUwMDNlcGNsayA9IHN0bW1hY19wbHRmcl9maW5kX2NsayhwbGF0X2RhdCwgXFxcInBoeV9yZWZfY2xrXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTExNT1zdGF0aWMgdm9pZCB0ZWdyYV9lcW9zX2ZpeF9zcGVlZCh2b2lkICpic3BfcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTE5LVxcdGJvb2wgbmVlZHNfY2FsaWJyYXRpb24gPSBmYWxzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjEyMDpcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xMjEtXFx0dTMyIHZhbHVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xNDEtXFx0XFx0LyogQ2FsaWJyYXRpb24gc2hvdWxkIGJlIGRvbmUgd2l0aCB0aGUgTURJTyBidXMgaWRsZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MTQyOlxcdFxcdHN0bW1hY19tZGlvX2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xNDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTE3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjE3ODpcXHRcXHRzdG1tYWNfbWRpb191bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xNzktXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MTg2PXN0YXRpYyBpbnQgdGVncmFfZXFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTg3LVxcdFxcdFxcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MTg4OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjA0OlxcdHBsYXRfZGF0LVxcdTAwM2VjbGtfdHhfaSA9IHN0bW1hY19wbHRmcl9maW5kX2NsayhwbGF0X2RhdCwgXFxcInR4XFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yMDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTIzNy1cXHRwbGF0X2RhdC1cXHUwMDNlZml4X21hY19zcGVlZCA9IHRlZ3JhX2Vxb3NfZml4X3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjM4OlxcdHBsYXRfZGF0LVxcdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBzdG1tYWNfc2V0X2Nsa190eF9yYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjM5LVxcdHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdiA9IGVxb3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI1Mj1zdGF0aWMgdm9pZCB0ZWdyYV9lcW9zX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI1NDpcXHRzdHJ1Y3QgdGVncmFfZXFvcyAqZXFvcyA9IGdldF9zdG1tYWNfYnNwX3ByaXYoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI2MD1zdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjYyLVxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI2MzpcXHRcXHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY0LVxcdHZvaWQgKCpyZW1vdmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjY1OlxcdGNvbnN0IGNoYXIgKnN0bW1hY19jbGtfbmFtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2Ni19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0yNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgZHdjX3Fvc19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY5LVxcdC5wcm9iZSA9IGR3Y19xb3NfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNzA6XFx0LnN0bW1hY19jbGtfbmFtZSA9IFxcXCJhcGJfcGNsa1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIHRlZ3JhX2Vxb3NfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjc1LVxcdC5yZW1vdmUgPSB0ZWdyYV9lcW9zX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI3NjpcXHQuc3RtbWFjX2Nsa19uYW1lID0gXFxcInNsYXZlX2J1c1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9Mjc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIGZzZF9lcW9zX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyODA6XFx0LnN0bW1hY19jbGtfbmFtZSA9IFxcXCJzbGF2ZV9idXNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjgxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg2LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyODc6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4OC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyOTI6XFx0bWVtc2V0KFxcdTAwMjZzdG1tYWNfcmVzLCAwLCBzaXplb2Yoc3RydWN0IHN0bW1hY19yZXNvdXJjZXMpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5NC1cXHQvKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI5NTpcXHQgKiBTaW5jZSBzdG1tYWNfcGxhdGZvcm0gc3VwcG9ydHMgbmFtZSBJUlEgb25seSwgYmFzaWMgcGxhdGZvcm1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5Ni1cXHQgKiByZXNvdXJjZSBpbml0aWFsaXphdGlvbiBpcyBkb25lIGluIHRoZSBnbHVlIGxvZ2ljLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjk3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6Mjk4OlxcdHN0bW1hY19yZXMuaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI5OTpcXHRpZiAoc3RtbWFjX3Jlcy5pcnEgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzAwOlxcdFxcdHJldHVybiBzdG1tYWNfcmVzLmlycTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMwMTpcXHRzdG1tYWNfcmVzLndvbF9pcnEgPSBzdG1tYWNfcmVzLmlycTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMwMzpcXHRzdG1tYWNfcmVzLmFkZHIgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDQ6XFx0aWYgKElTX0VSUihzdG1tYWNfcmVzLmFkZHIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzA1OlxcdFxcdHJldHVybiBQVFJfRVJSKHN0bW1hY19yZXMuYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzA4LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMTY6XFx0cGxhdF9kYXQtXFx1MDAzZXN0bW1hY19jbGsgPSBzdG1tYWNfcGx0ZnJfZmluZF9jbGsocGxhdF9kYXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMTc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBkYXRhLVxcdTAwM2VzdG1tYWNfY2xrX25hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzE5LVxcdGlmIChkYXRhLVxcdTAwM2Vwcm9iZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMyMDpcXHRcXHRyZXQgPSBkYXRhLVxcdTAwM2Vwcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzIxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMzMDpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzQzPXN0YXRpYyB2b2lkIGR3Y19ldGhfZHdtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM0NzpcXHRzdG1tYWNfZHZyX3JlbW92ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjUtXFx0XFx0Lm5hbWUgICAgICAgICAgID0gXFxcImR3Yy1ldGgtZHdtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzY2OlxcdFxcdC5wbSAgICAgICAgICAgICA9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY3LVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGR3Y19ldGhfZHdtYWNfbWF0Y2gsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjIwOiNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTY3PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3MC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxNzE6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTcyLVxcdHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICpkd2NfcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE3NjpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTgxOlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTgyLVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTMyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MzI0OlxcdHBsYXRfZGF0LVxcdTAwM2VjbGtfdHhfaSA9IHN0bW1hY19wbHRmcl9maW5kX2NsayhwbGF0X2RhdCwgXFxcInR4XFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjMyNTpcXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzI2LVxcdHBsYXRfZGF0LVxcdTAwM2VjbGtzX2NvbmZpZyA9IGVpYzc3MDBfY2xrc19jb25maWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozMzU6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTMzNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MzYyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGVpYzc3MDBfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2NS1cXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiZWljNzcwMC1ldGgtZHdtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNjY6XFx0XFx0LnBtICAgICAgICAgICAgID0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2Ny1cXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBlaWM3NzAwX2R3bWFjX21hdGNoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTE2LSNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MTc6I2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9MTk9c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjEtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MjI6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjMtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjI1OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0yOS1cXHRpZiAocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MzA6XFx0XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0zMS1cXHRcXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo0OTpcXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTY5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTcyLVxcdFxcdC5uYW1lICAgICAgICAgICA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3MzpcXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03NC1cXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBkd21hY19nZW5lcmljX21hdGNoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjM6I2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9NDQ9c3RydWN0IGlteF9kd21hY19vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDk6XFx0aW50ICgqZml4X3NvY19yZXNldCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy01MC1cXHRpbnQgKCpzZXRfaW50Zl9tb2RlKShzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMsIHU4IHBoeV9pbnRmX3NlbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0xNTQ9c3RhdGljIGludCBpbXhfZHdtYWNfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2LCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNjE6XFx0cmV0dXJuIHN0bW1hY19zZXRfY2xrX3R4X3JhdGUoYnNwX3ByaXYsIGNsa190eF9pLCBpbnRlcmZhY2UsIHNwZWVkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MTkwPXN0YXRpYyB2b2lkIGlteDkzX2R3bWFjX2ZpeF9zcGVlZCh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIyOTpzdGF0aWMgaW50IGlteF9kd21hY19teDkzX3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MjkzPXN0YXRpYyBpbnQgaW14X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTUtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyOTY6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTctXFx0c3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMwMTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzAyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA5OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMTAtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMzgtXFx0ZHdtYWMtXFx1MDAzZXBsYXRfZGF0ID0gcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM5OlxcdGR3bWFjLVxcdTAwM2ViYXNlX2FkZHIgPSBzdG1tYWNfcmVzLmFkZHI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM1NDpcXHRyZXQgPSBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTM5Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbXhfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5My1cXHQucHJvYmUgID0gaW14X2R3bWFjX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM5NDpcXHQucmVtb3ZlID0gc3RtbWFjX3BsdGZyX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTUtXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTYtXFx0XFx0Lm5hbWUgICAgICAgICAgID0gXFxcImlteC1kd21hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mzk3OlxcdFxcdC5wbVxcdFxcdD0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzk4LVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGlteF9kd21hY19tYXRjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjE6I2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYz0xNTQ9c3RhdGljIGludCBpbmdlbmljX21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE1Ni1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNTc6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTU4LVxcdHN0cnVjdCBpbmdlbmljX21hYyAqbWFjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MTYzOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTY0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjgtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyMTU6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTIxNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjcyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGluZ2VuaWNfbWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzUtXFx0XFx0Lm5hbWVcXHQ9IFxcXCJpbmdlbmljLW1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI3NjpcXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzctXFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gaW5nZW5pY19tYWNfb2ZfbWF0Y2hlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNS0jaW5jbHVkZSBcXFwic3RtbWFjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjE2OiNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQ0LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjQ1OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQ2LVxcdHN0cnVjdCBpbnRlbF9kd21hYyAqZHdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjUwOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNTEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy01My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NTQ6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy01NS1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNC1cXHRwbGF0X2RhdC1cXHUwMDNlY2xrX3R4X2kgPSBkd21hYy1cXHUwMDNldHhfY2xrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTU6XFx0cGxhdF9kYXQtXFx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IHN0bW1hY19zZXRfY2xrX3R4X3JhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNi1cXHRwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYgPSBkd21hYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz0xMzA9c3RhdGljIHZvaWQgaW50ZWxfZXRoX3BsYXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjEzMjpcXHRzdHJ1Y3QgaW50ZWxfZHdtYWMgKmR3bWFjID0gZ2V0X3N0bW1hY19ic3BfcHJpdihcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMzQ6XFx0c3RtbWFjX3BsdGZyX3JlbW92ZShwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTM1LVxcdGlmIChkd21hYy1cXHUwMDNlZGF0YS1cXHUwMDNldHhfY2xrX2VuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTEzOT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbnRlbF9ldGhfcGxhdF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQzLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiaW50ZWwtZXRoLXBsYXRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxNDQ6XFx0XFx0LnBtXFx0XFx0PSBcXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQ1LVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGludGVsX2V0aF9wbGF0X21hdGNoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMi0jaW5jbHVkZSBcXFwic3RtbWFjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzojaW5jbHVkZSBcXFwic3RtbWFjX3B0cC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTI1PXN0cnVjdCBpbnRlbF9wcml2X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQwOnN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MS1cXHR1bnNpZ25lZCBpbnQgZnVuYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cXHRzaXplX3QgbmZ1bmNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUwOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTEtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MT1zdGF0aWMgY29uc3QgaW50IGFkbG5fdHNuX2xhbmVfcmVnc1tdID0gezZ9O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNTozNjoyMS4wMjM4MzQyODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTEzMDk1ODk4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBgc3RtbWFjYCBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHN0bW1hY2AsIHRoZSBFdGhlcm5ldCBkcml2ZXIgZm9yIGEgYnVuY2ggb2YgZGlmZmVyZW50IFN5c3RlbXMgb24gYSBDaGlwIChTb0NzKTogQWxsd2lubmVyLCBTVGksIEFtbG9naWMsIEludGVsIFF1YXJrL0VITC9UR0wsIE5YUCBpLk1YOCwgTG9vbmdzb24sIHlvdSBuYW1lIGl0LiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyB0aGluZyBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAsIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIG9yIFFFTVUgb24geDg2XzY0PyBUaGF0J3MgdGhlIGZpcnN0IGh1cmRsZSwgYXMgcGVyIG15IHVzdWFsIHRyaWFnZSBhcHByb2FjaC5cblxuTGV0J3MgcXVpY2tseSByZWNhcCBteSBjb3JlIGNyaXRlcmlhLiBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgaXMgYSBuby1nbywgcmlnaHQ/IFRoaW5rIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIG9yIGBhbWRncHVgLiBUaGVzZSBuZWVkIHBoeXNpY2FsIGNhcmRzLCB3aGljaCBvYnZpb3VzbHkgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFJlYWNoYWJpbGl0eSBpcyBrZXkuIEkgY2FuIG9ubHkgZXhwZWN0IHRvIGZpbmQgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5ICpleGVjdXRlKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIG9yIHR1bi90YXAuIEFueSBtb2RpZmljYXRpb25zIHRvIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBjb2RlLCBldmVuIHdpdGggYWRkZWQgYXNzZXJ0aW9ucywgYXJlIGNvbXBsZXRlbHkgb2ZmIHRoZSB0YWJsZS5cblxuTm93LCBiYWNrIHRvIGBzdG1tYWNgLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBvciBJbnRlbCBQQ0kgZHdtYWMsIExvb25nc29uIFBDSSBkd21hYyBhbmQgdGhlIGxpa2UuIFNvLCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogYXJlIHRoZXJlIHZpcnR1YWwgb3IgZW11bGF0ZWQgaW5zdGFuY2VzIG9mIGBzdG1tYWNgIHRoYXQgSSBjYW4gdXNlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCBvbiB4ODYvYW1kNjQ/IFRoZSBhbnN3ZXIgaXMuLi5uby4gUUVNVSBmb3IgeDg2L2FtZDY0IGRvZXNuJ3QgZW11bGF0ZSB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKHRoYXQncyBgc3RtbWFjYCksIGFuZCBJIHNob3VsZCBub3RlIHRoYXQgaXQgb25seSBlbXVsYXRlcyB0aGluZ3MgbGlrZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIGVlcHJvMTAwLCBzdW5nZW0sIHR1bGlwLCB2bXhuZXQzLCBpZ2IsIHZpcnRpby1uZXQsIGV0Yy5cblxuU28sIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHNvbWVob3cgcHJvYmUgb3IgaW5zdGFudGlhdGUgYHN0bW1hY2Agd2l0aG91dCByZWFsIGhhcmR3YXJlIG9yIGEgZGV2aWNldHJlZSBvbiBhbiBhY3R1YWwgU29DLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBsb2FkIGl0IG9yIHRlc3QgaXQgaW4gYW4gaXNvbGF0ZWQgbWFubmVyLiBMZXQncyBsb29rIGF0IGBzdG1tYWNfeG1pdGAuIFRoYXQncyB0aGUgYG5kb19zdGFydF94bWl0YCBmdW5jdGlvbiBmcm9tIGBzdG1tYWNfbWFpbi5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCdzIGNhbGxlZCBvciByZWdpc3RlcmVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNTUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MzIuMzMzNDI3NDc5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM0MTQwMTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY194bWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQ3NDU9c3RhdGljIGJvb2wgc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDc1Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQ3NTg6ICogIHN0bW1hY194bWl0IC0gVHggZW50cnkgcG9pbnQgb2YgdGhlIGRyaXZlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDc1OS0gKiAgQHNrYiA6IHRoZSBzb2NrZXQgYnVmZmVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQ3NjQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0NzY1OnN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDc2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMzI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMzMtXFx0Lm5kb19vcGVuID0gc3RtbWFjX29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzM0OlxcdC5uZG9fc3RhcnRfeG1pdCA9IHN0bW1hY194bWl0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMzNS1cXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNTozNjozMy40Njc1NzM2NTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTIyMDkwMTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBgc3RtbWFjX3htaXRgIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBzdG1tYWNfeG1pdGAsIHdoaWNoIGlzIHRoZSB0cmFuc21pdCBoYW5kbGVyIGZvciBTVE1NQUMvRFdNQUMgZXRoZXJuZXQgZGV2aWNlcy4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24sIGBzdG1tYWNfeG1pdGAsIG9ubHkgZ2V0cyBjYWxsZWQgaWYgdGhlIFNUTU1BQyBuZXRkZXZpY2UgaXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQsIG9wZW5lZCwgYW5kIHBhY2tldHMgYXJlIGJlaW5nIHRyYW5zbWl0dGVkIG92ZXIgaXQuIFRoZSBjcmVhdGlvbiBvZiBzdWNoIGEgbmV0ZGV2aWNlIHJlbGllcyBvbiB0aGUgZHJpdmVyIHByb2Jpbmcgc3VjY2Vzc2Z1bGx5LiBBbmQgZm9yIHRoZSBkcml2ZXIgdG8gcHJvYmUsIHRoZXJlIG5lZWRzIHRvIGJlIGEgaGFyZHdhcmUgZGV2aWNlIHByZXNlbnQg4oCTIHNwZWNpZmljYWxseSwgYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBNTUlPIHJlZ2lzdGVycywgSVJRcywgYSBQSFksIG9yIGEgUENJIGRldmljZSB3aXRoIG1hdGNoaW5nIFNUTU1BQy9EV01BQyBQQ0kgSURzLCBsaWtlIHRob3NlIGZvdW5kIGluIEludGVsIEVsa2hhcnQgTGFrZS9UaWdlciBMYWtlL1F1YXJrIFNvQ3MuIFRoaXMgaW52b2x2ZXMgYWNjZXNzaW5nIGhhcmR3YXJlIE1NSU8gcmVnaXN0ZXJzLlxuXG5UaGUga2V5IGhlcmUgaXMgdGhhdCB0byBnZXQgdGhpcyBmYXIsIHlvdSBhYnNvbHV0ZWx5IG5lZWQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgdmVyeSBzcGVjaWZpYywgZnVsbCBRRU1VIGVtdWxhdGlvbiBvZiBEV01BQy4gIFN0YW5kYXJkIFFFTVUgb24geDg2XzY0IGRvZXNuJ3QgcHJvdmlkZSB0aGlzIGxldmVsIG9mIGVtdWxhdGlvbi4gVGh1cywgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlIGFuZCBuZXZlciByZWdpc3RlciBhIG5ldHdvcmsgaW50ZXJmYWNlLiBUaGF0IG1lYW5zIHRoZSBjb2RlIGluIGBzdG1tYWNfeG1pdGAgd2lsbCBuZXZlciBiZSBleGVjdXRlZC5cblxuTm93LCBsZXQncyBnbyBiYWNrIGFuZCByZWZlcmVuY2UgdGhlIHRyaWFnZSBpbnN0cnVjdGlvbnMsIGVzcGVjaWFsbHkgdGhlIFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEVcIi4gVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IHN0YXRlIHRoYXQgZnV6emluZyBpcyBvbmx5IHZpYWJsZSBmb3IgY29kZSB0aGF0IGNhbiBydW4gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiAgSWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVlIHRvIGhhcmR3YXJlIHJlcXVpcmVtZW50cywgd2Ugc2hvdWxkIG5vdCBiZSBmdXp6aW5nIGl0LiBBbmQgc3BlY2lmaWNhbGx5IHVuZGVyIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcIiwgdGhpcyBkaXJlY3RseSBhcHBsaWVzOiBJdCdzIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIuIFRoZSBTVE1NQUMgZHJpdmVyIGlzIHRoZSBjbGFzc2ljIGV4YW1wbGUg4oCTIGl0IG5lZWRzIHBoeXNpY2FsIEFTSUNzL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbkkndmUgY2hlY2tlZCB0aGUgZGlmZiBhbmQgdGhlIG9ubHkgZmlsZSBtb2RpZmllZCBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIEl0J3MgYWxsIGFib3V0IGBzdG1tYWNfeG1pdGAsIGFuZCBzcGVjaWZpY2FsbHkgY2xlYW5pbmcgdXAgRE1BIG1hcHBpbmcgZXJyb3JzLiBCdXQgc2luY2UgdGhlIHVuZGVybHlpbmcgZGV2aWNlIHdvbid0IHByb2JlLCB3ZSBjYW4ndCBnZXQgdGhlcmUgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZW1wdHksIGFuZCBzbyB3aWxsIGBFbmFibGVDb25maWdzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2MjYsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNTozNjo0Mi42ODg0Nzc0ODNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUeCBETUEgbWFwcGluZyBlcnJvciB1bndpbmRpbmcgbG9naWMgaW4gYHN0bW1hY194bWl0KClgIHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIFNvQy9QQ0kgaGFyZHdhcmUgSVAgYmxvY2tzIChTVE1NQUMvRFdNQUMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFR4IERNQSBtYXBwaW5nIGVycm9yIHVud2luZGluZyBsb2dpYyBpbiBgc3RtbWFjX3htaXQoKWAgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgU29DL1BDSSBoYXJkd2FyZSBJUCBibG9ja3MgKFNUTU1BQy9EV01BQykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6NDIuNjg4NTAwNDMzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsr8qx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 05:32:08 +0000 UTC FinishedAt: 2026-09-10 05:36:44 +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+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVHggRE1BIG1hcHBpbmcgZXJyb3IgdW53aW5kaW5nIGxvZ2ljIGluIGBzdG1tYWNfeG1pdCgpYCB3aXRoaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBTb0MvUENJIGhhcmR3YXJlIElQIGJsb2NrcyAoU1RNTUFDL0RXTUFDKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNGE2YzlhYjc0YTM3ODI5ZDVkMGRiZDhhMGI4NjE5YTI3YTFiZDhkMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDA1OjM1OjQwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAyNDY1NmIzNTM1MGIxLi4yZTM2YzI3ZTJjZmI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTQ3NjksMTIgJiM0Mzs0NzY5LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbiBcdHUzMiBxdWV1ZSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0aW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbi1cdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgdHhfcGFja2V0cztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIGVudHJ5LCB0eF9wYWNrZXRzO1xuIFx0c3RydWN0IHN0bW1hY190eHFfc3RhdHMgKnR4cV9zdGF0cztcbiBcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYywgKmZpcnN0X2Rlc2M7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xO1xuIFx0aW50IGksIGNzdW1faW5zZXJ0aW9uID0gMDtcbi1cdGludCBlbnRyeSwgZmlyc3RfdHg7XG4mIzQzO1x0aW50IGZpcnN0X3R4LCByZXQ7XG4gXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xuIFx0dTMyIHNkdV9sZW47XG4gXG5AQCAtNDgzMiw5ICYjNDM7NDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGNzdW1faW5zZXJ0aW9uID0gc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMO1xuIFxuIFx0aWYgKHVubGlrZWx5KGlzX2p1bWJvKSkge1xuLVx0XHRlbnRyeSA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XG4tXHRcdGlmICh1bmxpa2VseShlbnRyeSBcdTAwM2MgMCkgXHUwMDI2XHUwMDI2IChlbnRyeSAhPSAtRUlOVkFMKSlcbiYjNDM7XHRcdHJldCA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XG4mIzQzO1x0XHRpZiAodW5saWtlbHkocmV0IFx1MDAzYyAwKSBcdTAwMjZcdTAwMjYgKHJldCAhPSAtRUlOVkFMKSlcbiBcdFx0XHRnb3RvIGRtYV9tYXBfZXJyO1xuJiM0MztcdFx0ZW50cnkgPSByZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7XG4gXG5AQCAtNDk4NCw2ICYjNDM7NDk4NSwyNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBkbWFfbWFwX2VycjpcbiBcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O1R4IERNQSBtYXAgZmFpbGVkXFxuXCYjMzQ7KTtcbiYjNDM7XG4mIzQzO1x0LyogZW50cnkgcG9pbnRzIG9uZSBwYXN0IHRoZSBsYXN0IGRlc2NyaXB0b3Igd3JpdHRlbiBmb3IgdGhpcyBmcmFtZTpcbiYjNDM7XHQgKiBvbiBmYWlsdXJlIGl0IGlzIHRoZSBkZXNjcmlwdG9yIHdob3NlIERNQSBtYXBwaW5nIGZhaWxlZCwgc28gd2Fsa1xuJiM0MztcdCAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eFxuJiM0MztcdCAqIHVuY29uZGl0aW9uYWxseSBhcyBib3RoIHN0bW1hY192bGFuX2luc2VydCgpIGFuZCBzdG1tYWNfanVtYm9fZnJtKClcbiYjNDM7XHQgKiBtYXkgaGF2ZSBhZHZhbmNlZCBpdCwgYW5kIHJlbGVhc2UgdGhlIFZMQU4gY29udGV4dCBkZXNjcmlwdG9yLlxuJiM0MztcdCAqL1xuJiM0MztcdHdoaWxlIChmaXJzdF9lbnRyeSAhPSBlbnRyeSkge1xuJiM0MztcdFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF9lbnRyeSk7XG4mIzQzO1x0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbiYjNDM7XHRcdHN0bW1hY19mcmVlX3R4X2J1ZmZlcihwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mLCBxdWV1ZSwgZmlyc3RfZW50cnkpO1xuJiM0MztcdFx0Zmlyc3RfZW50cnkgPSBTVE1NQUNfTkVYVF9FTlRSWShmaXJzdF9lbnRyeSxcbiYjNDM7XHRcdFx0XHRcdFx0cHJpdi1cdTAwM2VkbWFfY29uZi5kbWFfdHhfc2l6ZSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR0eF9xLVx1MDAzZWN1cl90eCA9IGZpcnN0X3R4O1xuJiM0MztcdGlmIChoYXNfdmxhbikge1xuJiM0MztcdFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF90eCk7XG4mIzQzO1x0XHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXHUwMDNlZGVzY3JpcHRvcl9tb2RlKTtcbiYjNDM7XHR9XG4gbWF4X3NkdV9lcnI6XG4gXHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4gXHRwcml2LVx1MDAzZXhzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUeCBETUEgbWFwcGluZyBlcnJvciB1bndpbmRpbmcgbG9naWMgaW4gYHN0bW1hY194bWl0KClgIHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIFNvQy9QQ0kgaGFyZHdhcmUgSVAgYmxvY2tzIChTVE1NQUMvRFdNQUMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0YTZjOWFiNzRhMzc4MjlkNWQwZGJkOGEwYjg2MTlhMjdhMWJkOGQwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMDU6MzU6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCAyNDY1NmIzNTM1MGIxLi4yZTM2YzI3ZTJjZmI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTQ3NjksMTIgJiM0Mzs0NzY5LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXVuc2lnbmVkIGludCBub3BhZ2VkX2xlbiA9IHNrYl9oZWFkbGVuKHNrYik7CiAJdTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7CiAJaW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7bnJfZnJhZ3M7Ci0JdW5zaWduZWQgaW50IGZpcnN0X2VudHJ5LCB0eF9wYWNrZXRzOwomIzQzOwl1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIGVudHJ5LCB0eF9wYWNrZXRzOwogCXN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7CiAJc3RydWN0IGRtYV9kZXNjICpkZXNjLCAqZmlyc3RfZGVzYzsKIAlzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xOwogCWludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7Ci0JaW50IGVudHJ5LCBmaXJzdF90eDsKJiM0MzsJaW50IGZpcnN0X3R4LCByZXQ7CiAJZG1hX2FkZHJfdCBkbWFfYWRkcjsKIAl1MzIgc2R1X2xlbjsKIApAQCAtNDgzMiw5ICYjNDM7NDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAljc3VtX2luc2VydGlvbiA9IHNrYi0mZ3Q7aXBfc3VtbWVkID09IENIRUNLU1VNX1BBUlRJQUw7CiAKIAlpZiAodW5saWtlbHkoaXNfanVtYm8pKSB7Ci0JCWVudHJ5ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTsKLQkJaWYgKHVubGlrZWx5KGVudHJ5ICZsdDsgMCkgJmFtcDsmYW1wOyAoZW50cnkgIT0gLUVJTlZBTCkpCiYjNDM7CQlyZXQgPSBzdG1tYWNfanVtYm9fZnJtKHByaXYsIHR4X3EsIHNrYiwgY3N1bV9pbnNlcnRpb24pOwomIzQzOwkJaWYgKHVubGlrZWx5KHJldCAmbHQ7IDApICZhbXA7JmFtcDsgKHJldCAhPSAtRUlOVkFMKSkKIAkJCWdvdG8gZG1hX21hcF9lcnI7CiYjNDM7CQllbnRyeSA9IHJldDsKIAl9IGVsc2UgewogCQlib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7CiAKQEAgLTQ5ODQsNiAmIzQzOzQ5ODUsMjYgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIGRtYV9tYXBfZXJyOgogCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O1R4IERNQSBtYXAgZmFpbGVkXG4mIzM0Oyk7CiYjNDM7CiYjNDM7CS8qIGVudHJ5IHBvaW50cyBvbmUgcGFzdCB0aGUgbGFzdCBkZXNjcmlwdG9yIHdyaXR0ZW4gZm9yIHRoaXMgZnJhbWU6CiYjNDM7CSAqIG9uIGZhaWx1cmUgaXQgaXMgdGhlIGRlc2NyaXB0b3Igd2hvc2UgRE1BIG1hcHBpbmcgZmFpbGVkLCBzbyB3YWxrCiYjNDM7CSAqIGZyb20gZmlyc3RfZW50cnkgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBlbnRyeS4gIFJlc2V0IGN1cl90eAomIzQzOwkgKiB1bmNvbmRpdGlvbmFsbHkgYXMgYm90aCBzdG1tYWNfdmxhbl9pbnNlcnQoKSBhbmQgc3RtbWFjX2p1bWJvX2ZybSgpCiYjNDM7CSAqIG1heSBoYXZlIGFkdmFuY2VkIGl0LCBhbmQgcmVsZWFzZSB0aGUgVkxBTiBjb250ZXh0IGRlc2NyaXB0b3IuCiYjNDM7CSAqLwomIzQzOwl3aGlsZSAoZmlyc3RfZW50cnkgIT0gZW50cnkpIHsKJiM0MzsJCWRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfZW50cnkpOwomIzQzOwkJc3RtbWFjX3JlbGVhc2VfdHhfZGVzYyhwcml2LCBkZXNjLCBwcml2LSZndDtkZXNjcmlwdG9yX21vZGUpOwomIzQzOwkJc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHByaXYsICZhbXA7cHJpdi0mZ3Q7ZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7CiYjNDM7CQlmaXJzdF9lbnRyeSA9IFNUTU1BQ19ORVhUX0VOVFJZKGZpcnN0X2VudHJ5LAomIzQzOwkJCQkJCXByaXYtJmd0O2RtYV9jb25mLmRtYV90eF9zaXplKTsKJiM0MzsJfQomIzQzOwomIzQzOwl0eF9xLSZndDtjdXJfdHggPSBmaXJzdF90eDsKJiM0MzsJaWYgKGhhc192bGFuKSB7CiYjNDM7CQlkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X3R4KTsKJiM0MzsJCXN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi0mZ3Q7ZGVzY3JpcHRvcl9tb2RlKTsKJiM0MzsJfQogbWF4X3NkdV9lcnI6CiAJZGV2X2tmcmVlX3NrYihza2IpOwogCXByaXYtJmd0O3hzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOzsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY5NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBnb2FsIGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBwYXRjaCBpcyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLCBhbmQgaWYgc28sIGhvdyB0byBhcHByb2FjaCBpdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gVGhlIHBhdGNoIG1vZGlmaWVzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCBzcGVjaWZpY2FsbHksIHRoZSBgc3RtbWFjX3htaXRgIGZ1bmN0aW9uLiBSaWdodCwgc28gdGhpcyBpcyB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLWNoYW5uZWwgRXRoZXJuZXQgTUFDIGRyaXZlciwgYWxzbyBrbm93biBhcyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAvIFNUTU1BQy4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBpcyB0aGlzIGhhcmR3YXJlLWRlcGVuZGVudCwgb3IgY2FuIEkgcmVhY2ggdGhpcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IElzIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGVkIGVub3VnaCB0aGF0IGl0IHdpbGwgYmUgZWFzaWx5IHJlYWNoYWJsZT8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gcmVsaWFibHkgdHJpZ2dlciB0aGlzIGNvZGUuIFRvIGFuc3dlciB0aGlzLCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiBJIGNhbiBydW4gdGhpcyBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIGVpdGhlciBgZ3JlcHBlcmAgb3IgY2hlY2sgdGhlIEtjb25maWcsIGlkZWFsbHkgbG9va2luZyBhdCBkZXBlbmRlbmNpZXMsIHRvIHNlZSBob3cgZWFzaWx5IHRoaXMgY2FuIGJlIGNvbmZpZ3VyZWQgYW5kIHdoZXRoZXIgaXQgaXMgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgaHVyZGxlLCBkZXRlcm1pbmluZyB0aGUgdGFyZ2V0JiMzOTtzIHJlYWNoYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX0VUSCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNDYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlOgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgS2NvbmZpZ2AgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgc2VlIGhvdyB0aGV5JiMzOTt2ZSBzdHJ1Y3R1cmVkIHRoZSBmZWF0dXJlIHNlbGVjdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBhbmQgaWYgdGhlcmUgYXJlIGFueSBnb3RjaGFzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IHVudXN1YWwgZGVwZW5kZW5jaWVzIG9yIGxpbWl0YXRpb25zLCBhbmQgYXNzZXNzaW5nIHRoZSBsZXZlbCBvZiBncmFudWxhcml0eSBpbiB0aGVpciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O20gcGFydGljdWxhcmx5IGN1cmlvdXMgYWJvdXQgaG93IHRoZXkgaGFuZGxlIHRoZSB2YXJpb3VzIFNUTWljcm9lbGVjdHJvbmljcyBTb0NzIHRoYXQgdXRpbGl6ZSB0aGlzIE1BQy4gQXJlIHRoZXkgdXNpbmcgYSBmaW5lLWdyYWluZWQsIGRldmljZS1zcGVjaWZpYyBhcHByb2FjaCwgb3IgYSBtb3JlIGdlbmVyYWxpemVkLCBmZWF0dXJlLWJhc2VkIHN5c3RlbT8KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBDT05GSUdfU1RNTUFDXypgIG9wdGlvbnMsIG9mIGNvdXJzZS4gSSYjMzk7bGwgbWVudGFsbHkgbWFwIHRoZW0gdG8gdGhlIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXJzIGFuZCBmdW5jdGlvbmFsaXRpZXMgSSYjMzk7bSBmYW1pbGlhciB3aXRoIOKAkyBQSFkgaW50ZXJmYWNlcywgaW50ZXJydXB0IGhhbmRsaW5nLCBETUEgc2V0dGluZ3MsIGFuZCBhbnkgb2ZmbG9hZCBjYXBhYmlsaXRpZXMuIEkmIzM5O2xsIHdhbnQgdG8gc2VlIGhvdyB0aGV5JiMzOTt2ZSBoYW5kbGVkIHZhcmlvdXMgZmVhdHVyZXMgc3VjaCBhcyBKdW1ibyBmcmFtZXMsIGNoZWNrc3VtIG9mZmxvYWRpbmcsIFZMQU4gc3VwcG9ydCwgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zLgoKSSYjMzk7bSBob3BpbmcgdG8gc2VlIGEgd2VsbC1jb21tZW50ZWQgZmlsZSwgdGhhdCBmb2xsb3dzIHN0YW5kYXJkIGtlcm5lbCBjb252ZW50aW9ucyBhbmQgY2xlYXJseSBkZWxpbmVhdGVzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMmIzM5OyBpbXBsaWNhdGlvbnMuIEEgd2VsbC1vcmdhbml6ZWQgYEtjb25maWdgIGlzIGEgc2lnbiBvZiBhIHdlbGwtZGVzaWduZWQgZHJpdmVyLCBzbyBJJiMzOTttIGhvcGluZyBmb3IgZ29vZCBkZXNpZ24gcHJpbmNpcGxlcyB0byBiZSBldmlkZW50LiBUaGlzIHNob3VsZCBiZSBhIGZhaXJseSBxdWljayByZXZpZXcgaWYgaXQmIzM5O3Mgd2VsbC1vcmdhbml6ZWQ7IEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCBzbyBJIGNhbiBrZWVwIG1ha2luZyBwcm9ncmVzcyBvbiBteSBwcm9qZWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRpZiBTVE1NQUNfUExBVEZPUk1cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cJiMzNDtcbiAgNDY6XHRcdHNlbGVjdCBDUkMzMlxuICA0NzpcdFx0c2VsZWN0IE1JSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICA0OTpcdFx0aGVscFxuICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBEV01BQ19HRU5FUklDXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiAgNTQ6XHRcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnlcbiAgNTc6XHRcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxuICA1ODpcdFx0ICBkYXRhIGZvciBzZXR1cC5cbiAgNTk6XHRcbiAgNjA6XHRjb25maWcgRFdNQUNfQU5BUklPTlxuICA2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcJiMzNDtcbiAgNjI6XHRcdGRlZmF1bHQgQVJDXG4gIDYzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcbiAgNjQ6XHRcdGhlbHBcbiAgNjU6XHRcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDY2Olx0XG4gIDY3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgRFdNQUNfRUlDNzcwMFxuICA3MDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgNzE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXG4gIDc0Olx0XHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcbiAgNzU6XHRcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXG4gIDc2Olx0XHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBEV01BQ19JTkdFTklDXG4gIDc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbmdlbmljIE1BQyBzdXBwb3J0XCYjMzQ7XG4gIDgwOlx0XHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NTAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA1OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgc3RtbWFjIERyaXZlcioqCgpBbHJpZ2h0LCBzdG1tYWMuLi4gdGhhdCByaW5ncyBhIGJlbGwuIFJpZ2h0LCBpdCYjMzk7cyB0aGUgZHJpdmVyIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQ3MsIGFuZCBpdCYjMzk7cyBhbHNvIHVzZWQgZm9yIFNUTWljcm9lbGVjdHJvbmljcyYjMzk7IG93biBNQUMgaW1wbGVtZW50YXRpb25zLiBBIHNvbGlkLCBmYWlybHkgd2VsbC1lc3RhYmxpc2hlZCBwaWVjZSBvZiB0aGUgbmV0d29ya2luZyBzdGFjaywgSSBiZWxpZXZlLgoKTm93LCB0aGUgcXVlc3Rpb24gaXMsICp3aGVyZSogZG9lcyBpdCBsaXZlPyBJcyB0aGlzIGEgUENJLWJhc2VkIGludGVyZmFjZSwgb3IgaXMgdGhpcyBhIHBsYXRmb3JtIGRyaXZlcj8gTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IGJ5IGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYWJvdXQgdGhlIGRldmljZSBiaW5kaW5nIG1ldGhvZC4gVGhhdCYjMzk7bGwgdGVsbCBtZSBhIGxvdCBhYm91dCBob3cgdGhpcyBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoIHRoZSBicm9hZGVyIHN5c3RlbSBhbmQgaG93IGl0JiMzOTtzIHR5cGljYWxseSB1c2VkLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgc2F5cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChNQUNIX0lOR0VOSUMgfHwgQ09NUElMRV9URVNUKVxuICA4MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgODM6XHRcdGhlbHBcbiAgODQ6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBJbmdlbmljIFNvQ3MuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gIDg3Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcbiAgODg6XHRcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIERXTUFDX0lQUTgwNlhcbiAgOTE6XHRcdHRyaXN0YXRlIFwmIzM0O1FDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcJiMzNDtcbiAgOTI6XHRcdGRlZmF1bHQgQVJDSF9RQ09NXG4gIDkzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbiAgOTQ6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDk1Olx0XHRoZWxwXG4gIDk2Olx0XHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxuICA5NzpcdFxuICA5ODpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIElQUTgwNnggU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuICA5OTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYW55IG9mIHRoZSBoYXJkd2FyZVxuIDEwMDpcdFx0ICBhY2NlbGVyYXRpb24gZmVhdHVyZXMgYXZhaWxhYmxlIG9uIHRoaXMgU29DLiBOZXR3b3JrIGRldmljZXNcbiAxMDE6XHRcdCAgd2lsbCBiZWhhdmUgbGlrZSBzdGFuZGFyZCBub24tYWNjZWxlcmF0ZWQgZXRoZXJuZXQgaW50ZXJmYWNlcy5cbiAxMDI6XHRcbiAxMDM6XHRcdCAgU2VsZWN0IHRoZSBRQ09NX1NPQ0lORk8gY29uZmlnIGZsYWcgdG8gZW5hYmxlIHNwZWNpZmljIGR3bWFjXG4gMTA0Olx0XHQgIGZpeHVwIGJhc2VkIG9uIHRoZSBpcHE4MDZ4IFNvQyByZXZpc2lvbi5cbiAxMDU6XHRcbiAxMDY6XHRjb25maWcgRFdNQUNfTFBDMThYWFxuIDEwNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIExQQzE4eHgvNDN4eCBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMTA4Olx0XHRkZWZhdWx0IEFSQ0hfTFBDMThYWFxuIDEwOTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXG4gMTEwOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDExMTpcdFx0aGVscFxuIDExMjpcdFx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxuIDExMzpcdFxuIDExNDpcdGNvbmZpZyBEV01BQ19NRURJQVRFS1xuIDExNTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQyN3h4IEdNQUMgc3VwcG9ydFwmIzM0O1xuIDExNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUKVxuIDExNzpcdFx0aGVscFxuIDExODpcdFx0ICBTdXBwb3J0IGZvciBNZWRpYVRlayBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMTE5Olx0XG4gMTIwOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTVQyNzEyIFNvQyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAxMjE6XHRcbiAxMjI6XHRjb25maWcgRFdNQUNfTUVTT05cbiAxMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDEyNDpcdFx0ZGVmYXVsdCBBUkNIX01FU09OXG4gMTI1Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9NRVNPTiB8fCBDT01QSUxFX1RFU1QpXG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gQW1sb2dpYyBNZXNvbiBTb0NzLlxuIDEyODpcdFxuIDEyOTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFtbG9naWMgTWVzb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAxMzA6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBNZXNvbjYsXG4gMTMxOlx0XHQgIE1lc29uOCwgTWVzb244YiBhbmQgR1hCQiBTb0NzLlxuIDEzMjpcdFxuIDEzMzpcdGNvbmZpZyBEV01BQ19OVVZPVE9OXG4gMTM0Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdXZvdG9uIE1BMzUgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDEzNTpcdFx0ZGVmYXVsdCBBUkNIX01BMzVcbiAxMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxuIDEzNzpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAxMzg6XHRcdGhlbHBcbiAxMzk6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQy5cbiAxNDA6XHRcbiAxNDE6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbiAxNDI6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXG4gMTQzOlx0XHQgIHVzZWQgZm9yIE1BMzUgc2VyaWVzIFNvQ3MuXG4gMTQ0Olx0XG4gMTQ1Olx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXG4gMTQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBFVEhRT1Mgc3VwcG9ydFwmIzM0O1xuIDE0NzpcdFx0ZGVmYXVsdCBBUkNIX1FDT01cbiAxNDg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgUXVhbGNvbW0gRVRIUU9TIGNvcmUuXG4gMTUxOlx0XG4gMTUyOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMTUzOlx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuIDE1NDpcdFxuIDE1NTpcdGNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXG4gMTU2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL1YySChQKSBHQkVUSCBhbmQgUlovVDJILCBSWi9OMkggR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTU3Olx0XHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1QpXG4gMTU5Olx0XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuIDE2MDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczNTcKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBEZWVwZXIgaW50byB0aGUgS2NvbmZpZyBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBmb2N1c2luZyBvbiBzb21lIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBLY29uZmlnLCBidXQgbm93IEkgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBhIGJpdC4gVGltZSB0byBtb3ZlIGJleW9uZCB0aGUgaW1tZWRpYXRlIHN0dWZmIGFuZCBnZXQgYSBtb3JlIGNvbXBsZXRlIHZpZXcgb2YgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIFNUTU1BQ19QQ0kgY29uZmlndXJhdGlvbiBvcHRpb24sIGFuZCBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLCByZWxhdGlvbnNoaXBzLCBhbmQgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhlc2UgY29uZmlndXJhdGlvbnMgd2l0aGluIHRoZSBicm9hZGVyIEtjb25maWcgZnJhbWV3b3JrLiBUaGlzIGlzIGNydWNpYWwgZm9yIGEgcm9idXN0IHVuZGVyc3RhbmRpbmcsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggY29tcGxleCBoYXJkd2FyZSBhYnN0cmFjdGlvbnMuIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgcmVsYXRlZCBLY29uZmlnIG9wdGlvbnMgaXMgdGhlIG9ubHkgd2F5IHRvIGVmZmVjdGl2ZWx5IGRpYWdub3NlIGlzc3VlcywgZXZhbHVhdGUgZGVzaWduIGNob2ljZXMsIGFuZCBtYWtlIGluZm9ybWVkIG1vZGlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYxOlx0XHQgIFN1cHBvcnQgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgSW50ZXJmYWNlIChHQkVUSCkvIEV0aGVybmV0IE1BQyAoR01BQylcbiAxNjI6XHRcdCAgb24gUmVuZXNhcyBTb0NzLlxuIDE2MzpcdFxuIDE2NDpcdFx0ICBUaGlzIHNlbGVjdHMgUmVuZXNhcyBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRldmljZVxuIDE2NTpcdFx0ICBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBSWi9WMkgoUCkgZmFtaWx5LCBSWi9UMkggYW5kXG4gMTY2Olx0XHQgIFJaL04ySCBTb0NzLlxuIDE2NzpcdFxuIDE2ODpcdGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxuIDE2OTpcdFx0dHJpc3RhdGUgXCYjMzQ7Um9ja2NoaXAgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDE3MDpcdFx0ZGVmYXVsdCBBUkNIX1JPQ0tDSElQXG4gMTcxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9ST0NLQ0hJUCB8fCBDT01QSUxFX1RFU1QpXG4gMTcyOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDE3MzpcdFx0aGVscFxuIDE3NDpcdFx0ICBTdXBwb3J0IGZvciBFdGhlcm5ldCBjb250cm9sbGVyIG9uIFJvY2tjaGlwIFJLMzI4OCBTb0MuXG4gMTc1Olx0XG4gMTc2Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG4gMTc3Olx0XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cbiAxNzg6XHRcbiAxNzk6XHRjb25maWcgRFdNQUNfUlpOMVxuIDE4MDpcdFx0dHJpc3RhdGUgXCYjMzQ7UmVuZXNhcyBSWi9OMSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMTgxOlx0XHRkZWZhdWx0IEFSQ0hfUlpOMVxuIDE4MjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUlpOMSB8fCBDT01QSUxFX1RFU1QpXG4gMTgzOlx0XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuIDE4NDpcdFx0aGVscFxuIDE4NTpcdFx0ICBTdXBwb3J0IGZvciBFdGhlcm5ldCBjb250cm9sbGVyIG9uIFJlbmVzYXMgUlovTjEgU29DIGZhbWlseS5cbiAxODY6XHRcbiAxODc6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBSZW5lc2FzIFJaL04xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG4gMTg4Olx0XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBzdXBwb3J0IGNhbiBtYWtlIHVzZSBvZiBhIGN1c3RvbSBNSUlcbiAxODk6XHRcdCAgY29udmVydGVyIFBDUyBkZXZpY2UuXG4gMTkwOlx0XG4gMTkxOlx0Y29uZmlnIERXTUFDX1MzMlxuIDE5MjpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIFMzMkcvUzMyUiBHTUFDIHN1cHBvcnRcJiMzNDtcbiAxOTM6XHRcdGRlZmF1bHQgQVJDSF9TMzJcbiAxOTQ6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXG4gMTk1Olx0XHRoZWxwXG4gMTk2Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIFMzMkNDIFNPQ3MuXG4gMTk3Olx0XG4gMTk4Olx0XHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDE5OTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUzMyQ0Mgc2VyaWVzXG4gMjAwOlx0XHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLCBpZS4gUzMyRzJ4eCwgUzMyRzN4eCBhbmRcbiAyMDE6XHRcdCAgUzMyUjQ1LlxuIDIwMjpcdFxuIDIwMzpcdGNvbmZpZyBEV01BQ19TT0NGUEdBXG4gMjA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtTT0NGUEdBIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAyMDU6XHRcdGRlZmF1bHQgQVJDSF9JTlRFTF9TT0NGUEdBXG4gMjA2Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9JTlRFTF9TT0NGUEdBIHx8IENPTVBJTEVfVEVTVClcbiAyMDc6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjA4Olx0XHRzZWxlY3QgTURJT19SRUdNQVBcbiAyMDk6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuIDIxMDpcdFx0c2VsZWN0IFBDU19MWU5YXG4gMjExOlx0XHRoZWxwXG4gMjEyOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gQWx0ZXJhIFNPQ0ZQR0FcbiAyMTM6XHRcbiAyMTQ6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjE1Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXG4gMjE2Olx0XHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxuIDIxNzpcdFxuIDIxODpcdGNvbmZpZyBEV01BQ19TT1BIR09cbiAyMTk6XHRcdHRyaXN0YXRlIFwmIzM0O1NvcGhnbyBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMjIwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TT1BIR08gfHwgQ09NUElMRV9URVNUKVxuIDIyMTpcdFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU09QSEdPXG4gMjIyOlx0XHRoZWxwXG4gMjIzOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNvcGhnbyBSSVNDLVYgU29Dc1xuIDIyNDpcdFxuIDIyNTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFNvcGhnbyBTb0Mgc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjI2Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDIyNzpcdFx0ICBldGhlcm5ldCBjb250cm9sbGVycyBvbiB2YXJpb3VzIFNvcGhnbyBTb0NzLlxuIDIyODpcdFxuIDIyOTpcdGNvbmZpZyBEV01BQ19TUEFDRU1JVFxuIDIzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3BhY2VtaXQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDIzMTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxuIDIzMjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyMzM6XHRcdGRlZmF1bHQgbSBpZiBBUkNIX1NQQUNFTUlUXG4gMjM0Olx0XHRoZWxwXG4gMjM1Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNwYWNlbWl0IFJJU0MtViBTb0NzXG4gMjM2Olx0XG4gMjM3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgU3BhY2VtaXQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjM4Olx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDIzOTpcdFx0ICBTcGFjZW1pdCBLMyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyNDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg3OAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgS2NvbmZpZyBmaWxlLCBwaWNraW5nIHVwIGZyb20gbGluZSAyNDEgb253YXJkcy4gSSBuZWVkIHRvIGdldCBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB3aGF0JiMzOTtzIGRlZmluZWQgYW5kIGhvdyB0aGluZ3MgYXJlIGJlaW5nIGNvbmZpZ3VyZWQgaGVyZS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUga2V5IGRlcGVuZGVuY2llcywgdGhlIGJvb2xlYW4gZXhwcmVzc2lvbnMsIGFueSBkZWZhdWx0cyBzZXQg4oCTIGV2ZXJ5dGhpbmcgdGhhdCBpbmZsdWVuY2VzIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uLiBXaGVyZSBhcmUgdGhlIGltcG9ydGFudCBmZWF0dXJlcyBkZWZpbmVkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgY29uZmxpY3RzIGJhc2VkIG9uIG15IHByZXZpb3VzIGV4cGVyaWVuY2U/IEkmIzM5O2xsIG5lZWQgdG8gZGlzc2VjdCB0aGUgbG9naWMsIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgZ290Y2hhcywgYW5kIG1lbnRhbGx5IGJ1aWxkIGEgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGlzIG1vZHVsZSBiZWhhdmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gZmluZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI0MTpcdGNvbmZpZyBEV01BQ19TVEFSRklWRVxuIDI0MjpcdFx0dHJpc3RhdGUgXCYjMzQ7U3RhckZpdmUgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDI0MzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1RBUkZJVkUgfHwgQ09NUElMRV9URVNUKVxuIDI0NDpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyNDU6XHRcdGRlZmF1bHQgbSBpZiBBUkNIX1NUQVJGSVZFXG4gMjQ2Olx0XHRoZWxwXG4gMjQ3Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFN0YXJGaXZlIFJJU0MtViBTb0NzXG4gMjQ4Olx0XG4gMjQ5Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgU3RhckZpdmUgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XG4gMjUwOlx0XHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxuIDI1MTpcdFx0ICBTdGFyRml2ZSBKSDcxMDAgYW5kIEpINzExMCBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyNTI6XHRcbiAyNTM6XHRjb25maWcgRFdNQUNfU1RJXG4gMjU0Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVGkgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMjU1Olx0XHRkZWZhdWx0IEFSQ0hfU1RJXG4gMjU2Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVEkgfHwgQ09NUElMRV9URVNUKVxuIDI1NzpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAyNTg6XHRcdGhlbHBcbiAyNTk6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBTVGkgU09Dcy5cbiAyNjA6XHRcbiAyNjE6XHRcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gMjYyOlx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXG4gMjYzOlx0XHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI2NDpcdFxuIDI2NTpcdGNvbmZpZyBEV01BQ19TVE0zMlxuIDI2NjpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNMzIgRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDI2NzpcdFx0ZGVmYXVsdCBBUkNIX1NUTTMyXG4gMjY4Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChBUkNIX1NUTTMyIHx8IENPTVBJTEVfVEVTVClcbiAyNjk6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjcwOlx0XHRoZWxwXG4gMjcxOlx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gU1RNMzIgU09Dcy5cbiAyNzI6XHRcbiAyNzM6XHRcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAyNzQ6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xuIDI3NTpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyNzY6XHRcbiAyNzc6XHRjb25maWcgRFdNQUNfU1VOWElcbiAyNzg6XHRcdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyNzk6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDI4MDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDI4MTpcdFx0aGVscFxuIDI4MjpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgQTIwL0EzMSBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI4MzpcdFxuIDI4NDpcdFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuIDI4NTpcdFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgQTIwL0EzMVxuIDI4NjpcdFx0ICBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjg3Olx0XG4gMjg4Olx0Y29uZmlnIERXTUFDX1NVTjhJXG4gMjg5Olx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgc3VuOGkgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMjkwOlx0XHRkZWZhdWx0IEFSQ0hfU1VOWElcbiAyOTE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcbiAyOTI6XHRcdHNlbGVjdCBNRElPX0JVU19NVVhcbiAyOTM6XHRcdGhlbHBcbiAyOTQ6XHRcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEgzIEE4M1QgQTY0IEVNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMjk1Olx0XG4gMjk2Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMjk3Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxuIDI5ODpcdFx0ICBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjk5Olx0XG4gMzAwOlx0Y29uZmlnIERXTUFDX1NVTjU1SVxuIDMwMTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjU1aSBHTUFDMjAwIHN1cHBvcnRcJiMzNDtcbiAzMDI6XHRcdGRlZmF1bHQgQVJDSF9TVU5YSVxuIDMwMzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxuIDMwNDpcdFx0c2VsZWN0IE1ESU9fQlVTX01VWFxuIDMwNTpcdFx0aGVscFxuIDMwNjpcdFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgQTUyMy9UNTI3IEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMzA3Olx0XG4gMzA4Olx0XHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMzA5Olx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcbiAzMTA6XHRcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxuIDMxMTpcdFxuIDMxMjpcdGNvbmZpZyBEV01BQ19USEVBRFxuIDMxMzpcdFx0dHJpc3RhdGUgXCYjMzQ7VC1IRUFEIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMTQ6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVClcbiAzMTU6XHRcdGhlbHBcbiAzMTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gVC1IRUFEIFJJU0MtViBTb0NzXG4gMzE3Olx0XG4gMzE4Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgVC1IRUFEIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAzMTk6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBULUhFQUQgVEgxNTIwXG4gMzIwOlx0XHQgIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzQwCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBLY29uZmlnIGZpbGUsIHBpY2tpbmcgdXAgd2hlcmUgd2UgbGVmdCBvZmYuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBkZWZpbmVkIGluIHRoZSByZW1haW5pbmcgbGluZXMsIGZyb20gbGluZSAzMjEgb253YXJkLiBUaGlzIHNlY3Rpb24gaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgc2NvcGUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgdWx0aW1hdGVseSwgaG93IHRoaXMgcGFydGljdWxhciBtb2R1bGUgb3IgZmVhdHVyZSBpcyBnb3Zlcm5lZC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWNzLCB0aGUgdW5kZXJseWluZyBsb2dpYywgYW5kIHRoZSByZWxhdGlvbnNoaXBzIHRoYXQgZXhpc3Qgd2l0aGluIHRoaXMgc3RydWN0dXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyB3ZSBjYW4gdW5lYXJ0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzIxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzMjE6XHRcbiAzMjI6XHRjb25maWcgRFdNQUNfSU1YOFxuIDMyMzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIElNWDggRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDMyNDpcdFx0ZGVmYXVsdCBBUkNIX01YQ1xuIDMyNTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVClcbiAzMjY6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMzI3Olx0XHRoZWxwXG4gMzI4Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIGkuTVg4IFNPQ3MuXG4gMzI5Olx0XG4gMzMwOlx0XHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDMzMTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxuIDMzMjpcdFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMzMzOlx0XG4gMzM0Olx0Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcbiAzMzU6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAzMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IENPTU1PTl9DTEtcbiAzMzc6XHRcdGhlbHBcbiAzMzg6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gSW50ZWwgU29Dc1xuIDMzOTpcdFxuIDM0MDpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAzNDE6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcbiAzNDI6XHRcdCAgU29DLlxuIDM0MzpcdFxuIDM0NDpcdGNvbmZpZyBEV01BQ19MT09OR1NPTjFcbiAzNDU6XHRcdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uMSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAzNDY6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXG4gMzQ3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoTUFDSF9MT09OR1NPTjMyIHx8IENPTVBJTEVfVEVTVClcbiAzNDg6XHRcdGhlbHBcbiAzNDk6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3NvbjEgU29DLlxuIDM1MDpcdFxuIDM1MTpcdFx0ICBUaGlzIHNlbGVjdHMgTG9vbmdzb24xIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAzNTI6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTG9vbmdzb24xLWJhc2VkIGJvYXJkc1xuIDM1MzpcdFx0ICBsaWtlIExvb25nc29uIExTMUIvTFMxQy5cbiAzNTQ6XHRcbiAzNTU6XHRjb25maWcgRFdNQUNfVEVHUkFcbiAzNTY6XHRcdHRyaXN0YXRlIFwmIzM0O05WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcJiMzNDtcbiAzNTc6XHRcdGRlcGVuZHMgb24gQVJDSF9URUdSQSB8fCBDT01QSUxFX1RFU1RcbiAzNTg6XHRcdGhlbHBcbiAzNTk6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBNdWx0aS1HaWdhQml0IEV0aGVybmV0IChNR0JFKSBDb250cm9sbGVyIHRoYXQgaXNcbiAzNjA6XHRcdCAgZm91bmQgb24gdGhlIE5WSURJQSBUZWdyYSBTb0MgZGV2aWNlcy4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgdGhlIGdsdWVcbiAzNjE6XHRcdCAgbGF5ZXIgb24gdG9wIG9mIHRoZSBzdG1tYWMgZHJpdmVyIHJlcXVpcmVkIGZvciB0aGVzZSBOVklESUEgVGVncmEgU29DXG4gMzYyOlx0XHQgIGRldmljZXMuXG4gMzYzOlx0XG4gMzY0Olx0Y29uZmlnIERXTUFDX1ZJU0NPTlRJXG4gMzY1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUb3NoaWJhIFZpc2NvbnRpIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzNjY6XHRcdGRlZmF1bHQgQVJDSF9WSVNDT05USVxuIDM2NzpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMSyBcdTAwMjZcdTAwMjYgKEFSQ0hfVklTQ09OVEkgfHwgQ09NUElMRV9URVNUKVxuIDM2ODpcdFx0aGVscFxuIDM2OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFZpc2NvbnRpIFNvQ3MuXG4gMzcwOlx0XG4gMzcxOlx0ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbiAzNzI6XHRcbiAzNzM6XHRjb25maWcgU1RNTUFDX0xJQlBDSVxuIDM3NDpcdFx0dHJpc3RhdGVcbiAzNzU6XHRcdGhlbHBcbiAzNzY6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgUENJIGJ1cyBoZWxwZXJzIGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAzNzc6XHRcbiAzNzg6XHRjb25maWcgRFdNQUNfSU5URUxcbiAzNzk6XHRcdHRyaXN0YXRlIFwmIzM0O0ludGVsIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDM4MDpcdFx0ZGVmYXVsdCBYODZcbiAzODE6XHRcdGRlcGVuZHMgb24gWDg2IFx1MDAyNlx1MDAyNiBQQ0lcbiAzODI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBBQ1BJXG4gMzg0Olx0XHRoZWxwXG4gMzg1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxuIDM4NjpcdFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxuIDM4NzpcdFxuIDM4ODpcdGNvbmZpZyBEV01BQ19MT09OR1NPTlxuIDM4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAzOTA6XHRcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XG4gMzkxOlx0XHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcdTAwMjZcdTAwMjYgUENJXG4gMzkyOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiAzOTM6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gMzk0Olx0XHRoZWxwXG4gMzk1Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcbiAzOTY6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXG4gMzk3Olx0XG4gMzk4Olx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuIDM5OTpcdFx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gNDAwOlx0XHRkZXBlbmRzIG9uIFBDSVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTczMAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDQwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbnZlc3RpZ2F0aW9uIGludG8gUUVNVSBhbmQgRFdNQUMvU1RNTUFDIEVtdWxhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIGVtdWxhdGUgRFdNQUMgKERlc2lnbldhcmUgTUFDKSBvciBTVE1NQUMgKFNUTWljcm9lbGVjdHJvbmljcyBNQUMpIGV0aGVybmV0IGNvbnRyb2xsZXJzIHdpdGhpbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBlbnZpcm9ubWVudHMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIGxpc3Qgb3V0IHNvbWUgRFdNQUMgaW1wbGVtZW50YXRpb25zIEkmIzM5O20gYXdhcmUgb2Y6IGBEV01BQ19JTlRFTGAsIGBEV01BQ19MT09OR1NPTmAsIGV0Yy4gSnVzdCBjYXRhbG9naW5nIGtub3duIGltcGxlbWVudGF0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBzY29wZS4KCk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpcyBjZW50ZXJlZCBhcm91bmQgUUVNVSB2aXJ0dWFsaXphdGlvbi4gRG9lcyB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZXZlbiBHQ0UsIHByb3ZpZGUgdmlydHVhbGl6ZWQgZW11bGF0aW9uIGZvciBEV01BQyBvciBTVE1NQUM/IEkgbmVlZCB0byBrbm93IGlmIHRoZSBkZXZpY2VzIGV4aXN0IGluIHRoZSB2aXJ0dWFsIHdvcmxkLiBPa2F5LCB3YWl0LCB3aGF0ICpkb2VzKiBRRU1VIGVtdWxhdGU/IEkgcXVpY2tseSByZWNhbGwgY29tbW9uIHZpcnR1YWxpemVkIG5ldHdvcmsgZGV2aWNlczogZTEwMDAsIGlnYiwgdmlydGlvLW5ldCwgdGhlIHVzdWFsIHN1c3BlY3RzLiBCdXQsIGRvIGFueSBvZiB0aGVzZSBjb3ZlciB3aGF0IEkgbmVlZD8gTm8sIHRoYXQmIzM5O3Mgbm90IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvci4KCkEgc3BlY2lmaWMgcXVlc3Rpb24gaXMgc3VyZmFjaW5nOiBkb2VzIFFFTVUgZW11bGF0ZSBTVE1NQUMgb3IgRFdNQUM/IEkgbmVlZCB0byBjaGVjay4gRGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgcmVtZW1iZXIgdGhhdCBRRU1VIG1pZ2h0IGVtdWxhdGUgZHdtYWMgb24gc29tZSBBUk0gU29DIG1hY2hpbmVzLCBidXQgd2hhdCBhYm91dCBhbWQ2NCAoeDg2KT8gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBxdWVzdGlvbi4gSXQgc2VlbXMgbGlrZSBpdCYjMzk7cyB1bmxpa2VseSBmb3IgeDg2LgoKTm93LCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgcnVsZXMuIFRoaXMgdGFrZXMgbWUgdG8gU2VjdGlvbiAyLCB3aGljaCBvdXRsaW5lcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEkmIzM5O20gZm9jdXNpbmcgb24gdGhhdCBsaXN0OiAmIzM0O1ZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uJiMzNDsgZGV2aWNlcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCBzdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUuIFRoaXMgaXMgY3JpdGljYWwuIERvZXMgU1RNTUFDIGZhbGwgaW50byB0aGlzIGNhdGVnb3J5PwoKSSBuZWVkIHRvIGNhcmVmdWxseSBldmFsdWF0ZTogaXMgU1RNTUFDICpzdHJ1Y3R1cmFsbHkqIHVucmVhY2hhYmxlPyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0IGNhbiBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCB2aXJ0dWFsIGJ1c2VzIChsaWtlIHZpcnRpbykgb3IgaWYgaXQgcmVsaWVzICpvbmx5KiBvbiBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZ2V0IHRvIGl0IHRocm91Z2ggYSBkdW1teSBvciBVU0IgcGF0aC4gU28sIGFyZSB0aGVyZSBhbnkgVVNCIG9yIHZpcnR1YWwgZGV2aWNlcyB0aGF0IHVzZSBTVE1NQUM/IEkgbXVzdCBjaGVjay4KClRoZSBmaW5hbCBzdGVwIGluIHRoaXMgcHJvY2VzcyBpcyB0byBkbyBhIGRldGFpbGVkIHNlYXJjaCB1c2luZyBgZ3JlcGAgd2l0aGluIHRoZSBrZXJuZWwgdHJlZSB0byBzZWUgd2hlcmUgU1RNTUFDIGlzIHVzZWQgYW5kIGhvdy4gSSBjYW4gZmluZCBhbiBhbnN3ZXIgdGhpcyB3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTA4MzIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICYjNDM7PSBzdG1tYWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzpzdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNC1cdCAgICAgIGNoYWluX21vZGUubyBkd21hY19saWIubyBkd21hYzEwMDBfY29yZS5vIGR3bWFjMTAwMF9kbWEub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUtXHQgICAgICBkd21hYzEwMF9jb3JlLm8gZHdtYWMxMDBfZG1hLm8gZW5oX2Rlc2MubyBub3JtX2Rlc2Mub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjY6XHQgICAgICBtbWNfY29yZS5vIHN0bW1hY19od3RzdGFtcC5vIHN0bW1hY19wdHAubyBkd21hYzRfZGVzY3Mub1x0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTctXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo4Olx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjk6XHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxMDpcdCAgICAgIHN0bW1hY19wY3MubyAkKHN0bW1hYy15KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxMjpzdG1tYWMtJChDT05GSUdfU1RNTUFDX1NFTEZURVNUUykgJiM0Mzs9IHN0bW1hY19zZWxmdGVzdHMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDU9b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVx0JiM0Mzs9IGR3bWFjLXZpc2NvbnRpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ2OnN0bW1hYy1wbGF0Zm9ybS1vYmpzOj0gc3RtbWFjX3BsYXRmb3JtLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQ3LWR3bWFjLWFsdHItc29jZnBnYS1vYmpzIDo9IGR3bWFjLXNvY2ZwZ2Eub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0OTpvYmotJChDT05GSUdfU1RNTUFDX0xJQlBDSSlcdCYjNDM7PSBzdG1tYWNfbGlicGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUwLW9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXHQmIzQzOz0gZHdtYWMtbW90b3Jjb21tLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0xNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzoxNzpzdGF0aWMgaW50IGp1bWJvX2ZybShzdHJ1Y3Qgc3RtbWFjX3R4X3F1ZXVlICp0eF9xLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE4LVx0XHQgICAgIGludCBjc3VtKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0yMC1cdHVuc2lnbmVkIGludCBub3BhZ2VkX2xlbiA9IHNrYl9oZWFkbGVuKHNrYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MjE6XHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSB0eF9xLVx1MDAzZXByaXZfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0yMi1cdHVuc2lnbmVkIGludCBlbnRyeSA9IHR4X3EtXHUwMDNlY3VyX3R4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy00NS1cdC8qIGRvIG5vdCBjbG9zZSB0aGUgZGVzY3JpcHRvciBhbmQgZG8gbm90IHNldCBvd24gYml0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6NDY6XHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDEsIGJ1Zl9sZW4sIGNzdW0sIFNUTU1BQ19DSEFJTl9NT0RFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTQ3LVx0XHRcdDAsIGZhbHNlLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNjItXHRcdFx0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBibWF4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjYzOlx0XHRcdHN0bW1hY19wcmVwYXJlX3R4X2Rlc2MocHJpdiwgZGVzYywgMCwgYm1heCwgY3N1bSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02NC1cdFx0XHRcdFx0U1RNTUFDX0NIQUlOX01PREUsIDEsIGZhbHNlLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNzYtXHRcdFx0LyogbGFzdCBkZXNjcmlwdG9yIGNhbiBiZSBzZXQgbm93ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6Nzc6XHRcdFx0c3RtbWFjX3ByZXBhcmVfdHhfZGVzYyhwcml2LCBkZXNjLCAwLCBsZW4sIGNzdW0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNzgtXHRcdFx0XHRcdFNUTU1BQ19DSEFJTl9NT0RFLCAxLCB0cnVlLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM9OTk9c3RhdGljIHZvaWQgaW5pdF9kbWFfY2hhaW4odm9pZCAqZGVzLCBkbWFfYWRkcl90IHBoeV9hZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0xMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTI5OnN0YXRpYyB2b2lkIHJlZmlsbF9kZXNjMyhzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xLCBzdHJ1Y3QgZG1hX2Rlc2MgKnApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTMwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzoxMzE6XHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSByeF9xLVx1MDAzZXByaXZfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0xMzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzoxNDQ6c3RhdGljIHZvaWQgY2xlYW5fZGVzYzMoc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSwgc3RydWN0IGRtYV9kZXNjICpwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE0NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTQ2Olx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gdHhfcS1cdTAwM2Vwcml2X2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTQ3LVx0dW5zaWduZWQgaW50IGVudHJ5ID0gdHhfcS1cdTAwM2VkaXJ0eV90eDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjE2MTpjb25zdCBzdHJ1Y3Qgc3RtbWFjX21vZGVfb3BzIGNoYWluX21vZGVfb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE2Mi1cdC5pbml0ID0gaW5pdF9kbWFfY2hhaW4sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTcwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NzE6c3RydWN0IHN0bW1hY19xX3R4X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTcyLVx0dTY0X3N0YXRzX3QgdHhfYnl0ZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo3ODpzdHJ1Y3Qgc3RtbWFjX25hcGlfdHhfc3RhdHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNzktXHR1NjRfc3RhdHNfdCB0eF9wYWNrZXRzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6ODY6c3RydWN0IHN0bW1hY190eHFfc3RhdHMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtODctXHQvKiBVcGRhdGVzIHByb3RlY3RlZCBieSB0eCBxdWV1ZSBsb2NrLiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtODgtXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgcV9zeW5jcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjg5Olx0c3RydWN0IHN0bW1hY19xX3R4X3N0YXRzIHE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC05MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC05Mi1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBuYXBpX3N5bmNwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6OTM6XHRzdHJ1Y3Qgc3RtbWFjX25hcGlfdHhfc3RhdHMgbmFwaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTk0LX0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTk1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6OTY6c3RydWN0IHN0bW1hY19uYXBpX3J4X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTk3LVx0dTY0X3N0YXRzX3QgcnhfYnl0ZXM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMTAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MTAzOnN0cnVjdCBzdG1tYWNfcnhxX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwNC1cdC8qIFVwZGF0ZXMgcHJvdGVjdGVkIGJ5IE5BUEkgcG9sbCBsb2dpYy4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwNS1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBuYXBpX3N5bmNwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MTA2Olx0c3RydWN0IHN0bW1hY19uYXBpX3J4X3N0YXRzIG5hcGk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMDctfSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwOS0vKiBVcGRhdGVzIG9uIGVhY2ggQ1BVIHByb3RlY3RlZCBieSBub3QgYWxsb3dpbmcgbmVzdGVkIGlycXMuICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoxMTA6c3RydWN0IHN0bW1hY19wY3B1X3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTExMS1cdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMTYtLyogRXh0cmEgc3RhdGlzdGljIGFuZCBkZWJ1ZyBpbmZvcm1hdGlvbiBleHBvc2VkIGJ5IGV0aHRvb2wgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjExNzpzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTExOC1cdC8qIFRyYW5zbWl0IGVycm9ycyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTIzNy1cdC8qIHBlciBxdWV1ZSBzdGF0aXN0aWNzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyMzg6XHRzdHJ1Y3Qgc3RtbWFjX3R4cV9zdGF0cyB0eHFfc3RhdHNbTVRMX01BWF9UWF9RVUVVRVNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjM5Olx0c3RydWN0IHN0bW1hY19yeHFfc3RhdHMgcnhxX3N0YXRzW01UTF9NQVhfUlhfUVVFVUVTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjI0MDpcdHN0cnVjdCBzdG1tYWNfcGNwdV9zdGF0cyBfX3BlcmNwdSAqcGNwdV9zdGF0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI0MS1cdHVuc2lnbmVkIGxvbmcgcnhfZHJvcHBlZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNDctLyogU2FmZXR5IEZlYXR1cmUgc3RhdGlzdGljcyBleHBvc2VkIGJ5IGV0aHRvb2wgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjI0ODpzdHJ1Y3Qgc3RtbWFjX3NhZmV0eV9zdGF0cyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNDktXHR1bnNpZ25lZCBsb25nIG1hY19lcnJvcnNbMzJdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI1Ni0jZGVmaW5lIFNUTU1BQ19TQUZFVFlfRkVBVF9TSVpFXHRcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjU3Olx0KHNpemVvZihzdHJ1Y3Qgc3RtbWFjX3NhZmV0eV9zdGF0cykgLyBzaXplb2YodW5zaWduZWQgbG9uZykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDE2PXN0cnVjdCBkbWFfZmVhdHVyZXMge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU2NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjU2NTp2b2lkIHN0bW1hY19heGlfYmxlbl90b19tYXNrKHUzMiAqcmVndmFsLCBjb25zdCB1MzIgKmJsZW4sIHNpemVfdCBsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTYxMz1zdHJ1Y3QgbWFjX2RldmljZV9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYxNDpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzICptYWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2MTU6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2Rlc2Nfb3BzICpkZXNjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19kbWFfb3BzICpkbWE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2MTc6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX21vZGVfb3BzICptb2RlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE4Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19od3RpbWVzdGFtcCAqcHRwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE5Olx0Y29uc3Qgc3RydWN0IHN0bW1hY190Y19vcHMgKnRjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjIwOlx0Y29uc3Qgc3RydWN0IHN0bW1hY19tbWNfb3BzICptbWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2MjE6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2VzdF9vcHMgKmVzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYyMjpcdGNvbnN0IHN0cnVjdCBzdG1tYWNfdmxhbl9vcHMgKnZsYW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02MjMtXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NDU6c3RydWN0IHN0bW1hY19yeF9yb3V0aW5nIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY0Ni1cdHUzMiByZWdfbWFzaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTA6aW50IGR3bWFjMTAwX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTE6aW50IGR3bWFjMTAwMF9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjUyOmludCBkd21hYzRfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MzppbnQgZHd4Z21hYzJfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1NDppbnQgZHd4bGdtYWMyX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTY6dm9pZCBzdG1tYWNfc2V0X21hY19hZGRyKHZvaWQgX19pb21lbSAqaW9hZGRyLCBjb25zdCB1OCBhZGRyWzZdLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjU3LVx0XHRcdCB1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTg6dm9pZCBzdG1tYWNfZ2V0X21hY19hZGRyKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1bnNpZ25lZCBjaGFyICphZGRyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjU5LVx0XHRcdCB1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjA6dm9pZCBzdG1tYWNfc2V0X21hYyh2b2lkIF9faW9tZW0gKmlvYWRkciwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjYyOnZvaWQgc3RtbWFjX2R3bWFjNF9zZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIGNvbnN0IHU4IGFkZHJbNl0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjMtXHRcdFx0XHR1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjQ6dm9pZCBzdG1tYWNfZHdtYWM0X2dldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgdW5zaWduZWQgY2hhciAqYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2NS1cdFx0XHRcdHVuc2lnbmVkIGludCBoaWdoLCB1bnNpZ25lZCBpbnQgbG93KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2Njp2b2lkIHN0bW1hY19kd21hYzRfc2V0X21hYyh2b2lkIF9faW9tZW0gKmlvYWRkciwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjY3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xNC0jaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjE1OiNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTkzPXN0YXRpYyBpbnQgYW5hcmlvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05Ny1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6OTg6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEwMDpcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEwMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMDQ6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTA1LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTExNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMTY6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTExNy19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTEyNT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhbmFyaW9uX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI4LVx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDthbmFyaW9uLWR3bWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyOTpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzAtXHRcdC5vZl9tYXRjaF90YWJsZSA9IGFuYXJpb25fZHdtYWNfbWF0Y2gsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjQ6I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3BsYXRmb3JtLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjUtI2luY2x1ZGUgXCYjMzQ7ZHdtYWM0LmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM2PXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTQzLVx0XHRwbGF0X2RhdC1cdTAwM2VheGkgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjQ0Olx0XHRcdFx0XHQgICAgIHNpemVvZihzdHJ1Y3Qgc3RtbWFjX2F4aSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTQ1LVx0XHRcdFx0XHQgICAgIEdGUF9LRVJORUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9OTY9c3RhdGljIGludCBkd2NfcW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk3LVx0XHRcdCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzo5ODpcdFx0XHQgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnN0bW1hY19yZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MTAwOlx0cGxhdF9kYXQtXHUwMDNlcGNsayA9IHN0bW1hY19wbHRmcl9maW5kX2NsayhwbGF0X2RhdCwgXCYjMzQ7cGh5X3JlZl9jbGtcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xMDEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0xMTU9c3RhdGljIHZvaWQgdGVncmFfZXFvc19maXhfc3BlZWQodm9pZCAqYnNwX3ByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xMTktXHRib29sIG5lZWRzX2NhbGlicmF0aW9uID0gZmFsc2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjEyMDpcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTIxLVx0dTMyIHZhbHVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTQxLVx0XHQvKiBDYWxpYnJhdGlvbiBzaG91bGQgYmUgZG9uZSB3aXRoIHRoZSBNRElPIGJ1cyBpZGxlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjE0MjpcdFx0c3RtbWFjX21kaW9fbG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTQzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoxNzg6XHRcdHN0bW1hY19tZGlvX3VubG9jayhwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTc5LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTE4Nj1zdGF0aWMgaW50IHRlZ3JhX2Vxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTg3LVx0XHRcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoxODg6XHRcdFx0ICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTE4OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yMDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjIwNDpcdHBsYXRfZGF0LVx1MDAzZWNsa190eF9pID0gc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHBsYXRfZGF0LCBcJiMzNDt0eFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTIwNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTIzNy1cdHBsYXRfZGF0LVx1MDAzZWZpeF9tYWNfc3BlZWQgPSB0ZWdyYV9lcW9zX2ZpeF9zcGVlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjM4Olx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjM5LVx0cGxhdF9kYXQtXHUwMDNlYnNwX3ByaXYgPSBlcW9zO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjUyPXN0YXRpYyB2b2lkIHRlZ3JhX2Vxb3NfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI1My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI1NDpcdHN0cnVjdCB0ZWdyYV9lcW9zICplcW9zID0gZ2V0X3N0bW1hY19ic3BfcHJpdihcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI1NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI2MD1zdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2Mi1cdFx0ICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNjM6XHRcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2NC1cdHZvaWQgKCpyZW1vdmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNjU6XHRjb25zdCBjaGFyICpzdG1tYWNfY2xrX25hbWU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2Ni19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIGR3Y19xb3NfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY5LVx0LnByb2JlID0gZHdjX3Fvc19wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjcwOlx0LnN0bW1hY19jbGtfbmFtZSA9IFwmIzM0O2FwYl9wY2xrXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzEtfTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGR3Y19ldGhfZHdtYWNfZGF0YSB0ZWdyYV9lcW9zX2RhdGEgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzUtXHQucmVtb3ZlID0gdGVncmFfZXFvc19yZW1vdmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI3NjpcdC5zdG1tYWNfY2xrX25hbWUgPSBcJiMzNDtzbGF2ZV9idXNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI3Ny19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9Mjc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIGZzZF9lcW9zX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI4MDpcdC5zdG1tYWNfY2xrX25hbWUgPSBcJiMzNDtzbGF2ZV9idXNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4MS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg2LVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6Mjg3Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg4LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjkyOlx0bWVtc2V0KFx1MDAyNnN0bW1hY19yZXMsIDAsIHNpemVvZihzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcykpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5NC1cdC8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyOTU6XHQgKiBTaW5jZSBzdG1tYWNfcGxhdGZvcm0gc3VwcG9ydHMgbmFtZSBJUlEgb25seSwgYmFzaWMgcGxhdGZvcm1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjk2LVx0ICogcmVzb3VyY2UgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSBpbiB0aGUgZ2x1ZSBsb2dpYy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjk3LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI5ODpcdHN0bW1hY19yZXMuaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6Mjk5Olx0aWYgKHN0bW1hY19yZXMuaXJxIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDA6XHRcdHJldHVybiBzdG1tYWNfcmVzLmlycTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzAxOlx0c3RtbWFjX3Jlcy53b2xfaXJxID0gc3RtbWFjX3Jlcy5pcnE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzAzOlx0c3RtbWFjX3Jlcy5hZGRyID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDQ6XHRpZiAoSVNfRVJSKHN0bW1hY19yZXMuYWRkcikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMwNTpcdFx0cmV0dXJuIFBUUl9FUlIoc3RtbWFjX3Jlcy5hZGRyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDc6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwOC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMTY6XHRwbGF0X2RhdC1cdTAwM2VzdG1tYWNfY2xrID0gc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMTc6XHRcdFx0XHRcdFx0ICAgICBkYXRhLVx1MDAzZXN0bW1hY19jbGtfbmFtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzE5LVx0aWYgKGRhdGEtXHUwMDNlcHJvYmUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMyMDpcdFx0cmV0ID0gZGF0YS1cdTAwM2Vwcm9iZShwZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyMS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzMwOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzQzPXN0YXRpYyB2b2lkIGR3Y19ldGhfZHdtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM0NzpcdHN0bW1hY19kdnJfcmVtb3ZlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY1LVx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtkd2MtZXRoLWR3bWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNjY6XHRcdC5wbSAgICAgICAgICAgICA9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2Ny1cdFx0Lm9mX21hdGNoX3RhYmxlID0gZHdjX2V0aF9kd21hY19tYXRjaCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MjA6I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3BsYXRmb3JtLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0yMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTY3PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xNzAtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE3MTpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTcyLVx0c3RydWN0IGVpYzc3MDBfcW9zX3ByaXYgKmR3Y19wcml2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTc2Olx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTc3LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE4MTpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xODItXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjMyNDpcdHBsYXRfZGF0LVx1MDAzZWNsa190eF9pID0gc3RtbWFjX3BsdGZyX2ZpbmRfY2xrKHBsYXRfZGF0LCBcJiMzNDt0eFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MzI1Olx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zMjYtXHRwbGF0X2RhdC1cdTAwM2VjbGtzX2NvbmZpZyA9IGVpYzc3MDBfY2xrc19jb25maWc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTMzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozMzU6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTMzNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jPTM2Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBlaWM3NzAwX2R3bWFjX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzY1LVx0XHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtlaWM3NzAwLWV0aC1kd21hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNjY6XHRcdC5wbSAgICAgICAgICAgICA9IFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzY3LVx0XHQub2ZfbWF0Y2hfdGFibGUgPSBlaWM3NzAwX2R3bWFjX21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0xNi0jaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjE3OiNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9MTk9c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTIxLVx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzoyMjpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjMtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjI1Olx0cmV0ID0gc3RtbWFjX2dldF9wbGF0Zm9ybV9yZXNvdXJjZXMocGRldiwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0yOS1cdGlmIChwZGV2LVx1MDAzZWRldi5vZl9ub2RlKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MzA6XHRcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0zMS1cdFx0aWYgKElTX0VSUihwbGF0X2RhdCkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6NDk6XHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTUwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9Njk9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHdtYWNfZ2VuZXJpY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTcyLVx0XHQubmFtZSAgICAgICAgICAgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3MzpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03NC1cdFx0Lm9mX21hdGNoX3RhYmxlID0gZHdtYWNfZ2VuZXJpY19tYXRjaCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIzOiNpbmNsdWRlIFwmIzM0O3N0bW1hY19wbGF0Zm9ybS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz00ND1zdHJ1Y3QgaW14X2R3bWFjX29wcyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo0OTpcdGludCAoKmZpeF9zb2NfcmVzZXQpKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy01MC1cdGludCAoKnNldF9pbnRmX21vZGUpKHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYywgdTggcGh5X2ludGZfc2VsKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0xNTQ9c3RhdGljIGludCBpbXhfZHdtYWNfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2LCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNjE6XHRyZXR1cm4gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZShic3BfcHJpdiwgY2xrX3R4X2ksIGludGVyZmFjZSwgc3BlZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMTYyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0xOTA9c3RhdGljIHZvaWQgaW14OTNfZHdtYWNfZml4X3NwZWVkKHZvaWQgKnByaXYsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjI5OnN0YXRpYyBpbnQgaW14X2R3bWFjX214OTNfcmVzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjMwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0yOTM9c3RhdGljIGludCBpbXhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTUtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mjk2Olx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI5Ny1cdHN0cnVjdCBpbXhfcHJpdl9kYXRhICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozMDE6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTMwMi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA5Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzEwLVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzM4LVx0ZHdtYWMtXHUwMDNlcGxhdF9kYXQgPSBwbGF0X2RhdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMzOTpcdGR3bWFjLVx1MDAzZWJhc2VfYWRkciA9IHN0bW1hY19yZXMuYWRkcjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM0MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozNTQ6XHRyZXQgPSBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzU1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zOTI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW14X2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5My1cdC5wcm9iZSAgPSBpbXhfZHdtYWNfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTQ6XHQucmVtb3ZlID0gc3RtbWFjX3BsdGZyX3JlbW92ZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5NS1cdC5kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTYtXHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O2lteC1kd21hY1wmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM5NzpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5OC1cdFx0Lm9mX21hdGNoX3RhYmxlID0gaW14X2R3bWFjX21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyMTojaW5jbHVkZSBcJiMzNDtzdG1tYWNfcGxhdGZvcm0uaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYz0xNTQ9c3RhdGljIGludCBpbmdlbmljX21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNTYtXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjE1NzpcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTU4LVx0c3RydWN0IGluZ2VuaWNfbWFjICptYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjM6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MTY3Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2OC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjE1Olx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMTYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYz0yNzI9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW5nZW5pY19tYWNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzUtXHRcdC5uYW1lXHQ9IFwmIzM0O2luZ2VuaWMtbWFjXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI3NjpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzctXHRcdC5vZl9tYXRjaF90YWJsZSA9IGluZ2VuaWNfbWFjX29mX21hdGNoZXMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTE1LSNpbmNsdWRlIFwmIzM0O3N0bW1hYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTY6I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3BsYXRmb3JtLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy00NC1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NDU6XHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQ2LVx0c3RydWN0IGludGVsX2R3bWFjICpkd21hYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NTA6XHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy01MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjU0Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTU1LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE0LVx0cGxhdF9kYXQtXHUwMDNlY2xrX3R4X2kgPSBkd21hYy1cdTAwM2V0eF9jbGs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTE1Olx0cGxhdF9kYXQtXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTYtXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IGR3bWFjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTMyOlx0c3RydWN0IGludGVsX2R3bWFjICpkd21hYyA9IGdldF9zdG1tYWNfYnNwX3ByaXYoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMzQ6XHRzdG1tYWNfcGx0ZnJfcmVtb3ZlKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzNS1cdGlmIChkd21hYy1cdTAwM2VkYXRhLVx1MDAzZXR4X2Nsa19lbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTM5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsX2V0aF9wbGF0X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQzLVx0XHQubmFtZVx0XHQ9IFwmIzM0O2ludGVsLWV0aC1wbGF0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjE0NDpcdFx0LnBtXHRcdD0gXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDUtXHRcdC5vZl9tYXRjaF90YWJsZSA9IGludGVsX2V0aF9wbGF0X21hdGNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTItI2luY2x1ZGUgXCYjMzQ7c3RtbWFjLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM6I2luY2x1ZGUgXCYjMzQ7c3RtbWFjX3B0cC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MjU9c3RydWN0IGludGVsX3ByaXZfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA6c3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXHR1bnNpZ25lZCBpbnQgZnVuYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cdHNpemVfdCBuZnVuY3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODA1NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIGBzdG1tYWNgIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBzdG1tYWNgLCB0aGUgRXRoZXJuZXQgZHJpdmVyIGZvciBhIGJ1bmNoIG9mIGRpZmZlcmVudCBTeXN0ZW1zIG9uIGEgQ2hpcCAoU29Dcyk6IEFsbHdpbm5lciwgU1RpLCBBbWxvZ2ljLCBJbnRlbCBRdWFyay9FSEwvVEdMLCBOWFAgaS5NWDgsIExvb25nc29uLCB5b3UgbmFtZSBpdC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgdGhpbmcgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLCBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSBvciBRRU1VIG9uIHg4Nl82ND8gVGhhdCYjMzk7cyB0aGUgZmlyc3QgaHVyZGxlLCBhcyBwZXIgbXkgdXN1YWwgdHJpYWdlIGFwcHJvYWNoLgoKTGV0JiMzOTtzIHF1aWNrbHkgcmVjYXAgbXkgY29yZSBjcml0ZXJpYS4gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlIGlzIGEgbm8tZ28sIHJpZ2h0PyBUaGluayB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBvciBgYW1kZ3B1YC4gVGhlc2UgbmVlZCBwaHlzaWNhbCBjYXJkcywgd2hpY2ggb2J2aW91c2x5IGFyZW4mIzM5O3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gUmVhY2hhYmlsaXR5IGlzIGtleS4gSSBjYW4gb25seSBleHBlY3QgdG8gZmluZCBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgKmV4ZWN1dGUqIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgb3IgdHVuL3RhcC4gQW55IG1vZGlmaWNhdGlvbnMgdG8gc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGNvZGUsIGV2ZW4gd2l0aCBhZGRlZCBhc3NlcnRpb25zLCBhcmUgY29tcGxldGVseSBvZmYgdGhlIHRhYmxlLgoKTm93LCBiYWNrIHRvIGBzdG1tYWNgLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBvciBJbnRlbCBQQ0kgZHdtYWMsIExvb25nc29uIFBDSSBkd21hYyBhbmQgdGhlIGxpa2UuIFNvLCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogYXJlIHRoZXJlIHZpcnR1YWwgb3IgZW11bGF0ZWQgaW5zdGFuY2VzIG9mIGBzdG1tYWNgIHRoYXQgSSBjYW4gdXNlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCBvbiB4ODYvYW1kNjQ/IFRoZSBhbnN3ZXIgaXMuLi5uby4gUUVNVSBmb3IgeDg2L2FtZDY0IGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDICh0aGF0JiMzOTtzIGBzdG1tYWNgKSwgYW5kIEkgc2hvdWxkIG5vdGUgdGhhdCBpdCBvbmx5IGVtdWxhdGVzIHRoaW5ncyBsaWtlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgZWVwcm8xMDAsIHN1bmdlbSwgdHVsaXAsIHZteG5ldDMsIGlnYiwgdmlydGlvLW5ldCwgZXRjLgoKU28sIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHNvbWVob3cgcHJvYmUgb3IgaW5zdGFudGlhdGUgYHN0bW1hY2Agd2l0aG91dCByZWFsIGhhcmR3YXJlIG9yIGEgZGV2aWNldHJlZSBvbiBhbiBhY3R1YWwgU29DLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBsb2FkIGl0IG9yIHRlc3QgaXQgaW4gYW4gaXNvbGF0ZWQgbWFubmVyLiBMZXQmIzM5O3MgbG9vayBhdCBgc3RtbWFjX3htaXRgLiBUaGF0JiMzOTtzIHRoZSBgbmRvX3N0YXJ0X3htaXRgIGZ1bmN0aW9uIGZyb20gYHN0bW1hY19tYWluLmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGF0JiMzOTtzIGNhbGxlZCBvciByZWdpc3RlcmVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3htaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00NzQ1PXN0YXRpYyBib29sIHN0bW1hY19oYXNfaXBfZXRoZXJ0eXBlKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00NzU3LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0NzU4OiAqICBzdG1tYWNfeG1pdCAtIFR4IGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDc1OS0gKiAgQHNrYiA6IHRoZSBzb2NrZXQgYnVmZmVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00NzY0LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0NzY1OnN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00NzY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMzI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMzMy1cdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzM0Olx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMzUtXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYyNgoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiAxNzUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGBzdG1tYWNfeG1pdGAgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc3RtbWFjX3htaXRgLCB3aGljaCBpcyB0aGUgdHJhbnNtaXQgaGFuZGxlciBmb3IgU1RNTUFDL0RXTUFDIGV0aGVybmV0IGRldmljZXMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uLCBgc3RtbWFjX3htaXRgLCBvbmx5IGdldHMgY2FsbGVkIGlmIHRoZSBTVE1NQUMgbmV0ZGV2aWNlIGlzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkLCBvcGVuZWQsIGFuZCBwYWNrZXRzIGFyZSBiZWluZyB0cmFuc21pdHRlZCBvdmVyIGl0LiBUaGUgY3JlYXRpb24gb2Ygc3VjaCBhIG5ldGRldmljZSByZWxpZXMgb24gdGhlIGRyaXZlciBwcm9iaW5nIHN1Y2Nlc3NmdWxseS4gQW5kIGZvciB0aGUgZHJpdmVyIHRvIHByb2JlLCB0aGVyZSBuZWVkcyB0byBiZSBhIGhhcmR3YXJlIGRldmljZSBwcmVzZW50IOKAkyBzcGVjaWZpY2FsbHksIGEgcGxhdGZvcm0gZGV2aWNlIHdpdGggTU1JTyByZWdpc3RlcnMsIElSUXMsIGEgUEhZLCBvciBhIFBDSSBkZXZpY2Ugd2l0aCBtYXRjaGluZyBTVE1NQUMvRFdNQUMgUENJIElEcywgbGlrZSB0aG9zZSBmb3VuZCBpbiBJbnRlbCBFbGtoYXJ0IExha2UvVGlnZXIgTGFrZS9RdWFyayBTb0NzLiBUaGlzIGludm9sdmVzIGFjY2Vzc2luZyBoYXJkd2FyZSBNTUlPIHJlZ2lzdGVycy4KClRoZSBrZXkgaGVyZSBpcyB0aGF0IHRvIGdldCB0aGlzIGZhciwgeW91IGFic29sdXRlbHkgbmVlZCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSB2ZXJ5IHNwZWNpZmljLCBmdWxsIFFFTVUgZW11bGF0aW9uIG9mIERXTUFDLiAgU3RhbmRhcmQgUUVNVSBvbiB4ODZfNjQgZG9lc24mIzM5O3QgcHJvdmlkZSB0aGlzIGxldmVsIG9mIGVtdWxhdGlvbi4gVGh1cywgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlIGFuZCBuZXZlciByZWdpc3RlciBhIG5ldHdvcmsgaW50ZXJmYWNlLiBUaGF0IG1lYW5zIHRoZSBjb2RlIGluIGBzdG1tYWNfeG1pdGAgd2lsbCBuZXZlciBiZSBleGVjdXRlZC4KCk5vdywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIHJlZmVyZW5jZSB0aGUgdHJpYWdlIGluc3RydWN0aW9ucywgZXNwZWNpYWxseSB0aGUgJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURSYjMzQ7LiBUaGUgaW5zdHJ1Y3Rpb25zIGNsZWFybHkgc3RhdGUgdGhhdCBmdXp6aW5nIGlzIG9ubHkgdmlhYmxlIGZvciBjb2RlIHRoYXQgY2FuIHJ1biBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuICBJZiB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZSBkdWUgdG8gaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCB3ZSBzaG91bGQgbm90IGJlIGZ1enppbmcgaXQuIEFuZCBzcGVjaWZpY2FsbHkgdW5kZXIgJiMzNDtXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKSYjMzQ7LCB0aGlzIGRpcmVjdGx5IGFwcGxpZXM6IEl0JiMzOTtzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsuIFRoZSBTVE1NQUMgZHJpdmVyIGlzIHRoZSBjbGFzc2ljIGV4YW1wbGUg4oCTIGl0IG5lZWRzIHBoeXNpY2FsIEFTSUNzL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCgpJJiMzOTt2ZSBjaGVja2VkIHRoZSBkaWZmIGFuZCB0aGUgb25seSBmaWxlIG1vZGlmaWVkIGlzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gSXQmIzM5O3MgYWxsIGFib3V0IGBzdG1tYWNfeG1pdGAsIGFuZCBzcGVjaWZpY2FsbHkgY2xlYW5pbmcgdXAgRE1BIG1hcHBpbmcgZXJyb3JzLiBCdXQgc2luY2UgdGhlIHVuZGVybHlpbmcgZGV2aWNlIHdvbiYjMzk7dCBwcm9iZSwgd2UgY2FuJiMzOTt0IGdldCB0aGVyZSBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudCwgSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGVtcHR5LCBhbmQgc28gd2lsbCBgRW5hYmxlQ29uZmlnc2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVHggRE1BIG1hcHBpbmcgZXJyb3IgdW53aW5kaW5nIGxvZ2ljIGluIGBzdG1tYWNfeG1pdCgpYCB3aXRoaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlciAoYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgKS4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBTb0MvUENJIGhhcmR3YXJlIElQIGJsb2NrcyAoU1RNTUFDL0RXTUFDKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUeCBETUEgbWFwcGluZyBlcnJvciB1bndpbmRpbmcgbG9naWMgaW4gYHN0bW1hY194bWl0KClgIHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIFNvQy9QQ0kgaGFyZHdhcmUgSVAgYmxvY2tzIChTVE1NQUMvRFdNQUMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA1OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNTozNTo0MS45MzczNjYwNjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDc1MTE0NDI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFR4IERNQSBtYXBwaW5nIGVycm9yIHVud2luZGluZyBsb2dpYyBpbiBgc3RtbWFjX3htaXQoKWAgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgU29DL1BDSSBoYXJkd2FyZSBJUCBibG9ja3MgKFNUTU1BQy9EV01BQykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzU6NDEuOTM3MzcyMTQ1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI3NTAwNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNGE2YzlhYjc0YTM3ODI5ZDVkMGRiZDhhMGI4NjE5YTI3YTFiZDhkMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IFNlcCAxMCAwNTozNTo0MCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDI0NjU2YjM1MzUwYjEuLjJlMzZjMjdlMmNmYjQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtNDc2OSwxMiArNDc2OSwxMiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcXG4gXFx0dTMyIHF1ZXVlID0gc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYik7XFxuIFxcdGludCBuZnJhZ3MgPSBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZW5yX2ZyYWdzO1xcbi1cXHR1bnNpZ25lZCBpbnQgZmlyc3RfZW50cnksIHR4X3BhY2tldHM7XFxuK1xcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgZW50cnksIHR4X3BhY2tldHM7XFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzICp0eHFfc3RhdHM7XFxuIFxcdHN0cnVjdCBkbWFfZGVzYyAqZGVzYywgKmZpcnN0X2Rlc2M7XFxuIFxcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3E7XFxuIFxcdGludCBpLCBjc3VtX2luc2VydGlvbiA9IDA7XFxuLVxcdGludCBlbnRyeSwgZmlyc3RfdHg7XFxuK1xcdGludCBmaXJzdF90eCwgcmV0O1xcbiBcXHRkbWFfYWRkcl90IGRtYV9hZGRyO1xcbiBcXHR1MzIgc2R1X2xlbjtcXG4gXFxuQEAgLTQ4MzIsOSArNDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0Y3N1bV9pbnNlcnRpb24gPSBza2ItXFx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMO1xcbiBcXG4gXFx0aWYgKHVubGlrZWx5KGlzX2p1bWJvKSkge1xcbi1cXHRcXHRlbnRyeSA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XFxuLVxcdFxcdGlmICh1bmxpa2VseShlbnRyeSBcXHUwMDNjIDApIFxcdTAwMjZcXHUwMDI2IChlbnRyeSAhPSAtRUlOVkFMKSlcXG4rXFx0XFx0cmV0ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcXG4rXFx0XFx0aWYgKHVubGlrZWx5KHJldCBcXHUwMDNjIDApIFxcdTAwMjZcXHUwMDI2IChyZXQgIT0gLUVJTlZBTCkpXFxuIFxcdFxcdFxcdGdvdG8gZG1hX21hcF9lcnI7XFxuK1xcdFxcdGVudHJ5ID0gcmV0O1xcbiBcXHR9IGVsc2Uge1xcbiBcXHRcXHRib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7XFxuIFxcbkBAIC00OTg0LDYgKzQ5ODUsMjYgQEAgc3RhdGljIG5ldGRldl90eF90IHN0bW1hY194bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBkbWFfbWFwX2VycjpcXG4gXFx0bmV0ZGV2X2Vycihwcml2LVxcdTAwM2VkZXYsIFxcXCJUeCBETUEgbWFwIGZhaWxlZFxcXFxuXFxcIik7XFxuK1xcbitcXHQvKiBlbnRyeSBwb2ludHMgb25lIHBhc3QgdGhlIGxhc3QgZGVzY3JpcHRvciB3cml0dGVuIGZvciB0aGlzIGZyYW1lOlxcbitcXHQgKiBvbiBmYWlsdXJlIGl0IGlzIHRoZSBkZXNjcmlwdG9yIHdob3NlIERNQSBtYXBwaW5nIGZhaWxlZCwgc28gd2Fsa1xcbitcXHQgKiBmcm9tIGZpcnN0X2VudHJ5IHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgZW50cnkuICBSZXNldCBjdXJfdHhcXG4rXFx0ICogdW5jb25kaXRpb25hbGx5IGFzIGJvdGggc3RtbWFjX3ZsYW5faW5zZXJ0KCkgYW5kIHN0bW1hY19qdW1ib19mcm0oKVxcbitcXHQgKiBtYXkgaGF2ZSBhZHZhbmNlZCBpdCwgYW5kIHJlbGVhc2UgdGhlIFZMQU4gY29udGV4dCBkZXNjcmlwdG9yLlxcbitcXHQgKi9cXG4rXFx0d2hpbGUgKGZpcnN0X2VudHJ5ICE9IGVudHJ5KSB7XFxuK1xcdFxcdGRlc2MgPSBzdG1tYWNfZ2V0X3R4X2Rlc2MocHJpdiwgdHhfcSwgZmlyc3RfZW50cnkpO1xcbitcXHRcXHRzdG1tYWNfcmVsZWFzZV90eF9kZXNjKHByaXYsIGRlc2MsIHByaXYtXFx1MDAzZWRlc2NyaXB0b3JfbW9kZSk7XFxuK1xcdFxcdHN0bW1hY19mcmVlX3R4X2J1ZmZlcihwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYsIHF1ZXVlLCBmaXJzdF9lbnRyeSk7XFxuK1xcdFxcdGZpcnN0X2VudHJ5ID0gU1RNTUFDX05FWFRfRU5UUlkoZmlyc3RfZW50cnksXFxuK1xcdFxcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcXG4rXFx0fVxcbitcXG4rXFx0dHhfcS1cXHUwMDNlY3VyX3R4ID0gZmlyc3RfdHg7XFxuK1xcdGlmIChoYXNfdmxhbikge1xcbitcXHRcXHRkZXNjID0gc3RtbWFjX2dldF90eF9kZXNjKHByaXYsIHR4X3EsIGZpcnN0X3R4KTtcXG4rXFx0XFx0c3RtbWFjX3JlbGVhc2VfdHhfZGVzYyhwcml2LCBkZXNjLCBwcml2LVxcdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xcbitcXHR9XFxuIG1heF9zZHVfZXJyOlxcbiBcXHRkZXZfa2ZyZWVfc2tiKHNrYik7XFxuIFxcdHByaXYtXFx1MDAzZXhzdGF0cy50eF9kcm9wcGVkKys7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM1OjQzLjQ2NTQwNjY1OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NTkyMjMwOTE5NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFR4IERNQSBtYXBwaW5nIGVycm9yIHVud2luZGluZyBsb2dpYyBpbiBgc3RtbWFjX3htaXQoKWAgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgU29DL1BDSSBoYXJkd2FyZSBJUCBibG9ja3MgKFNUTU1BQy9EV01BQykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0YTZjOWFiNzRhMzc4MjlkNWQwZGJkOGEwYjg2MTlhMjdhMWJkOGQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDU6MzU6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuaW5kZXggMjQ2NTZiMzUzNTBiMS4uMmUzNmMyN2UyY2ZiNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC00NzY5LDEyICs0NzY5LDEyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcbiBcdHUzMiBxdWV1ZSA9IHNrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpO1xuIFx0aW50IG5mcmFncyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncztcbi1cdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgdHhfcGFja2V0cztcbitcdHVuc2lnbmVkIGludCBmaXJzdF9lbnRyeSwgZW50cnksIHR4X3BhY2tldHM7XG4gXHRzdHJ1Y3Qgc3RtbWFjX3R4cV9zdGF0cyAqdHhxX3N0YXRzO1xuIFx0c3RydWN0IGRtYV9kZXNjICpkZXNjLCAqZmlyc3RfZGVzYztcbiBcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3E7XG4gXHRpbnQgaSwgY3N1bV9pbnNlcnRpb24gPSAwO1xuLVx0aW50IGVudHJ5LCBmaXJzdF90eDtcbitcdGludCBmaXJzdF90eCwgcmV0O1xuIFx0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiBcdHUzMiBzZHVfbGVuO1xuIFxuQEAgLTQ4MzIsOSArNDgzMiwxMCBAQCBzdGF0aWMgbmV0ZGV2X3R4X3Qgc3RtbWFjX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGNzdW1faW5zZXJ0aW9uID0gc2tiLVx1MDAzZWlwX3N1bW1lZCA9PSBDSEVDS1NVTV9QQVJUSUFMO1xuIFxuIFx0aWYgKHVubGlrZWx5KGlzX2p1bWJvKSkge1xuLVx0XHRlbnRyeSA9IHN0bW1hY19qdW1ib19mcm0ocHJpdiwgdHhfcSwgc2tiLCBjc3VtX2luc2VydGlvbik7XG4tXHRcdGlmICh1bmxpa2VseShlbnRyeSBcdTAwM2MgMCkgXHUwMDI2XHUwMDI2IChlbnRyeSAhPSAtRUlOVkFMKSlcbitcdFx0cmV0ID0gc3RtbWFjX2p1bWJvX2ZybShwcml2LCB0eF9xLCBza2IsIGNzdW1faW5zZXJ0aW9uKTtcbitcdFx0aWYgKHVubGlrZWx5KHJldCBcdTAwM2MgMCkgXHUwMDI2XHUwMDI2IChyZXQgIT0gLUVJTlZBTCkpXG4gXHRcdFx0Z290byBkbWFfbWFwX2VycjtcbitcdFx0ZW50cnkgPSByZXQ7XG4gXHR9IGVsc2Uge1xuIFx0XHRib29sIGxhc3Rfc2VnbWVudCA9IChuZnJhZ3MgPT0gMCk7XG4gXG5AQCAtNDk4NCw2ICs0OTg1LDI2IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIGRtYV9tYXBfZXJyOlxuIFx0bmV0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCJUeCBETUEgbWFwIGZhaWxlZFxcblwiKTtcbitcbitcdC8qIGVudHJ5IHBvaW50cyBvbmUgcGFzdCB0aGUgbGFzdCBkZXNjcmlwdG9yIHdyaXR0ZW4gZm9yIHRoaXMgZnJhbWU6XG4rXHQgKiBvbiBmYWlsdXJlIGl0IGlzIHRoZSBkZXNjcmlwdG9yIHdob3NlIERNQSBtYXBwaW5nIGZhaWxlZCwgc28gd2Fsa1xuK1x0ICogZnJvbSBmaXJzdF9lbnRyeSB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGVudHJ5LiAgUmVzZXQgY3VyX3R4XG4rXHQgKiB1bmNvbmRpdGlvbmFsbHkgYXMgYm90aCBzdG1tYWNfdmxhbl9pbnNlcnQoKSBhbmQgc3RtbWFjX2p1bWJvX2ZybSgpXG4rXHQgKiBtYXkgaGF2ZSBhZHZhbmNlZCBpdCwgYW5kIHJlbGVhc2UgdGhlIFZMQU4gY29udGV4dCBkZXNjcmlwdG9yLlxuK1x0ICovXG4rXHR3aGlsZSAoZmlyc3RfZW50cnkgIT0gZW50cnkpIHtcbitcdFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF9lbnRyeSk7XG4rXHRcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xuK1x0XHRzdG1tYWNfZnJlZV90eF9idWZmZXIocHJpdiwgXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZiwgcXVldWUsIGZpcnN0X2VudHJ5KTtcbitcdFx0Zmlyc3RfZW50cnkgPSBTVE1NQUNfTkVYVF9FTlRSWShmaXJzdF9lbnRyeSxcbitcdFx0XHRcdFx0XHRwcml2LVx1MDAzZWRtYV9jb25mLmRtYV90eF9zaXplKTtcbitcdH1cbitcbitcdHR4X3EtXHUwMDNlY3VyX3R4ID0gZmlyc3RfdHg7XG4rXHRpZiAoaGFzX3ZsYW4pIHtcbitcdFx0ZGVzYyA9IHN0bW1hY19nZXRfdHhfZGVzYyhwcml2LCB0eF9xLCBmaXJzdF90eCk7XG4rXHRcdHN0bW1hY19yZWxlYXNlX3R4X2Rlc2MocHJpdiwgZGVzYywgcHJpdi1cdTAwM2VkZXNjcmlwdG9yX21vZGUpO1xuK1x0fVxuIG1heF9zZHVfZXJyOlxuIFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuIFx0cHJpdi1cdTAwM2V4c3RhdHMudHhfZHJvcHBlZCsrO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzU6NDMuNDY1NDA4MTQ5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTMzMjM0ODcwOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGdvYWwgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcsIGFuZCBpZiBzbywgaG93IHRvIGFwcHJvYWNoIGl0LiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBwYXRjaCBtb2RpZmllcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2Agc3BlY2lmaWNhbGx5LCB0aGUgYHN0bW1hY194bWl0YCBmdW5jdGlvbi4gUmlnaHQsIHNvIHRoaXMgaXMgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1jaGFubmVsIEV0aGVybmV0IE1BQyBkcml2ZXIsIGFsc28ga25vd24gYXMgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgLyBTVE1NQUMuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBpcyB0aGlzIGhhcmR3YXJlLWRlcGVuZGVudCwgb3IgY2FuIEkgcmVhY2ggdGhpcyBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQ/IElzIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGVkIGVub3VnaCB0aGF0IGl0IHdpbGwgYmUgZWFzaWx5IHJlYWNoYWJsZT8gSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gcmVsaWFibHkgdHJpZ2dlciB0aGlzIGNvZGUuIFRvIGFuc3dlciB0aGlzLCBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGlmIEkgY2FuIHJ1biB0aGlzIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gSSdsbCBuZWVkIHRvIHVzZSBlaXRoZXIgYGdyZXBwZXJgIG9yIGNoZWNrIHRoZSBLY29uZmlnLCBpZGVhbGx5IGxvb2tpbmcgYXQgZGVwZW5kZW5jaWVzLCB0byBzZWUgaG93IGVhc2lseSB0aGlzIGNhbiBiZSBjb25maWd1cmVkIGFuZCB3aGV0aGVyIGl0IGlzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIFRoYXQncyB0aGUgZmlyc3QgaHVyZGxlLCBkZXRlcm1pbmluZyB0aGUgdGFyZ2V0J3MgcmVhY2hhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjk3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzU6NTYuNzg4ODk4MjQ2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MzQyMjc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfRVRIXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM1OjU2Ljg3NjI0NzcyMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1OTk1ODMzMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBmaWxlOlxuXG4qKkFuYWx5emluZyB0aGUgU1RNTUFDIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlci4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHNvbWUgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbnMuIFRoaXMgaXMgd2hlcmUgSSdsbCBzZWUgaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGUgZmVhdHVyZSBzZWxlY3Rpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUgYW5kIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IHVudXN1YWwgZGVwZW5kZW5jaWVzIG9yIGxpbWl0YXRpb25zLCBhbmQgYXNzZXNzaW5nIHRoZSBsZXZlbCBvZiBncmFudWxhcml0eSBpbiB0aGVpciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBwYXJ0aWN1bGFybHkgY3VyaW91cyBhYm91dCBob3cgdGhleSBoYW5kbGUgdGhlIHZhcmlvdXMgU1RNaWNyb2VsZWN0cm9uaWNzIFNvQ3MgdGhhdCB1dGlsaXplIHRoaXMgTUFDLiBBcmUgdGhleSB1c2luZyBhIGZpbmUtZ3JhaW5lZCwgZGV2aWNlLXNwZWNpZmljIGFwcHJvYWNoLCBvciBhIG1vcmUgZ2VuZXJhbGl6ZWQsIGZlYXR1cmUtYmFzZWQgc3lzdGVtP1xuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGBDT05GSUdfU1RNTUFDXypgIG9wdGlvbnMsIG9mIGNvdXJzZS4gSSdsbCBtZW50YWxseSBtYXAgdGhlbSB0byB0aGUgY29ycmVzcG9uZGluZyByZWdpc3RlcnMgYW5kIGZ1bmN0aW9uYWxpdGllcyBJJ20gZmFtaWxpYXIgd2l0aCDigJMgUEhZIGludGVyZmFjZXMsIGludGVycnVwdCBoYW5kbGluZywgRE1BIHNldHRpbmdzLCBhbmQgYW55IG9mZmxvYWQgY2FwYWJpbGl0aWVzLiBJJ2xsIHdhbnQgdG8gc2VlIGhvdyB0aGV5J3ZlIGhhbmRsZWQgdmFyaW91cyBmZWF0dXJlcyBzdWNoIGFzIEp1bWJvIGZyYW1lcywgY2hlY2tzdW0gb2ZmbG9hZGluZywgVkxBTiBzdXBwb3J0LCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMuXG5cbkknbSBob3BpbmcgdG8gc2VlIGEgd2VsbC1jb21tZW50ZWQgZmlsZSwgdGhhdCBmb2xsb3dzIHN0YW5kYXJkIGtlcm5lbCBjb252ZW50aW9ucyBhbmQgY2xlYXJseSBkZWxpbmVhdGVzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMnIGltcGxpY2F0aW9ucy4gQSB3ZWxsLW9yZ2FuaXplZCBgS2NvbmZpZ2AgaXMgYSBzaWduIG9mIGEgd2VsbC1kZXNpZ25lZCBkcml2ZXIsIHNvIEknbSBob3BpbmcgZm9yIGdvb2QgZGVzaWduIHByaW5jaXBsZXMgdG8gYmUgZXZpZGVudC4gVGhpcyBzaG91bGQgYmUgYSBmYWlybHkgcXVpY2sgcmV2aWV3IGlmIGl0J3Mgd2VsbC1vcmdhbml6ZWQ7IEknbSBob3BpbmcgaXQncyBzdHJhaWdodGZvcndhcmQgc28gSSBjYW4ga2VlcCBtYWtpbmcgcHJvZ3Jlc3Mgb24gbXkgcHJvamVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI0NiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM1OjU5LjQ3NTgzMjgwNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTVE1NQUNfRVRIXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcXG4gICA3OlxcdFxcdHNlbGVjdCBNSUlcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcXG4gIDE2OlxcdFxcdCAgU3lub3BzeXMgSVAgQ29yZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgU1RNTUFDX0VUSFxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbiAgMjE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgMjM6XFx0XFx0ZGVmYXVsdCBuXFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXFxuICAyNjpcXHRcXHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcXG4gIDI3OlxcdFxcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICAzMjpcXHRcXHRkZWZhdWx0IHlcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuICAzNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcXG4gIDM2OlxcdFxcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxcbiAgMzc6XFx0XFxuICAzODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0aWYgU1RNTUFDX1BMQVRGT1JNXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxcbiAgNDU6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cXFwiXFxuICA0NjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDQ3OlxcdFxcdHNlbGVjdCBNSUlcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgNDk6XFx0XFx0aGVscFxcbiAgNTA6XFx0XFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcbiAgNTE6XFx0XFxuICA1MjpcXHRjb25maWcgRFdNQUNfR0VORVJJQ1xcbiAgNTM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG4gIDU0OlxcdFxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuICA1NTpcXHRcXHRoZWxwXFxuICA1NjpcXHRcXHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbiAgNTc6XFx0XFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuICA1ODpcXHRcXHQgIGRhdGEgZm9yIHNldHVwLlxcbiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgRFdNQUNfQU5BUklPTlxcbiAgNjE6XFx0XFx0dHJpc3RhdGUgXFxcIkFkYXB0cnVtIEFuYXJpb24gR01BQyBzdXBwb3J0XFxcIlxcbiAgNjI6XFx0XFx0ZGVmYXVsdCBBUkNcXG4gIDYzOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQyB8fCBDT01QSUxFX1RFU1QpXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEFkYXB0cnVtIEFuYXJpb24gR01BQyBFdGhlcm5ldCBjb250cm9sbGVyLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIERXTUFDX0VJQzc3MDBcXG4gIDcwOlxcdFxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclxcXCJcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBBUkNIX0VTV0lOIHx8IENPTVBJTEVfVEVTVFxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgRXN3aW4gRUlDNzcwMCBFdGhlcm5ldCBjb250cm9sbGVyLFxcbiAgNzQ6XFx0XFx0ICB3aGljaCBpbnRlZ3JhdGVzIFN5bm9wc3lzIERlc2lnbldhcmUgUW9TIGZlYXR1cmVzLiBJdCBlbmFibGVzXFxuICA3NTpcXHRcXHQgIGhpZ2gtc3BlZWQgbmV0d29ya2luZyB3aXRoIERNQSBhY2NlbGVyYXRpb24gYW5kIGlzIG9wdGltaXplZFxcbiAgNzY6XFx0XFx0ICBmb3IgZW1iZWRkZWQgc3lzdGVtcy5cXG4gIDc3OlxcdFxcbiAgNzg6XFx0Y29uZmlnIERXTUFDX0lOR0VOSUNcXG4gIDc5OlxcdFxcdHRyaXN0YXRlIFxcXCJJbmdlbmljIE1BQyBzdXBwb3J0XFxcIlxcbiAgODA6XFx0XFx0ZGVmYXVsdCBNQUNIX0lOR0VOSUNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzU6NTkuNDc1OTE3MTU0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mjg0NjU5MzE2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgc3RtbWFjIERyaXZlcioqXG5cbkFscmlnaHQsIHN0bW1hYy4uLiB0aGF0IHJpbmdzIGEgYmVsbC4gUmlnaHQsIGl0J3MgdGhlIGRyaXZlciBmb3IgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUNzLCBhbmQgaXQncyBhbHNvIHVzZWQgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgb3duIE1BQyBpbXBsZW1lbnRhdGlvbnMuIEEgc29saWQsIGZhaXJseSB3ZWxsLWVzdGFibGlzaGVkIHBpZWNlIG9mIHRoZSBuZXR3b3JraW5nIHN0YWNrLCBJIGJlbGlldmUuXG5cbk5vdywgdGhlIHF1ZXN0aW9uIGlzLCAqd2hlcmUqIGRvZXMgaXQgbGl2ZT8gSXMgdGhpcyBhIFBDSS1iYXNlZCBpbnRlcmZhY2UsIG9yIGlzIHRoaXMgYSBwbGF0Zm9ybSBkcml2ZXI/IExldCdzIHF1aWNrbHkgdmVyaWZ5IGJ5IGV4YW1pbmluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ2AgZmlsZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGNsdWUgYWJvdXQgdGhlIGRldmljZSBiaW5kaW5nIG1ldGhvZC4gVGhhdCdsbCB0ZWxsIG1lIGEgbG90IGFib3V0IGhvdyB0aGlzIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGggdGhlIGJyb2FkZXIgc3lzdGVtIGFuZCBob3cgaXQncyB0eXBpY2FsbHkgdXNlZC4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgc2F5cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc1MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MDIuMzIyNTE0ODU2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI2NDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuICA4MjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgODM6XFx0XFx0aGVscFxcbiAgODQ6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEluZ2VuaWMgU29Dcy5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAgODc6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuICA4ODpcXHRcXHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAgODk6XFx0XFxuICA5MDpcXHRjb25maWcgRFdNQUNfSVBRODA2WFxcbiAgOTE6XFx0XFx0dHJpc3RhdGUgXFxcIlFDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcXFwiXFxuICA5MjpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAgOTM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gIDk0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA5NTpcXHRcXHRoZWxwXFxuICA5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSVBRODA2eCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuICA5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXFxuIDEwMDpcXHRcXHQgIGFjY2VsZXJhdGlvbiBmZWF0dXJlcyBhdmFpbGFibGUgb24gdGhpcyBTb0MuIE5ldHdvcmsgZGV2aWNlc1xcbiAxMDE6XFx0XFx0ICB3aWxsIGJlaGF2ZSBsaWtlIHN0YW5kYXJkIG5vbi1hY2NlbGVyYXRlZCBldGhlcm5ldCBpbnRlcmZhY2VzLlxcbiAxMDI6XFx0XFxuIDEwMzpcXHRcXHQgIFNlbGVjdCB0aGUgUUNPTV9TT0NJTkZPIGNvbmZpZyBmbGFnIHRvIGVuYWJsZSBzcGVjaWZpYyBkd21hY1xcbiAxMDQ6XFx0XFx0ICBmaXh1cCBiYXNlZCBvbiB0aGUgaXBxODA2eCBTb0MgcmV2aXNpb24uXFxuIDEwNTpcXHRcXG4gMTA2OlxcdGNvbmZpZyBEV01BQ19MUEMxOFhYXFxuIDEwNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIExQQzE4eHgvNDN4eCBEV01BQyBzdXBwb3J0XFxcIlxcbiAxMDg6XFx0XFx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcXG4gMTA5OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXFxuIDExMDpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAxMTE6XFx0XFx0aGVscFxcbiAxMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxcbiAxMTM6XFx0XFxuIDExNDpcXHRjb25maWcgRFdNQUNfTUVESUFURUtcXG4gMTE1OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDI3eHggR01BQyBzdXBwb3J0XFxcIlxcbiAxMTY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1QpXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIFN1cHBvcnQgZm9yIE1lZGlhVGVrIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cXG4gMTE5OlxcdFxcbiAxMjA6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE1UMjcxMiBTb0Mgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDEyMTpcXHRcXG4gMTIyOlxcdGNvbmZpZyBEV01BQ19NRVNPTlxcbiAxMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFxcXCJcXG4gMTI0OlxcdFxcdGRlZmF1bHQgQVJDSF9NRVNPTlxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLIFxcdTAwMjZcXHUwMDI2IChBUkNIX01FU09OIHx8IENPTVBJTEVfVEVTVClcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBBbWxvZ2ljIE1lc29uIFNvQ3MuXFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDEzMDpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTWVzb242LFxcbiAxMzE6XFx0XFx0ICBNZXNvbjgsIE1lc29uOGIgYW5kIEdYQkIgU29Dcy5cXG4gMTMyOlxcdFxcbiAxMzM6XFx0Y29uZmlnIERXTUFDX05VVk9UT05cXG4gMTM0OlxcdFxcdHRyaXN0YXRlIFxcXCJOdXZvdG9uIE1BMzUgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMTM1OlxcdFxcdGRlZmF1bHQgQVJDSF9NQTM1XFxuIDEzNjpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxcbiAxMzc6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTM4OlxcdFxcdGhlbHBcXG4gMTM5OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQy5cXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE51dm90b24gTUEzNSBzZXJpZXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAxNDI6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcXG4gMTQzOlxcdFxcdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cXG4gMTQ0OlxcdFxcbiAxNDU6XFx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuIDE0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRVRIUU9TIHN1cHBvcnRcXFwiXFxuIDE0NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIFF1YWxjb21tIEVUSFFPUyBjb3JlLlxcbiAxNTE6XFx0XFxuIDE1MjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDE1MzpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRjb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbiAxNTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovVjJIKFApIEdCRVRIIGFuZCBSWi9UMkgsIFJaL04ySCBHTUFDIHN1cHBvcnRcXFwiXFxuIDE1NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xcbiAxNTg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG4gMTU5OlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE2MDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM2OjAyLjMyMjY0NDE1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwOTY5MTA5NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBLY29uZmlnIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBmb2N1c2luZyBvbiBzb21lIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBLY29uZmlnLCBidXQgbm93IEkgbmVlZCB0byBicm9hZGVuIHRoZSBzY29wZSBhIGJpdC4gVGltZSB0byBtb3ZlIGJleW9uZCB0aGUgaW1tZWRpYXRlIHN0dWZmIGFuZCBnZXQgYSBtb3JlIGNvbXBsZXRlIHZpZXcgb2YgaG93IHRoaW5ncyBhcmUgc3RydWN0dXJlZC4gTGV0J3Mgc2VlIGhvdyB0aGUgU1RNTUFDX1BDSSBjb25maWd1cmF0aW9uIG9wdGlvbiwgYW5kIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMsIGZpdCBpbnRvIHRoZSBvdmVyYWxsIHBpY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIHJlbGF0aW9uc2hpcHMsIGFuZCBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiB0aGVzZSBjb25maWd1cmF0aW9ucyB3aXRoaW4gdGhlIGJyb2FkZXIgS2NvbmZpZyBmcmFtZXdvcmsuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgYSByb2J1c3QgdW5kZXJzdGFuZGluZywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjb21wbGV4IGhhcmR3YXJlIGFic3RyYWN0aW9ucy4gS25vd2luZyB0aGUgY29udGV4dCBvZiByZWxhdGVkIEtjb25maWcgb3B0aW9ucyBpcyB0aGUgb25seSB3YXkgdG8gZWZmZWN0aXZlbHkgZGlhZ25vc2UgaXNzdWVzLCBldmFsdWF0ZSBkZXNpZ24gY2hvaWNlcywgYW5kIG1ha2UgaW5mb3JtZWQgbW9kaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM1NywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MDQuNDE5NTU5MDk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzUwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MTpcXHRcXHQgIFN1cHBvcnQgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgSW50ZXJmYWNlIChHQkVUSCkvIEV0aGVybmV0IE1BQyAoR01BQylcXG4gMTYyOlxcdFxcdCAgb24gUmVuZXNhcyBTb0NzLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXFxuIDE2NTpcXHRcXHQgIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFJaL1YySChQKSBmYW1pbHksIFJaL1QySCBhbmRcXG4gMTY2OlxcdFxcdCAgUlovTjJIIFNvQ3MuXFxuIDE2NzpcXHRcXG4gMTY4OlxcdGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbiAxNjk6XFx0XFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE3MDpcXHRcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxcbiAxNzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTczOlxcdFxcdGhlbHBcXG4gMTc0OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDE3NzpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIERXTUFDX1JaTjFcXG4gMTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE4MTpcXHRcXHRkZWZhdWx0IEFSQ0hfUlpOMVxcbiAxODI6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcXG4gMTgzOlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE4NDpcXHRcXHRoZWxwXFxuIDE4NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUmVuZXNhcyBSWi9OMSBTb0MgZmFtaWx5LlxcbiAxODY6XFx0XFxuIDE4NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbiAxODg6XFx0XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXFxuIDE4OTpcXHRcXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxcbiAxOTA6XFx0XFxuIDE5MTpcXHRjb25maWcgRFdNQUNfUzMyXFxuIDE5MjpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFMzMkcvUzMyUiBHTUFDIHN1cHBvcnRcXFwiXFxuIDE5MzpcXHRcXHRkZWZhdWx0IEFSQ0hfUzMyXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXFxuIDE5NTpcXHRcXHRoZWxwXFxuIDE5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIFMzMkNDIFNPQ3MuXFxuIDE5NzpcXHRcXG4gMTk4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDE5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBTMzJDQyBzZXJpZXNcXG4gMjAwOlxcdFxcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIsIGllLiBTMzJHMnh4LCBTMzJHM3h4IGFuZFxcbiAyMDE6XFx0XFx0ICBTMzJSNDUuXFxuIDIwMjpcXHRcXG4gMjAzOlxcdGNvbmZpZyBEV01BQ19TT0NGUEdBXFxuIDIwNDpcXHRcXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbiAyMDU6XFx0XFx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcXG4gMjA2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXFxuIDIwNzpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyMDg6XFx0XFx0c2VsZWN0IE1ESU9fUkVHTUFQXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG4gMjEwOlxcdFxcdHNlbGVjdCBQQ1NfTFlOWFxcbiAyMTE6XFx0XFx0aGVscFxcbiAyMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXFxuIDIxMzpcXHRcXG4gMjE0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDIxNTpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXFxuIDIxNjpcXHRcXHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxcbiAyMTc6XFx0XFxuIDIxODpcXHRjb25maWcgRFdNQUNfU09QSEdPXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiU29waGdvIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDIyMDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NPUEhHTyB8fCBDT01QSUxFX1RFU1QpXFxuIDIyMTpcXHRcXHRkZWZhdWx0IG0gaWYgQVJDSF9TT1BIR09cXG4gMjIyOlxcdFxcdGhlbHBcXG4gMjIzOlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gU29waGdvIFJJU0MtViBTb0NzXFxuIDIyNDpcXHRcXG4gMjI1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTb3BoZ28gU29DIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAyMjY6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG4gMjI3OlxcdFxcdCAgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gdmFyaW91cyBTb3BoZ28gU29Dcy5cXG4gMjI4OlxcdFxcbiAyMjk6XFx0Y29uZmlnIERXTUFDX1NQQUNFTUlUXFxuIDIzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU3BhY2VtaXQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMjMxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxcbiAyMzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjMzOlxcdFxcdGRlZmF1bHQgbSBpZiBBUkNIX1NQQUNFTUlUXFxuIDIzNDpcXHRcXHRoZWxwXFxuIDIzNTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNwYWNlbWl0IFJJU0MtViBTb0NzXFxuIDIzNjpcXHRcXG4gMjM3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTcGFjZW1pdCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjM4OlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDIzOTpcXHRcXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyNDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM2OjA0LjQxOTY5MDkzOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MjQzNDQ2NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBLY29uZmlnIGZpbGUsIHBpY2tpbmcgdXAgZnJvbSBsaW5lIDI0MSBvbndhcmRzLiBJIG5lZWQgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHdoYXQncyBkZWZpbmVkIGFuZCBob3cgdGhpbmdzIGFyZSBiZWluZyBjb25maWd1cmVkIGhlcmUuIEknbSBsb29raW5nIGZvciB0aGUga2V5IGRlcGVuZGVuY2llcywgdGhlIGJvb2xlYW4gZXhwcmVzc2lvbnMsIGFueSBkZWZhdWx0cyBzZXQg4oCTIGV2ZXJ5dGhpbmcgdGhhdCBpbmZsdWVuY2VzIHRoZSBmaW5hbCBjb25maWd1cmF0aW9uLiBXaGVyZSBhcmUgdGhlIGltcG9ydGFudCBmZWF0dXJlcyBkZWZpbmVkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciBwb3RlbnRpYWwgY29uZmxpY3RzIGJhc2VkIG9uIG15IHByZXZpb3VzIGV4cGVyaWVuY2U/IEknbGwgbmVlZCB0byBkaXNzZWN0IHRoZSBsb2dpYywgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBnb3RjaGFzLCBhbmQgbWVudGFsbHkgYnVpbGQgYSBtZW50YWwgbW9kZWwgb2YgaG93IHRoaXMgbW9kdWxlIGJlaGF2ZXMuIExldCdzIHNlZSB3aGF0IGdlbXMgd2UgY2FuIGZpbmQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODg3OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MTMuNjYzMTM5MzYyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjQxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjQxOlxcdGNvbmZpZyBEV01BQ19TVEFSRklWRVxcbiAyNDI6XFx0XFx0dHJpc3RhdGUgXFxcIlN0YXJGaXZlIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDI0MzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NUQVJGSVZFIHx8IENPTVBJTEVfVEVTVClcXG4gMjQ0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDI0NTpcXHRcXHRkZWZhdWx0IG0gaWYgQVJDSF9TVEFSRklWRVxcbiAyNDY6XFx0XFx0aGVscFxcbiAyNDc6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTdGFyRml2ZSBSSVNDLVYgU29Dc1xcbiAyNDg6XFx0XFxuIDI0OTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgU3RhckZpdmUgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDI1MDpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZVxcbiAyNTE6XFx0XFx0ICBTdGFyRml2ZSBKSDcxMDAgYW5kIEpINzExMCBldGhlcm5ldCBjb250cm9sbGVycy5cXG4gMjUyOlxcdFxcbiAyNTM6XFx0Y29uZmlnIERXTUFDX1NUSVxcbiAyNTQ6XFx0XFx0dHJpc3RhdGUgXFxcIlNUaSBHTUFDIHN1cHBvcnRcXFwiXFxuIDI1NTpcXHRcXHRkZWZhdWx0IEFSQ0hfU1RJXFxuIDI1NjpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NUSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI1NzpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNTg6XFx0XFx0aGVscFxcbiAyNTk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUaSBTT0NzLlxcbiAyNjA6XFx0XFxuIDI2MTpcXHRcXHQgIFRoaXMgc2VsZWN0cyBTVGkgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAyNjI6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xcbiAyNjM6XFx0XFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjY0OlxcdFxcbiAyNjU6XFx0Y29uZmlnIERXTUFDX1NUTTMyXFxuIDI2NjpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNMzIgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMjY3OlxcdFxcdGRlZmF1bHQgQVJDSF9TVE0zMlxcbiAyNjg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1RNMzIgfHwgQ09NUElMRV9URVNUKVxcbiAyNjk6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjcwOlxcdFxcdGhlbHBcXG4gMjcxOlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBTVE0zMiBTT0NzLlxcbiAyNzI6XFx0XFxuIDI3MzpcXHRcXHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDI3NDpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVE0zMiBzZXJpZXNcXG4gMjc1OlxcdFxcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDI3NjpcXHRcXG4gMjc3OlxcdGNvbmZpZyBEV01BQ19TVU5YSVxcbiAyNzg6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBHTUFDIHN1cHBvcnRcXFwiXFxuIDI3OTpcXHRcXHRkZWZhdWx0IEFSQ0hfU1VOWElcXG4gMjgwOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1VOWEkgfHwgQ09NUElMRV9URVNUKVxcbiAyODE6XFx0XFx0aGVscFxcbiAyODI6XFx0XFx0ICBTdXBwb3J0IGZvciBBbGx3aW5uZXIgQTIwL0EzMSBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyODM6XFx0XFxuIDI4NDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDI4NTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBMjAvQTMxXFxuIDI4NjpcXHRcXHQgIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjg3OlxcdFxcbiAyODg6XFx0Y29uZmlnIERXTUFDX1NVTjhJXFxuIDI4OTpcXHRcXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjkwOlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAyOTE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI5MjpcXHRcXHRzZWxlY3QgTURJT19CVVNfTVVYXFxuIDI5MzpcXHRcXHRoZWxwXFxuIDI5NDpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBIMyBBODNUIEE2NCBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyOTU6XFx0XFxuIDI5NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDI5NzpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBIMy9BODNUL0E2NFxcbiAyOTg6XFx0XFx0ICBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDI5OTpcXHRcXG4gMzAwOlxcdGNvbmZpZyBEV01BQ19TVU41NUlcXG4gMzAxOlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuNTVpIEdNQUMyMDAgc3VwcG9ydFxcXCJcXG4gMzAyOlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAzMDM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDMwNDpcXHRcXHRzZWxlY3QgTURJT19CVVNfTVVYXFxuIDMwNTpcXHRcXHRoZWxwXFxuIDMwNjpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBNTIzL1Q1MjcgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVycy5cXG4gMzA3OlxcdFxcbiAzMDg6XFx0XFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxcbiAzMDk6XFx0XFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgQTUyMy9UNTI3XFxuIDMxMDpcXHRcXHQgIEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMzExOlxcdFxcbiAzMTI6XFx0Y29uZmlnIERXTUFDX1RIRUFEXFxuIDMxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiVC1IRUFEIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDMxNDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1RIRUFEIHx8IENPTVBJTEVfVEVTVClcXG4gMzE1OlxcdFxcdGhlbHBcXG4gMzE2OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gVC1IRUFEIFJJU0MtViBTb0NzXFxuIDMxNzpcXHRcXG4gMzE4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBULUhFQUQgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbiAzMTk6XFx0XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIFQtSEVBRCBUSDE1MjBcXG4gMzIwOlxcdFxcdCAgZXRoZXJuZXQgY29udHJvbGxlci5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MTMuNjYzMjM3ODUyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3ODA4MDY0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIEtjb25maWcgZmlsZSwgcGlja2luZyB1cCB3aGVyZSB3ZSBsZWZ0IG9mZi4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZGVmaW5lZCBpbiB0aGUgcmVtYWluaW5nIGxpbmVzLCBmcm9tIGxpbmUgMzIxIG9ud2FyZC4gVGhpcyBzZWN0aW9uIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIHNjb3BlIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIHVsdGltYXRlbHksIGhvdyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIG9yIGZlYXR1cmUgaXMgZ292ZXJuZWQuIEknbSBsb29raW5nIGZvciB0aGUgc3BlY2lmaWNzLCB0aGUgdW5kZXJseWluZyBsb2dpYywgYW5kIHRoZSByZWxhdGlvbnNoaXBzIHRoYXQgZXhpc3Qgd2l0aGluIHRoaXMgc3RydWN0dXJlLiBMZXQncyBzZWUgd2hhdCBnZW1zIHdlIGNhbiB1bmVhcnRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM0MCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MTUuNDQ0MDQ3Mzg1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NjE3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMyMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMyMTpcXHRcXG4gMzIyOlxcdGNvbmZpZyBEV01BQ19JTVg4XFxuIDMyMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIElNWDggRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzI0OlxcdFxcdGRlZmF1bHQgQVJDSF9NWENcXG4gMzI1OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfTVhDIHx8IENPTVBJTEVfVEVTVClcXG4gMzI2OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuIDMyNzpcXHRcXHRoZWxwXFxuIDMyODpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIGkuTVg4IFNPQ3MuXFxuIDMyOTpcXHRcXG4gMzMwOlxcdFxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDMzMTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIGkuTVg4IHNlcmllcyBsaWtlXFxuIDMzMjpcXHRcXHQgIGlNWDhNUC9pTVg4RFhMIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMzMzOlxcdFxcbiAzMzQ6XFx0Y29uZmlnIERXTUFDX0lOVEVMX1BMQVRcXG4gMzM1OlxcdFxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbiAzMzY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLXFxuIDMzNzpcXHRcXHRoZWxwXFxuIDMzODpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIEludGVsIFNvQ3NcXG4gMzM5OlxcdFxcbiAzNDA6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIEludGVsIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcXG4gMzQxOlxcdFxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcXG4gMzQyOlxcdFxcdCAgU29DLlxcbiAzNDM6XFx0XFxuIDM0NDpcXHRjb25maWcgRFdNQUNfTE9PTkdTT04xXFxuIDM0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24xIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzQ2OlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXFxuIDM0NzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChNQUNIX0xPT05HU09OMzIgfHwgQ09NUElMRV9URVNUKVxcbiAzNDg6XFx0XFx0aGVscFxcbiAzNDk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uMSBTb0MuXFxuIDM1MDpcXHRcXG4gMzUxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIExvb25nc29uMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDM1MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIExvb25nc29uMS1iYXNlZCBib2FyZHNcXG4gMzUzOlxcdFxcdCAgbGlrZSBMb29uZ3NvbiBMUzFCL0xTMUMuXFxuIDM1NDpcXHRcXG4gMzU1OlxcdGNvbmZpZyBEV01BQ19URUdSQVxcbiAzNTY6XFx0XFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcXFwiXFxuIDM1NzpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXFxuIDM1ODpcXHRcXHRoZWxwXFxuIDM1OTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTXVsdGktR2lnYUJpdCBFdGhlcm5ldCAoTUdCRSkgQ29udHJvbGxlciB0aGF0IGlzXFxuIDM2MDpcXHRcXHQgIGZvdW5kIG9uIHRoZSBOVklESUEgVGVncmEgU29DIGRldmljZXMuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBnbHVlXFxuIDM2MTpcXHRcXHQgIGxheWVyIG9uIHRvcCBvZiB0aGUgc3RtbWFjIGRyaXZlciByZXF1aXJlZCBmb3IgdGhlc2UgTlZJRElBIFRlZ3JhIFNvQ1xcbiAzNjI6XFx0XFx0ICBkZXZpY2VzLlxcbiAzNjM6XFx0XFxuIDM2NDpcXHRjb25maWcgRFdNQUNfVklTQ09OVElcXG4gMzY1OlxcdFxcdHRyaXN0YXRlIFxcXCJUb3NoaWJhIFZpc2NvbnRpIERXTUFDIHN1cHBvcnRcXFwiXFxuIDM2NjpcXHRcXHRkZWZhdWx0IEFSQ0hfVklTQ09OVElcXG4gMzY3OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXFxuIDM2ODpcXHRcXHRoZWxwXFxuIDM2OTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gVmlzY29udGkgU29Dcy5cXG4gMzcwOlxcdFxcbiAzNzE6XFx0ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG4gMzcyOlxcdFxcbiAzNzM6XFx0Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4gMzc0OlxcdFxcdHRyaXN0YXRlXFxuIDM3NTpcXHRcXHRoZWxwXFxuIDM3NjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDM3NzpcXHRcXG4gMzc4OlxcdGNvbmZpZyBEV01BQ19JTlRFTFxcbiAzNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbiAzOTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM2OjE1LjQ0NDE5NTU0NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDgyNjE3NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBRRU1VIGFuZCBEV01BQy9TVE1NQUMgRW11bGF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgSSBjYW4gZW11bGF0ZSBEV01BQyAoRGVzaWduV2FyZSBNQUMpIG9yIFNUTU1BQyAoU1RNaWNyb2VsZWN0cm9uaWNzIE1BQykgZXRoZXJuZXQgY29udHJvbGxlcnMgd2l0aGluIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIGVudmlyb25tZW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gbGlzdCBvdXQgc29tZSBEV01BQyBpbXBsZW1lbnRhdGlvbnMgSSdtIGF3YXJlIG9mOiBgRFdNQUNfSU5URUxgLCBgRFdNQUNfTE9PTkdTT05gLCBldGMuIEp1c3QgY2F0YWxvZ2luZyBrbm93biBpbXBsZW1lbnRhdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUuXG5cbk15IG5leHQgbGluZSBvZiB0aGlua2luZyBpcyBjZW50ZXJlZCBhcm91bmQgUUVNVSB2aXJ0dWFsaXphdGlvbi4gRG9lcyB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgZXZlbiBHQ0UsIHByb3ZpZGUgdmlydHVhbGl6ZWQgZW11bGF0aW9uIGZvciBEV01BQyBvciBTVE1NQUM/IEkgbmVlZCB0byBrbm93IGlmIHRoZSBkZXZpY2VzIGV4aXN0IGluIHRoZSB2aXJ0dWFsIHdvcmxkLiBPa2F5LCB3YWl0LCB3aGF0ICpkb2VzKiBRRU1VIGVtdWxhdGU/IEkgcXVpY2tseSByZWNhbGwgY29tbW9uIHZpcnR1YWxpemVkIG5ldHdvcmsgZGV2aWNlczogZTEwMDAsIGlnYiwgdmlydGlvLW5ldCwgdGhlIHVzdWFsIHN1c3BlY3RzLiBCdXQsIGRvIGFueSBvZiB0aGVzZSBjb3ZlciB3aGF0IEkgbmVlZD8gTm8sIHRoYXQncyBub3Qgd2hhdCBJJ20gbG9va2luZyBmb3IuXG5cbkEgc3BlY2lmaWMgcXVlc3Rpb24gaXMgc3VyZmFjaW5nOiBkb2VzIFFFTVUgZW11bGF0ZSBTVE1NQUMgb3IgRFdNQUM/IEkgbmVlZCB0byBjaGVjay4gRGlnZ2luZyBhIGJpdCBkZWVwZXIsIEkgcmVtZW1iZXIgdGhhdCBRRU1VIG1pZ2h0IGVtdWxhdGUgZHdtYWMgb24gc29tZSBBUk0gU29DIG1hY2hpbmVzLCBidXQgd2hhdCBhYm91dCBhbWQ2NCAoeDg2KT8gVGhhdCdzIHRoZSBjcnVjaWFsIHF1ZXN0aW9uLiBJdCBzZWVtcyBsaWtlIGl0J3MgdW5saWtlbHkgZm9yIHg4Ni5cblxuTm93LCBJIG5lZWQgdG8gY29uc3VsdCB0aGUgcnVsZXMuIFRoaXMgdGFrZXMgbWUgdG8gU2VjdGlvbiAyLCB3aGljaCBvdXRsaW5lcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEknbSBmb2N1c2luZyBvbiB0aGF0IGxpc3Q6IFwiVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuLi5cIiBkZXZpY2VzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0IHN0YW5kYXJkIFFFTVUgZG9lc24ndCBlbXVsYXRlLiBUaGlzIGlzIGNyaXRpY2FsLiBEb2VzIFNUTU1BQyBmYWxsIGludG8gdGhpcyBjYXRlZ29yeT9cblxuSSBuZWVkIHRvIGNhcmVmdWxseSBldmFsdWF0ZTogaXMgU1RNTUFDICpzdHJ1Y3R1cmFsbHkqIHVucmVhY2hhYmxlPyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgaXQgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHZpcnR1YWwgYnVzZXMgKGxpa2UgdmlydGlvKSBvciBpZiBpdCByZWxpZXMgKm9ubHkqIG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBnZXQgdG8gaXQgdGhyb3VnaCBhIGR1bW15IG9yIFVTQiBwYXRoLiBTbywgYXJlIHRoZXJlIGFueSBVU0Igb3IgdmlydHVhbCBkZXZpY2VzIHRoYXQgdXNlIFNUTU1BQz8gSSBtdXN0IGNoZWNrLlxuXG5UaGUgZmluYWwgc3RlcCBpbiB0aGlzIHByb2Nlc3MgaXMgdG8gZG8gYSBkZXRhaWxlZCBzZWFyY2ggdXNpbmcgYGdyZXBgIHdpdGhpbiB0aGUga2VybmVsIHRyZWUgdG8gc2VlIHdoZXJlIFNUTU1BQyBpcyB1c2VkIGFuZCBob3cuIEkgY2FuIGZpbmQgYW4gYW5zd2VyIHRoaXMgd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTczMCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA1OjM2OjE5LjkyNjgxNzA0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NzAwODU2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTA4MzIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICs9IHN0bW1hYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzpzdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQtXFx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUtXFx0ICAgICAgZHdtYWMxMDBfY29yZS5vIGR3bWFjMTAwX2RtYS5vIGVuaF9kZXNjLm8gbm9ybV9kZXNjLm9cXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NjpcXHQgICAgICBtbWNfY29yZS5vIHN0bW1hY19od3RzdGFtcC5vIHN0bW1hY19wdHAubyBkd21hYzRfZGVzY3Mub1xcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS03LVxcdCAgICAgIGR3bWFjNF9kbWEubyBkd21hYzRfbGliLm8gZHdtYWM0X2NvcmUubyBkd21hYzUubyBod2lmLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjg6XFx0ICAgICAgc3RtbWFjX3RjLm8gZHd4Z21hYzJfY29yZS5vIGR3eGdtYWMyX2RtYS5vIGR3eGdtYWMyX2Rlc2NzLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjk6XFx0ICAgICAgc3RtbWFjX3hkcC5vIHN0bW1hY19lc3QubyBzdG1tYWNfZnBlLm8gc3RtbWFjX3ZsYW4ubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTA6XFx0ICAgICAgc3RtbWFjX3Bjcy5vICQoc3RtbWFjLXkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTI6c3RtbWFjLSQoQ09ORklHX1NUTU1BQ19TRUxGVEVTVFMpICs9IHN0bW1hY19zZWxmdGVzdHMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTEzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDU9b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVxcdCs9IGR3bWFjLXZpc2NvbnRpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0NjpzdG1tYWMtcGxhdGZvcm0tb2Jqczo9IHN0bW1hY19wbGF0Zm9ybS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDctZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDk6b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXFx0Kz0gc3RtbWFjX2xpYnBjaS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTAtb2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXFx0Kz0gc3RtbWFjLXBjaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVxcdCs9IGR3bWFjLW1vdG9yY29tbS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTQ6c3RtbWFjLXBjaS1vYmpzOj0gc3RtbWFjX3BjaS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jOjE3OnN0YXRpYyBpbnQganVtYm9fZnJtKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE4LVxcdFxcdCAgICAgaW50IGNzdW0pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMjAtXFx0dW5zaWduZWQgaW50IG5vcGFnZWRfbGVuID0gc2tiX2hlYWRsZW4oc2tiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MjE6XFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gdHhfcS1cXHUwMDNlcHJpdl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy0yMi1cXHR1bnNpZ25lZCBpbnQgZW50cnkgPSB0eF9xLVxcdTAwM2VjdXJfdHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNDUtXFx0LyogZG8gbm90IGNsb3NlIHRoZSBkZXNjcmlwdG9yIGFuZCBkbyBub3Qgc2V0IG93biBiaXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6NDY6XFx0c3RtbWFjX3ByZXBhcmVfdHhfZGVzYyhwcml2LCBkZXNjLCAxLCBidWZfbGVuLCBjc3VtLCBTVE1NQUNfQ0hBSU5fTU9ERSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNDctXFx0XFx0XFx0MCwgZmFsc2UsIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYy02Mi1cXHRcXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2VudHJ5XS5sZW4gPSBibWF4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo2MzpcXHRcXHRcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGJtYXgsIGNzdW0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTY0LVxcdFxcdFxcdFxcdFxcdFNUTU1BQ19DSEFJTl9NT0RFLCAxLCBmYWxzZSwgc2tiLVxcdTAwM2VsZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTc2LVxcdFxcdFxcdC8qIGxhc3QgZGVzY3JpcHRvciBjYW4gYmUgc2V0IG5vdyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzo3NzpcXHRcXHRcXHRzdG1tYWNfcHJlcGFyZV90eF9kZXNjKHByaXYsIGRlc2MsIDAsIGxlbiwgY3N1bSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtNzgtXFx0XFx0XFx0XFx0XFx0U1RNTUFDX0NIQUlOX01PREUsIDEsIHRydWUsIHNrYi1cXHUwMDNlbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYz05OT1zdGF0aWMgdm9pZCBpbml0X2RtYV9jaGFpbih2b2lkICpkZXMsIGRtYV9hZGRyX3QgcGh5X2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NoYWluX21vZGUuYzoxMjk6c3RhdGljIHZvaWQgcmVmaWxsX2Rlc2MzKHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EsIHN0cnVjdCBkbWFfZGVzYyAqcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTMwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTMxOlxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IHJ4X3EtXFx1MDAzZXByaXZfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTQ0OnN0YXRpYyB2b2lkIGNsZWFuX2Rlc2MzKHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EsIHN0cnVjdCBkbWFfZGVzYyAqcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTQ1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTQ2OlxcdHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IHR4X3EtXFx1MDAzZXByaXZfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmMtMTQ3LVxcdHVuc2lnbmVkIGludCBlbnRyeSA9IHR4X3EtXFx1MDAzZWRpcnR5X3R4O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jaGFpbl9tb2RlLmM6MTYxOmNvbnN0IHN0cnVjdCBzdG1tYWNfbW9kZV9vcHMgY2hhaW5fbW9kZV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY2hhaW5fbW9kZS5jLTE2Mi1cXHQuaW5pdCA9IGluaXRfZG1hX2NoYWluLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NzE6c3RydWN0IHN0bW1hY19xX3R4X3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC03Mi1cXHR1NjRfc3RhdHNfdCB0eF9ieXRlcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjc4OnN0cnVjdCBzdG1tYWNfbmFwaV90eF9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNzktXFx0dTY0X3N0YXRzX3QgdHhfcGFja2V0cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjg2OnN0cnVjdCBzdG1tYWNfdHhxX3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC04Ny1cXHQvKiBVcGRhdGVzIHByb3RlY3RlZCBieSB0eCBxdWV1ZSBsb2NrLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTg4LVxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBxX3N5bmNwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjg5OlxcdHN0cnVjdCBzdG1tYWNfcV90eF9zdGF0cyBxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtOTItXFx0c3RydWN0IHU2NF9zdGF0c19zeW5jIG5hcGlfc3luY3A7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6OTM6XFx0c3RydWN0IHN0bW1hY19uYXBpX3R4X3N0YXRzIG5hcGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtOTQtfSBfX19fY2FjaGVsaW5lX2FsaWduZWRfaW5fc21wO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjk2OnN0cnVjdCBzdG1tYWNfbmFwaV9yeF9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtOTctXFx0dTY0X3N0YXRzX3QgcnhfYnl0ZXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MTAzOnN0cnVjdCBzdG1tYWNfcnhxX3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMDQtXFx0LyogVXBkYXRlcyBwcm90ZWN0ZWQgYnkgTkFQSSBwb2xsIGxvZ2ljLiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwNS1cXHRzdHJ1Y3QgdTY0X3N0YXRzX3N5bmMgbmFwaV9zeW5jcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoxMDY6XFx0c3RydWN0IHN0bW1hY19uYXBpX3J4X3N0YXRzIG5hcGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMTA3LX0gX19fX2NhY2hlbGluZV9hbGlnbmVkX2luX3NtcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTEwOS0vKiBVcGRhdGVzIG9uIGVhY2ggQ1BVIHByb3RlY3RlZCBieSBub3QgYWxsb3dpbmcgbmVzdGVkIGlycXMuICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MTEwOnN0cnVjdCBzdG1tYWNfcGNwdV9zdGF0cyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMTExLVxcdHN0cnVjdCB1NjRfc3RhdHNfc3luYyBzeW5jcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTExNi0vKiBFeHRyYSBzdGF0aXN0aWMgYW5kIGRlYnVnIGluZm9ybWF0aW9uIGV4cG9zZWQgYnkgZXRodG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjExNzpzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0xMTgtXFx0LyogVHJhbnNtaXQgZXJyb3JzICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yMzctXFx0LyogcGVyIHF1ZXVlIHN0YXRpc3RpY3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyMzg6XFx0c3RydWN0IHN0bW1hY190eHFfc3RhdHMgdHhxX3N0YXRzW01UTF9NQVhfVFhfUVVFVUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyMzk6XFx0c3RydWN0IHN0bW1hY19yeHFfc3RhdHMgcnhxX3N0YXRzW01UTF9NQVhfUlhfUVVFVUVTXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyNDA6XFx0c3RydWN0IHN0bW1hY19wY3B1X3N0YXRzIF9fcGVyY3B1ICpwY3B1X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI0MS1cXHR1bnNpZ25lZCBsb25nIHJ4X2Ryb3BwZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yNDctLyogU2FmZXR5IEZlYXR1cmUgc3RhdGlzdGljcyBleHBvc2VkIGJ5IGV0aHRvb2wgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDoyNDg6c3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI0OS1cXHR1bnNpZ25lZCBsb25nIG1hY19lcnJvcnNbMzJdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjU2LSNkZWZpbmUgU1RNTUFDX1NBRkVUWV9GRUFUX1NJWkVcXHRcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MjU3OlxcdChzaXplb2Yoc3RydWN0IHN0bW1hY19zYWZldHlfc3RhdHMpIC8gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTI1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oPTQxNj1zdHJ1Y3QgZG1hX2ZlYXR1cmVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTU2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1NjU6dm9pZCBzdG1tYWNfYXhpX2JsZW5fdG9fbWFzayh1MzIgKnJlZ3ZhbCwgY29uc3QgdTMyICpibGVuLCBzaXplX3QgbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01NjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaD02MTM9c3RydWN0IG1hY19kZXZpY2VfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE0OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfb3BzICptYWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE1OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfZGVzY19vcHMgKmRlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE2OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfZG1hX29wcyAqZG1hO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYxNzpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX21vZGVfb3BzICptb2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYxODpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX2h3dGltZXN0YW1wICpwdHA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjE5OlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfdGNfb3BzICp0YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2MjA6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19tbWNfb3BzICptbWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjIxOlxcdGNvbnN0IHN0cnVjdCBzdG1tYWNfZXN0X29wcyAqZXN0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjYyMjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3ZsYW5fb3BzICp2bGFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTYyMy1cXHRzdHJ1Y3QgZHdfeHBjcyAqeHBjcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NDU6c3RydWN0IHN0bW1hY19yeF9yb3V0aW5nIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NDYtXFx0dTMyIHJlZ19tYXNrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MDppbnQgZHdtYWMxMDBfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NTE6aW50IGR3bWFjMTAwMF9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1MjppbnQgZHdtYWM0X3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjUzOmludCBkd3hnbWFjMl9zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1NDppbnQgZHd4bGdtYWMyX3NldHVwKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY1Njp2b2lkIHN0bW1hY19zZXRfbWFjX2FkZHIodm9pZCBfX2lvbWVtICppb2FkZHIsIGNvbnN0IHU4IGFkZHJbNl0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjU3LVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjU4OnZvaWQgc3RtbWFjX2dldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgdW5zaWduZWQgY2hhciAqYWRkcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NTktXFx0XFx0XFx0IHVuc2lnbmVkIGludCBoaWdoLCB1bnNpZ25lZCBpbnQgbG93KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjA6dm9pZCBzdG1tYWNfc2V0X21hYyh2b2lkIF9faW9tZW0gKmlvYWRkciwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo2NjI6dm9pZCBzdG1tYWNfZHdtYWM0X3NldF9tYWNfYWRkcih2b2lkIF9faW9tZW0gKmlvYWRkciwgY29uc3QgdTggYWRkcls2XSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC02NjMtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGhpZ2gsIHVuc2lnbmVkIGludCBsb3cpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjY2NDp2b2lkIHN0bW1hY19kd21hYzRfZ2V0X21hY19hZGRyKHZvaWQgX19pb21lbSAqaW9hZGRyLCB1bnNpZ25lZCBjaGFyICphZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTY2NS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgaGlnaCwgdW5zaWduZWQgaW50IGxvdyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NjY2OnZvaWQgc3RtbWFjX2R3bWFjNF9zZXRfbWFjKHZvaWQgX19pb21lbSAqaW9hZGRyLCBib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNjY3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTE0LSNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTU6I2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYz05Mz1zdGF0aWMgaW50IGFuYXJpb25fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05Ny1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzo5ODpcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyBzdG1tYWNfcmVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy05OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTAwOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTAxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMDQ6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMDUtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMTY6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTExNy19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTI1PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGFuYXJpb25fZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyOC1cXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiYW5hcmlvbi1kd21hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEyOTpcXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzAtXFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gYW5hcmlvbl9kd21hY19tYXRjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNDojaW5jbHVkZSBcXFwic3RtbWFjX3BsYXRmb3JtLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNS0jaW5jbHVkZSBcXFwiZHdtYWM0LmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM2PXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtNDMtXFx0XFx0cGxhdF9kYXQtXFx1MDAzZWF4aSA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6NDQ6XFx0XFx0XFx0XFx0XFx0ICAgICBzaXplb2Yoc3RydWN0IHN0bW1hY19heGkpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtNDUtXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9OTY9c3RhdGljIGludCBkd2NfcW9zX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy05Ny1cXHRcXHRcXHQgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjk4OlxcdFxcdFxcdCBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqc3RtbWFjX3JlcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTk5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjEwMDpcXHRwbGF0X2RhdC1cXHUwMDNlcGNsayA9IHN0bW1hY19wbHRmcl9maW5kX2NsayhwbGF0X2RhdCwgXFxcInBoeV9yZWZfY2xrXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTExNT1zdGF0aWMgdm9pZCB0ZWdyYV9lcW9zX2ZpeF9zcGVlZCh2b2lkICpic3BfcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTE5LVxcdGJvb2wgbmVlZHNfY2FsaWJyYXRpb24gPSBmYWxzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjEyMDpcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xMjEtXFx0dTMyIHZhbHVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xNDEtXFx0XFx0LyogQ2FsaWJyYXRpb24gc2hvdWxkIGJlIGRvbmUgd2l0aCB0aGUgTURJTyBidXMgaWRsZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MTQyOlxcdFxcdHN0bW1hY19tZGlvX2xvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xNDMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTE3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjE3ODpcXHRcXHRzdG1tYWNfbWRpb191bmxvY2socHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0xNzktXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MTg2PXN0YXRpYyBpbnQgdGVncmFfZXFvc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTg3LVxcdFxcdFxcdCAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MTg4OlxcdFxcdFxcdCAgICBzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyAqcmVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjA0OlxcdHBsYXRfZGF0LVxcdTAwM2VjbGtfdHhfaSA9IHN0bW1hY19wbHRmcl9maW5kX2NsayhwbGF0X2RhdCwgXFxcInR4XFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yMDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTIzNy1cXHRwbGF0X2RhdC1cXHUwMDNlZml4X21hY19zcGVlZCA9IHRlZ3JhX2Vxb3NfZml4X3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjM4OlxcdHBsYXRfZGF0LVxcdTAwM2VzZXRfY2xrX3R4X3JhdGUgPSBzdG1tYWNfc2V0X2Nsa190eF9yYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjM5LVxcdHBsYXRfZGF0LVxcdTAwM2Vic3BfcHJpdiA9IGVxb3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI1Mj1zdGF0aWMgdm9pZCB0ZWdyYV9lcW9zX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI1NDpcXHRzdHJ1Y3QgdGVncmFfZXFvcyAqZXFvcyA9IGdldF9zdG1tYWNfYnNwX3ByaXYoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI2MD1zdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjYyLVxcdFxcdCAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI2MzpcXHRcXHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY0LVxcdHZvaWQgKCpyZW1vdmUpKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MjY1OlxcdGNvbnN0IGNoYXIgKnN0bW1hY19jbGtfbmFtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI2Ni19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0yNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBkd2NfZXRoX2R3bWFjX2RhdGEgZHdjX3Fvc19kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjY5LVxcdC5wcm9iZSA9IGR3Y19xb3NfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyNzA6XFx0LnN0bW1hY19jbGtfbmFtZSA9IFxcXCJhcGJfcGNsa1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIHRlZ3JhX2Vxb3NfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjc1LVxcdC5yZW1vdmUgPSB0ZWdyYV9lcW9zX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI3NjpcXHQuc3RtbWFjX2Nsa19uYW1lID0gXFxcInNsYXZlX2J1c1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yNzctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9Mjc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdjX2V0aF9kd21hY19kYXRhIGZzZF9lcW9zX2RhdGEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyODA6XFx0LnN0bW1hY19jbGtfbmFtZSA9IFxcXCJzbGF2ZV9idXNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjgxLX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjg2LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyODc6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI4OC1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0yOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzoyOTI6XFx0bWVtc2V0KFxcdTAwMjZzdG1tYWNfcmVzLCAwLCBzaXplb2Yoc3RydWN0IHN0bW1hY19yZXNvdXJjZXMpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5NC1cXHQvKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI5NTpcXHQgKiBTaW5jZSBzdG1tYWNfcGxhdGZvcm0gc3VwcG9ydHMgbmFtZSBJUlEgb25seSwgYmFzaWMgcGxhdGZvcm1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTI5Ni1cXHQgKiByZXNvdXJjZSBpbml0aWFsaXphdGlvbiBpcyBkb25lIGluIHRoZSBnbHVlIGxvZ2ljLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMjk3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6Mjk4OlxcdHN0bW1hY19yZXMuaXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjI5OTpcXHRpZiAoc3RtbWFjX3Jlcy5pcnEgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzAwOlxcdFxcdHJldHVybiBzdG1tYWNfcmVzLmlycTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMwMTpcXHRzdG1tYWNfcmVzLndvbF9pcnEgPSBzdG1tYWNfcmVzLmlycTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMwMzpcXHRzdG1tYWNfcmVzLmFkZHIgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDQ6XFx0aWYgKElTX0VSUihzdG1tYWNfcmVzLmFkZHIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzA1OlxcdFxcdHJldHVybiBQVFJfRVJSKHN0bW1hY19yZXMuYWRkcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMDc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzA4LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMTY6XFx0cGxhdF9kYXQtXFx1MDAzZXN0bW1hY19jbGsgPSBzdG1tYWNfcGx0ZnJfZmluZF9jbGsocGxhdF9kYXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMTc6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBkYXRhLVxcdTAwM2VzdG1tYWNfY2xrX25hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzE5LVxcdGlmIChkYXRhLVxcdTAwM2Vwcm9iZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMyMDpcXHRcXHRyZXQgPSBkYXRhLVxcdTAwM2Vwcm9iZShwZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzIxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMzMDpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzQzPXN0YXRpYyB2b2lkIGR3Y19ldGhfZHdtYWNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM0Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM0NzpcXHRzdG1tYWNfZHZyX3JlbW92ZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MzYxPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjUtXFx0XFx0Lm5hbWUgICAgICAgICAgID0gXFxcImR3Yy1ldGgtZHdtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzY2OlxcdFxcdC5wbSAgICAgICAgICAgICA9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY3LVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGR3Y19ldGhfZHdtYWNfbWF0Y2gsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjIwOiNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTY3PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3MC1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxNzE6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTcyLVxcdHN0cnVjdCBlaWM3NzAwX3Fvc19wcml2ICpkd2NfcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xNzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjE3NjpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE3Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTgxOlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTgyLVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTMyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MzI0OlxcdHBsYXRfZGF0LVxcdTAwM2VjbGtfdHhfaSA9IHN0bW1hY19wbHRmcl9maW5kX2NsayhwbGF0X2RhdCwgXFxcInR4XFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjMyNTpcXHRwbGF0X2RhdC1cXHUwMDNlc2V0X2Nsa190eF9yYXRlID0gc3RtbWFjX3NldF9jbGtfdHhfcmF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzI2LVxcdHBsYXRfZGF0LVxcdTAwM2VjbGtzX2NvbmZpZyA9IGVpYzc3MDBfY2xrc19jb25maWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozMzU6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTMzNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MzYyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGVpYzc3MDBfZHdtYWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2NS1cXHRcXHQubmFtZSAgICAgICAgICAgPSBcXFwiZWljNzcwMC1ldGgtZHdtYWNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNjY6XFx0XFx0LnBtICAgICAgICAgICAgID0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2Ny1cXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBlaWM3NzAwX2R3bWFjX21hdGNoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTE2LSNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MTc6I2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9MTk9c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjEtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MjI6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjMtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjI1OlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0yOS1cXHRpZiAocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MzA6XFx0XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0zMS1cXHRcXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo0OTpcXHRyZXR1cm4gZGV2bV9zdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTY5PXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTcyLVxcdFxcdC5uYW1lICAgICAgICAgICA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3MzpcXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03NC1cXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBkd21hY19nZW5lcmljX21hdGNoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MjM6I2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTI0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9NDQ9c3RydWN0IGlteF9kd21hY19vcHMge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDk6XFx0aW50ICgqZml4X3NvY19yZXNldCkoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy01MC1cXHRpbnQgKCpzZXRfaW50Zl9tb2RlKShzdHJ1Y3QgaW14X3ByaXZfZGF0YSAqZHdtYWMsIHU4IHBoeV9pbnRmX3NlbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0xNTQ9c3RhdGljIGludCBpbXhfZHdtYWNfc2V0X2Nsa190eF9yYXRlKHZvaWQgKmJzcF9wcml2LCBzdHJ1Y3QgY2xrICpjbGtfdHhfaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTE2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoxNjE6XFx0cmV0dXJuIHN0bW1hY19zZXRfY2xrX3R4X3JhdGUoYnNwX3ByaXYsIGNsa190eF9pLCBpbnRlcmZhY2UsIHNwZWVkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0xNjItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MTkwPXN0YXRpYyB2b2lkIGlteDkzX2R3bWFjX2ZpeF9zcGVlZCh2b2lkICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjIyOTpzdGF0aWMgaW50IGlteF9kd21hY19teDkzX3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MjkzPXN0YXRpYyBpbnQgaW14X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTUtXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzoyOTY6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yOTctXFx0c3RydWN0IGlteF9wcml2X2RhdGEgKmR3bWFjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMwMTpcXHRyZXQgPSBzdG1tYWNfZ2V0X3BsYXRmb3JtX3Jlc291cmNlcyhwZGV2LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzAyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA5OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMTAtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zMzgtXFx0ZHdtYWMtXFx1MDAzZXBsYXRfZGF0ID0gcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzM5OlxcdGR3bWFjLVxcdTAwM2ViYXNlX2FkZHIgPSBzdG1tYWNfcmVzLmFkZHI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM1NDpcXHRyZXQgPSBzdG1tYWNfcGx0ZnJfcHJvYmUocGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zNTUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTM5Mj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbXhfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5My1cXHQucHJvYmUgID0gaW14X2R3bWFjX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjM5NDpcXHQucmVtb3ZlID0gc3RtbWFjX3BsdGZyX3JlbW92ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTUtXFx0LmRyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTYtXFx0XFx0Lm5hbWUgICAgICAgICAgID0gXFxcImlteC1kd21hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6Mzk3OlxcdFxcdC5wbVxcdFxcdD0gXFx1MDAyNnN0bW1hY19wbHRmcl9wbV9vcHMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzk4LVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGlteF9kd21hY19tYXRjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjE6I2luY2x1ZGUgXFxcInN0bW1hY19wbGF0Zm9ybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYz0xNTQ9c3RhdGljIGludCBpbmdlbmljX21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE1Ni1cXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNTc6XFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgc3RtbWFjX3JlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTU4LVxcdHN0cnVjdCBpbmdlbmljX21hYyAqbWFjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MTYzOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTY0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjgtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyMTU6XFx0cmV0dXJuIGRldm1fc3RtbWFjX3BsdGZyX3Byb2JlKHBkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTIxNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjcyPXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGluZ2VuaWNfbWFjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzUtXFx0XFx0Lm5hbWVcXHQ9IFxcXCJpbmdlbmljLW1hY1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI3NjpcXHRcXHQucG1cXHRcXHQ9IFxcdTAwMjZzdG1tYWNfcGx0ZnJfcG1fb3BzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzctXFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gaW5nZW5pY19tYWNfb2ZfbWF0Y2hlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNS0jaW5jbHVkZSBcXFwic3RtbWFjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjE2OiNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQ0LVxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjQ1OlxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHN0bW1hY19yZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTQ2LVxcdHN0cnVjdCBpbnRlbF9kd21hYyAqZHdtYWM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjUwOlxcdHJldCA9IHN0bW1hY19nZXRfcGxhdGZvcm1fcmVzb3VyY2VzKHBkZXYsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNTEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy01My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NTQ6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy01NS1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNC1cXHRwbGF0X2RhdC1cXHUwMDNlY2xrX3R4X2kgPSBkd21hYy1cXHUwMDNldHhfY2xrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTU6XFx0cGxhdF9kYXQtXFx1MDAzZXNldF9jbGtfdHhfcmF0ZSA9IHN0bW1hY19zZXRfY2xrX3R4X3JhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTExNi1cXHRwbGF0X2RhdC1cXHUwMDNlYnNwX3ByaXYgPSBkd21hYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz0xMzA9c3RhdGljIHZvaWQgaW50ZWxfZXRoX3BsYXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzMS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjEzMjpcXHRzdHJ1Y3QgaW50ZWxfZHdtYWMgKmR3bWFjID0gZ2V0X3N0bW1hY19ic3BfcHJpdihcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMzQ6XFx0c3RtbWFjX3BsdGZyX3JlbW92ZShwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTM1LVxcdGlmIChkd21hYy1cXHUwMDNlZGF0YS1cXHUwMDNldHhfY2xrX2VuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTEzOT1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbnRlbF9ldGhfcGxhdF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQzLVxcdFxcdC5uYW1lXFx0XFx0PSBcXFwiaW50ZWwtZXRoLXBsYXRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxNDQ6XFx0XFx0LnBtXFx0XFx0PSBcXHUwMDI2c3RtbWFjX3BsdGZyX3BtX29wcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQ1LVxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IGludGVsX2V0aF9wbGF0X21hdGNoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMi0jaW5jbHVkZSBcXFwic3RtbWFjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzojaW5jbHVkZSBcXFwic3RtbWFjX3B0cC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTI1PXN0cnVjdCBpbnRlbF9wcml2X2RhdGEge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQwOnN0cnVjdCBzdG1tYWNfcGNpX2Z1bmNfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00MS1cXHR1bnNpZ25lZCBpbnQgZnVuYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NjpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cXHRzaXplX3QgbmZ1bmNzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjUwOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTEtXFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05MT1zdGF0aWMgY29uc3QgaW50IGFkbG5fdHNuX2xhbmVfcmVnc1tdID0gezZ9O1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNTozNjoyMS4wMjM4MzQyODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTEzMDk1ODk4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBgc3RtbWFjYCBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHN0bW1hY2AsIHRoZSBFdGhlcm5ldCBkcml2ZXIgZm9yIGEgYnVuY2ggb2YgZGlmZmVyZW50IFN5c3RlbXMgb24gYSBDaGlwIChTb0NzKTogQWxsd2lubmVyLCBTVGksIEFtbG9naWMsIEludGVsIFF1YXJrL0VITC9UR0wsIE5YUCBpLk1YOCwgTG9vbmdzb24sIHlvdSBuYW1lIGl0LiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuICpyZWFjaCogdGhpcyB0aGluZyBpbiBhIHN0YW5kYXJkIGZ1enppbmcgc2V0dXAsIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIG9yIFFFTVUgb24geDg2XzY0PyBUaGF0J3MgdGhlIGZpcnN0IGh1cmRsZSwgYXMgcGVyIG15IHVzdWFsIHRyaWFnZSBhcHByb2FjaC5cblxuTGV0J3MgcXVpY2tseSByZWNhcCBteSBjb3JlIGNyaXRlcmlhLiBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgaXMgYSBuby1nbywgcmlnaHQ/IFRoaW5rIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIG9yIGBhbWRncHVgLiBUaGVzZSBuZWVkIHBoeXNpY2FsIGNhcmRzLCB3aGljaCBvYnZpb3VzbHkgYXJlbid0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFJlYWNoYWJpbGl0eSBpcyBrZXkuIEkgY2FuIG9ubHkgZXhwZWN0IHRvIGZpbmQgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5ICpleGVjdXRlKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIG9yIHR1bi90YXAuIEFueSBtb2RpZmljYXRpb25zIHRvIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBjb2RlLCBldmVuIHdpdGggYWRkZWQgYXNzZXJ0aW9ucywgYXJlIGNvbXBsZXRlbHkgb2ZmIHRoZSB0YWJsZS5cblxuTm93LCBiYWNrIHRvIGBzdG1tYWNgLiBUaGlzIGRyaXZlciBpcyBzcGVjaWZpY2FsbHkgZm9yIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGhhcmR3YXJlLCBvciBJbnRlbCBQQ0kgZHdtYWMsIExvb25nc29uIFBDSSBkd21hYyBhbmQgdGhlIGxpa2UuIFNvLCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogYXJlIHRoZXJlIHZpcnR1YWwgb3IgZW11bGF0ZWQgaW5zdGFuY2VzIG9mIGBzdG1tYWNgIHRoYXQgSSBjYW4gdXNlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCBvbiB4ODYvYW1kNjQ/IFRoZSBhbnN3ZXIgaXMuLi5uby4gUUVNVSBmb3IgeDg2L2FtZDY0IGRvZXNuJ3QgZW11bGF0ZSB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgKHRoYXQncyBgc3RtbWFjYCksIGFuZCBJIHNob3VsZCBub3RlIHRoYXQgaXQgb25seSBlbXVsYXRlcyB0aGluZ3MgbGlrZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIGVlcHJvMTAwLCBzdW5nZW0sIHR1bGlwLCB2bXhuZXQzLCBpZ2IsIHZpcnRpby1uZXQsIGV0Yy5cblxuU28sIEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIHNvbWVob3cgcHJvYmUgb3IgaW5zdGFudGlhdGUgYHN0bW1hY2Agd2l0aG91dCByZWFsIGhhcmR3YXJlIG9yIGEgZGV2aWNldHJlZSBvbiBhbiBhY3R1YWwgU29DLiBJIG5lZWQgdG8ga25vdyBpZiBJIGNhbiBsb2FkIGl0IG9yIHRlc3QgaXQgaW4gYW4gaXNvbGF0ZWQgbWFubmVyLiBMZXQncyBsb29rIGF0IGBzdG1tYWNfeG1pdGAuIFRoYXQncyB0aGUgYG5kb19zdGFydF94bWl0YCBmdW5jdGlvbiBmcm9tIGBzdG1tYWNfbWFpbi5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCdzIGNhbGxlZCBvciByZWdpc3RlcmVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjgwNTUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6MzIuMzMzNDI3NDc5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM0MTQwMTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY194bWl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQ3NDU9c3RhdGljIGJvb2wgc3RtbWFjX2hhc19pcF9ldGhlcnR5cGUoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDc1Ny0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQ3NTg6ICogIHN0bW1hY194bWl0IC0gVHggZW50cnkgcG9pbnQgb2YgdGhlIGRyaXZlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDc1OS0gKiAgQHNrYiA6IHRoZSBzb2NrZXQgYnVmZmVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQ3NjQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0NzY1OnN0YXRpYyBuZXRkZXZfdHhfdCBzdG1tYWNfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDc2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMzI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMzMtXFx0Lm5kb19vcGVuID0gc3RtbWFjX29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzM0OlxcdC5uZG9fc3RhcnRfeG1pdCA9IHN0bW1hY194bWl0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMzNS1cXHQubmRvX2ZlYXR1cmVzX2NoZWNrID0gc3RtbWFjX2ZlYXR1cmVzX2NoZWNrLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNTozNjozMy40Njc1NzM2NTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTIyMDkwMTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBgc3RtbWFjX3htaXRgIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBzdG1tYWNfeG1pdGAsIHdoaWNoIGlzIHRoZSB0cmFuc21pdCBoYW5kbGVyIGZvciBTVE1NQUMvRFdNQUMgZXRoZXJuZXQgZGV2aWNlcy4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoaXMgZnVuY3Rpb24sIGBzdG1tYWNfeG1pdGAsIG9ubHkgZ2V0cyBjYWxsZWQgaWYgdGhlIFNUTU1BQyBuZXRkZXZpY2UgaXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQsIG9wZW5lZCwgYW5kIHBhY2tldHMgYXJlIGJlaW5nIHRyYW5zbWl0dGVkIG92ZXIgaXQuIFRoZSBjcmVhdGlvbiBvZiBzdWNoIGEgbmV0ZGV2aWNlIHJlbGllcyBvbiB0aGUgZHJpdmVyIHByb2Jpbmcgc3VjY2Vzc2Z1bGx5LiBBbmQgZm9yIHRoZSBkcml2ZXIgdG8gcHJvYmUsIHRoZXJlIG5lZWRzIHRvIGJlIGEgaGFyZHdhcmUgZGV2aWNlIHByZXNlbnQg4oCTIHNwZWNpZmljYWxseSwgYSBwbGF0Zm9ybSBkZXZpY2Ugd2l0aCBNTUlPIHJlZ2lzdGVycywgSVJRcywgYSBQSFksIG9yIGEgUENJIGRldmljZSB3aXRoIG1hdGNoaW5nIFNUTU1BQy9EV01BQyBQQ0kgSURzLCBsaWtlIHRob3NlIGZvdW5kIGluIEludGVsIEVsa2hhcnQgTGFrZS9UaWdlciBMYWtlL1F1YXJrIFNvQ3MuIFRoaXMgaW52b2x2ZXMgYWNjZXNzaW5nIGhhcmR3YXJlIE1NSU8gcmVnaXN0ZXJzLlxuXG5UaGUga2V5IGhlcmUgaXMgdGhhdCB0byBnZXQgdGhpcyBmYXIsIHlvdSBhYnNvbHV0ZWx5IG5lZWQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIG9yIGEgdmVyeSBzcGVjaWZpYywgZnVsbCBRRU1VIGVtdWxhdGlvbiBvZiBEV01BQy4gIFN0YW5kYXJkIFFFTVUgb24geDg2XzY0IGRvZXNuJ3QgcHJvdmlkZSB0aGlzIGxldmVsIG9mIGVtdWxhdGlvbi4gVGh1cywgdGhlIGRyaXZlciB3aWxsIG5ldmVyIHByb2JlIGFuZCBuZXZlciByZWdpc3RlciBhIG5ldHdvcmsgaW50ZXJmYWNlLiBUaGF0IG1lYW5zIHRoZSBjb2RlIGluIGBzdG1tYWNfeG1pdGAgd2lsbCBuZXZlciBiZSBleGVjdXRlZC5cblxuTm93LCBsZXQncyBnbyBiYWNrIGFuZCByZWZlcmVuY2UgdGhlIHRyaWFnZSBpbnN0cnVjdGlvbnMsIGVzcGVjaWFsbHkgdGhlIFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEVcIi4gVGhlIGluc3RydWN0aW9ucyBjbGVhcmx5IHN0YXRlIHRoYXQgZnV6emluZyBpcyBvbmx5IHZpYWJsZSBmb3IgY29kZSB0aGF0IGNhbiBydW4gaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiAgSWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZHVlIHRvIGhhcmR3YXJlIHJlcXVpcmVtZW50cywgd2Ugc2hvdWxkIG5vdCBiZSBmdXp6aW5nIGl0LiBBbmQgc3BlY2lmaWNhbGx5IHVuZGVyIFwiV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcIiwgdGhpcyBkaXJlY3RseSBhcHBsaWVzOiBJdCdzIFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIuIFRoZSBTVE1NQUMgZHJpdmVyIGlzIHRoZSBjbGFzc2ljIGV4YW1wbGUg4oCTIGl0IG5lZWRzIHBoeXNpY2FsIEFTSUNzL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cbkkndmUgY2hlY2tlZCB0aGUgZGlmZiBhbmQgdGhlIG9ubHkgZmlsZSBtb2RpZmllZCBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIEl0J3MgYWxsIGFib3V0IGBzdG1tYWNfeG1pdGAsIGFuZCBzcGVjaWZpY2FsbHkgY2xlYW5pbmcgdXAgRE1BIG1hcHBpbmcgZXJyb3JzLiBCdXQgc2luY2UgdGhlIHVuZGVybHlpbmcgZGV2aWNlIHdvbid0IHByb2JlLCB3ZSBjYW4ndCBnZXQgdGhlcmUgaW4gYSBzdGFuZGFyZCBmdXp6aW5nIHNldHVwLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZW1wdHksIGFuZCBzbyB3aWxsIGBFbmFibGVDb25maWdzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2MjYsIk91dHB1dFRva2VucyI6MTM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNTozNjo0Mi42ODg0Nzc0ODNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUeCBETUEgbWFwcGluZyBlcnJvciB1bndpbmRpbmcgbG9naWMgaW4gYHN0bW1hY194bWl0KClgIHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyIChgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2ApLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIFNvQy9QQ0kgaGFyZHdhcmUgSVAgYmxvY2tzIChTVE1NQUMvRFdNQUMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFR4IERNQSBtYXBwaW5nIGVycm9yIHVud2luZGluZyBsb2dpYyBpbiBgc3RtbWFjX3htaXQoKWAgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIgKGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYCkuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgU29DL1BDSSBoYXJkd2FyZSBJUCBibG9ja3MgKFNUTU1BQy9EV01BQykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDU6MzY6NDIuNjg4NTAwNDMzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsr8qx[1] Phase: Running StartedAt: 2026-09-10 05:36:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsr8qx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 05:36:54 +0000 UTC FinishedAt: 2026-09-10 05:36:58 +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,}