Name: series-workflowfcb7w Phase: Failed StartedAt: 2026-09-06 15:16:25 +0000 UTC FinishedAt: 2026-09-06 15:46:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfcb7w[0] Phase: Succeeded StartedAt: 2026-09-06 15:16:25 +0000 UTC FinishedAt: 2026-09-06 15:46:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfcb7w[0].run-triage Phase: Succeeded StartedAt: 2026-09-06 15:16:25 +0000 UTC FinishedAt: 2026-09-06 15:46:08 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJjMTQ2OThhZmE1Y2RmZTNkOTBkY2NhY2EzNTM4NmI1OWM0YzFjODZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDE1OjQ1OjEzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBmMmZjODkxNzY2NTRlLi5mMGUwNmMwMTFiOGRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTE3MjgsNyAmIzQzOzE3MjgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0XHQgRE1BX1RPX0RFVklDRSk7XG4gXHR9XG4gXG4tXHRpZiAodHhfcS1cdTAwM2V4ZHBmW2ldIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmICh0eF9xLVx1MDAzZXhkcGYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNleGRwZltpXSBcdTAwMjZcdTAwMjZcbiBcdCAgICAodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9UWCB8fFxuIFx0ICAgICB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX05ETykpIHtcbiBcdFx0eGRwX3JldHVybl9mcmFtZSh0eF9xLVx1MDAzZXhkcGZbaV0pO1xuQEAgLTE3MzgsNyAmIzQzOzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpXG4gXHRcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lJiM0MzsmIzQzOztcbiBcbi1cdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNldHhfc2tidWZmW2ldIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0pO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSA9IE5VTEw7XG5AQCAtMTc2MSw2ICYjNDM7MTc2MSwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0c3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcSA9IFx1MDAyNmRtYV9jb25mLVx1MDAzZXJ4X3F1ZXVlW3F1ZXVlXTtcbiBcdGludCBpO1xuIFxuJiM0MztcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuJiM0MztcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTsgaSYjNDM7JiM0MzspXG4gXHRcdHN0bW1hY19mcmVlX3J4X2J1ZmZlcihwcml2LCByeF9xLCBpKTtcbiB9XG5AQCAtMTgwMiw2ICYjNDM7MTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF94c2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbiYjNDM7XHRpZiAoIXJ4X3EtXHUwMDNlYnVmX3Bvb2wpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSBcdTAwMjZyeF9xLVx1MDAzZWJ1Zl9wb29sW2ldO1xuIFxuQEAgLTIwOTcsNiAmIzQzOzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiB0eF9za2J1ZmZfZG1hIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuJiM0MztcdGlmICghdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lID0gMDtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRtYV9jb25mLVx1MDAzZWRtYV90eF9zaXplOyBpJiM0MzsmIzQzOylcbkBAIC0yMjcyLDE1ICYjNDM7MjI4NCwxOSBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdH1cbiBcbiBcdHJ4X3EtXHUwMDNlYnVmX3Bvb2wgPSBremFsbG9jX29ianMoKnJ4X3EtXHUwMDNlYnVmX3Bvb2wsIGRtYV9jb25mLVx1MDAzZWRtYV9yeF9zaXplKTtcbi1cdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0aWYgKCFyeF9xLVx1MDAzZWJ1Zl9wb29sKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBlcnJfZGVzdHJveV9wb29sO1xuJiM0MztcdH1cbiBcbiBcdHNpemUgPSBzdG1tYWNfZ2V0X3J4X2Rlc2Nfc2l6ZShwcml2KSAqIGRtYV9jb25mLVx1MDAzZWRtYV9yeF9zaXplO1xuIFxuIFx0YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChwcml2LVx1MDAzZWRldmljZSwgc2l6ZSwgXHUwMDI2cnhfcS1cdTAwM2VkbWFfcnhfcGh5LFxuIFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbi1cdGlmICghYWRkcilcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0aWYgKCFhZGRyKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBlcnJfZnJlZV9idWZfcG9vbDtcbiYjNDM7XHR9XG4gXG4gXHRpZiAocHJpdi1cdTAwM2VleHRlbmRfZGVzYylcbiBcdFx0cnhfcS1cdTAwM2VkbWFfZXJ4ID0gYWRkcjtcbkBAIC0yMjk2LDEwICYjNDM7MjMxMiwyNyBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHJldCA9IHhkcF9yeHFfaW5mb19yZWcoXHUwMDI2cnhfcS1cdTAwM2V4ZHBfcnhxLCBwcml2LVx1MDAzZWRldiwgcXVldWUsIG5hcGlfaWQpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgeGRwIHJ4cSBpbmZvXFxuXCYjMzQ7KTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX2RtYTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX2ZyZWVfZG1hOlxuJiM0MztcdGlmIChwcml2LVx1MDAzZWV4dGVuZF9kZXNjKVxuJiM0MztcdFx0ZG1hX2ZyZWVfY29oZXJlbnQocHJpdi1cdTAwM2VkZXZpY2UsIHNpemUsIHJ4X3EtXHUwMDNlZG1hX2VyeCxcbiYjNDM7XHRcdFx0XHQgIHJ4X3EtXHUwMDNlZG1hX3J4X3BoeSk7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0ZG1hX2ZyZWVfY29oZXJlbnQocHJpdi1cdTAwM2VkZXZpY2UsIHNpemUsIHJ4X3EtXHUwMDNlZG1hX3J4LFxuJiM0MztcdFx0XHRcdCAgcnhfcS1cdTAwM2VkbWFfcnhfcGh5KTtcbiYjNDM7XHRyeF9xLVx1MDAzZWRtYV9lcnggPSBOVUxMO1xuJiM0MztcdHJ4X3EtXHUwMDNlZG1hX3J4ID0gTlVMTDtcbiYjNDM7ZXJyX2ZyZWVfYnVmX3Bvb2w6XG4mIzQzO1x0a2ZyZWUocnhfcS1cdTAwM2VidWZfcG9vbCk7XG4mIzQzO1x0cnhfcS1cdTAwM2VidWZfcG9vbCA9IE5VTEw7XG4mIzQzO2Vycl9kZXN0cm95X3Bvb2w6XG4mIzQzO1x0cGFnZV9wb29sX2Rlc3Ryb3kocnhfcS1cdTAwM2VwYWdlX3Bvb2wpO1xuJiM0MztcdHJ4X3EtXHUwMDNlcGFnZV9wb29sID0gTlVMTDtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5AQCAtMjM1MiwxNCAmIzQzOzIzODUsMTQgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXG4gXHR0eF9xLVx1MDAzZXR4X3NrYnVmZiA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qgc2tfYnVmZiAqLCBkbWFfY29uZi1cdTAwM2VkbWFfdHhfc2l6ZSk7XG4gXHRpZiAoIXR4X3EtXHUwMDNldHhfc2tidWZmKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfc2tidWZmX2RtYTtcbiBcbiBcdHNpemUgPSBzdG1tYWNfZ2V0X3R4X2Rlc2Nfc2l6ZShwcml2LCB0eF9xKSAqIGRtYV9jb25mLVx1MDAzZWRtYV90eF9zaXplO1xuIFxuIFx0YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChwcml2LVx1MDAzZWRldmljZSwgc2l6ZSxcbiBcdFx0XHRcdCAgXHUwMDI2dHhfcS1cdTAwM2VkbWFfdHhfcGh5LCBHRlBfS0VSTkVMKTtcbiBcdGlmICghYWRkcilcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX3NrYnVmZjtcbiBcbiBcdGlmIChwcml2LVx1MDAzZWV4dGVuZF9kZXNjKVxuIFx0XHR0eF9xLVx1MDAzZWRtYV9ldHggPSBhZGRyO1xuQEAgLTIzNjksNiAmIzQzOzI0MDIsMTQgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdHR4X3EtXHUwMDNlZG1hX3R4ID0gYWRkcjtcbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX2ZyZWVfc2tidWZmOlxuJiM0MztcdGtmcmVlKHR4X3EtXHUwMDNldHhfc2tidWZmKTtcbiYjNDM7XHR0eF9xLVx1MDAzZXR4X3NrYnVmZiA9IE5VTEw7XG4mIzQzO2Vycl9mcmVlX3NrYnVmZl9kbWE6XG4mIzQzO1x0a2ZyZWUodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hKTtcbiYjNDM7XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWEgPSBOVUxMO1xuJiM0MztcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJjMTQ2OThhZmE1Y2RmZTNkOTBkY2NhY2EzNTM4NmI1OWM0YzFjODYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDE1OjQ1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggZjJmYzg5MTc2NjU0ZS4uZjBlMDZjMDExYjhkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0xNzI4LDcgJiM0MzsxNzI4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkJCQkJIERNQV9UT19ERVZJQ0UpOwogCX0KIAotCWlmICh0eF9xLSZndDt4ZHBmW2ldICZhbXA7JmFtcDsKJiM0MzsJaWYgKHR4X3EtJmd0O3hkcGYgJmFtcDsmYW1wOyB0eF9xLSZndDt4ZHBmW2ldICZhbXA7JmFtcDsKIAkgICAgKHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX1RYIHx8CiAJICAgICB0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7CiAJCXhkcF9yZXR1cm5fZnJhbWUodHhfcS0mZ3Q7eGRwZltpXSk7CkBAIC0xNzM4LDcgJiM0MzsxNzM4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlpZiAodHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpCiAJCXR4X3EtJmd0O3hza19mcmFtZXNfZG9uZSYjNDM7JiM0Mzs7CiAKLQlpZiAodHhfcS0mZ3Q7dHhfc2tidWZmW2ldICZhbXA7JmFtcDsKJiM0MzsJaWYgKHR4X3EtJmd0O3R4X3NrYnVmZiAmYW1wOyZhbXA7IHR4X3EtJmd0O3R4X3NrYnVmZltpXSAmYW1wOyZhbXA7CiAJICAgIHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfU0tCKSB7CiAJCWRldl9rZnJlZV9za2JfYW55KHR4X3EtJmd0O3R4X3NrYnVmZltpXSk7CiAJCXR4X3EtJmd0O3R4X3NrYnVmZltpXSA9IE5VTEw7CkBAIC0xNzYxLDYgJiM0MzsxNzYxLDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJc3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcSA9ICZhbXA7ZG1hX2NvbmYtJmd0O3J4X3F1ZXVlW3F1ZXVlXTsKIAlpbnQgaTsKIAomIzQzOwkvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi8KJiM0MzsJaWYgKCFyeF9xLSZndDtidWZfcG9vbCkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgZG1hX2NvbmYtJmd0O2RtYV9yeF9zaXplOyBpJiM0MzsmIzQzOykKIAkJc3RtbWFjX2ZyZWVfcnhfYnVmZmVyKHByaXYsIHJ4X3EsIGkpOwogfQpAQCAtMTgwMiw2ICYjNDM7MTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF94c2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gJmFtcDtkbWFfY29uZi0mZ3Q7cnhfcXVldWVbcXVldWVdOwogCWludCBpOwogCiYjNDM7CS8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqLwomIzQzOwlpZiAoIXJ4X3EtJmd0O2J1Zl9wb29sKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBkbWFfY29uZi0mZ3Q7ZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSAmYW1wO3J4X3EtJmd0O2J1Zl9wb29sW2ldOwogCkBAIC0yMDk3LDYgJiM0MzsyMTA1LDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSA9ICZhbXA7ZG1hX2NvbmYtJmd0O3R4X3F1ZXVlW3F1ZXVlXTsKIAlpbnQgaTsKIAomIzQzOwkvKiB0eF9za2J1ZmZfZG1hIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqLwomIzQzOwlpZiAoIXR4X3EtJmd0O3R4X3NrYnVmZl9kbWEpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJdHhfcS0mZ3Q7eHNrX2ZyYW1lc19kb25lID0gMDsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBkbWFfY29uZi0mZ3Q7ZG1hX3R4X3NpemU7IGkmIzQzOyYjNDM7KQpAQCAtMjI3MiwxNSAmIzQzOzIyODQsMTkgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJfQogCiAJcnhfcS0mZ3Q7YnVmX3Bvb2wgPSBremFsbG9jX29ianMoKnJ4X3EtJmd0O2J1Zl9wb29sLCBkbWFfY29uZi0mZ3Q7ZG1hX3J4X3NpemUpOwotCWlmICghcnhfcS0mZ3Q7YnVmX3Bvb2wpCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwlpZiAoIXJ4X3EtJmd0O2J1Zl9wb29sKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBlcnJfZGVzdHJveV9wb29sOwomIzQzOwl9CiAKIAlzaXplID0gc3RtbWFjX2dldF9yeF9kZXNjX3NpemUocHJpdikgKiBkbWFfY29uZi0mZ3Q7ZG1hX3J4X3NpemU7CiAKIAlhZGRyID0gZG1hX2FsbG9jX2NvaGVyZW50KHByaXYtJmd0O2RldmljZSwgc2l6ZSwgJmFtcDtyeF9xLSZndDtkbWFfcnhfcGh5LAogCQkJCSAgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFhZGRyKQotCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJaWYgKCFhZGRyKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBlcnJfZnJlZV9idWZfcG9vbDsKJiM0MzsJfQogCiAJaWYgKHByaXYtJmd0O2V4dGVuZF9kZXNjKQogCQlyeF9xLSZndDtkbWFfZXJ4ID0gYWRkcjsKQEAgLTIyOTYsMTAgJiM0MzsyMzEyLDI3IEBAIHN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCXJldCA9IHhkcF9yeHFfaW5mb19yZWcoJmFtcDtyeF9xLSZndDt4ZHBfcnhxLCBwcml2LSZndDtkZXYsIHF1ZXVlLCBuYXBpX2lkKTsKIAlpZiAocmV0KSB7CiAJCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciB4ZHAgcnhxIGluZm9cbiYjMzQ7KTsKLQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQlnb3RvIGVycl9mcmVlX2RtYTsKIAl9CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfZnJlZV9kbWE6CiYjNDM7CWlmIChwcml2LSZndDtleHRlbmRfZGVzYykKJiM0MzsJCWRtYV9mcmVlX2NvaGVyZW50KHByaXYtJmd0O2RldmljZSwgc2l6ZSwgcnhfcS0mZ3Q7ZG1hX2VyeCwKJiM0MzsJCQkJICByeF9xLSZndDtkbWFfcnhfcGh5KTsKJiM0MzsJZWxzZQomIzQzOwkJZG1hX2ZyZWVfY29oZXJlbnQocHJpdi0mZ3Q7ZGV2aWNlLCBzaXplLCByeF9xLSZndDtkbWFfcngsCiYjNDM7CQkJCSAgcnhfcS0mZ3Q7ZG1hX3J4X3BoeSk7CiYjNDM7CXJ4X3EtJmd0O2RtYV9lcnggPSBOVUxMOwomIzQzOwlyeF9xLSZndDtkbWFfcnggPSBOVUxMOwomIzQzO2Vycl9mcmVlX2J1Zl9wb29sOgomIzQzOwlrZnJlZShyeF9xLSZndDtidWZfcG9vbCk7CiYjNDM7CXJ4X3EtJmd0O2J1Zl9wb29sID0gTlVMTDsKJiM0MztlcnJfZGVzdHJveV9wb29sOgomIzQzOwlwYWdlX3Bvb2xfZGVzdHJveShyeF9xLSZndDtwYWdlX3Bvb2wpOwomIzQzOwlyeF9xLSZndDtwYWdlX3Bvb2wgPSBOVUxMOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCkBAIC0yMzUyLDE0ICYjNDM7MjM4NSwxNCBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAogCXR4X3EtJmd0O3R4X3NrYnVmZiA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qgc2tfYnVmZiAqLCBkbWFfY29uZi0mZ3Q7ZG1hX3R4X3NpemUpOwogCWlmICghdHhfcS0mZ3Q7dHhfc2tidWZmKQotCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJCWdvdG8gZXJyX2ZyZWVfc2tidWZmX2RtYTsKIAogCXNpemUgPSBzdG1tYWNfZ2V0X3R4X2Rlc2Nfc2l6ZShwcml2LCB0eF9xKSAqIGRtYV9jb25mLSZndDtkbWFfdHhfc2l6ZTsKIAogCWFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQocHJpdi0mZ3Q7ZGV2aWNlLCBzaXplLAogCQkJCSAgJmFtcDt0eF9xLSZndDtkbWFfdHhfcGh5LCBHRlBfS0VSTkVMKTsKIAlpZiAoIWFkZHIpCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwkJZ290byBlcnJfZnJlZV9za2J1ZmY7CiAKIAlpZiAocHJpdi0mZ3Q7ZXh0ZW5kX2Rlc2MpCiAJCXR4X3EtJmd0O2RtYV9ldHggPSBhZGRyOwpAQCAtMjM2OSw2ICYjNDM7MjQwMiwxNCBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkJdHhfcS0mZ3Q7ZG1hX3R4ID0gYWRkcjsKIAogCXJldHVybiAwOwomIzQzOwomIzQzO2Vycl9mcmVlX3NrYnVmZjoKJiM0MzsJa2ZyZWUodHhfcS0mZ3Q7dHhfc2tidWZmKTsKJiM0MzsJdHhfcS0mZ3Q7dHhfc2tidWZmID0gTlVMTDsKJiM0MztlcnJfZnJlZV9za2J1ZmZfZG1hOgomIzQzOwlrZnJlZSh0eF9xLSZndDt0eF9za2J1ZmZfZG1hKTsKJiM0MzsJdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYSA9IE5VTEw7CiYjNDM7CXJldHVybiAtRU5PTUVNOwogfQogCiBzdGF0aWMgaW50IGFsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3OTAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBhc3Nlc3Mgd2hldGhlciB0aGlzIHBhdGNoIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBhY3QgYW5kIHdoZXJlIGl0IHRvdWNoZXMuCgpBbHJpZ2h0LCB0aGUgY2hhbmdlIGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIHdoYXQmIzM5O3MgYHN0bW1hY2A/IEFoLCByaWdodCEgU1RNaWNyb2VsZWN0cm9uaWNzJiMzOTsgRXRoZXJuZXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQywgb3IgYXQgbGVhc3QgYSBmbGF2b3Igb2YgaXQuCgpOb3csIGEgY3J1Y2lhbCBxdWVzdGlvbiBwb3BzIHVwIGltbWVkaWF0ZWx5OiBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IHJ1bnMgKm9ubHkqIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhbHNvIGVtdWxhdGVkIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IElzIHRoZXJlIFBDSSBnbHVlLCBvciBwbGF0Zm9ybSBnbHVlIGluIHBsYXk/IElmIGl0JiMzOTtzIHRoZSBsYXR0ZXIsIHRoZW4gaXQmIzM5O3MgZmFyIGVhc2llciB0byBmdXp6IGVmZmVjdGl2ZWx5LiBJZiBpdCYjMzk7cyBqdXN0IGhhcmR3YXJlLCB0aGF0IG1ha2VzIGxpZmUgaGFyZGVyLCBidXQgZnV6emluZyBpcyBzdGlsbCB2YWx1YWJsZSB0byBpZGVudGlmeSBwb3NzaWJsZSBzZWN1cml0eSBob2xlcyBvciBwZXJmb3JtYW5jZSBpc3N1ZXMuCgpJIG5lZWQgdG8gcXVpY2tseSBjaGVjayB0aGUgcmVzdCBvZiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBUaW1lIHRvIGZpcmUgdXAgbXkgdG9vbHMg4oCTIGdyZXBwZXIsIGNvZGVzZWFyY2gsIHdoYXRldmVyIHdvcmtzIGJlc3QuIEdvdHRhIHNlZSB0aGUgY29udGV4dCBvZiB0aGlzIGBzdG1tYWNgIGRyaXZlci4gVW5kZXJzdGFuZGluZyB0aGUgc3Vycm91bmRpbmcgY29kZSwgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLCBpcyBlc3NlbnRpYWwgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IGZ1enppbmcgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDA1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDX0VUSCBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBoaWdoLWxldmVsIHZpZXcgb2YgaG93IFNUTU1BQ19FVEggaXMgcHJlc2VudGVkIGFuZCBvcmdhbml6ZWQuIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9uIGxvd2VyLWxldmVsIGhhcmR3YXJlIG9wdGlvbnMgYW5kIHBlcmhhcHMgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIEkgd2lsbCBsb29rIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3VwcG9ydGVkIGZlYXR1cmVzLiBJJiMzOTtsbCBwYXkgYXR0ZW50aW9uIHRvIGFueSBzeW1ib2xzIHRoYXQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBvciByZXF1aXJlIHNwZWNpZmljIFNPQyBmZWF0dXJlcyB0byBiZSBlbmFibGVkLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoaXMgS2NvbmZpZyBzcGFjZSBhbmQgc3RhcnQgcGlucG9pbnRpbmcgcG90ZW50aWFsIGFyZWFzIGZvciBjdXN0b21pemF0aW9uIG9yIG9wdGltaXphdGlvbiBkZXBlbmRpbmcgb24gdGhlIHVzZSBjYXNlLiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBsZWFkIG1lIHRvd2FyZHMgdGhlIGJlc3Qgd2F5IHRvIHV0aWxpemUgYW5kIHBvc3NpYmx5IGV4dGVuZCB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRpZiBTVE1NQUNfUExBVEZPUk1cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cJiMzNDtcbiAgNDY6XHRcdHNlbGVjdCBDUkMzMlxuICA0NzpcdFx0c2VsZWN0IE1JSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICA0OTpcdFx0aGVscFxuICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBEV01BQ19HRU5FUklDXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiAgNTQ6XHRcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnlcbiAgNTc6XHRcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxuICA1ODpcdFx0ICBkYXRhIGZvciBzZXR1cC5cbiAgNTk6XHRcbiAgNjA6XHRjb25maWcgRFdNQUNfQU5BUklPTlxuICA2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcJiMzNDtcbiAgNjI6XHRcdGRlZmF1bHQgQVJDXG4gIDYzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcbiAgNjQ6XHRcdGhlbHBcbiAgNjU6XHRcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDY2Olx0XG4gIDY3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgRFdNQUNfRUlDNzcwMFxuICA3MDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgNzE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXG4gIDc0Olx0XHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcbiAgNzU6XHRcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXG4gIDc2Olx0XHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBEV01BQ19JTkdFTklDXG4gIDc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbmdlbmljIE1BQyBzdXBwb3J0XCYjMzQ7XG4gIDgwOlx0XHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgS2NvbmZpZyBmb3IgU1RNTUFDX1BDSSBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBJJiMzOTttIHRoaW5raW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBicm9hZGVyIFNUTU1BQyBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHNlZSBob3cgdGhlIFBDSS1zcGVjaWZpYyBwYXJ0cyBhcmUgaGFuZGxlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIG51YW5jZXMgb3IgZ290Y2hhcyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbWVhdCBhbmQgcG90YXRvZXMgb2YgdGhlIEtjb25maWcgZW50cmllczogdGhlIHN5bWJvbHMsIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIChsaWtlIG90aGVyIGRyaXZlciBvciBoYXJkd2FyZSBmZWF0dXJlcyksIGFuZCB0aGUgKndoeSogYmVoaW5kIHRoZWlyIGRlc2lnbiBjaG9pY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGFzcGVjdHMgYXJlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIFBDSSBpbnRlcmZhY2UgYW5kIG5vdCBqdXN0IGdlbmVyYWxseSBhcHBsaWNhYmxlIHRvIHRoZSBTVE1NQUMgZmFtaWx5LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgcGFyc2luZyB0aGUgS2NvbmZpZyBmaWxlcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChNQUNIX0lOR0VOSUMgfHwgQ09NUElMRV9URVNUKVxuICA4MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgODM6XHRcdGhlbHBcbiAgODQ6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBJbmdlbmljIFNvQ3MuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gIDg3Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcbiAgODg6XHRcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIERXTUFDX0lQUTgwNlhcbiAgOTE6XHRcdHRyaXN0YXRlIFwmIzM0O1FDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcJiMzNDtcbiAgOTI6XHRcdGRlZmF1bHQgQVJDSF9RQ09NXG4gIDkzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbiAgOTQ6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDk1Olx0XHRoZWxwXG4gIDk2Olx0XHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxuICA5NzpcdFxuICA5ODpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIElQUTgwNnggU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuICA5OTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYW55IG9mIHRoZSBoYXJkd2FyZVxuIDEwMDpcdFx0ICBhY2NlbGVyYXRpb24gZmVhdHVyZXMgYXZhaWxhYmxlIG9uIHRoaXMgU29DLiBOZXR3b3JrIGRldmljZXNcbiAxMDE6XHRcdCAgd2lsbCBiZWhhdmUgbGlrZSBzdGFuZGFyZCBub24tYWNjZWxlcmF0ZWQgZXRoZXJuZXQgaW50ZXJmYWNlcy5cbiAxMDI6XHRcbiAxMDM6XHRcdCAgU2VsZWN0IHRoZSBRQ09NX1NPQ0lORk8gY29uZmlnIGZsYWcgdG8gZW5hYmxlIHNwZWNpZmljIGR3bWFjXG4gMTA0Olx0XHQgIGZpeHVwIGJhc2VkIG9uIHRoZSBpcHE4MDZ4IFNvQyByZXZpc2lvbi5cbiAxMDU6XHRcbiAxMDY6XHRjb25maWcgRFdNQUNfTFBDMThYWFxuIDEwNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIExQQzE4eHgvNDN4eCBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMTA4Olx0XHRkZWZhdWx0IEFSQ0hfTFBDMThYWFxuIDEwOTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXG4gMTEwOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDExMTpcdFx0aGVscFxuIDExMjpcdFx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxuIDExMzpcdFxuIDExNDpcdGNvbmZpZyBEV01BQ19NRURJQVRFS1xuIDExNTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQyN3h4IEdNQUMgc3VwcG9ydFwmIzM0O1xuIDExNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUKVxuIDExNzpcdFx0aGVscFxuIDExODpcdFx0ICBTdXBwb3J0IGZvciBNZWRpYVRlayBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMTE5Olx0XG4gMTIwOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTVQyNzEyIFNvQyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAxMjE6XHRcbiAxMjI6XHRjb25maWcgRFdNQUNfTUVTT05cbiAxMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDEyNDpcdFx0ZGVmYXVsdCBBUkNIX01FU09OXG4gMTI1Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9NRVNPTiB8fCBDT01QSUxFX1RFU1QpXG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gQW1sb2dpYyBNZXNvbiBTb0NzLlxuIDEyODpcdFxuIDEyOTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFtbG9naWMgTWVzb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAxMzA6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBNZXNvbjYsXG4gMTMxOlx0XHQgIE1lc29uOCwgTWVzb244YiBhbmQgR1hCQiBTb0NzLlxuIDEzMjpcdFxuIDEzMzpcdGNvbmZpZyBEV01BQ19OVVZPVE9OXG4gMTM0Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdXZvdG9uIE1BMzUgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDEzNTpcdFx0ZGVmYXVsdCBBUkNIX01BMzVcbiAxMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxuIDEzNzpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAxMzg6XHRcdGhlbHBcbiAxMzk6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQy5cbiAxNDA6XHRcbiAxNDE6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbiAxNDI6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXG4gMTQzOlx0XHQgIHVzZWQgZm9yIE1BMzUgc2VyaWVzIFNvQ3MuXG4gMTQ0Olx0XG4gMTQ1Olx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXG4gMTQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBFVEhRT1Mgc3VwcG9ydFwmIzM0O1xuIDE0NzpcdFx0ZGVmYXVsdCBBUkNIX1FDT01cbiAxNDg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgUXVhbGNvbW0gRVRIUU9TIGNvcmUuXG4gMTUxOlx0XG4gMTUyOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMTUzOlx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuIDE1NDpcdFxuIDE1NTpcdGNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXG4gMTU2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL1YySChQKSBHQkVUSCBhbmQgUlovVDJILCBSWi9OMkggR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTU3Olx0XHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1QpXG4gMTU5Olx0XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuIDE2MDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyOTEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBzdG1tYWMgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyIGluIEtjb25maWcuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgcG93ZXIgYW5kIGZsZXhpYmlsaXR5IHJlc2lkZS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBldmVyeXRoaW5nIGZyb20gYmFzaWMgUEhZIHNlbGVjdGlvbiBhbmQgbGluayBzcGVlZCBjb25maWd1cmF0aW9uLCB0byBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgRE1BIHNldHRpbmdzLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBtYXliZSBldmVuIHNvbWUgb2YgdGhlIHBvd2VyIG1hbmFnZW1lbnQgb3B0aW9ucy4gVGhlIHNwZWNpZmljcyBJJiMzOTttIGxvb2tpbmcgZm9yIHdpbGwgZGVwZW5kIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gYW5kIHNwZWNpZmljIHVzZSBjYXNlLCBidXQgSSBoYXZlIGEgc3Ryb25nIGdlbmVyYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgZ3JhbnVsYXIgbGV2ZWwgb2YgY29udHJvbCBoZXJlLCB3aGljaCBJIGNhbiB1c2UgZm9yIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIHR3ZWFraW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjb25zdHJhaW50cywgb3IgcG90ZW50aWFsbHkgZW5hYmxpbmcgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgYnVyaWVkIGluIHRoZSBLY29uZmln4oCmCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MTpcdFx0ICBTdXBwb3J0IGZvciBHaWdhYml0IEV0aGVybmV0IEludGVyZmFjZSAoR0JFVEgpLyBFdGhlcm5ldCBNQUMgKEdNQUMpXG4gMTYyOlx0XHQgIG9uIFJlbmVzYXMgU29Dcy5cbiAxNjM6XHRcbiAxNjQ6XHRcdCAgVGhpcyBzZWxlY3RzIFJlbmVzYXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkZXZpY2VcbiAxNjU6XHRcdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxuIDE2NjpcdFx0ICBSWi9OMkggU29Dcy5cbiAxNjc6XHRcbiAxNjg6XHRjb25maWcgRFdNQUNfUk9DS0NISVBcbiAxNjk6XHRcdHRyaXN0YXRlIFwmIzM0O1JvY2tjaGlwIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAxNzA6XHRcdGRlZmF1bHQgQVJDSF9ST0NLQ0hJUFxuIDE3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxuIDE3MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxuIDE3NTpcdFxuIDE3NjpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDE3NzpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuXG4gMTc4Olx0XG4gMTc5Olx0Y29uZmlnIERXTUFDX1JaTjFcbiAxODA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDE4MTpcdFx0ZGVmYXVsdCBBUkNIX1JaTjFcbiAxODI6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JaTjEgfHwgQ09NUElMRV9URVNUKVxuIDE4MzpcdFx0c2VsZWN0IFBDU19SWk4xX01JSUNcbiAxODQ6XHRcdGhlbHBcbiAxODU6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSZW5lc2FzIFJaL04xIFNvQyBmYW1pbHkuXG4gMTg2Olx0XG4gMTg3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDE4ODpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXG4gMTg5Olx0XHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxuIDE5MDpcdFxuIDE5MTpcdGNvbmZpZyBEV01BQ19TMzJcbiAxOTI6XHRcdHRyaXN0YXRlIFwmIzM0O05YUCBTMzJHL1MzMlIgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTkzOlx0XHRkZWZhdWx0IEFSQ0hfUzMyXG4gMTk0Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TMzIgfHwgQ09NUElMRV9URVNUKVxuIDE5NTpcdFx0aGVscFxuIDE5NjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBTMzJDQyBTT0NzLlxuIDE5NzpcdFxuIDE5ODpcdFx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAxOTk6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFMzMkNDIHNlcmllc1xuIDIwMDpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlciwgaWUuIFMzMkcyeHgsIFMzMkczeHggYW5kXG4gMjAxOlx0XHQgIFMzMlI0NS5cbiAyMDI6XHRcbiAyMDM6XHRjb25maWcgRFdNQUNfU09DRlBHQVxuIDIwNDpcdFx0dHJpc3RhdGUgXCYjMzQ7U09DRlBHQSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMjA1Olx0XHRkZWZhdWx0IEFSQ0hfSU5URUxfU09DRlBHQVxuIDIwNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXG4gMjA3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDIwODpcdFx0c2VsZWN0IE1ESU9fUkVHTUFQXG4gMjA5Olx0XHRzZWxlY3QgUkVHTUFQX01NSU9cbiAyMTA6XHRcdHNlbGVjdCBQQ1NfTFlOWFxuIDIxMTpcdFx0aGVscFxuIDIxMjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXG4gMjEzOlx0XG4gMjE0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQWx0ZXJhIFNPQ0ZQR0EgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDIxNTpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvclxuIDIxNjpcdFx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cbiAyMTc6XHRcbiAyMTg6XHRjb25maWcgRFdNQUNfU09QSEdPXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtTb3BoZ28gZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDIyMDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU09QSEdPIHx8IENPTVBJTEVfVEVTVClcbiAyMjE6XHRcdGRlZmF1bHQgbSBpZiBBUkNIX1NPUEhHT1xuIDIyMjpcdFx0aGVscFxuIDIyMzpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTb3BoZ28gUklTQy1WIFNvQ3NcbiAyMjQ6XHRcbiAyMjU6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBTb3BoZ28gU29DIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDIyNjpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbiAyMjc6XHRcdCAgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gdmFyaW91cyBTb3BoZ28gU29Dcy5cbiAyMjg6XHRcbiAyMjk6XHRjb25maWcgRFdNQUNfU1BBQ0VNSVRcbiAyMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1NwYWNlbWl0IGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAyMzE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NQQUNFTUlUIHx8IENPTVBJTEVfVEVTVClcbiAyMzI6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjMzOlx0XHRkZWZhdWx0IG0gaWYgQVJDSF9TUEFDRU1JVFxuIDIzNDpcdFx0aGVscFxuIDIzNTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTcGFjZW1pdCBSSVNDLVYgU29Dc1xuIDIzNjpcdFxuIDIzNzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFNwYWNlbWl0IHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDIzODpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbiAyMzk6XHRcdCAgU3BhY2VtaXQgSzMgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMjQwOlx0XG4gMjQxOlx0Y29uZmlnIERXTUFDX1NUQVJGSVZFXG4gMjQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdGFyRml2ZSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMjQzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVEFSRklWRSB8fCBDT01QSUxFX1RFU1QpXG4gMjQ0Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI0NTpcdFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU1RBUkZJVkVcbiAyNDY6XHRcdGhlbHBcbiAyNDc6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gU3RhckZpdmUgUklTQy1WIFNvQ3NcbiAyNDg6XHRcbiAyNDk6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBTdGFyRml2ZSBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcbiAyNTA6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXG4gMjUxOlx0XHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI1MjpcdFxuIDI1MzpcdGNvbmZpZyBEV01BQ19TVElcbiAyNTQ6XHRcdHRyaXN0YXRlIFwmIzM0O1NUaSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyNTU6XHRcdGRlZmF1bHQgQVJDSF9TVElcbiAyNTY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NUSSB8fCBDT01QSUxFX1RFU1QpXG4gMjU3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI1ODpcdFx0aGVscFxuIDI1OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUaSBTT0NzLlxuIDI2MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDExNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSByZXN0IG9mIHRoaXMgS2NvbmZpZyBmaWxlLCBwaWNraW5nIHVwIGZyb20sIHNheSwgbGluZSAyNjAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgZmxvdywgc28gSSYjMzk7bGwgbmVlZCB0byBhYnNvcmIgdGhlIHNwZWNpZmljcyBmcm9tIHRoZXJlLiBJ4oCZbSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhpcyBzZWN0aW9uLCBidXQgYSByZWZyZXNoZXIgaXMgaW4gb3JkZXIsIEkmIzM5O2xsIGdvIHRocm91Z2ggaXQgbGluZSBieSBsaW5lLiBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIHdpbGwgYmUgbW9yZSBpbnRlcmVzdGluZyBjb25maWcgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIHVucGFjayBmdXJ0aGVyIGRvd24gdGhhdCBjb3VsZCBhZmZlY3QgcGVyZm9ybWFuY2UuIEkgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSBhbiBlZmZlY3RpdmUgc3VtbWFyeSwgYW5kIGxvb2sgdG8gbWFrZSBmdXJ0aGVyIGluZmVyZW5jZXMuIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjYxOlx0XHQgIFRoaXMgc2VsZWN0cyBTVGkgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDI2MjpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xuIDI2MzpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyNjQ6XHRcbiAyNjU6XHRjb25maWcgRFdNQUNfU1RNMzJcbiAyNjY6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTTMyIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAyNjc6XHRcdGRlZmF1bHQgQVJDSF9TVE0zMlxuIDI2ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXG4gMjY5Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI3MDpcdFx0aGVscFxuIDI3MTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXG4gMjcyOlx0XG4gMjczOlx0XHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gMjc0Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVE0zMiBzZXJpZXNcbiAyNzU6XHRcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjc2Olx0XG4gMjc3Olx0Y29uZmlnIERXTUFDX1NVTlhJXG4gMjc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMjc5Olx0XHRkZWZhdWx0IEFSQ0hfU1VOWElcbiAyODA6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcbiAyODE6XHRcdGhlbHBcbiAyODI6XHRcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEEyMC9BMzEgR01BQyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyODM6XHRcbiAyODQ6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAyODU6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcbiAyODY6XHRcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI4NzpcdFxuIDI4ODpcdGNvbmZpZyBEV01BQ19TVU44SVxuIDI4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDI5MDpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMjkxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMjkyOlx0XHRzZWxlY3QgTURJT19CVVNfTVVYXG4gMjkzOlx0XHRoZWxwXG4gMjk0Olx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBIMyBBODNUIEE2NCBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI5NTpcdFxuIDI5NjpcdFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuIDI5NzpcdFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSDMvQTgzVC9BNjRcbiAyOTg6XHRcdCAgRU1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI5OTpcdFxuIDMwMDpcdGNvbmZpZyBEV01BQ19TVU41NUlcbiAzMDE6XHRcdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XCYjMzQ7XG4gMzAyOlx0XHRkZWZhdWx0IEFSQ0hfU1VOWElcbiAzMDM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcbiAzMDQ6XHRcdHNlbGVjdCBNRElPX0JVU19NVVhcbiAzMDU6XHRcdGhlbHBcbiAzMDY6XHRcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDMwNzpcdFxuIDMwODpcdFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuIDMwOTpcdFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgQTUyMy9UNTI3XG4gMzEwOlx0XHQgIEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlci5cbiAzMTE6XHRcbiAzMTI6XHRjb25maWcgRFdNQUNfVEhFQURcbiAzMTM6XHRcdHRyaXN0YXRlIFwmIzM0O1QtSEVBRCBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMzE0Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9USEVBRCB8fCBDT01QSUxFX1RFU1QpXG4gMzE1Olx0XHRoZWxwXG4gMzE2Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFQtSEVBRCBSSVNDLVYgU29Dc1xuIDMxNzpcdFxuIDMxODpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFQtSEVBRCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG4gMzE5Olx0XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxuIDMyMDpcdFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxuIDMyMTpcdFxuIDMyMjpcdGNvbmZpZyBEV01BQ19JTVg4XG4gMzIzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOWFAgSU1YOCBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMzI0Olx0XHRkZWZhdWx0IEFSQ0hfTVhDXG4gMzI1Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9NWEMgfHwgQ09NUElMRV9URVNUKVxuIDMyNjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAzMjc6XHRcdGhlbHBcbiAzMjg6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBOWFAgaS5NWDggU09Dcy5cbiAzMjk6XHRcbiAzMzA6XHRcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gMzMxOlx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIGkuTVg4IHNlcmllcyBsaWtlXG4gMzMyOlx0XHQgIGlNWDhNUC9pTVg4RFhMIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAzMzM6XHRcbiAzMzQ6XHRjb25maWcgRFdNQUNfSU5URUxfUExBVFxuIDMzNTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDMzNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMS1xuIDMzNzpcdFx0aGVscFxuIDMzODpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBJbnRlbCBTb0NzXG4gMzM5Olx0XG4gMzQwOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU3OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIEtjb25maWcgU3RydWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGUgS2NvbmZpZyBjb250ZXh0IHByZXR0eSB3ZWxsIGVzdGFibGlzaGVkLCBidXQgSSBuZWVkIHRvIHpvb20gaW4uIFRoZSBvdmVyYWxsIGZyYW1ld29yayBpcyBpbiBwbGFjZSwgSSB1bmRlcnN0YW5kIGhvdyB0aGUgZGVwZW5kZW5jaWVzIHdvcmsgYW5kIHdoZXJlIHRoZSBtYWluIGZpbGVzIGFyZSwgYnV0IHRoZSBkZXZpbCBpcyBhbHdheXMgaW4gdGhlIGRldGFpbHMsIGlzbiYjMzk7dCBpdD8gTGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBnbyB0aHJvdWdoIGl0IGxpbmUgYnkgbGluZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgdGhpcyBzcGVjaWZpYyBLY29uZmlnIGZpbGUsIHNvIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaWxlLCBzdGFydGluZyBmcm9tIGxpbmUgMzQwLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY3J1Y2lhbCBlbGVtZW50cywgYW5kIHByb2JhYmx5IG1vcmUgZGVmaW5pdGlvbnMsIG1vcmUgdmFyaWFibGVzLCBhbmQgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYy4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucywgYW5kIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM0MTpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBJbnRlbCBLZWVtIEJheVxuIDM0MjpcdFx0ICBTb0MuXG4gMzQzOlx0XG4gMzQ0Olx0Y29uZmlnIERXTUFDX0xPT05HU09OMVxuIDM0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24xIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDM0NjpcdFx0ZGVmYXVsdCBNQUNIX0xPT05HU09OMzJcbiAzNDc6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChNQUNIX0xPT05HU09OMzIgfHwgQ09NUElMRV9URVNUKVxuIDM0ODpcdFx0aGVscFxuIDM0OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uMSBTb0MuXG4gMzUwOlx0XG4gMzUxOlx0XHQgIFRoaXMgc2VsZWN0cyBMb29uZ3NvbjEgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDM1MjpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXG4gMzUzOlx0XHQgIGxpa2UgTG9vbmdzb24gTFMxQi9MUzFDLlxuIDM1NDpcdFxuIDM1NTpcdGNvbmZpZyBEV01BQ19URUdSQVxuIDM1NjpcdFx0dHJpc3RhdGUgXCYjMzQ7TlZJRElBIFRlZ3JhIE1HQkUgc3VwcG9ydFwmIzM0O1xuIDM1NzpcdFx0ZGVwZW5kcyBvbiBBUkNIX1RFR1JBIHx8IENPTVBJTEVfVEVTVFxuIDM1ODpcdFx0aGVscFxuIDM1OTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIE11bHRpLUdpZ2FCaXQgRXRoZXJuZXQgKE1HQkUpIENvbnRyb2xsZXIgdGhhdCBpc1xuIDM2MDpcdFx0ICBmb3VuZCBvbiB0aGUgTlZJRElBIFRlZ3JhIFNvQyBkZXZpY2VzLiBUaGlzIGRyaXZlciBwcm92aWRlcyB0aGUgZ2x1ZVxuIDM2MTpcdFx0ICBsYXllciBvbiB0b3Agb2YgdGhlIHN0bW1hYyBkcml2ZXIgcmVxdWlyZWQgZm9yIHRoZXNlIE5WSURJQSBUZWdyYSBTb0NcbiAzNjI6XHRcdCAgZGV2aWNlcy5cbiAzNjM6XHRcbiAzNjQ6XHRjb25maWcgRFdNQUNfVklTQ09OVElcbiAzNjU6XHRcdHRyaXN0YXRlIFwmIzM0O1Rvc2hpYmEgVmlzY29udGkgRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDM2NjpcdFx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXG4gMzY3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXG4gMzY4Olx0XHRoZWxwXG4gMzY5Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gVmlzY29udGkgU29Dcy5cbiAzNzA6XHRcbiAzNzE6XHRlbmRpZiAjIFNUTU1BQ19QTEFURk9STVxuIDM3MjpcdFxuIDM3MzpcdGNvbmZpZyBTVE1NQUNfTElCUENJXG4gMzc0Olx0XHR0cmlzdGF0ZVxuIDM3NTpcdFx0aGVscFxuIDM3NjpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBQQ0kgYnVzIGhlbHBlcnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDM3NzpcdFxuIDM3ODpcdGNvbmZpZyBEV01BQ19JTlRFTFxuIDM3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMzgwOlx0XHRkZWZhdWx0IFg4NlxuIDM4MTpcdFx0ZGVwZW5kcyBvbiBYODYgXHUwMDI2XHUwMDI2IFBDSVxuIDM4MjpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gMzgzOlx0XHRkZXBlbmRzIG9uIEFDUElcbiAzODQ6XHRcdGhlbHBcbiAzODU6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlXG4gMzg2Olx0XHQgIHN0bW1hYyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEludGVsIFF1YXJrL0VITC9UR0wuXG4gMzg3Olx0XG4gMzg4Olx0Y29uZmlnIERXTUFDX0xPT05HU09OXG4gMzg5Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDM5MDpcdFx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcbiAzOTE6XHRcdGRlcGVuZHMgb24gKE1BQ0hfTE9PTkdTT042NCB8fCBDT01QSUxFX1RFU1QpIFx1MDAyNlx1MDAyNiBQQ0lcbiAzOTI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM5MzpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiAzOTQ6XHRcdGhlbHBcbiAzOTU6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxuIDM5NjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cbiAzOTc6XHRcbiAzOTg6XHRjb25maWcgRFdNQUNfTU9UT1JDT01NXG4gMzk5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiA0MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiA0MTg6XHRcbiA0MTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiA0MjA6XHRlbmRpZiAjIFNUTU1BQ19FVEhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwNjIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgU1RNTUFDX0VUSCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYFNUTU1BQ19FVEhgLCB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQ3MuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGV2ZW4gcmVhY2ggaXQgd2l0aGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG9yIGlmIEkgY2FuIGluc3RhbnRpYXRlIGl0LgoKQmFzZWQgb24gdGhlIGd1aWRlbGluZXMsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgJiMzNDtXb3J0aEZ1enppbmcuJiMzNDsgVGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGhpbmdlcyBvbiB3aGV0aGVyIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gY2VydGFpbiBjYXRlZ29yaWVzLiBUaGUga2V5IG9uZSBoZXJlIGlzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHdoaWNoIGluY2x1ZGVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVjZXNzaXRhdGUgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoKU28sIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGFza2luZyBpczogZG9lcyBRRU1VIGVtdWxhdGUgdGhlIGBzdG1tYWNgIG9yIGBkd21hY2AgKERlc2lnbldhcmUgTUFDKT8gSSBrbm93IFFFTVUgKmRvZXMqIGVtdWxhdGUgYGR3bWFjYCBmb3IgY2VydGFpbiBBUk0gYm9hcmRzLiBJJiMzOTttIHRoaW5raW5nIG9mIGBhbGx3aW5uZXItYTEwYCwgYHN1bjRpLWVtYWNgLCBgZHdjLXFvc2AsIGBpbXhgLCBhbmQgYHN0ZWxsYXJpc2AuIEkgc2VlIHNvbWUgbWVudGlvbiBvZiBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIG9yIGB4aWxpbngtZXRobGl0ZWAsIGJ1dCB0aGF0JiMzOTtzIGEgaGludCwgYW5kIEkmIzM5O20gb24gYW1kNjQgbm93LgoKQWhhISBUYXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBRRU1VIG9uIHg4Ni9hbWQ2NCBlbXVsYXRlcyBgc3RtbWFjYCBvciBpZiBpdCByZXF1aXJlcyBhIHBoeXNpY2FsIFNvQy9QQ0kgTklDLiBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgdmlydHVhbCBvciBlbXVsYXRlZCBkZXZpY2UgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIGlmIGBzeXprYWxsZXJgIGNhbiBpbnN0YW50aWF0ZSBpdCB0aHJvdWdoIHNvbWUgcGxhdGZvcm0vZHVtbXkgZGV2aWNlLgoKUmlnaHQsIHNvIGNhbiBhIHVzZXJzcGFjZSBwcm9ncmFtIG9yIHN5c2NhbGwgZXZlbiBjcmVhdGUgYHN0bW1hY2A/IE5vLCBpdCYjMzk7cyBhbiBFdGhlcm5ldCBNQUMgZHJpdmVyLiBJdOKAmXMgZm9yIGVtYmVkZGVkIFNvQ3MsIGxpa2UgdGhvc2UgZnJvbSBBbGx3aW5uZXIsIEFtbG9naWMsIFNUTTMyLCBSb2NrY2hpcCwgSW50ZWwgUXVhcmsvRUhML1RHTCwgb3IgZm9yIFBDSSBldGhlcm5ldCBjYXJkcy4KCkFscmlnaHQsIGxldCYjMzk7cyBleHBsaWNpdGx5IGNoZWNrIHdoYXQmIzM5O3MgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VICh4ODZfNjQpLiBFbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgb24geDg2XzY0IGFyZSB0aGUgZTEwMDAsIGUxMDAwZSwgcnRsODEzOSwgcGNuZXQsIG5lMmtfcGNpLCB2bXhuZXQzLCB2aXJ0aW8tbmV0LCBhbmQgaWdiLiBDcnVjaWFsbHksIHRoZXJlJiMzOTtzIG5vIGBzdG1tYWNgIG9yIGBkd21hY2AgUENJIGRldmljZSBpbiBRRU1VJiMzOTtzIHN0YW5kYXJkIGhhcmR3YXJlIGxpc3QuIEkgY2FuIGNoZWNrIHRoZSBgaHcvbmV0L2AgZGlyZWN0b3J5IGFuZCBjb25maXJtLCBidXQgSSYjMzk7bSBsb29raW5nIGF0IGZpbGVzIGxpa2UgYGFsbHdpbm5lci1zdW44aS1lbWFjLmNgLCBgY2FkZW5jZV9nZW0uY2AsIGBlMTAwMC5jYCwgYHZpcnRpby1uZXQuY2AgZXRjLiBObyBgc3RtbWFjYCwgbm8gYGR3bWFjYC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIG90aGVyIHBvdGVudGlhbCBhdmVudWVzOiBjYW4gaXQgYmUgZnV6emVkIHRocm91Z2ggYSBVU0IgZ2FkZ2V0PyBOby4gVmlydGlvPyBOby4gQSBtb2NrIGRldmljZT8gTm8uCgpPa2F5LCBiYWNrIHRvIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNyaXRlcmlhLiBSZS1yZWFkaW5nIHRoZSBndWlkZWxpbmVzOiAmIzM0Oy0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4ucmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjazogYHN0bW1hY2AgaXMgYSBkcml2ZXIgZm9yIFNUTWljcm8mIzM5O3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyBmb3IgKnBoeXNpY2FsKiBFdGhlcm5ldCBjb250cm9sbGVycy4gVGhhdCBtZWFucyBEV01BQyBvbiB2YXJpb3VzIFNvQ3Mgb3IgSW50ZWwgUXVhcmsgLyBNb3RvcmNvbW0gWVQ2ODAxIFBDSSBjYXJkcy4gU28sIHRoaXMgcmVxdWlyZXMgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBvciBBUk0vUklTQy1WL01JUFMgU29DcyB3aXRoIERXTUFDIGhhcmR3YXJlIHRoYXQgaXMgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgZ2l2ZW4gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuCgpTbywgSSBuZWVkIHRvIGtub3cgZGVmaW5pdGl2ZWx5OiBpcyAqYW55KiBwYXJ0IG9mIGBzdG1tYWNgIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBvciBub3Q/IEkgYW0gZ29pbmcgdG8gZ3JlcCBmb3IgYHN0bW1hY2AgaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYz05Mz1zdGF0aWMgaW50IGFuYXJpb25fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEwNDpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMDUtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzA3Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMDgtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTY3PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTgxOlx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE4Mi1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYz0xOT1zdGF0aWMgaW50IGR3bWFjX2dlbmVyaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjktXHRpZiAocGRldi1cdTAwM2VkZXYub2Zfbm9kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjMwOlx0XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMzEtXHRcdGlmIChJU19FUlIocGxhdF9kYXQpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MjkzPXN0YXRpYyBpbnQgaW14X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA5Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzEwLVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjc6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTY4LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NTQ6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNTUtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjM4NzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy0zODgtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MTg4Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTg5LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy01Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo1MzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy01NC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjMxOlx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MzItXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTg6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTU5LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtMzkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjM5MzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy0zOTQtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9ODI9c3RhdGljIGludCBudnRfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzo5NDpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05NS1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTY5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Njk5Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MDAtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxNDY6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTQ3LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNTY4PXN0YXRpYyBpbnQgcmtfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTU4NTpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4Ni1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz00OD1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6NTk6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjAtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xNDQ9c3RhdGljIGludCBzMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoxNjM6XHRwbGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHJlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTY0LVx0aWYgKElTX0VSUihwbGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NTk2PXN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NjE1Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTYxNi1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo0ODpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTQ5LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoxNjk6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTE3MC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxMDM6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTEwNC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jPTI0OT1zdGF0aWMgaW50IHN0aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI2NzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2OC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NTI1PXN0YXRpYyBpbnQgc3RtMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTUzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NTM3Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MzgtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYz0xMDU9c3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjExNzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExOC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTc0Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTc1LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz05OT1zdGF0aWMgaW50IHN1bjdpX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTExMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTExOlx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xMTItXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MzIwOlx0cGxhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCByZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzIxLVx0aWYgKElTX0VSUihwbGF0KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjE2PXN0YXRpYyBpbnQgdGhlYWRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjMwOlx0cGxhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIzMS1cdGlmIChJU19FUlIocGxhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yMDU9c3RhdGljIGludCB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjE2Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMTctXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz0zOTM9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzdG1tYWNfZ21hYzRfY29tcGF0c1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQwNS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjQwNjogKiBzdG1tYWNfcHJvYmVfY29uZmlnX2R0IC0gcGFyc2UgZGV2aWNlLXRyZWUgZHJpdmVyIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQwNy0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTQxMz1zdGF0aWMgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjQxNDpzdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy00MTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY0MT1zdGF0aWMgdm9pZCBkZXZtX3N0bW1hY19yZW1vdmVfY29uZmlnX2R0KHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjUxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NjUyOiAqIGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjUzLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02NTQtICogQG1hYzogTUFDIGFkZHJlc3MgdG8gdXNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTU6ICogRGVzY3JpcHRpb246IERldnJlcyB2YXJpYW50IG9mIHN0bW1hY19wcm9iZV9jb25maWdfZHQoKS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY1Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY1Nz1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NjU4OmRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjU5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02NjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NjM6XHRwbGF0ID0gc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjY0LVx0aWYgKElTX0VSUihwbGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz02NzU9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY3NjpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjgwLSNlbmRpZiAvKiBDT05GSUdfT0YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY4MTpFWFBPUlRfU1lNQk9MX0dQTChkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oPTE0PXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoxNTpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0xNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2NDcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgTUFDIERyaXZlciBQQ0kgSUQgTWF0Y2hpbmcqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlc2UgRXRoZXJuZXQgZHJpdmVycyBoYW5kbGUgUENJIGRldmljZSBJRCBtYXRjaGluZy4gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBzdGFydCB3aXRoIGBzdG1tYWNfcGNpLmNgLCB0aGVuIG1vdmUgb24gdG8gYGR3bWFjLWludGVsLmNgIGFuZCBgZHdtYWMtbW90b3Jjb21tLmNgLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB3aGljaCBzcGVjaWZpYyBQQ0kgSURzIGVhY2ggZHJpdmVyIGNsYWltcyByZXNwb25zaWJpbGl0eSBmb3IuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlaXIgaW50ZW5kZWQgaGFyZHdhcmUgc2NvcGUgYW5kIGFueSBwb3RlbnRpYWwgb3ZlcmxhcHMgb3IgY29uZmxpY3RzLiBJdCYjMzk7cyB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IHRvIGdldCBhIGJpcmQmIzM5O3MtZXllIHZpZXcgb2YgdGhlaXIgaW50ZW5kZWQgZGV2aWNlIHN1cHBvcnQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW5jbHVkZXMgcmV2ZWFsIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjQ6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzYyPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk2LVx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFFVQVJLLCBcdTAwMjZxdWFya19pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDc5PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NDk4OnN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU3OD1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kd21hY19yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU5NjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk3LVx0eyBQQ0lfREVWSUNFX0RBVEEoTE9PTkdTT04sIEdNQUMxLCBcdTAwMjZsb29uZ3Nvbl9nbWFjX3BjaV9pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI2ND1zdGF0aWMgaW50IG1vdG9yY29tbV9zZXR1cF9pcnEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjkzOnN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Mj1zdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzY4LVx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5Olx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDQtXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE3MgoJCQkJCQkJb3V0cHV0OiAxMjUKCQkJCQkJCXRob3VnaHRzOiA3MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFNUTU1BQyBEcml2ZXIgZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoaXMgaXMgdGhlIFNUTU1BQyAob3IgRFdNQUMpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIElQLCBmb3VuZCBpbiB2YXJpb3VzIFNvQ3MgYW5kIHNvbWV0aW1lcyBzcGVjaWZpYyBQQ0kgY2FyZHMuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZSBpcyAqKm5vdCoqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUsIGVzcGVjaWFsbHkgb24gdGhlIGFtZDY0IGFyY2hpdGVjdHVyZSwgb3IgZXZlbiBpbiBHQ0UuIFRoYXQgbWVhbnMgdGhlcmUmIzM5O3Mgbm8gd2F5IGZvciB0aGUgY29kZSBpbiB0aGlzIGRyaXZlciB0byBleGVjdXRlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIGRldmljZSBjYW5ub3QgcHJvYmUgb3IgZnVuY3Rpb24uCgpJJiMzOTttIGRvdWJsZS1jaGVja2luZyB0aGUgaW5zdHJ1Y3Rpb25zLCBzcGVjaWZpY2FsbHkgdGhlIHNlY3Rpb24gYWJvdXQgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhpcyBmaXRzIHRoZSBiaWxsIHBlcmZlY3RseTogaXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChTeW5vcHN5cy9TVE1pY3JvZWxlY3Ryb25pY3MpLCByZXF1aXJpbmcgYSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZCwgYW5kIGl0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4KCk5vdyBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBBbGwgb2YgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHdpdGhpbiBgc3RtbWFjX21haW4uY2AuIEkgc2VlIHRoYXQgdGhlIGNoYW5nZXMgYXJlIGFkZGluZyBudWxsIGNoZWNrcyBhbmQgaW1wcm92aW5nIGVycm9yIGhhbmRsaW5nIGFyb3VuZCBETUEgcmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBUWC9SWCBidWZmZXJzLiBJbXBvcnRhbnRseSwgdGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgcGFydCBvZiB0aGUgZHJpdmVyJiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eSwgdGhhdCByZXF1aXJlcyB0aGUgU1RNTUFDL0RXTUFDIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgYW5kIGluaXRpYWxpemVkLgoKQmVjYXVzZSB0aGlzIGRyaXZlciBuZWNlc3NpdGF0ZXMgcGh5c2ljYWwgU1RNTUFDIGhhcmR3YXJlLCBhbmQgc2luY2UgdGhpcyBoYXJkd2FyZSBpcyB1bmF2YWlsYWJsZSBpbiB0aGUgdGFyZ2V0IHZpcnR1YWwgZW52aXJvbm1lbnRzIChRRU1VLCBHQ0UpLCB0aGlzIG1lYW5zIHRoZSBjb2RlIGluIHRoaXMgcGF0Y2ggaXMgdW5yZWFjaGFibGUgdW5kZXIgZnV6emluZy4gVGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgKnN0cnVjdHVyYWxseSogaW5hY2Nlc3NpYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LgoKVGhlcmVmb3JlOgoKKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqIOKAkyBUaGUgY29kZSYjMzk7cyB1bmRlcmx5aW5nIGhhcmR3YXJlIGRlcGVuZGVuY2UgbWFrZXMgaXQgdW5mZWFzaWJsZSB0byBmdXp6LgoqICAgKipGb2N1c1N5bWJvbHM6IFxbIF0qKiDigJMgU2luY2UgdGhlIGRldmljZSBpcyB1bnByb2JlZCwgdGhlcmUgYXJlIG5vIGZ1bmN0aW9ucyB0byBwb2ludCBhdC4KKiAgICoqRW5hYmxlQ29uZmlnczogXFsgXSoqIOKAkyBBcyB0aGUgZGV2aWNlIGlzIHVuYXZhaWxhYmxlLCBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5LgoqICAgKipSZWFzb25pbmc6KiogVGhlIHN0bW1hYyBkcml2ZXIgZGVwZW5kcyBvbiBwaHlzaWNhbCBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgY29udHJvbGxlcnMgYW5kIFNvQ3MsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLgoKQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuIEkmIzM5O3ZlIHJldmlld2VkIGV2ZXJ5dGhpbmcsIGFuZCBpdCYjMzk7cyBhbGwgY29uc2lzdGVudCBhbmQgYWNjdXJhdGUuIEkmIzM5O20gY29uZmlkZW50IGluIHRoaXMgYXNzZXNzbWVudC4gTGV0JiMzOTtzIHN1Ym1pdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1oYW5kbGluZyBhbmQgYnVmZmVyLWZyZWVpbmcgcGF0aHMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0NzIC8gUENJZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1oYW5kbGluZyBhbmQgYnVmZmVyLWZyZWVpbmcgcGF0aHMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0NzIC8gUENJZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MTQuODA2MTg3Mzc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNDQ1MTQ3MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1oYW5kbGluZyBhbmQgYnVmZmVyLWZyZWVpbmcgcGF0aHMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0NzIC8gUENJZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NToxNC44MDYxOTY1NjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTI5MzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJjMTQ2OThhZmE1Y2RmZTNkOTBkY2NhY2EzNTM4NmI1OWM0YzFjODZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAxNTo0NToxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IGYyZmM4OTE3NjY1NGUuLmYwZTA2YzAxMWI4ZGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMTcyOCw3ICsxNzI4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0XFx0XFx0XFx0IERNQV9UT19ERVZJQ0UpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAodHhfcS1cXHUwMDNleGRwZltpXSBcXHUwMDI2XFx1MDAyNlxcbitcXHRpZiAodHhfcS1cXHUwMDNleGRwZiBcXHUwMDI2XFx1MDAyNiB0eF9xLVxcdTAwM2V4ZHBmW2ldIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAodHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfVFggfHxcXG4gXFx0ICAgICB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7XFxuIFxcdFxcdHhkcF9yZXR1cm5fZnJhbWUodHhfcS1cXHUwMDNleGRwZltpXSk7XFxuQEAgLTE3MzgsNyArMTczOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdGlmICh0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hTS19UWClcXG4gXFx0XFx0dHhfcS1cXHUwMDNleHNrX2ZyYW1lc19kb25lKys7XFxuIFxcbi1cXHRpZiAodHhfcS1cXHUwMDNldHhfc2tidWZmW2ldIFxcdTAwMjZcXHUwMDI2XFxuK1xcdGlmICh0eF9xLVxcdTAwM2V0eF9za2J1ZmYgXFx1MDAyNlxcdTAwMjYgdHhfcS1cXHUwMDNldHhfc2tidWZmW2ldIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1NLQikge1xcbiBcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueSh0eF9xLVxcdTAwM2V0eF9za2J1ZmZbaV0pO1xcbiBcXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZbaV0gPSBOVUxMO1xcbkBAIC0xNzYxLDYgKzE3NjEsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0c3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcSA9IFxcdTAwMjZkbWFfY29uZi1cXHUwMDNlcnhfcXVldWVbcXVldWVdO1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xcbitcXHRpZiAoIXJ4X3EtXFx1MDAzZWJ1Zl9wb29sKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZG1hX2NvbmYtXFx1MDAzZWRtYV9yeF9zaXplOyBpKyspXFxuIFxcdFxcdHN0bW1hY19mcmVlX3J4X2J1ZmZlcihwcml2LCByeF9xLCBpKTtcXG4gfVxcbkBAIC0xODAyLDYgKzE4MDYsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfeHNrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcXHUwMDI2ZG1hX2NvbmYtXFx1MDAzZXJ4X3F1ZXVlW3F1ZXVlXTtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cXG4rXFx0aWYgKCFyeF9xLVxcdTAwM2VidWZfcG9vbClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRtYV9jb25mLVxcdTAwM2VkbWFfcnhfc2l6ZTsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSBcXHUwMDI2cnhfcS1cXHUwMDNlYnVmX3Bvb2xbaV07XFxuIFxcbkBAIC0yMDk3LDYgKzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSA9IFxcdTAwMjZkbWFfY29uZi1cXHUwMDNldHhfcXVldWVbcXVldWVdO1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdC8qIHR4X3NrYnVmZl9kbWEgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovXFxuK1xcdGlmICghdHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0dHhfcS1cXHUwMDNleHNrX2ZyYW1lc19kb25lID0gMDtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkbWFfY29uZi1cXHUwMDNlZG1hX3R4X3NpemU7IGkrKylcXG5AQCAtMjI3MiwxNSArMjI4NCwxOSBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0fVxcbiBcXG4gXFx0cnhfcS1cXHUwMDNlYnVmX3Bvb2wgPSBremFsbG9jX29ianMoKnJ4X3EtXFx1MDAzZWJ1Zl9wb29sLCBkbWFfY29uZi1cXHUwMDNlZG1hX3J4X3NpemUpO1xcbi1cXHRpZiAoIXJ4X3EtXFx1MDAzZWJ1Zl9wb29sKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0aWYgKCFyeF9xLVxcdTAwM2VidWZfcG9vbCkge1xcbitcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbitcXHRcXHRnb3RvIGVycl9kZXN0cm95X3Bvb2w7XFxuK1xcdH1cXG4gXFxuIFxcdHNpemUgPSBzdG1tYWNfZ2V0X3J4X2Rlc2Nfc2l6ZShwcml2KSAqIGRtYV9jb25mLVxcdTAwM2VkbWFfcnhfc2l6ZTtcXG4gXFxuIFxcdGFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQocHJpdi1cXHUwMDNlZGV2aWNlLCBzaXplLCBcXHUwMDI2cnhfcS1cXHUwMDNlZG1hX3J4X3BoeSxcXG4gXFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFhZGRyKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0aWYgKCFhZGRyKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfYnVmX3Bvb2w7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChwcml2LVxcdTAwM2VleHRlbmRfZGVzYylcXG4gXFx0XFx0cnhfcS1cXHUwMDNlZG1hX2VyeCA9IGFkZHI7XFxuQEAgLTIyOTYsMTAgKzIzMTIsMjcgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdHJldCA9IHhkcF9yeHFfaW5mb19yZWcoXFx1MDAyNnJ4X3EtXFx1MDAzZXhkcF9yeHEsIHByaXYtXFx1MDAzZWRldiwgcXVldWUsIG5hcGlfaWQpO1xcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHhkcCByeHEgaW5mb1xcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRnb3RvIGVycl9mcmVlX2RtYTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfZnJlZV9kbWE6XFxuK1xcdGlmIChwcml2LVxcdTAwM2VleHRlbmRfZGVzYylcXG4rXFx0XFx0ZG1hX2ZyZWVfY29oZXJlbnQocHJpdi1cXHUwMDNlZGV2aWNlLCBzaXplLCByeF9xLVxcdTAwM2VkbWFfZXJ4LFxcbitcXHRcXHRcXHRcXHQgIHJ4X3EtXFx1MDAzZWRtYV9yeF9waHkpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGRtYV9mcmVlX2NvaGVyZW50KHByaXYtXFx1MDAzZWRldmljZSwgc2l6ZSwgcnhfcS1cXHUwMDNlZG1hX3J4LFxcbitcXHRcXHRcXHRcXHQgIHJ4X3EtXFx1MDAzZWRtYV9yeF9waHkpO1xcbitcXHRyeF9xLVxcdTAwM2VkbWFfZXJ4ID0gTlVMTDtcXG4rXFx0cnhfcS1cXHUwMDNlZG1hX3J4ID0gTlVMTDtcXG4rZXJyX2ZyZWVfYnVmX3Bvb2w6XFxuK1xcdGtmcmVlKHJ4X3EtXFx1MDAzZWJ1Zl9wb29sKTtcXG4rXFx0cnhfcS1cXHUwMDNlYnVmX3Bvb2wgPSBOVUxMO1xcbitlcnJfZGVzdHJveV9wb29sOlxcbitcXHRwYWdlX3Bvb2xfZGVzdHJveShyeF9xLVxcdTAwM2VwYWdlX3Bvb2wpO1xcbitcXHRyeF9xLVxcdTAwM2VwYWdlX3Bvb2wgPSBOVUxMO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuQEAgLTIzNTIsMTQgKzIzODUsMTQgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcbiBcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmYgPSBremFsbG9jX29ianMoc3RydWN0IHNrX2J1ZmYgKiwgZG1hX2NvbmYtXFx1MDAzZWRtYV90eF9zaXplKTtcXG4gXFx0aWYgKCF0eF9xLVxcdTAwM2V0eF9za2J1ZmYpXFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHRnb3RvIGVycl9mcmVlX3NrYnVmZl9kbWE7XFxuIFxcbiBcXHRzaXplID0gc3RtbWFjX2dldF90eF9kZXNjX3NpemUocHJpdiwgdHhfcSkgKiBkbWFfY29uZi1cXHUwMDNlZG1hX3R4X3NpemU7XFxuIFxcbiBcXHRhZGRyID0gZG1hX2FsbG9jX2NvaGVyZW50KHByaXYtXFx1MDAzZWRldmljZSwgc2l6ZSxcXG4gXFx0XFx0XFx0XFx0ICBcXHUwMDI2dHhfcS1cXHUwMDNlZG1hX3R4X3BoeSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICghYWRkcilcXG4tXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfc2tidWZmO1xcbiBcXG4gXFx0aWYgKHByaXYtXFx1MDAzZWV4dGVuZF9kZXNjKVxcbiBcXHRcXHR0eF9xLVxcdTAwM2VkbWFfZXR4ID0gYWRkcjtcXG5AQCAtMjM2OSw2ICsyNDAyLDE0IEBAIHN0YXRpYyBpbnQgX19hbGxvY19kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHR0eF9xLVxcdTAwM2VkbWFfdHggPSBhZGRyO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfZnJlZV9za2J1ZmY6XFxuK1xcdGtmcmVlKHR4X3EtXFx1MDAzZXR4X3NrYnVmZik7XFxuK1xcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZiA9IE5VTEw7XFxuK2Vycl9mcmVlX3NrYnVmZl9kbWE6XFxuK1xcdGtmcmVlKHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWEpO1xcbitcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hID0gTlVMTDtcXG4rXFx0cmV0dXJuIC1FTk9NRU07XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MTUuNDY4NzY2MTk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MjQ4MTkwNjM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYzE0Njk4YWZhNWNkZmUzZDkwZGNjYWNhMzUzODZiNTljNGMxYzg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxNTo0NToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBmMmZjODkxNzY2NTRlLi5mMGUwNmMwMTFiOGRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTE3MjgsNyArMTcyOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHRcdCBETUFfVE9fREVWSUNFKTtcbiBcdH1cbiBcbi1cdGlmICh0eF9xLVx1MDAzZXhkcGZbaV0gXHUwMDI2XHUwMDI2XG4rXHRpZiAodHhfcS1cdTAwM2V4ZHBmIFx1MDAyNlx1MDAyNiB0eF9xLVx1MDAzZXhkcGZbaV0gXHUwMDI2XHUwMDI2XG4gXHQgICAgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfVFggfHxcbiBcdCAgICAgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7XG4gXHRcdHhkcF9yZXR1cm5fZnJhbWUodHhfcS1cdTAwM2V4ZHBmW2ldKTtcbkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpXG4gXHRcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lKys7XG4gXG4tXHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0gXHUwMDI2XHUwMDI2XG4rXHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNldHhfc2tidWZmW2ldIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0pO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSA9IE5VTEw7XG5AQCAtMTc2MSw2ICsxNzYxLDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXHUwMDI2ZG1hX2NvbmYtXHUwMDNlcnhfcXVldWVbcXVldWVdO1xuIFx0aW50IGk7XG4gXG4rXHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbitcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbitcdFx0cmV0dXJuO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkrKylcbiBcdFx0c3RtbWFjX2ZyZWVfcnhfYnVmZmVyKHByaXYsIHJ4X3EsIGkpO1xuIH1cbkBAIC0xODAyLDYgKzE4MDYsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfeHNrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXHUwMDI2ZG1hX2NvbmYtXHUwMDNlcnhfcXVldWVbcXVldWVdO1xuIFx0aW50IGk7XG4gXG4rXHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbitcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbitcdFx0cmV0dXJuO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkrKykge1xuIFx0XHRzdHJ1Y3Qgc3RtbWFjX3J4X2J1ZmZlciAqYnVmID0gXHUwMDI2cnhfcS1cdTAwM2VidWZfcG9vbFtpXTtcbiBcbkBAIC0yMDk3LDYgKzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbitcdC8qIHR4X3NrYnVmZl9kbWEgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovXG4rXHRpZiAoIXR4X3EtXHUwMDNldHhfc2tidWZmX2RtYSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0dHhfcS1cdTAwM2V4c2tfZnJhbWVzX2RvbmUgPSAwO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3R4X3NpemU7IGkrKylcbkBAIC0yMjcyLDE1ICsyMjg0LDE5IEBAIHN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0fVxuIFxuIFx0cnhfcS1cdTAwM2VidWZfcG9vbCA9IGt6YWxsb2Nfb2JqcygqcnhfcS1cdTAwM2VidWZfcG9vbCwgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemUpO1xuLVx0aWYgKCFyeF9xLVx1MDAzZWJ1Zl9wb29sKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbitcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbCkge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGVycl9kZXN0cm95X3Bvb2w7XG4rXHR9XG4gXG4gXHRzaXplID0gc3RtbWFjX2dldF9yeF9kZXNjX3NpemUocHJpdikgKiBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTtcbiBcbiBcdGFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQocHJpdi1cdTAwM2VkZXZpY2UsIHNpemUsIFx1MDAyNnJ4X3EtXHUwMDNlZG1hX3J4X3BoeSxcbiBcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWFkZHIpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0aWYgKCFhZGRyKSB7XG4rXHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdGdvdG8gZXJyX2ZyZWVfYnVmX3Bvb2w7XG4rXHR9XG4gXG4gXHRpZiAocHJpdi1cdTAwM2VleHRlbmRfZGVzYylcbiBcdFx0cnhfcS1cdTAwM2VkbWFfZXJ4ID0gYWRkcjtcbkBAIC0yMjk2LDEwICsyMzEyLDI3IEBAIHN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0cmV0ID0geGRwX3J4cV9pbmZvX3JlZyhcdTAwMjZyeF9xLVx1MDAzZXhkcF9yeHEsIHByaXYtXHUwMDNlZGV2LCBxdWV1ZSwgbmFwaV9pZCk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHhkcCByeHEgaW5mb1xcblwiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdGdvdG8gZXJyX2ZyZWVfZG1hO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX2ZyZWVfZG1hOlxuK1x0aWYgKHByaXYtXHUwMDNlZXh0ZW5kX2Rlc2MpXG4rXHRcdGRtYV9mcmVlX2NvaGVyZW50KHByaXYtXHUwMDNlZGV2aWNlLCBzaXplLCByeF9xLVx1MDAzZWRtYV9lcngsXG4rXHRcdFx0XHQgIHJ4X3EtXHUwMDNlZG1hX3J4X3BoeSk7XG4rXHRlbHNlXG4rXHRcdGRtYV9mcmVlX2NvaGVyZW50KHByaXYtXHUwMDNlZGV2aWNlLCBzaXplLCByeF9xLVx1MDAzZWRtYV9yeCxcbitcdFx0XHRcdCAgcnhfcS1cdTAwM2VkbWFfcnhfcGh5KTtcbitcdHJ4X3EtXHUwMDNlZG1hX2VyeCA9IE5VTEw7XG4rXHRyeF9xLVx1MDAzZWRtYV9yeCA9IE5VTEw7XG4rZXJyX2ZyZWVfYnVmX3Bvb2w6XG4rXHRrZnJlZShyeF9xLVx1MDAzZWJ1Zl9wb29sKTtcbitcdHJ4X3EtXHUwMDNlYnVmX3Bvb2wgPSBOVUxMO1xuK2Vycl9kZXN0cm95X3Bvb2w6XG4rXHRwYWdlX3Bvb2xfZGVzdHJveShyeF9xLVx1MDAzZXBhZ2VfcG9vbCk7XG4rXHRyeF9xLVx1MDAzZXBhZ2VfcG9vbCA9IE5VTEw7XG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5AQCAtMjM1MiwxNCArMjM4NSwxNCBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcbiBcdHR4X3EtXHUwMDNldHhfc2tidWZmID0ga3phbGxvY19vYmpzKHN0cnVjdCBza19idWZmICosIGRtYV9jb25mLVx1MDAzZWRtYV90eF9zaXplKTtcbiBcdGlmICghdHhfcS1cdTAwM2V0eF9za2J1ZmYpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHRnb3RvIGVycl9mcmVlX3NrYnVmZl9kbWE7XG4gXG4gXHRzaXplID0gc3RtbWFjX2dldF90eF9kZXNjX3NpemUocHJpdiwgdHhfcSkgKiBkbWFfY29uZi1cdTAwM2VkbWFfdHhfc2l6ZTtcbiBcbiBcdGFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQocHJpdi1cdTAwM2VkZXZpY2UsIHNpemUsXG4gXHRcdFx0XHQgIFx1MDAyNnR4X3EtXHUwMDNlZG1hX3R4X3BoeSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIWFkZHIpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHRnb3RvIGVycl9mcmVlX3NrYnVmZjtcbiBcbiBcdGlmIChwcml2LVx1MDAzZWV4dGVuZF9kZXNjKVxuIFx0XHR0eF9xLVx1MDAzZWRtYV9ldHggPSBhZGRyO1xuQEAgLTIzNjksNiArMjQwMiwxNCBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0dHhfcS1cdTAwM2VkbWFfdHggPSBhZGRyO1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX2ZyZWVfc2tidWZmOlxuK1x0a2ZyZWUodHhfcS1cdTAwM2V0eF9za2J1ZmYpO1xuK1x0dHhfcS1cdTAwM2V0eF9za2J1ZmYgPSBOVUxMO1xuK2Vycl9mcmVlX3NrYnVmZl9kbWE6XG4rXHRrZnJlZSh0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWEpO1xuK1x0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hID0gTlVMTDtcbitcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NToxNS40Njg3NzAxNDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MTMxNTUwNTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGFzc2VzcyB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGFjdCBhbmQgd2hlcmUgaXQgdG91Y2hlcy5cblxuQWxyaWdodCwgdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIFRoYXQncyB0aGUga2V5LiBOb3csIHdoYXQncyBgc3RtbWFjYD8gQWgsIHJpZ2h0ISBTVE1pY3JvZWxlY3Ryb25pY3MnIEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMsIG9yIGF0IGxlYXN0IGEgZmxhdm9yIG9mIGl0LlxuXG5Ob3csIGEgY3J1Y2lhbCBxdWVzdGlvbiBwb3BzIHVwIGltbWVkaWF0ZWx5OiBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IHJ1bnMgKm9ubHkqIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhbHNvIGVtdWxhdGVkIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IElzIHRoZXJlIFBDSSBnbHVlLCBvciBwbGF0Zm9ybSBnbHVlIGluIHBsYXk/IElmIGl0J3MgdGhlIGxhdHRlciwgdGhlbiBpdCdzIGZhciBlYXNpZXIgdG8gZnV6eiBlZmZlY3RpdmVseS4gSWYgaXQncyBqdXN0IGhhcmR3YXJlLCB0aGF0IG1ha2VzIGxpZmUgaGFyZGVyLCBidXQgZnV6emluZyBpcyBzdGlsbCB2YWx1YWJsZSB0byBpZGVudGlmeSBwb3NzaWJsZSBzZWN1cml0eSBob2xlcyBvciBwZXJmb3JtYW5jZSBpc3N1ZXMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSByZXN0IG9mIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuIFRpbWUgdG8gZmlyZSB1cCBteSB0b29scyDigJMgZ3JlcHBlciwgY29kZXNlYXJjaCwgd2hhdGV2ZXIgd29ya3MgYmVzdC4gR290dGEgc2VlIHRoZSBjb250ZXh0IG9mIHRoaXMgYHN0bW1hY2AgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgaG93IGl0J3MgdXNlZCwgaXMgZXNzZW50aWFsIHRvIGRldGVybWluZSB0aGUgYmVzdCBmdXp6aW5nIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzkwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MjMuNjAwMzI1NjY4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzOTgzNzgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX0VUSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NToyMy45NDAxNzM4MDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTE5OTc1MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUNfRVRIIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSwgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBoaWdoLWxldmVsIHZpZXcgb2YgaG93IFNUTU1BQ19FVEggaXMgcHJlc2VudGVkIGFuZCBvcmdhbml6ZWQuIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9uIGxvd2VyLWxldmVsIGhhcmR3YXJlIG9wdGlvbnMgYW5kIHBlcmhhcHMgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIEkgd2lsbCBsb29rIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3VwcG9ydGVkIGZlYXR1cmVzLiBJJ2xsIHBheSBhdHRlbnRpb24gdG8gYW55IHN5bWJvbHMgdGhhdCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIG9yIHJlcXVpcmUgc3BlY2lmaWMgU09DIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQuIEkgd2FudCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhpcyBLY29uZmlnIHNwYWNlIGFuZCBzdGFydCBwaW5wb2ludGluZyBwb3RlbnRpYWwgYXJlYXMgZm9yIGN1c3RvbWl6YXRpb24gb3Igb3B0aW1pemF0aW9uIGRlcGVuZGluZyBvbiB0aGUgdXNlIGNhc2UuIFRoaXMgaW52ZXN0aWdhdGlvbiB3aWxsIGxlYWQgbWUgdG93YXJkcyB0aGUgYmVzdCB3YXkgdG8gdXRpbGl6ZSBhbmQgcG9zc2libHkgZXh0ZW5kIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NToyNS44NjAxNTI3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTVE1NQUNfRVRIXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcXG4gICA3OlxcdFxcdHNlbGVjdCBNSUlcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcXG4gIDE2OlxcdFxcdCAgU3lub3BzeXMgSVAgQ29yZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgU1RNTUFDX0VUSFxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbiAgMjE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgMjM6XFx0XFx0ZGVmYXVsdCBuXFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXFxuICAyNjpcXHRcXHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcXG4gIDI3OlxcdFxcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICAzMjpcXHRcXHRkZWZhdWx0IHlcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuICAzNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcXG4gIDM2OlxcdFxcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxcbiAgMzc6XFx0XFxuICAzODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0aWYgU1RNTUFDX1BMQVRGT1JNXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxcbiAgNDU6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cXFwiXFxuICA0NjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDQ3OlxcdFxcdHNlbGVjdCBNSUlcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgNDk6XFx0XFx0aGVscFxcbiAgNTA6XFx0XFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcbiAgNTE6XFx0XFxuICA1MjpcXHRjb25maWcgRFdNQUNfR0VORVJJQ1xcbiAgNTM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG4gIDU0OlxcdFxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuICA1NTpcXHRcXHRoZWxwXFxuICA1NjpcXHRcXHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbiAgNTc6XFx0XFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuICA1ODpcXHRcXHQgIGRhdGEgZm9yIHNldHVwLlxcbiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgRFdNQUNfQU5BUklPTlxcbiAgNjE6XFx0XFx0dHJpc3RhdGUgXFxcIkFkYXB0cnVtIEFuYXJpb24gR01BQyBzdXBwb3J0XFxcIlxcbiAgNjI6XFx0XFx0ZGVmYXVsdCBBUkNcXG4gIDYzOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQyB8fCBDT01QSUxFX1RFU1QpXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEFkYXB0cnVtIEFuYXJpb24gR01BQyBFdGhlcm5ldCBjb250cm9sbGVyLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIERXTUFDX0VJQzc3MDBcXG4gIDcwOlxcdFxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclxcXCJcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBBUkNIX0VTV0lOIHx8IENPTVBJTEVfVEVTVFxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgRXN3aW4gRUlDNzcwMCBFdGhlcm5ldCBjb250cm9sbGVyLFxcbiAgNzQ6XFx0XFx0ICB3aGljaCBpbnRlZ3JhdGVzIFN5bm9wc3lzIERlc2lnbldhcmUgUW9TIGZlYXR1cmVzLiBJdCBlbmFibGVzXFxuICA3NTpcXHRcXHQgIGhpZ2gtc3BlZWQgbmV0d29ya2luZyB3aXRoIERNQSBhY2NlbGVyYXRpb24gYW5kIGlzIG9wdGltaXplZFxcbiAgNzY6XFx0XFx0ICBmb3IgZW1iZWRkZWQgc3lzdGVtcy5cXG4gIDc3OlxcdFxcbiAgNzg6XFx0Y29uZmlnIERXTUFDX0lOR0VOSUNcXG4gIDc5OlxcdFxcdHRyaXN0YXRlIFxcXCJJbmdlbmljIE1BQyBzdXBwb3J0XFxcIlxcbiAgODA6XFx0XFx0ZGVmYXVsdCBNQUNIX0lOR0VOSUNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MjUuODYwMjUzMTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTY1MTA3NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBLY29uZmlnIGZvciBTVE1NQUNfUENJIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMuIEknbSB0aGlua2luZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGUgYnJvYWRlciBTVE1NQUMgZnJhbWV3b3JrLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBzZWUgaG93IHRoZSBQQ0ktc3BlY2lmaWMgcGFydHMgYXJlIGhhbmRsZWQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBudWFuY2VzIG9yIGdvdGNoYXMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEknbSBsb29raW5nIGZvciB0aGUgbWVhdCBhbmQgcG90YXRvZXMgb2YgdGhlIEtjb25maWcgZW50cmllczogdGhlIHN5bWJvbHMsIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIChsaWtlIG90aGVyIGRyaXZlciBvciBoYXJkd2FyZSBmZWF0dXJlcyksIGFuZCB0aGUgKndoeSogYmVoaW5kIHRoZWlyIGRlc2lnbiBjaG9pY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGFzcGVjdHMgYXJlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIFBDSSBpbnRlcmZhY2UgYW5kIG5vdCBqdXN0IGdlbmVyYWxseSBhcHBsaWNhYmxlIHRvIHRoZSBTVE1NQUMgZmFtaWx5LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgcGFyc2luZyB0aGUgS2NvbmZpZyBmaWxlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6NjczOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MjguMDI1MzYzNzAzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuICA4MjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgODM6XFx0XFx0aGVscFxcbiAgODQ6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEluZ2VuaWMgU29Dcy5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAgODc6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuICA4ODpcXHRcXHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAgODk6XFx0XFxuICA5MDpcXHRjb25maWcgRFdNQUNfSVBRODA2WFxcbiAgOTE6XFx0XFx0dHJpc3RhdGUgXFxcIlFDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcXFwiXFxuICA5MjpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAgOTM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gIDk0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA5NTpcXHRcXHRoZWxwXFxuICA5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSVBRODA2eCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuICA5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXFxuIDEwMDpcXHRcXHQgIGFjY2VsZXJhdGlvbiBmZWF0dXJlcyBhdmFpbGFibGUgb24gdGhpcyBTb0MuIE5ldHdvcmsgZGV2aWNlc1xcbiAxMDE6XFx0XFx0ICB3aWxsIGJlaGF2ZSBsaWtlIHN0YW5kYXJkIG5vbi1hY2NlbGVyYXRlZCBldGhlcm5ldCBpbnRlcmZhY2VzLlxcbiAxMDI6XFx0XFxuIDEwMzpcXHRcXHQgIFNlbGVjdCB0aGUgUUNPTV9TT0NJTkZPIGNvbmZpZyBmbGFnIHRvIGVuYWJsZSBzcGVjaWZpYyBkd21hY1xcbiAxMDQ6XFx0XFx0ICBmaXh1cCBiYXNlZCBvbiB0aGUgaXBxODA2eCBTb0MgcmV2aXNpb24uXFxuIDEwNTpcXHRcXG4gMTA2OlxcdGNvbmZpZyBEV01BQ19MUEMxOFhYXFxuIDEwNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIExQQzE4eHgvNDN4eCBEV01BQyBzdXBwb3J0XFxcIlxcbiAxMDg6XFx0XFx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcXG4gMTA5OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXFxuIDExMDpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAxMTE6XFx0XFx0aGVscFxcbiAxMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxcbiAxMTM6XFx0XFxuIDExNDpcXHRjb25maWcgRFdNQUNfTUVESUFURUtcXG4gMTE1OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDI3eHggR01BQyBzdXBwb3J0XFxcIlxcbiAxMTY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1QpXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIFN1cHBvcnQgZm9yIE1lZGlhVGVrIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cXG4gMTE5OlxcdFxcbiAxMjA6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE1UMjcxMiBTb0Mgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDEyMTpcXHRcXG4gMTIyOlxcdGNvbmZpZyBEV01BQ19NRVNPTlxcbiAxMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFxcXCJcXG4gMTI0OlxcdFxcdGRlZmF1bHQgQVJDSF9NRVNPTlxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLIFxcdTAwMjZcXHUwMDI2IChBUkNIX01FU09OIHx8IENPTVBJTEVfVEVTVClcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBBbWxvZ2ljIE1lc29uIFNvQ3MuXFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDEzMDpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTWVzb242LFxcbiAxMzE6XFx0XFx0ICBNZXNvbjgsIE1lc29uOGIgYW5kIEdYQkIgU29Dcy5cXG4gMTMyOlxcdFxcbiAxMzM6XFx0Y29uZmlnIERXTUFDX05VVk9UT05cXG4gMTM0OlxcdFxcdHRyaXN0YXRlIFxcXCJOdXZvdG9uIE1BMzUgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMTM1OlxcdFxcdGRlZmF1bHQgQVJDSF9NQTM1XFxuIDEzNjpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxcbiAxMzc6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTM4OlxcdFxcdGhlbHBcXG4gMTM5OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQy5cXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE51dm90b24gTUEzNSBzZXJpZXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAxNDI6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcXG4gMTQzOlxcdFxcdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cXG4gMTQ0OlxcdFxcbiAxNDU6XFx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuIDE0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRVRIUU9TIHN1cHBvcnRcXFwiXFxuIDE0NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIFF1YWxjb21tIEVUSFFPUyBjb3JlLlxcbiAxNTE6XFx0XFxuIDE1MjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDE1MzpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRjb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbiAxNTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovVjJIKFApIEdCRVRIIGFuZCBSWi9UMkgsIFJaL04ySCBHTUFDIHN1cHBvcnRcXFwiXFxuIDE1NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xcbiAxNTg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG4gMTU5OlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE2MDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE1OjQ1OjI4LjAyNTUwNzc5M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDIyMzA4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIHN0bW1hYyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyIGluIEtjb25maWcuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgcG93ZXIgYW5kIGZsZXhpYmlsaXR5IHJlc2lkZS4gSSdtIHRoaW5raW5nIGFib3V0IGV2ZXJ5dGhpbmcgZnJvbSBiYXNpYyBQSFkgc2VsZWN0aW9uIGFuZCBsaW5rIHNwZWVkIGNvbmZpZ3VyYXRpb24sIHRvIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBETUEgc2V0dGluZ3MsIGludGVycnVwdCBoYW5kbGluZywgYW5kIG1heWJlIGV2ZW4gc29tZSBvZiB0aGUgcG93ZXIgbWFuYWdlbWVudCBvcHRpb25zLiBUaGUgc3BlY2lmaWNzIEknbSBsb29raW5nIGZvciB3aWxsIGRlcGVuZCBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIGFuZCBzcGVjaWZpYyB1c2UgY2FzZSwgYnV0IEkgaGF2ZSBhIHN0cm9uZyBnZW5lcmFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgZ3JhbnVsYXIgbGV2ZWwgb2YgY29udHJvbCBoZXJlLCB3aGljaCBJIGNhbiB1c2UgZm9yIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIHR3ZWFraW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjb25zdHJhaW50cywgb3IgcG90ZW50aWFsbHkgZW5hYmxpbmcgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBidXJpZWQgaW4gdGhlIEtjb25maWfigKZcblxuXG4iLCJJbnB1dFRva2VucyI6ODI5MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MzAuMjY3NzQxOTk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTYxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MTpcXHRcXHQgIFN1cHBvcnQgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgSW50ZXJmYWNlIChHQkVUSCkvIEV0aGVybmV0IE1BQyAoR01BQylcXG4gMTYyOlxcdFxcdCAgb24gUmVuZXNhcyBTb0NzLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXFxuIDE2NTpcXHRcXHQgIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFJaL1YySChQKSBmYW1pbHksIFJaL1QySCBhbmRcXG4gMTY2OlxcdFxcdCAgUlovTjJIIFNvQ3MuXFxuIDE2NzpcXHRcXG4gMTY4OlxcdGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbiAxNjk6XFx0XFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE3MDpcXHRcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxcbiAxNzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTczOlxcdFxcdGhlbHBcXG4gMTc0OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDE3NzpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIERXTUFDX1JaTjFcXG4gMTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE4MTpcXHRcXHRkZWZhdWx0IEFSQ0hfUlpOMVxcbiAxODI6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcXG4gMTgzOlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE4NDpcXHRcXHRoZWxwXFxuIDE4NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUmVuZXNhcyBSWi9OMSBTb0MgZmFtaWx5LlxcbiAxODY6XFx0XFxuIDE4NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbiAxODg6XFx0XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXFxuIDE4OTpcXHRcXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxcbiAxOTA6XFx0XFxuIDE5MTpcXHRjb25maWcgRFdNQUNfUzMyXFxuIDE5MjpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFMzMkcvUzMyUiBHTUFDIHN1cHBvcnRcXFwiXFxuIDE5MzpcXHRcXHRkZWZhdWx0IEFSQ0hfUzMyXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXFxuIDE5NTpcXHRcXHRoZWxwXFxuIDE5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIFMzMkNDIFNPQ3MuXFxuIDE5NzpcXHRcXG4gMTk4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDE5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBTMzJDQyBzZXJpZXNcXG4gMjAwOlxcdFxcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIsIGllLiBTMzJHMnh4LCBTMzJHM3h4IGFuZFxcbiAyMDE6XFx0XFx0ICBTMzJSNDUuXFxuIDIwMjpcXHRcXG4gMjAzOlxcdGNvbmZpZyBEV01BQ19TT0NGUEdBXFxuIDIwNDpcXHRcXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbiAyMDU6XFx0XFx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcXG4gMjA2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXFxuIDIwNzpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyMDg6XFx0XFx0c2VsZWN0IE1ESU9fUkVHTUFQXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG4gMjEwOlxcdFxcdHNlbGVjdCBQQ1NfTFlOWFxcbiAyMTE6XFx0XFx0aGVscFxcbiAyMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXFxuIDIxMzpcXHRcXG4gMjE0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDIxNTpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXFxuIDIxNjpcXHRcXHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxcbiAyMTc6XFx0XFxuIDIxODpcXHRjb25maWcgRFdNQUNfU09QSEdPXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiU29waGdvIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDIyMDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NPUEhHTyB8fCBDT01QSUxFX1RFU1QpXFxuIDIyMTpcXHRcXHRkZWZhdWx0IG0gaWYgQVJDSF9TT1BIR09cXG4gMjIyOlxcdFxcdGhlbHBcXG4gMjIzOlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gU29waGdvIFJJU0MtViBTb0NzXFxuIDIyNDpcXHRcXG4gMjI1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTb3BoZ28gU29DIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAyMjY6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG4gMjI3OlxcdFxcdCAgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gdmFyaW91cyBTb3BoZ28gU29Dcy5cXG4gMjI4OlxcdFxcbiAyMjk6XFx0Y29uZmlnIERXTUFDX1NQQUNFTUlUXFxuIDIzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU3BhY2VtaXQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMjMxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxcbiAyMzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjMzOlxcdFxcdGRlZmF1bHQgbSBpZiBBUkNIX1NQQUNFTUlUXFxuIDIzNDpcXHRcXHRoZWxwXFxuIDIzNTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNwYWNlbWl0IFJJU0MtViBTb0NzXFxuIDIzNjpcXHRcXG4gMjM3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTcGFjZW1pdCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjM4OlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDIzOTpcXHRcXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyNDA6XFx0XFxuIDI0MTpcXHRjb25maWcgRFdNQUNfU1RBUkZJVkVcXG4gMjQyOlxcdFxcdHRyaXN0YXRlIFxcXCJTdGFyRml2ZSBkd21hYyBzdXBwb3J0XFxcIlxcbiAyNDM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVEFSRklWRSB8fCBDT01QSUxFX1RFU1QpXFxuIDI0NDpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNDU6XFx0XFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU1RBUkZJVkVcXG4gMjQ2OlxcdFxcdGhlbHBcXG4gMjQ3OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gU3RhckZpdmUgUklTQy1WIFNvQ3NcXG4gMjQ4OlxcdFxcbiAyNDk6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAyNTA6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG4gMjUxOlxcdFxcdCAgU3RhckZpdmUgSkg3MTAwIGFuZCBKSDcxMTAgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI1MjpcXHRcXG4gMjUzOlxcdGNvbmZpZyBEV01BQ19TVElcXG4gMjU0OlxcdFxcdHRyaXN0YXRlIFxcXCJTVGkgR01BQyBzdXBwb3J0XFxcIlxcbiAyNTU6XFx0XFx0ZGVmYXVsdCBBUkNIX1NUSVxcbiAyNTY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVEkgfHwgQ09NUElMRV9URVNUKVxcbiAyNTc6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjU4OlxcdFxcdGhlbHBcXG4gMjU5OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBTVGkgU09Dcy5cXG4gMjYwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NTozMC4yNjc4NDE4MzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU4MjA5NDc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSByZXN0IG9mIHRoaXMgS2NvbmZpZyBmaWxlLCBwaWNraW5nIHVwIGZyb20sIHNheSwgbGluZSAyNjAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgZmxvdywgc28gSSdsbCBuZWVkIHRvIGFic29yYiB0aGUgc3BlY2lmaWNzIGZyb20gdGhlcmUuIEnigJltIGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGlzIHNlY3Rpb24sIGJ1dCBhIHJlZnJlc2hlciBpcyBpbiBvcmRlciwgSSdsbCBnbyB0aHJvdWdoIGl0IGxpbmUgYnkgbGluZS4gSSBoYXZlIGEgZmVlbGluZyB0aGVyZSB3aWxsIGJlIG1vcmUgaW50ZXJlc3RpbmcgY29uZmlnIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0byB1bnBhY2sgZnVydGhlciBkb3duIHRoYXQgY291bGQgYWZmZWN0IHBlcmZvcm1hbmNlLiBJIHNob3VsZCBiZSBhYmxlIHRvIG1ha2UgYW4gZWZmZWN0aXZlIHN1bW1hcnksIGFuZCBsb29rIHRvIG1ha2UgZnVydGhlciBpbmZlcmVuY2VzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTE2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NTozMS44NDk5Mzk0NjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjYxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjYxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDI2MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXFxuIDI2MzpcXHRcXHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyNjQ6XFx0XFxuIDI2NTpcXHRjb25maWcgRFdNQUNfU1RNMzJcXG4gMjY2OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE0zMiBEV01BQyBzdXBwb3J0XFxcIlxcbiAyNjc6XFx0XFx0ZGVmYXVsdCBBUkNIX1NUTTMyXFxuIDI2ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXFxuIDI2OTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNzA6XFx0XFx0aGVscFxcbiAyNzE6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG4gMjc0OlxcdFxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xcbiAyNzU6XFx0XFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjc2OlxcdFxcbiAyNzc6XFx0Y29uZmlnIERXTUFDX1NVTlhJXFxuIDI3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjc5OlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAyODA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI4MTpcXHRcXHRoZWxwXFxuIDI4MjpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBMjAvQTMxIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI4MzpcXHRcXG4gMjg0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjg1OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcXG4gMjg2OlxcdFxcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyODc6XFx0XFxuIDI4ODpcXHRjb25maWcgRFdNQUNfU1VOOElcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuOGkgR01BQyBzdXBwb3J0XFxcIlxcbiAyOTA6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDI5MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMjkyOlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMjkzOlxcdFxcdGhlbHBcXG4gMjk0OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEgzIEE4M1QgQTY0IEVNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjk3OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuIDI5ODpcXHRcXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjk5OlxcdFxcbiAzMDA6XFx0Y29uZmlnIERXTUFDX1NVTjU1SVxcbiAzMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbiAzMDI6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDMwMzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMzA0OlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMzA1OlxcdFxcdGhlbHBcXG4gMzA2OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAzMDc6XFx0XFxuIDMwODpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDMwOTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcXG4gMzEwOlxcdFxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMTE6XFx0XFxuIDMxMjpcXHRjb25maWcgRFdNQUNfVEhFQURcXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJULUhFQUQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzE0OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIFQtSEVBRCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDMxOTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxcbiAzMjA6XFx0XFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMjE6XFx0XFxuIDMyMjpcXHRjb25maWcgRFdNQUNfSU1YOFxcbiAzMjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBJTVg4IERXTUFDIHN1cHBvcnRcXFwiXFxuIDMyNDpcXHRcXHRkZWZhdWx0IEFSQ0hfTVhDXFxuIDMyNTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXFxuIDMyNjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAzMjc6XFx0XFx0aGVscFxcbiAzMjg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBpLk1YOCBTT0NzLlxcbiAzMjk6XFx0XFxuIDMzMDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAzMzE6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxcbiAzMzI6XFx0XFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDMzMzpcXHRcXG4gMzM0OlxcdGNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuIDMzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzM2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbiAzMzc6XFx0XFx0aGVscFxcbiAzMzg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBJbnRlbCBTb0NzXFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE1OjQ1OjMxLjg1MDExMzIwOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDAyNzUyMzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBLY29uZmlnIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoZSBLY29uZmlnIGNvbnRleHQgcHJldHR5IHdlbGwgZXN0YWJsaXNoZWQsIGJ1dCBJIG5lZWQgdG8gem9vbSBpbi4gVGhlIG92ZXJhbGwgZnJhbWV3b3JrIGlzIGluIHBsYWNlLCBJIHVuZGVyc3RhbmQgaG93IHRoZSBkZXBlbmRlbmNpZXMgd29yayBhbmQgd2hlcmUgdGhlIG1haW4gZmlsZXMgYXJlLCBidXQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgaXNuJ3QgaXQ/IExldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBnbyB0aHJvdWdoIGl0IGxpbmUgYnkgbGluZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgdGhpcyBzcGVjaWZpYyBLY29uZmlnIGZpbGUsIHNvIEknbSBnb2luZyB0byBsb29rIGF0IHRoZSByZW1haW5kZXIgb2YgdGhlIGZpbGUsIHN0YXJ0aW5nIGZyb20gbGluZSAzNDAuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBjcnVjaWFsIGVsZW1lbnRzLCBhbmQgcHJvYmFibHkgbW9yZSBkZWZpbml0aW9ucywgbW9yZSB2YXJpYWJsZXMsIGFuZCBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljLiBJIHdpbGwgYmUgbG9va2luZyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb25zLCBhbmQgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTc5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NTozNC4yNTI4Njg3NDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzQxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzQxOlxcdFxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcXG4gMzQyOlxcdFxcdCAgU29DLlxcbiAzNDM6XFx0XFxuIDM0NDpcXHRjb25maWcgRFdNQUNfTE9PTkdTT04xXFxuIDM0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24xIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzQ2OlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXFxuIDM0NzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChNQUNIX0xPT05HU09OMzIgfHwgQ09NUElMRV9URVNUKVxcbiAzNDg6XFx0XFx0aGVscFxcbiAzNDk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uMSBTb0MuXFxuIDM1MDpcXHRcXG4gMzUxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIExvb25nc29uMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDM1MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIExvb25nc29uMS1iYXNlZCBib2FyZHNcXG4gMzUzOlxcdFxcdCAgbGlrZSBMb29uZ3NvbiBMUzFCL0xTMUMuXFxuIDM1NDpcXHRcXG4gMzU1OlxcdGNvbmZpZyBEV01BQ19URUdSQVxcbiAzNTY6XFx0XFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcXFwiXFxuIDM1NzpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXFxuIDM1ODpcXHRcXHRoZWxwXFxuIDM1OTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTXVsdGktR2lnYUJpdCBFdGhlcm5ldCAoTUdCRSkgQ29udHJvbGxlciB0aGF0IGlzXFxuIDM2MDpcXHRcXHQgIGZvdW5kIG9uIHRoZSBOVklESUEgVGVncmEgU29DIGRldmljZXMuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBnbHVlXFxuIDM2MTpcXHRcXHQgIGxheWVyIG9uIHRvcCBvZiB0aGUgc3RtbWFjIGRyaXZlciByZXF1aXJlZCBmb3IgdGhlc2UgTlZJRElBIFRlZ3JhIFNvQ1xcbiAzNjI6XFx0XFx0ICBkZXZpY2VzLlxcbiAzNjM6XFx0XFxuIDM2NDpcXHRjb25maWcgRFdNQUNfVklTQ09OVElcXG4gMzY1OlxcdFxcdHRyaXN0YXRlIFxcXCJUb3NoaWJhIFZpc2NvbnRpIERXTUFDIHN1cHBvcnRcXFwiXFxuIDM2NjpcXHRcXHRkZWZhdWx0IEFSQ0hfVklTQ09OVElcXG4gMzY3OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXFxuIDM2ODpcXHRcXHRoZWxwXFxuIDM2OTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gVmlzY29udGkgU29Dcy5cXG4gMzcwOlxcdFxcbiAzNzE6XFx0ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG4gMzcyOlxcdFxcbiAzNzM6XFx0Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4gMzc0OlxcdFxcdHRyaXN0YXRlXFxuIDM3NTpcXHRcXHRoZWxwXFxuIDM3NjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDM3NzpcXHRcXG4gMzc4OlxcdGNvbmZpZyBEV01BQ19JTlRFTFxcbiAzNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbiAzOTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDQyMDpcXHRlbmRpZiAjIFNUTU1BQ19FVEhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MzQuMjUzMDQ2NTg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg2MjcwNDI2NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciBTVE1NQUNfRVRIKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYFNUTU1BQ19FVEhgLCB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQ3MuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGV2ZW4gcmVhY2ggaXQgd2l0aGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG9yIGlmIEkgY2FuIGluc3RhbnRpYXRlIGl0LlxuXG5CYXNlZCBvbiB0aGUgZ3VpZGVsaW5lcywgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIFwiV29ydGhGdXp6aW5nLlwiIFRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBoaW5nZXMgb24gd2hldGhlciB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIGNlcnRhaW4gY2F0ZWdvcmllcy4gVGhlIGtleSBvbmUgaGVyZSBpcyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiB3aGljaCBpbmNsdWRlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lY2Vzc2l0YXRlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuU28sIHRoZSBmaXJzdCB0aGluZyBJJ20gYXNraW5nIGlzOiBkb2VzIFFFTVUgZW11bGF0ZSB0aGUgYHN0bW1hY2Agb3IgYGR3bWFjYCAoRGVzaWduV2FyZSBNQUMpPyBJIGtub3cgUUVNVSAqZG9lcyogZW11bGF0ZSBgZHdtYWNgIGZvciBjZXJ0YWluIEFSTSBib2FyZHMuIEknbSB0aGlua2luZyBvZiBgYWxsd2lubmVyLWExMGAsIGBzdW40aS1lbWFjYCwgYGR3Yy1xb3NgLCBgaW14YCwgYW5kIGBzdGVsbGFyaXNgLiBJIHNlZSBzb21lIG1lbnRpb24gb2YgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBgeGlsaW54LWV0aGxpdGVgLCBidXQgdGhhdCdzIGEgaGludCwgYW5kIEknbSBvbiBhbWQ2NCBub3cuXG5cbkFoYSEgVGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgUUVNVSBvbiB4ODYvYW1kNjQgZW11bGF0ZXMgYHN0bW1hY2Agb3IgaWYgaXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBTb0MvUENJIE5JQy4gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUncyBhbnkgdmlydHVhbCBvciBlbXVsYXRlZCBkZXZpY2UgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIGlmIGBzeXprYWxsZXJgIGNhbiBpbnN0YW50aWF0ZSBpdCB0aHJvdWdoIHNvbWUgcGxhdGZvcm0vZHVtbXkgZGV2aWNlLlxuXG5SaWdodCwgc28gY2FuIGEgdXNlcnNwYWNlIHByb2dyYW0gb3Igc3lzY2FsbCBldmVuIGNyZWF0ZSBgc3RtbWFjYD8gTm8sIGl0J3MgYW4gRXRoZXJuZXQgTUFDIGRyaXZlci4gSXTigJlzIGZvciBlbWJlZGRlZCBTb0NzLCBsaWtlIHRob3NlIGZyb20gQWxsd2lubmVyLCBBbWxvZ2ljLCBTVE0zMiwgUm9ja2NoaXAsIEludGVsIFF1YXJrL0VITC9UR0wsIG9yIGZvciBQQ0kgZXRoZXJuZXQgY2FyZHMuXG5cbkFscmlnaHQsIGxldCdzIGV4cGxpY2l0bHkgY2hlY2sgd2hhdCdzIHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVSAoeDg2XzY0KS4gRW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIG9uIHg4Nl82NCBhcmUgdGhlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgdm14bmV0MywgdmlydGlvLW5ldCwgYW5kIGlnYi4gQ3J1Y2lhbGx5LCB0aGVyZSdzIG5vIGBzdG1tYWNgIG9yIGBkd21hY2AgUENJIGRldmljZSBpbiBRRU1VJ3Mgc3RhbmRhcmQgaGFyZHdhcmUgbGlzdC4gSSBjYW4gY2hlY2sgdGhlIGBody9uZXQvYCBkaXJlY3RvcnkgYW5kIGNvbmZpcm0sIGJ1dCBJJ20gbG9va2luZyBhdCBmaWxlcyBsaWtlIGBhbGx3aW5uZXItc3VuOGktZW1hYy5jYCwgYGNhZGVuY2VfZ2VtLmNgLCBgZTEwMDAuY2AsIGB2aXJ0aW8tbmV0LmNgIGV0Yy4gTm8gYHN0bW1hY2AsIG5vIGBkd21hY2AuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgb3RoZXIgcG90ZW50aWFsIGF2ZW51ZXM6IGNhbiBpdCBiZSBmdXp6ZWQgdGhyb3VnaCBhIFVTQiBnYWRnZXQ/IE5vLiBWaXJ0aW8/IE5vLiBBIG1vY2sgZGV2aWNlPyBOby5cblxuT2theSwgYmFjayB0byB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjcml0ZXJpYS4gUmUtcmVhZGluZyB0aGUgZ3VpZGVsaW5lczogXCItIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLnJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuTGV0J3MgZG91YmxlLWNoZWNrOiBgc3RtbWFjYCBpcyBhIGRyaXZlciBmb3IgU1RNaWNybydzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgZm9yICpwaHlzaWNhbCogRXRoZXJuZXQgY29udHJvbGxlcnMuIFRoYXQgbWVhbnMgRFdNQUMgb24gdmFyaW91cyBTb0NzIG9yIEludGVsIFF1YXJrIC8gTW90b3Jjb21tIFlUNjgwMSBQQ0kgY2FyZHMuIFNvLCB0aGlzIHJlcXVpcmVzIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcywgb3IgQVJNL1JJU0MtVi9NSVBTIFNvQ3Mgd2l0aCBEV01BQyBoYXJkd2FyZSB0aGF0IGlzICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIGdpdmVuIHRoZSBhbWQ2NCB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG5TbywgSSBuZWVkIHRvIGtub3cgZGVmaW5pdGl2ZWx5OiBpcyAqYW55KiBwYXJ0IG9mIGBzdG1tYWNgIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBvciBub3Q/IEkgYW0gZ29pbmcgdG8gZ3JlcCBmb3IgYHN0bW1hY2AgaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNjIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTY5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6NDIuODgwMDk0MDcyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTEwNTA1NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9OTM9c3RhdGljIGludCBhbmFyaW9uX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMDQ6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMDUtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzA3OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwOC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0xNjc9c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxODE6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xODItXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9MTk9c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjktXFx0aWYgKHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjMwOlxcdFxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMzEtXFx0XFx0aWYgKElTX0VSUihwbGF0X2RhdCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTI5Mz1zdGF0aWMgaW50IGlteF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMwOTpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzEwLVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjgtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzo1NDpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTU1LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzozODc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy0zODgtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0xODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MTg4OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0xODktXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NDI9c3RhdGljIGludCBscGMxOHh4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjUzOlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNTQtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjYzMTpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MzItXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTg6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNTktXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9MzgyPXN0YXRpYyBpbnQgbWVzb244Yl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTM5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6MzkzOlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtMzk0LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jPTgyPXN0YXRpYyBpbnQgbnZ0X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6OTQ6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05NS1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Njk5OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTcwMC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTEzMT1zdGF0aWMgaW50IHJlbmVzYXNfZ2JldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjE0NjpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE0Ny1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM9MTU2OD1zdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE1ODU6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4Ni1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz00OD1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy01OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6NTk6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02MC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTE0ND1zdGF0aWMgaW50IHMzMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjE2MzpcXHRwbGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHJlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTE2NC1cXHRpZiAoSVNfRVJSKHBsYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjYxNTpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTYxNi1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy00Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo0ODpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNDktXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTE0Nz1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTE2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjE2OTpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0xNzAtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTkwPXN0YXRpYyBpbnQgc3RhcmZpdmVfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTAzOlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTEwNC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jPTI0OT1zdGF0aWMgaW50IHN0aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI2NzpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjY4LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Mzc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTM4LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTA1PXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMTc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExOC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTc0OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExNzUtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTk5PXN0YXRpYyBpbnQgc3VuN2lfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxMTE6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTEyLVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyMDpcXHRwbGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHJlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzIxLVxcdGlmIChJU19FUlIocGxhdCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjE2PXN0YXRpYyBpbnQgdGhlYWRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjMwOlxcdHBsYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjMxLVxcdGlmIChJU19FUlIocGxhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jPTIwNT1zdGF0aWMgaW50IHZpc2NvbnRpX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYzoyMTY6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjE3LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9MzkzPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3RtbWFjX2dtYWM0X2NvbXBhdHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQwNS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo0MDY6ICogc3RtbWFjX3Byb2JlX2NvbmZpZ19kdCAtIHBhcnNlIGRldmljZS10cmVlIGRyaXZlciBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNDA3LSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz00MTM9c3RhdGljIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NDE0OnN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy00MTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NjQxPXN0YXRpYyB2b2lkIGRldm1fc3RtbWFjX3JlbW92ZV9jb25maWdfZHQodm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY1MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTI6ICogZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjUzLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjU0LSAqIEBtYWM6IE1BQyBhZGRyZXNzIHRvIHVzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY1NTogKiBEZXNjcmlwdGlvbjogRGV2cmVzIHZhcmlhbnQgb2Ygc3RtbWFjX3Byb2JlX2NvbmZpZ19kdCgpLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY1Ni0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz02NTc9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTg6ZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NjM6XFx0cGxhdCA9IHN0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02NjQtXFx0aWYgKElTX0VSUihwbGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY3NT1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY3NjpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjgwLSNlbmRpZiAvKiBDT05GSUdfT0YgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2ODE6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaD0xND1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjE1OmRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0xNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6NDMuMzcxMTU3OTg0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5OTQyOTQxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBNQUMgRHJpdmVyIFBDSSBJRCBNYXRjaGluZyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoZXNlIEV0aGVybmV0IGRyaXZlcnMgaGFuZGxlIFBDSSBkZXZpY2UgSUQgbWF0Y2hpbmcuIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCB3aXRoIGBzdG1tYWNfcGNpLmNgLCB0aGVuIG1vdmUgb24gdG8gYGR3bWFjLWludGVsLmNgIGFuZCBgZHdtYWMtbW90b3Jjb21tLmNgLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB3aGljaCBzcGVjaWZpYyBQQ0kgSURzIGVhY2ggZHJpdmVyIGNsYWltcyByZXNwb25zaWJpbGl0eSBmb3IuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlaXIgaW50ZW5kZWQgaGFyZHdhcmUgc2NvcGUgYW5kIGFueSBwb3RlbnRpYWwgb3ZlcmxhcHMgb3IgY29uZmxpY3RzLiBJdCdzIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gZ2V0IGEgYmlyZCdzLWV5ZSB2aWV3IG9mIHRoZWlyIGludGVuZGVkIGRldmljZSBzdXBwb3J0LiBMZXQncyBzZWUgd2hhdCB0aGUgaW5jbHVkZXMgcmV2ZWFsIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY0NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE1OjQ1OjQ1LjM2NTQ1NTI5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ2OTYwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjQ6XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzYyPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5Ni1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00Nzk9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo0OTg6c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NTc4PXN0YXRpYyB2b2lkIGxvb25nc29uX2R3bWFjX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk3LVxcdHsgUENJX0RFVklDRV9EQVRBKExPT05HU09OLCBHTUFDMSwgXFx1MDAyNmxvb25nc29uX2dtYWNfcGNpX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yNjQ9c3RhdGljIGludCBtb3RvcmNvbW1fc2V0dXBfaXJxKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5MzpzdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNjI9c3RhdGljIHZvaWQgbW90b3Jjb21tX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjgtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5OlxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NTo0NS41NTAxNjAxMTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTI0MDA0NTEyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFNUTU1BQyBEcml2ZXIgZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkgYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhpcyBpcyB0aGUgU1RNTUFDIChvciBEV01BQykgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhpcyBpcyB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgSVAsIGZvdW5kIGluIHZhcmlvdXMgU29DcyBhbmQgc29tZXRpbWVzIHNwZWNpZmljIFBDSSBjYXJkcy4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlIGlzICoqbm90KiogZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVSwgZXNwZWNpYWxseSBvbiB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCBvciBldmVuIGluIEdDRS4gVGhhdCBtZWFucyB0aGVyZSdzIG5vIHdheSBmb3IgdGhlIGNvZGUgaW4gdGhpcyBkcml2ZXIgdG8gZXhlY3V0ZSBpbiBhIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBkZXZpY2UgY2Fubm90IHByb2JlIG9yIGZ1bmN0aW9uLlxuXG5JJ20gZG91YmxlLWNoZWNraW5nIHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgc2VjdGlvbiBhYm91dCBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS5cIiBUaGlzIGZpdHMgdGhlIGJpbGwgcGVyZmVjdGx5OiBpdCdzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSAoU3lub3BzeXMvU1RNaWNyb2VsZWN0cm9uaWNzKSwgcmVxdWlyaW5nIGEgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmQsIGFuZCBpdCdzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC5cblxuTm93IGxldCdzIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZi4gQWxsIG9mIHRoZSBtb2RpZmljYXRpb25zIGFyZSB3aXRoaW4gYHN0bW1hY19tYWluLmNgLiBJIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBhZGRpbmcgbnVsbCBjaGVja3MgYW5kIGltcHJvdmluZyBlcnJvciBoYW5kbGluZyBhcm91bmQgRE1BIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgVFgvUlggYnVmZmVycy4gSW1wb3J0YW50bHksIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIHBhcnQgb2YgdGhlIGRyaXZlcidzIGNvcmUgZnVuY3Rpb25hbGl0eSwgdGhhdCByZXF1aXJlcyB0aGUgU1RNTUFDL0RXTUFDIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgYW5kIGluaXRpYWxpemVkLlxuXG5CZWNhdXNlIHRoaXMgZHJpdmVyIG5lY2Vzc2l0YXRlcyBwaHlzaWNhbCBTVE1NQUMgaGFyZHdhcmUsIGFuZCBzaW5jZSB0aGlzIGhhcmR3YXJlIGlzIHVuYXZhaWxhYmxlIGluIHRoZSB0YXJnZXQgdmlydHVhbCBlbnZpcm9ubWVudHMgKFFFTVUsIEdDRSksIHRoaXMgbWVhbnMgdGhlIGNvZGUgaW4gdGhpcyBwYXRjaCBpcyB1bnJlYWNoYWJsZSB1bmRlciBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyAqc3RydWN0dXJhbGx5KiBpbmFjY2Vzc2libGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZTpcblxuKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqIOKAkyBUaGUgY29kZSdzIHVuZGVybHlpbmcgaGFyZHdhcmUgZGVwZW5kZW5jZSBtYWtlcyBpdCB1bmZlYXNpYmxlIHRvIGZ1enouXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcWyBdKiog4oCTIFNpbmNlIHRoZSBkZXZpY2UgaXMgdW5wcm9iZWQsIHRoZXJlIGFyZSBubyBmdW5jdGlvbnMgdG8gcG9pbnQgYXQuXG4qICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqIOKAkyBBcyB0aGUgZGV2aWNlIGlzIHVuYXZhaWxhYmxlLCBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5LlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBzdG1tYWMgZHJpdmVyIGRlcGVuZHMgb24gcGh5c2ljYWwgU1RNaWNyb2VsZWN0cm9uaWNzL1N5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXJzIGFuZCBTb0NzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGFtZDY0IGVudmlyb25tZW50cywgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuIEkndmUgcmV2aWV3ZWQgZXZlcnl0aGluZywgYW5kIGl0J3MgYWxsIGNvbnNpc3RlbnQgYW5kIGFjY3VyYXRlLiBJJ20gY29uZmlkZW50IGluIHRoaXMgYXNzZXNzbWVudC4gTGV0J3Mgc3VibWl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE3MiwiT3V0cHV0VG9rZW5zIjoxMjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6NTcuOTUwNjE4NTc3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6NTcuOTUwNjc3MTM3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowfcb7w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-06 15:16:25 +0000 UTC FinishedAt: 2026-09-06 15:45:58 +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+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGJjMTQ2OThhZmE1Y2RmZTNkOTBkY2NhY2EzNTM4NmI1OWM0YzFjODZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCA2IDE1OjQ1OjEzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBmMmZjODkxNzY2NTRlLi5mMGUwNmMwMTFiOGRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTE3MjgsNyAmIzQzOzE3MjgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0XHQgRE1BX1RPX0RFVklDRSk7XG4gXHR9XG4gXG4tXHRpZiAodHhfcS1cdTAwM2V4ZHBmW2ldIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmICh0eF9xLVx1MDAzZXhkcGYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNleGRwZltpXSBcdTAwMjZcdTAwMjZcbiBcdCAgICAodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9UWCB8fFxuIFx0ICAgICB0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX05ETykpIHtcbiBcdFx0eGRwX3JldHVybl9mcmFtZSh0eF9xLVx1MDAzZXhkcGZbaV0pO1xuQEAgLTE3MzgsNyAmIzQzOzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpXG4gXHRcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lJiM0MzsmIzQzOztcbiBcbi1cdGlmICh0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNldHhfc2tidWZmW2ldIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0pO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSA9IE5VTEw7XG5AQCAtMTc2MSw2ICYjNDM7MTc2MSwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF9za2J1ZnMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0c3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcSA9IFx1MDAyNmRtYV9jb25mLVx1MDAzZXJ4X3F1ZXVlW3F1ZXVlXTtcbiBcdGludCBpO1xuIFxuJiM0MztcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuJiM0MztcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTsgaSYjNDM7JiM0MzspXG4gXHRcdHN0bW1hY19mcmVlX3J4X2J1ZmZlcihwcml2LCByeF9xLCBpKTtcbiB9XG5AQCAtMTgwMiw2ICYjNDM7MTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF94c2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2VyeF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbiYjNDM7XHRpZiAoIXJ4X3EtXHUwMDNlYnVmX3Bvb2wpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KSB7XG4gXHRcdHN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSBcdTAwMjZyeF9xLVx1MDAzZWJ1Zl9wb29sW2ldO1xuIFxuQEAgLTIwOTcsNiAmIzQzOzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbiYjNDM7XHQvKiB0eF9za2J1ZmZfZG1hIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xuJiM0MztcdGlmICghdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiBcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lID0gMDtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRtYV9jb25mLVx1MDAzZWRtYV90eF9zaXplOyBpJiM0MzsmIzQzOylcbkBAIC0yMjcyLDE1ICYjNDM7MjI4NCwxOSBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdH1cbiBcbiBcdHJ4X3EtXHUwMDNlYnVmX3Bvb2wgPSBremFsbG9jX29ianMoKnJ4X3EtXHUwMDNlYnVmX3Bvb2wsIGRtYV9jb25mLVx1MDAzZWRtYV9yeF9zaXplKTtcbi1cdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0aWYgKCFyeF9xLVx1MDAzZWJ1Zl9wb29sKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBlcnJfZGVzdHJveV9wb29sO1xuJiM0MztcdH1cbiBcbiBcdHNpemUgPSBzdG1tYWNfZ2V0X3J4X2Rlc2Nfc2l6ZShwcml2KSAqIGRtYV9jb25mLVx1MDAzZWRtYV9yeF9zaXplO1xuIFxuIFx0YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChwcml2LVx1MDAzZWRldmljZSwgc2l6ZSwgXHUwMDI2cnhfcS1cdTAwM2VkbWFfcnhfcGh5LFxuIFx0XHRcdFx0ICBHRlBfS0VSTkVMKTtcbi1cdGlmICghYWRkcilcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0aWYgKCFhZGRyKSB7XG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1xuJiM0MztcdFx0Z290byBlcnJfZnJlZV9idWZfcG9vbDtcbiYjNDM7XHR9XG4gXG4gXHRpZiAocHJpdi1cdTAwM2VleHRlbmRfZGVzYylcbiBcdFx0cnhfcS1cdTAwM2VkbWFfZXJ4ID0gYWRkcjtcbkBAIC0yMjk2LDEwICYjNDM7MjMxMiwyNyBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHJldCA9IHhkcF9yeHFfaW5mb19yZWcoXHUwMDI2cnhfcS1cdTAwM2V4ZHBfcnhxLCBwcml2LVx1MDAzZWRldiwgcXVldWUsIG5hcGlfaWQpO1xuIFx0aWYgKHJldCkge1xuIFx0XHRuZXRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgeGRwIHJ4cSBpbmZvXFxuXCYjMzQ7KTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX2RtYTtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX2ZyZWVfZG1hOlxuJiM0MztcdGlmIChwcml2LVx1MDAzZWV4dGVuZF9kZXNjKVxuJiM0MztcdFx0ZG1hX2ZyZWVfY29oZXJlbnQocHJpdi1cdTAwM2VkZXZpY2UsIHNpemUsIHJ4X3EtXHUwMDNlZG1hX2VyeCxcbiYjNDM7XHRcdFx0XHQgIHJ4X3EtXHUwMDNlZG1hX3J4X3BoeSk7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0ZG1hX2ZyZWVfY29oZXJlbnQocHJpdi1cdTAwM2VkZXZpY2UsIHNpemUsIHJ4X3EtXHUwMDNlZG1hX3J4LFxuJiM0MztcdFx0XHRcdCAgcnhfcS1cdTAwM2VkbWFfcnhfcGh5KTtcbiYjNDM7XHRyeF9xLVx1MDAzZWRtYV9lcnggPSBOVUxMO1xuJiM0MztcdHJ4X3EtXHUwMDNlZG1hX3J4ID0gTlVMTDtcbiYjNDM7ZXJyX2ZyZWVfYnVmX3Bvb2w6XG4mIzQzO1x0a2ZyZWUocnhfcS1cdTAwM2VidWZfcG9vbCk7XG4mIzQzO1x0cnhfcS1cdTAwM2VidWZfcG9vbCA9IE5VTEw7XG4mIzQzO2Vycl9kZXN0cm95X3Bvb2w6XG4mIzQzO1x0cGFnZV9wb29sX2Rlc3Ryb3kocnhfcS1cdTAwM2VwYWdlX3Bvb2wpO1xuJiM0MztcdHJ4X3EtXHUwMDNlcGFnZV9wb29sID0gTlVMTDtcbiYjNDM7XHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5AQCAtMjM1MiwxNCAmIzQzOzIzODUsMTQgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXG4gXHR0eF9xLVx1MDAzZXR4X3NrYnVmZiA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qgc2tfYnVmZiAqLCBkbWFfY29uZi1cdTAwM2VkbWFfdHhfc2l6ZSk7XG4gXHRpZiAoIXR4X3EtXHUwMDNldHhfc2tidWZmKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XHRcdGdvdG8gZXJyX2ZyZWVfc2tidWZmX2RtYTtcbiBcbiBcdHNpemUgPSBzdG1tYWNfZ2V0X3R4X2Rlc2Nfc2l6ZShwcml2LCB0eF9xKSAqIGRtYV9jb25mLVx1MDAzZWRtYV90eF9zaXplO1xuIFxuIFx0YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChwcml2LVx1MDAzZWRldmljZSwgc2l6ZSxcbiBcdFx0XHRcdCAgXHUwMDI2dHhfcS1cdTAwM2VkbWFfdHhfcGh5LCBHRlBfS0VSTkVMKTtcbiBcdGlmICghYWRkcilcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1x0XHRnb3RvIGVycl9mcmVlX3NrYnVmZjtcbiBcbiBcdGlmIChwcml2LVx1MDAzZWV4dGVuZF9kZXNjKVxuIFx0XHR0eF9xLVx1MDAzZWRtYV9ldHggPSBhZGRyO1xuQEAgLTIzNjksNiAmIzQzOzI0MDIsMTQgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdHR4X3EtXHUwMDNlZG1hX3R4ID0gYWRkcjtcbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX2ZyZWVfc2tidWZmOlxuJiM0MztcdGtmcmVlKHR4X3EtXHUwMDNldHhfc2tidWZmKTtcbiYjNDM7XHR0eF9xLVx1MDAzZXR4X3NrYnVmZiA9IE5VTEw7XG4mIzQzO2Vycl9mcmVlX3NrYnVmZl9kbWE6XG4mIzQzO1x0a2ZyZWUodHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hKTtcbiYjNDM7XHR0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWEgPSBOVUxMO1xuJiM0MztcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGJjMTQ2OThhZmE1Y2RmZTNkOTBkY2NhY2EzNTM4NmI1OWM0YzFjODYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCA2IDE1OjQ1OjEzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggZjJmYzg5MTc2NjU0ZS4uZjBlMDZjMDExYjhkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0xNzI4LDcgJiM0MzsxNzI4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkJCQkJIERNQV9UT19ERVZJQ0UpOwogCX0KIAotCWlmICh0eF9xLSZndDt4ZHBmW2ldICZhbXA7JmFtcDsKJiM0MzsJaWYgKHR4X3EtJmd0O3hkcGYgJmFtcDsmYW1wOyB0eF9xLSZndDt4ZHBmW2ldICZhbXA7JmFtcDsKIAkgICAgKHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfWERQX1RYIHx8CiAJICAgICB0eF9xLSZndDt0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7CiAJCXhkcF9yZXR1cm5fZnJhbWUodHhfcS0mZ3Q7eGRwZltpXSk7CkBAIC0xNzM4LDcgJiM0MzsxNzM4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlpZiAodHhfcS0mZ3Q7dHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpCiAJCXR4X3EtJmd0O3hza19mcmFtZXNfZG9uZSYjNDM7JiM0Mzs7CiAKLQlpZiAodHhfcS0mZ3Q7dHhfc2tidWZmW2ldICZhbXA7JmFtcDsKJiM0MzsJaWYgKHR4X3EtJmd0O3R4X3NrYnVmZiAmYW1wOyZhbXA7IHR4X3EtJmd0O3R4X3NrYnVmZltpXSAmYW1wOyZhbXA7CiAJICAgIHR4X3EtJmd0O3R4X3NrYnVmZl9kbWFbaV0uYnVmX3R5cGUgPT0gU1RNTUFDX1RYQlVGX1RfU0tCKSB7CiAJCWRldl9rZnJlZV9za2JfYW55KHR4X3EtJmd0O3R4X3NrYnVmZltpXSk7CiAJCXR4X3EtJmd0O3R4X3NrYnVmZltpXSA9IE5VTEw7CkBAIC0xNzYxLDYgJiM0MzsxNzYxLDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJc3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcSA9ICZhbXA7ZG1hX2NvbmYtJmd0O3J4X3F1ZXVlW3F1ZXVlXTsKIAlpbnQgaTsKIAomIzQzOwkvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi8KJiM0MzsJaWYgKCFyeF9xLSZndDtidWZfcG9vbCkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlmb3IgKGkgPSAwOyBpICZsdDsgZG1hX2NvbmYtJmd0O2RtYV9yeF9zaXplOyBpJiM0MzsmIzQzOykKIAkJc3RtbWFjX2ZyZWVfcnhfYnVmZmVyKHByaXYsIHJ4X3EsIGkpOwogfQpAQCAtMTgwMiw2ICYjNDM7MTgwNiwxMCBAQCBzdGF0aWMgdm9pZCBkbWFfZnJlZV9yeF94c2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gJmFtcDtkbWFfY29uZi0mZ3Q7cnhfcXVldWVbcXVldWVdOwogCWludCBpOwogCiYjNDM7CS8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqLwomIzQzOwlpZiAoIXJ4X3EtJmd0O2J1Zl9wb29sKQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWZvciAoaSA9IDA7IGkgJmx0OyBkbWFfY29uZi0mZ3Q7ZG1hX3J4X3NpemU7IGkmIzQzOyYjNDM7KSB7CiAJCXN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSAmYW1wO3J4X3EtJmd0O2J1Zl9wb29sW2ldOwogCkBAIC0yMDk3LDYgJiM0MzsyMTA1LDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3R4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJc3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSA9ICZhbXA7ZG1hX2NvbmYtJmd0O3R4X3F1ZXVlW3F1ZXVlXTsKIAlpbnQgaTsKIAomIzQzOwkvKiB0eF9za2J1ZmZfZG1hIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqLwomIzQzOwlpZiAoIXR4X3EtJmd0O3R4X3NrYnVmZl9kbWEpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJdHhfcS0mZ3Q7eHNrX2ZyYW1lc19kb25lID0gMDsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBkbWFfY29uZi0mZ3Q7ZG1hX3R4X3NpemU7IGkmIzQzOyYjNDM7KQpAQCAtMjI3MiwxNSAmIzQzOzIyODQsMTkgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJfQogCiAJcnhfcS0mZ3Q7YnVmX3Bvb2wgPSBremFsbG9jX29ianMoKnJ4X3EtJmd0O2J1Zl9wb29sLCBkbWFfY29uZi0mZ3Q7ZG1hX3J4X3NpemUpOwotCWlmICghcnhfcS0mZ3Q7YnVmX3Bvb2wpCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwlpZiAoIXJ4X3EtJmd0O2J1Zl9wb29sKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBlcnJfZGVzdHJveV9wb29sOwomIzQzOwl9CiAKIAlzaXplID0gc3RtbWFjX2dldF9yeF9kZXNjX3NpemUocHJpdikgKiBkbWFfY29uZi0mZ3Q7ZG1hX3J4X3NpemU7CiAKIAlhZGRyID0gZG1hX2FsbG9jX2NvaGVyZW50KHByaXYtJmd0O2RldmljZSwgc2l6ZSwgJmFtcDtyeF9xLSZndDtkbWFfcnhfcGh5LAogCQkJCSAgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFhZGRyKQotCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJaWYgKCFhZGRyKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byBlcnJfZnJlZV9idWZfcG9vbDsKJiM0MzsJfQogCiAJaWYgKHByaXYtJmd0O2V4dGVuZF9kZXNjKQogCQlyeF9xLSZndDtkbWFfZXJ4ID0gYWRkcjsKQEAgLTIyOTYsMTAgJiM0MzsyMzEyLDI3IEBAIHN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCXJldCA9IHhkcF9yeHFfaW5mb19yZWcoJmFtcDtyeF9xLSZndDt4ZHBfcnhxLCBwcml2LSZndDtkZXYsIHF1ZXVlLCBuYXBpX2lkKTsKIAlpZiAocmV0KSB7CiAJCW5ldGRldl9lcnIocHJpdi0mZ3Q7ZGV2LCAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciB4ZHAgcnhxIGluZm9cbiYjMzQ7KTsKLQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQlnb3RvIGVycl9mcmVlX2RtYTsKIAl9CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfZnJlZV9kbWE6CiYjNDM7CWlmIChwcml2LSZndDtleHRlbmRfZGVzYykKJiM0MzsJCWRtYV9mcmVlX2NvaGVyZW50KHByaXYtJmd0O2RldmljZSwgc2l6ZSwgcnhfcS0mZ3Q7ZG1hX2VyeCwKJiM0MzsJCQkJICByeF9xLSZndDtkbWFfcnhfcGh5KTsKJiM0MzsJZWxzZQomIzQzOwkJZG1hX2ZyZWVfY29oZXJlbnQocHJpdi0mZ3Q7ZGV2aWNlLCBzaXplLCByeF9xLSZndDtkbWFfcngsCiYjNDM7CQkJCSAgcnhfcS0mZ3Q7ZG1hX3J4X3BoeSk7CiYjNDM7CXJ4X3EtJmd0O2RtYV9lcnggPSBOVUxMOwomIzQzOwlyeF9xLSZndDtkbWFfcnggPSBOVUxMOwomIzQzO2Vycl9mcmVlX2J1Zl9wb29sOgomIzQzOwlrZnJlZShyeF9xLSZndDtidWZfcG9vbCk7CiYjNDM7CXJ4X3EtJmd0O2J1Zl9wb29sID0gTlVMTDsKJiM0MztlcnJfZGVzdHJveV9wb29sOgomIzQzOwlwYWdlX3Bvb2xfZGVzdHJveShyeF9xLSZndDtwYWdlX3Bvb2wpOwomIzQzOwlyeF9xLSZndDtwYWdlX3Bvb2wgPSBOVUxMOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCkBAIC0yMzUyLDE0ICYjNDM7MjM4NSwxNCBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAogCXR4X3EtJmd0O3R4X3NrYnVmZiA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3Qgc2tfYnVmZiAqLCBkbWFfY29uZi0mZ3Q7ZG1hX3R4X3NpemUpOwogCWlmICghdHhfcS0mZ3Q7dHhfc2tidWZmKQotCQlyZXR1cm4gLUVOT01FTTsKJiM0MzsJCWdvdG8gZXJyX2ZyZWVfc2tidWZmX2RtYTsKIAogCXNpemUgPSBzdG1tYWNfZ2V0X3R4X2Rlc2Nfc2l6ZShwcml2LCB0eF9xKSAqIGRtYV9jb25mLSZndDtkbWFfdHhfc2l6ZTsKIAogCWFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQocHJpdi0mZ3Q7ZGV2aWNlLCBzaXplLAogCQkJCSAgJmFtcDt0eF9xLSZndDtkbWFfdHhfcGh5LCBHRlBfS0VSTkVMKTsKIAlpZiAoIWFkZHIpCi0JCXJldHVybiAtRU5PTUVNOwomIzQzOwkJZ290byBlcnJfZnJlZV9za2J1ZmY7CiAKIAlpZiAocHJpdi0mZ3Q7ZXh0ZW5kX2Rlc2MpCiAJCXR4X3EtJmd0O2RtYV9ldHggPSBhZGRyOwpAQCAtMjM2OSw2ICYjNDM7MjQwMiwxNCBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAkJdHhfcS0mZ3Q7ZG1hX3R4ID0gYWRkcjsKIAogCXJldHVybiAwOwomIzQzOwomIzQzO2Vycl9mcmVlX3NrYnVmZjoKJiM0MzsJa2ZyZWUodHhfcS0mZ3Q7dHhfc2tidWZmKTsKJiM0MzsJdHhfcS0mZ3Q7dHhfc2tidWZmID0gTlVMTDsKJiM0MztlcnJfZnJlZV9za2J1ZmZfZG1hOgomIzQzOwlrZnJlZSh0eF9xLSZndDt0eF9za2J1ZmZfZG1hKTsKJiM0MzsJdHhfcS0mZ3Q7dHhfc2tidWZmX2RtYSA9IE5VTEw7CiYjNDM7CXJldHVybiAtRU5PTUVNOwogfQogCiBzdGF0aWMgaW50IGFsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3OTAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3Qgc3RlcCwgYXMgYWx3YXlzLCBpcyB0byBhc3Nlc3Mgd2hldGhlciB0aGlzIHBhdGNoIGlzIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBhY3QgYW5kIHdoZXJlIGl0IHRvdWNoZXMuCgpBbHJpZ2h0LCB0aGUgY2hhbmdlIGlzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gVGhhdCYjMzk7cyB0aGUga2V5LiBOb3csIHdoYXQmIzM5O3MgYHN0bW1hY2A/IEFoLCByaWdodCEgU1RNaWNyb2VsZWN0cm9uaWNzJiMzOTsgRXRoZXJuZXQgZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQywgb3IgYXQgbGVhc3QgYSBmbGF2b3Igb2YgaXQuCgpOb3csIGEgY3J1Y2lhbCBxdWVzdGlvbiBwb3BzIHVwIGltbWVkaWF0ZWx5OiBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IHJ1bnMgKm9ubHkqIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhbHNvIGVtdWxhdGVkIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IElzIHRoZXJlIFBDSSBnbHVlLCBvciBwbGF0Zm9ybSBnbHVlIGluIHBsYXk/IElmIGl0JiMzOTtzIHRoZSBsYXR0ZXIsIHRoZW4gaXQmIzM5O3MgZmFyIGVhc2llciB0byBmdXp6IGVmZmVjdGl2ZWx5LiBJZiBpdCYjMzk7cyBqdXN0IGhhcmR3YXJlLCB0aGF0IG1ha2VzIGxpZmUgaGFyZGVyLCBidXQgZnV6emluZyBpcyBzdGlsbCB2YWx1YWJsZSB0byBpZGVudGlmeSBwb3NzaWJsZSBzZWN1cml0eSBob2xlcyBvciBwZXJmb3JtYW5jZSBpc3N1ZXMuCgpJIG5lZWQgdG8gcXVpY2tseSBjaGVjayB0aGUgcmVzdCBvZiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBUaW1lIHRvIGZpcmUgdXAgbXkgdG9vbHMg4oCTIGdyZXBwZXIsIGNvZGVzZWFyY2gsIHdoYXRldmVyIHdvcmtzIGJlc3QuIEdvdHRhIHNlZSB0aGUgY29udGV4dCBvZiB0aGlzIGBzdG1tYWNgIGRyaXZlci4gVW5kZXJzdGFuZGluZyB0aGUgc3Vycm91bmRpbmcgY29kZSwgYW5kIGhvdyBpdCYjMzk7cyB1c2VkLCBpcyBlc3NlbnRpYWwgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IGZ1enppbmcgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDA1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgU1RNTUFDX0VUSCBLY29uZmlnKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIEtjb25maWcgb3B0aW9ucyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHNwYWNlLCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBoaWdoLWxldmVsIHZpZXcgb2YgaG93IFNUTU1BQ19FVEggaXMgcHJlc2VudGVkIGFuZCBvcmdhbml6ZWQuIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9uIGxvd2VyLWxldmVsIGhhcmR3YXJlIG9wdGlvbnMgYW5kIHBlcmhhcHMgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIEkgd2lsbCBsb29rIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3VwcG9ydGVkIGZlYXR1cmVzLiBJJiMzOTtsbCBwYXkgYXR0ZW50aW9uIHRvIGFueSBzeW1ib2xzIHRoYXQgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBvciByZXF1aXJlIHNwZWNpZmljIFNPQyBmZWF0dXJlcyB0byBiZSBlbmFibGVkLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHRoaXMgS2NvbmZpZyBzcGFjZSBhbmQgc3RhcnQgcGlucG9pbnRpbmcgcG90ZW50aWFsIGFyZWFzIGZvciBjdXN0b21pemF0aW9uIG9yIG9wdGltaXphdGlvbiBkZXBlbmRpbmcgb24gdGhlIHVzZSBjYXNlLiBUaGlzIGludmVzdGlnYXRpb24gd2lsbCBsZWFkIG1lIHRvd2FyZHMgdGhlIGJlc3Qgd2F5IHRvIHV0aWxpemUgYW5kIHBvc3NpYmx5IGV4dGVuZCB0aGUgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdGNvbmZpZyBTVE1NQUNfRVRIXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG4gICA1Olx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gICA2Olx0XHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xuICAgNzpcdFx0c2VsZWN0IE1JSVxuICAgODpcdFx0c2VsZWN0IFBDU19YUENTXG4gICA5Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDEwOlx0XHRzZWxlY3QgUEhZTElOS1xuICAxMTpcdFx0c2VsZWN0IENSQzMyXG4gIDEyOlx0XHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxuICAxMzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxuICAxNjpcdFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxuICAxNzpcdFxuICAxODpcdGlmIFNUTU1BQ19FVEhcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xuICAyMTpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4gIDIyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAgMjM6XHRcdGRlZmF1bHQgblxuICAyNDpcdFx0aGVscFxuICAyNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0cyB1c2luZyBldGh0b29sLiBFbmFibGUgdGhpc1xuICAyNjpcdFx0ICBmZWF0dXJlIGlmIHlvdSBhcmUgZmFjaW5nIHByb2JsZW1zIHdpdGggeW91ciBIVyBhbmQgc3VibWl0IHRoZSB0ZXN0XG4gIDI3Olx0XHQgIHJlc3VsdHMgdG8gdGhlIG5ldGRldiBNYWlsaW5nIExpc3QuXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gIDMxOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRoZWxwXG4gIDM0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuICAzNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgdXNlZCBvbiBzZXZlcmFsIFNvQ3M6XG4gIDM2Olx0XHQgIFNUaSwgQWxsd2lubmVyLCBBbWxvZ2ljIE1lc29uLCBBbHRlcmEgU09DRlBHQS5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiAgMzk6XHRcbiAgNDA6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDE6XHRcbiAgNDI6XHRpZiBTVE1NQUNfUExBVEZPUk1cbiAgNDM6XHRcbiAgNDQ6XHRjb25maWcgRFdNQUNfRFdDX1FPU19FVEhcbiAgNDU6XHRcdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cJiMzNDtcbiAgNDY6XHRcdHNlbGVjdCBDUkMzMlxuICA0NzpcdFx0c2VsZWN0IE1JSVxuICA0ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICA0OTpcdFx0aGVscFxuICA1MDpcdFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxuICA1MTpcdFxuICA1MjpcdGNvbmZpZyBEV01BQ19HRU5FUklDXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIGRyaXZlciBmb3IgRFdNQUNcJiMzNDtcbiAgNTQ6XHRcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24mIzM5O3QgcmVxdWlyZSBhbnlcbiAgNTc6XHRcdCAgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSB0byBmdW5jdGlvbiBvciBpcyB1c2luZyBwbGF0Zm9ybVxuICA1ODpcdFx0ICBkYXRhIGZvciBzZXR1cC5cbiAgNTk6XHRcbiAgNjA6XHRjb25maWcgRFdNQUNfQU5BUklPTlxuICA2MTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWRhcHRydW0gQW5hcmlvbiBHTUFDIHN1cHBvcnRcJiMzNDtcbiAgNjI6XHRcdGRlZmF1bHQgQVJDXG4gIDYzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDIHx8IENPTVBJTEVfVEVTVClcbiAgNjQ6XHRcdGhlbHBcbiAgNjU6XHRcdCAgU3VwcG9ydCBmb3IgQWRhcHRydW0gQW5hcmlvbiBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDY2Olx0XG4gIDY3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgRFdNQUNfRUlDNzcwMFxuICA3MDpcdFx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbiAgNzE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IEhBU19ETUEgXHUwMDI2XHUwMDI2IEFSQ0hfRVNXSU4gfHwgQ09NUElMRV9URVNUXG4gIDcyOlx0XHRoZWxwXG4gIDczOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBFc3dpbiBFSUM3NzAwIEV0aGVybmV0IGNvbnRyb2xsZXIsXG4gIDc0Olx0XHQgIHdoaWNoIGludGVncmF0ZXMgU3lub3BzeXMgRGVzaWduV2FyZSBRb1MgZmVhdHVyZXMuIEl0IGVuYWJsZXNcbiAgNzU6XHRcdCAgaGlnaC1zcGVlZCBuZXR3b3JraW5nIHdpdGggRE1BIGFjY2VsZXJhdGlvbiBhbmQgaXMgb3B0aW1pemVkXG4gIDc2Olx0XHQgIGZvciBlbWJlZGRlZCBzeXN0ZW1zLlxuICA3NzpcdFxuICA3ODpcdGNvbmZpZyBEV01BQ19JTkdFTklDXG4gIDc5Olx0XHR0cmlzdGF0ZSBcJiMzNDtJbmdlbmljIE1BQyBzdXBwb3J0XCYjMzQ7XG4gIDgwOlx0XHRkZWZhdWx0IE1BQ0hfSU5HRU5JQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY3MzkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgS2NvbmZpZyBmb3IgU1RNTUFDX1BDSSBvciBzb21ldGhpbmcgYW5hbG9nb3VzLiBJJiMzOTttIHRoaW5raW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBicm9hZGVyIFNUTU1BQyBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHNlZSBob3cgdGhlIFBDSS1zcGVjaWZpYyBwYXJ0cyBhcmUgaGFuZGxlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIG51YW5jZXMgb3IgZ290Y2hhcyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgbWVhdCBhbmQgcG90YXRvZXMgb2YgdGhlIEtjb25maWcgZW50cmllczogdGhlIHN5bWJvbHMsIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIChsaWtlIG90aGVyIGRyaXZlciBvciBoYXJkd2FyZSBmZWF0dXJlcyksIGFuZCB0aGUgKndoeSogYmVoaW5kIHRoZWlyIGRlc2lnbiBjaG9pY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGFzcGVjdHMgYXJlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIFBDSSBpbnRlcmZhY2UgYW5kIG5vdCBqdXN0IGdlbmVyYWxseSBhcHBsaWNhYmxlIHRvIHRoZSBTVE1NQUMgZmFtaWx5LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgcGFyc2luZyB0aGUgS2NvbmZpZyBmaWxlcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDgxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IChNQUNIX0lOR0VOSUMgfHwgQ09NUElMRV9URVNUKVxuICA4MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAgODM6XHRcdGhlbHBcbiAgODQ6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBJbmdlbmljIFNvQ3MuXG4gIDg1Olx0XG4gIDg2Olx0XHQgIFRoaXMgc2VsZWN0cyBJbmdlbmljIFNvQ3MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gIDg3Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBJbmdlbmljIFNvQ3NcbiAgODg6XHRcdCAgTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gIDg5Olx0XG4gIDkwOlx0Y29uZmlnIERXTUFDX0lQUTgwNlhcbiAgOTE6XHRcdHRyaXN0YXRlIFwmIzM0O1FDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcJiMzNDtcbiAgOTI6XHRcdGRlZmF1bHQgQVJDSF9RQ09NXG4gIDkzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcbiAgOTQ6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gIDk1Olx0XHRoZWxwXG4gIDk2Olx0XHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxuICA5NzpcdFxuICA5ODpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIElQUTgwNnggU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuICA5OTpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYW55IG9mIHRoZSBoYXJkd2FyZVxuIDEwMDpcdFx0ICBhY2NlbGVyYXRpb24gZmVhdHVyZXMgYXZhaWxhYmxlIG9uIHRoaXMgU29DLiBOZXR3b3JrIGRldmljZXNcbiAxMDE6XHRcdCAgd2lsbCBiZWhhdmUgbGlrZSBzdGFuZGFyZCBub24tYWNjZWxlcmF0ZWQgZXRoZXJuZXQgaW50ZXJmYWNlcy5cbiAxMDI6XHRcbiAxMDM6XHRcdCAgU2VsZWN0IHRoZSBRQ09NX1NPQ0lORk8gY29uZmlnIGZsYWcgdG8gZW5hYmxlIHNwZWNpZmljIGR3bWFjXG4gMTA0Olx0XHQgIGZpeHVwIGJhc2VkIG9uIHRoZSBpcHE4MDZ4IFNvQyByZXZpc2lvbi5cbiAxMDU6XHRcbiAxMDY6XHRjb25maWcgRFdNQUNfTFBDMThYWFxuIDEwNzpcdFx0dHJpc3RhdGUgXCYjMzQ7TlhQIExQQzE4eHgvNDN4eCBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMTA4Olx0XHRkZWZhdWx0IEFSQ0hfTFBDMThYWFxuIDEwOTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXG4gMTEwOlx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDExMTpcdFx0aGVscFxuIDExMjpcdFx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxuIDExMzpcdFxuIDExNDpcdGNvbmZpZyBEV01BQ19NRURJQVRFS1xuIDExNTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQyN3h4IEdNQUMgc3VwcG9ydFwmIzM0O1xuIDExNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTUVESUFURUsgfHwgQ09NUElMRV9URVNUKVxuIDExNzpcdFx0aGVscFxuIDExODpcdFx0ICBTdXBwb3J0IGZvciBNZWRpYVRlayBHTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMTE5Olx0XG4gMTIwOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgTVQyNzEyIFNvQyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiAxMjE6XHRcbiAxMjI6XHRjb25maWcgRFdNQUNfTUVTT05cbiAxMjM6XHRcdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDEyNDpcdFx0ZGVmYXVsdCBBUkNIX01FU09OXG4gMTI1Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9NRVNPTiB8fCBDT01QSUxFX1RFU1QpXG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gQW1sb2dpYyBNZXNvbiBTb0NzLlxuIDEyODpcdFxuIDEyOTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIEFtbG9naWMgTWVzb24gU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3JcbiAxMzA6XHRcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBNZXNvbjYsXG4gMTMxOlx0XHQgIE1lc29uOCwgTWVzb244YiBhbmQgR1hCQiBTb0NzLlxuIDEzMjpcdFxuIDEzMzpcdGNvbmZpZyBEV01BQ19OVVZPVE9OXG4gMTM0Olx0XHR0cmlzdGF0ZSBcJiMzNDtOdXZvdG9uIE1BMzUgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDEzNTpcdFx0ZGVmYXVsdCBBUkNIX01BMzVcbiAxMzY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxuIDEzNzpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAxMzg6XHRcdGhlbHBcbiAxMzk6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQy5cbiAxNDA6XHRcbiAxNDE6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnRcbiAxNDI6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhlIG51dm90b24tZHdtYWMgZHJpdmVyIGlzXG4gMTQzOlx0XHQgIHVzZWQgZm9yIE1BMzUgc2VyaWVzIFNvQ3MuXG4gMTQ0Olx0XG4gMTQ1Olx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXG4gMTQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBFVEhRT1Mgc3VwcG9ydFwmIzM0O1xuIDE0NzpcdFx0ZGVmYXVsdCBBUkNIX1FDT01cbiAxNDg6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1FDT00gfHwgQ09NUElMRV9URVNUKVxuIDE0OTpcdFx0aGVscFxuIDE1MDpcdFx0ICBTdXBwb3J0IGZvciB0aGUgUXVhbGNvbW0gRVRIUU9TIGNvcmUuXG4gMTUxOlx0XG4gMTUyOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXG4gMTUzOlx0XHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxuIDE1NDpcdFxuIDE1NTpcdGNvbmZpZyBEV01BQ19SRU5FU0FTX0dCRVRIXG4gMTU2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZW5lc2FzIFJaL1YySChQKSBHQkVUSCBhbmQgUlovVDJILCBSWi9OMkggR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTU3Olx0XHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xuIDE1ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1QpXG4gMTU5Olx0XHRzZWxlY3QgUENTX1JaTjFfTUlJQ1xuIDE2MDpcdFx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyOTEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBzdG1tYWMgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyIGluIEtjb25maWcuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgcG93ZXIgYW5kIGZsZXhpYmlsaXR5IHJlc2lkZS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBldmVyeXRoaW5nIGZyb20gYmFzaWMgUEhZIHNlbGVjdGlvbiBhbmQgbGluayBzcGVlZCBjb25maWd1cmF0aW9uLCB0byBtb3JlIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UgRE1BIHNldHRpbmdzLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIGFuZCBtYXliZSBldmVuIHNvbWUgb2YgdGhlIHBvd2VyIG1hbmFnZW1lbnQgb3B0aW9ucy4gVGhlIHNwZWNpZmljcyBJJiMzOTttIGxvb2tpbmcgZm9yIHdpbGwgZGVwZW5kIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gYW5kIHNwZWNpZmljIHVzZSBjYXNlLCBidXQgSSBoYXZlIGEgc3Ryb25nIGdlbmVyYWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgZ3JhbnVsYXIgbGV2ZWwgb2YgY29udHJvbCBoZXJlLCB3aGljaCBJIGNhbiB1c2UgZm9yIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIHR3ZWFraW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjb25zdHJhaW50cywgb3IgcG90ZW50aWFsbHkgZW5hYmxpbmcgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgYnVyaWVkIGluIHRoZSBLY29uZmln4oCmCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MTpcdFx0ICBTdXBwb3J0IGZvciBHaWdhYml0IEV0aGVybmV0IEludGVyZmFjZSAoR0JFVEgpLyBFdGhlcm5ldCBNQUMgKEdNQUMpXG4gMTYyOlx0XHQgIG9uIFJlbmVzYXMgU29Dcy5cbiAxNjM6XHRcbiAxNjQ6XHRcdCAgVGhpcyBzZWxlY3RzIFJlbmVzYXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkZXZpY2VcbiAxNjU6XHRcdCAgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgUlovVjJIKFApIGZhbWlseSwgUlovVDJIIGFuZFxuIDE2NjpcdFx0ICBSWi9OMkggU29Dcy5cbiAxNjc6XHRcbiAxNjg6XHRjb25maWcgRFdNQUNfUk9DS0NISVBcbiAxNjk6XHRcdHRyaXN0YXRlIFwmIzM0O1JvY2tjaGlwIGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAxNzA6XHRcdGRlZmF1bHQgQVJDSF9ST0NLQ0hJUFxuIDE3MTpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxuIDE3MjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAxNzM6XHRcdGhlbHBcbiAxNzQ6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxuIDE3NTpcdFxuIDE3NjpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFJvY2tjaGlwIFJLMzI4OCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDE3NzpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuXG4gMTc4Olx0XG4gMTc5Olx0Y29uZmlnIERXTUFDX1JaTjFcbiAxODA6XHRcdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDE4MTpcdFx0ZGVmYXVsdCBBUkNIX1JaTjFcbiAxODI6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1JaTjEgfHwgQ09NUElMRV9URVNUKVxuIDE4MzpcdFx0c2VsZWN0IFBDU19SWk4xX01JSUNcbiAxODQ6XHRcdGhlbHBcbiAxODU6XHRcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSZW5lc2FzIFJaL04xIFNvQyBmYW1pbHkuXG4gMTg2Olx0XG4gMTg3Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuIDE4ODpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXG4gMTg5Olx0XHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxuIDE5MDpcdFxuIDE5MTpcdGNvbmZpZyBEV01BQ19TMzJcbiAxOTI6XHRcdHRyaXN0YXRlIFwmIzM0O05YUCBTMzJHL1MzMlIgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMTkzOlx0XHRkZWZhdWx0IEFSQ0hfUzMyXG4gMTk0Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TMzIgfHwgQ09NUElMRV9URVNUKVxuIDE5NTpcdFx0aGVscFxuIDE5NjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBTMzJDQyBTT0NzLlxuIDE5NzpcdFxuIDE5ODpcdFx0ICBUaGlzIHNlbGVjdHMgTlhQIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcbiAxOTk6XHRcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFMzMkNDIHNlcmllc1xuIDIwMDpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlciwgaWUuIFMzMkcyeHgsIFMzMkczeHggYW5kXG4gMjAxOlx0XHQgIFMzMlI0NS5cbiAyMDI6XHRcbiAyMDM6XHRjb25maWcgRFdNQUNfU09DRlBHQVxuIDIwNDpcdFx0dHJpc3RhdGUgXCYjMzQ7U09DRlBHQSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMjA1Olx0XHRkZWZhdWx0IEFSQ0hfSU5URUxfU09DRlBHQVxuIDIwNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXG4gMjA3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDIwODpcdFx0c2VsZWN0IE1ESU9fUkVHTUFQXG4gMjA5Olx0XHRzZWxlY3QgUkVHTUFQX01NSU9cbiAyMTA6XHRcdHNlbGVjdCBQQ1NfTFlOWFxuIDIxMTpcdFx0aGVscFxuIDIxMjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXG4gMjEzOlx0XG4gMjE0Olx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgQWx0ZXJhIFNPQ0ZQR0EgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDIxNTpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvclxuIDIxNjpcdFx0ICBhcnJpYTUgYW5kIGN5Y2xvbmU1IEZQR0EgU29Dcy5cbiAyMTc6XHRcbiAyMTg6XHRjb25maWcgRFdNQUNfU09QSEdPXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtTb3BoZ28gZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDIyMDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfU09QSEdPIHx8IENPTVBJTEVfVEVTVClcbiAyMjE6XHRcdGRlZmF1bHQgbSBpZiBBUkNIX1NPUEhHT1xuIDIyMjpcdFx0aGVscFxuIDIyMzpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTb3BoZ28gUklTQy1WIFNvQ3NcbiAyMjQ6XHRcbiAyMjU6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBTb3BoZ28gU29DIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDIyNjpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbiAyMjc6XHRcdCAgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gdmFyaW91cyBTb3BoZ28gU29Dcy5cbiAyMjg6XHRcbiAyMjk6XHRjb25maWcgRFdNQUNfU1BBQ0VNSVRcbiAyMzA6XHRcdHRyaXN0YXRlIFwmIzM0O1NwYWNlbWl0IGR3bWFjIHN1cHBvcnRcJiMzNDtcbiAyMzE6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NQQUNFTUlUIHx8IENPTVBJTEVfVEVTVClcbiAyMzI6XHRcdHNlbGVjdCBNRkRfU1lTQ09OXG4gMjMzOlx0XHRkZWZhdWx0IG0gaWYgQVJDSF9TUEFDRU1JVFxuIDIzNDpcdFx0aGVscFxuIDIzNTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBTcGFjZW1pdCBSSVNDLVYgU29Dc1xuIDIzNjpcdFxuIDIzNzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFNwYWNlbWl0IHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxuIDIzODpcdFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcbiAyMzk6XHRcdCAgU3BhY2VtaXQgSzMgZXRoZXJuZXQgY29udHJvbGxlcnMuXG4gMjQwOlx0XG4gMjQxOlx0Y29uZmlnIERXTUFDX1NUQVJGSVZFXG4gMjQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTdGFyRml2ZSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMjQzOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVEFSRklWRSB8fCBDT01QSUxFX1RFU1QpXG4gMjQ0Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI0NTpcdFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU1RBUkZJVkVcbiAyNDY6XHRcdGhlbHBcbiAyNDc6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gU3RhckZpdmUgUklTQy1WIFNvQ3NcbiAyNDg6XHRcbiAyNDk6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBTdGFyRml2ZSBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcbiAyNTA6XHRcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXG4gMjUxOlx0XHQgIFN0YXJGaXZlIEpINzEwMCBhbmQgSkg3MTEwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI1MjpcdFxuIDI1MzpcdGNvbmZpZyBEV01BQ19TVElcbiAyNTQ6XHRcdHRyaXN0YXRlIFwmIzM0O1NUaSBHTUFDIHN1cHBvcnRcJiMzNDtcbiAyNTU6XHRcdGRlZmF1bHQgQVJDSF9TVElcbiAyNTY6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NUSSB8fCBDT01QSUxFX1RFU1QpXG4gMjU3Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI1ODpcdFx0aGVscFxuIDI1OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUaSBTT0NzLlxuIDI2MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDExNgoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSByZXN0IG9mIHRoaXMgS2NvbmZpZyBmaWxlLCBwaWNraW5nIHVwIGZyb20sIHNheSwgbGluZSAyNjAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgZmxvdywgc28gSSYjMzk7bGwgbmVlZCB0byBhYnNvcmIgdGhlIHNwZWNpZmljcyBmcm9tIHRoZXJlLiBJ4oCZbSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhpcyBzZWN0aW9uLCBidXQgYSByZWZyZXNoZXIgaXMgaW4gb3JkZXIsIEkmIzM5O2xsIGdvIHRocm91Z2ggaXQgbGluZSBieSBsaW5lLiBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIHdpbGwgYmUgbW9yZSBpbnRlcmVzdGluZyBjb25maWcgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIHVucGFjayBmdXJ0aGVyIGRvd24gdGhhdCBjb3VsZCBhZmZlY3QgcGVyZm9ybWFuY2UuIEkgc2hvdWxkIGJlIGFibGUgdG8gbWFrZSBhbiBlZmZlY3RpdmUgc3VtbWFyeSwgYW5kIGxvb2sgdG8gbWFrZSBmdXJ0aGVyIGluZmVyZW5jZXMuIExldCYjMzk7cyBkaWcgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA2IDE1OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjYxOlx0XHQgIFRoaXMgc2VsZWN0cyBTVGkgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDI2MjpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgU1RpIHNlcmllc1xuIDI2MzpcdFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAyNjQ6XHRcbiAyNjU6XHRjb25maWcgRFdNQUNfU1RNMzJcbiAyNjY6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTTMyIERXTUFDIHN1cHBvcnRcJiMzNDtcbiAyNjc6XHRcdGRlZmF1bHQgQVJDSF9TVE0zMlxuIDI2ODpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgSEFTX0lPTUVNIFx1MDAyNlx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXG4gMjY5Olx0XHRzZWxlY3QgTUZEX1NZU0NPTlxuIDI3MDpcdFx0aGVscFxuIDI3MTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXG4gMjcyOlx0XG4gMjczOlx0XHQgIFRoaXMgc2VsZWN0cyBTVE0zMiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gMjc0Olx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVE0zMiBzZXJpZXNcbiAyNzU6XHRcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXG4gMjc2Olx0XG4gMjc3Olx0Y29uZmlnIERXTUFDX1NVTlhJXG4gMjc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtBbGx3aW5uZXIgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMjc5Olx0XHRkZWZhdWx0IEFSQ0hfU1VOWElcbiAyODA6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcbiAyODE6XHRcdGhlbHBcbiAyODI6XHRcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEEyMC9BMzEgR01BQyBldGhlcm5ldCBjb250cm9sbGVycy5cbiAyODM6XHRcbiAyODQ6XHRcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcbiAyODU6XHRcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcbiAyODY6XHRcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI4NzpcdFxuIDI4ODpcdGNvbmZpZyBEV01BQ19TVU44SVxuIDI4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjhpIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDI5MDpcdFx0ZGVmYXVsdCBBUkNIX1NVTlhJXG4gMjkxOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXG4gMjkyOlx0XHRzZWxlY3QgTURJT19CVVNfTVVYXG4gMjkzOlx0XHRoZWxwXG4gMjk0Olx0XHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBIMyBBODNUIEE2NCBFTUFDIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDI5NTpcdFxuIDI5NjpcdFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuIDI5NzpcdFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgSDMvQTgzVC9BNjRcbiAyOTg6XHRcdCAgRU1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxuIDI5OTpcdFxuIDMwMDpcdGNvbmZpZyBEV01BQ19TVU41NUlcbiAzMDE6XHRcdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XCYjMzQ7XG4gMzAyOlx0XHRkZWZhdWx0IEFSQ0hfU1VOWElcbiAzMDM6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcbiAzMDQ6XHRcdHNlbGVjdCBNRElPX0JVU19NVVhcbiAzMDU6XHRcdGhlbHBcbiAzMDY6XHRcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxuIDMwNzpcdFxuIDMwODpcdFx0ICBUaGlzIHNlbGVjdHMgQWxsd2lubmVyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZVxuIDMwOTpcdFx0ICBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgQTUyMy9UNTI3XG4gMzEwOlx0XHQgIEdNQUMyMDAgZXRoZXJuZXQgY29udHJvbGxlci5cbiAzMTE6XHRcbiAzMTI6XHRjb25maWcgRFdNQUNfVEhFQURcbiAzMTM6XHRcdHRyaXN0YXRlIFwmIzM0O1QtSEVBRCBkd21hYyBzdXBwb3J0XCYjMzQ7XG4gMzE0Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9USEVBRCB8fCBDT01QSUxFX1RFU1QpXG4gMzE1Olx0XHRoZWxwXG4gMzE2Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFQtSEVBRCBSSVNDLVYgU29Dc1xuIDMxNzpcdFxuIDMxODpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIFQtSEVBRCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXG4gMzE5Olx0XHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxuIDMyMDpcdFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxuIDMyMTpcdFxuIDMyMjpcdGNvbmZpZyBEV01BQ19JTVg4XG4gMzIzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOWFAgSU1YOCBEV01BQyBzdXBwb3J0XCYjMzQ7XG4gMzI0Olx0XHRkZWZhdWx0IEFSQ0hfTVhDXG4gMzI1Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9NWEMgfHwgQ09NUElMRV9URVNUKVxuIDMyNjpcdFx0c2VsZWN0IE1GRF9TWVNDT05cbiAzMjc6XHRcdGhlbHBcbiAzMjg6XHRcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBOWFAgaS5NWDggU09Dcy5cbiAzMjk6XHRcbiAzMzA6XHRcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXG4gMzMxOlx0XHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIGkuTVg4IHNlcmllcyBsaWtlXG4gMzMyOlx0XHQgIGlNWDhNUC9pTVg4RFhMIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cbiAzMzM6XHRcbiAzMzQ6XHRjb25maWcgRFdNQUNfSU5URUxfUExBVFxuIDMzNTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgZHdtYWMgc3VwcG9ydFwmIzM0O1xuIDMzNjpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQ09NTU9OX0NMS1xuIDMzNzpcdFx0aGVscFxuIDMzODpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBJbnRlbCBTb0NzXG4gMzM5Olx0XG4gMzQwOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU3OQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIEtjb25maWcgU3RydWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGUgS2NvbmZpZyBjb250ZXh0IHByZXR0eSB3ZWxsIGVzdGFibGlzaGVkLCBidXQgSSBuZWVkIHRvIHpvb20gaW4uIFRoZSBvdmVyYWxsIGZyYW1ld29yayBpcyBpbiBwbGFjZSwgSSB1bmRlcnN0YW5kIGhvdyB0aGUgZGVwZW5kZW5jaWVzIHdvcmsgYW5kIHdoZXJlIHRoZSBtYWluIGZpbGVzIGFyZSwgYnV0IHRoZSBkZXZpbCBpcyBhbHdheXMgaW4gdGhlIGRldGFpbHMsIGlzbiYjMzk7dCBpdD8gTGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBnbyB0aHJvdWdoIGl0IGxpbmUgYnkgbGluZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgdGhpcyBzcGVjaWZpYyBLY29uZmlnIGZpbGUsIHNvIEkmIzM5O20gZ29pbmcgdG8gbG9vayBhdCB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaWxlLCBzdGFydGluZyBmcm9tIGxpbmUgMzQwLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUgY3J1Y2lhbCBlbGVtZW50cywgYW5kIHByb2JhYmx5IG1vcmUgZGVmaW5pdGlvbnMsIG1vcmUgdmFyaWFibGVzLCBhbmQgc29tZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBsb2dpYy4gSSB3aWxsIGJlIGxvb2tpbmcgZm9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucywgYW5kIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM0MTpcdFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBJbnRlbCBLZWVtIEJheVxuIDM0MjpcdFx0ICBTb0MuXG4gMzQzOlx0XG4gMzQ0Olx0Y29uZmlnIERXTUFDX0xPT05HU09OMVxuIDM0NTpcdFx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24xIEdNQUMgc3VwcG9ydFwmIzM0O1xuIDM0NjpcdFx0ZGVmYXVsdCBNQUNIX0xPT05HU09OMzJcbiAzNDc6XHRcdGRlcGVuZHMgb24gT0YgXHUwMDI2XHUwMDI2IChNQUNIX0xPT05HU09OMzIgfHwgQ09NUElMRV9URVNUKVxuIDM0ODpcdFx0aGVscFxuIDM0OTpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uMSBTb0MuXG4gMzUwOlx0XG4gMzUxOlx0XHQgIFRoaXMgc2VsZWN0cyBMb29uZ3NvbjEgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xuIDM1MjpcdFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBMb29uZ3NvbjEtYmFzZWQgYm9hcmRzXG4gMzUzOlx0XHQgIGxpa2UgTG9vbmdzb24gTFMxQi9MUzFDLlxuIDM1NDpcdFxuIDM1NTpcdGNvbmZpZyBEV01BQ19URUdSQVxuIDM1NjpcdFx0dHJpc3RhdGUgXCYjMzQ7TlZJRElBIFRlZ3JhIE1HQkUgc3VwcG9ydFwmIzM0O1xuIDM1NzpcdFx0ZGVwZW5kcyBvbiBBUkNIX1RFR1JBIHx8IENPTVBJTEVfVEVTVFxuIDM1ODpcdFx0aGVscFxuIDM1OTpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIE11bHRpLUdpZ2FCaXQgRXRoZXJuZXQgKE1HQkUpIENvbnRyb2xsZXIgdGhhdCBpc1xuIDM2MDpcdFx0ICBmb3VuZCBvbiB0aGUgTlZJRElBIFRlZ3JhIFNvQyBkZXZpY2VzLiBUaGlzIGRyaXZlciBwcm92aWRlcyB0aGUgZ2x1ZVxuIDM2MTpcdFx0ICBsYXllciBvbiB0b3Agb2YgdGhlIHN0bW1hYyBkcml2ZXIgcmVxdWlyZWQgZm9yIHRoZXNlIE5WSURJQSBUZWdyYSBTb0NcbiAzNjI6XHRcdCAgZGV2aWNlcy5cbiAzNjM6XHRcbiAzNjQ6XHRjb25maWcgRFdNQUNfVklTQ09OVElcbiAzNjU6XHRcdHRyaXN0YXRlIFwmIzM0O1Rvc2hpYmEgVmlzY29udGkgRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDM2NjpcdFx0ZGVmYXVsdCBBUkNIX1ZJU0NPTlRJXG4gMzY3Olx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBDT01NT05fQ0xLIFx1MDAyNlx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXG4gMzY4Olx0XHRoZWxwXG4gMzY5Olx0XHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gVmlzY29udGkgU29Dcy5cbiAzNzA6XHRcbiAzNzE6XHRlbmRpZiAjIFNUTU1BQ19QTEFURk9STVxuIDM3MjpcdFxuIDM3MzpcdGNvbmZpZyBTVE1NQUNfTElCUENJXG4gMzc0Olx0XHR0cmlzdGF0ZVxuIDM3NTpcdFx0aGVscFxuIDM3NjpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBQQ0kgYnVzIGhlbHBlcnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDM3NzpcdFxuIDM3ODpcdGNvbmZpZyBEV01BQ19JTlRFTFxuIDM3OTpcdFx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgR01BQyBzdXBwb3J0XCYjMzQ7XG4gMzgwOlx0XHRkZWZhdWx0IFg4NlxuIDM4MTpcdFx0ZGVwZW5kcyBvbiBYODYgXHUwMDI2XHUwMDI2IFBDSVxuIDM4MjpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gMzgzOlx0XHRkZXBlbmRzIG9uIEFDUElcbiAzODQ6XHRcdGhlbHBcbiAzODU6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlXG4gMzg2Olx0XHQgIHN0bW1hYyBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEludGVsIFF1YXJrL0VITC9UR0wuXG4gMzg3Olx0XG4gMzg4Olx0Y29uZmlnIERXTUFDX0xPT05HU09OXG4gMzg5Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFwmIzM0O1xuIDM5MDpcdFx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcbiAzOTE6XHRcdGRlcGVuZHMgb24gKE1BQ0hfTE9PTkdTT042NCB8fCBDT01QSUxFX1RFU1QpIFx1MDAyNlx1MDAyNiBQQ0lcbiAzOTI6XHRcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xuIDM5MzpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiAzOTQ6XHRcdGhlbHBcbiAzOTU6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxuIDM5NjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cbiAzOTc6XHRcbiAzOTg6XHRjb25maWcgRFdNQUNfTU9UT1JDT01NXG4gMzk5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiA0MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiA0MTg6XHRcbiA0MTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiA0MjA6XHRlbmRpZiAjIFNUTU1BQ19FVEhcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMwNjIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMTY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBEZWNpc2lvbiBmb3IgU1RNTUFDX0VUSCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYFNUTU1BQ19FVEhgLCB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQ3MuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGV2ZW4gcmVhY2ggaXQgd2l0aGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG9yIGlmIEkgY2FuIGluc3RhbnRpYXRlIGl0LgoKQmFzZWQgb24gdGhlIGd1aWRlbGluZXMsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgJiMzNDtXb3J0aEZ1enppbmcuJiMzNDsgVGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGhpbmdlcyBvbiB3aGV0aGVyIHRoZSBtb2RpZmllZCBjb2RlIGZhbGxzIGludG8gY2VydGFpbiBjYXRlZ29yaWVzLiBUaGUga2V5IG9uZSBoZXJlIGlzICYjMzQ7c3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IHdoaWNoIGluY2x1ZGVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVjZXNzaXRhdGUgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoKU28sIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGFza2luZyBpczogZG9lcyBRRU1VIGVtdWxhdGUgdGhlIGBzdG1tYWNgIG9yIGBkd21hY2AgKERlc2lnbldhcmUgTUFDKT8gSSBrbm93IFFFTVUgKmRvZXMqIGVtdWxhdGUgYGR3bWFjYCBmb3IgY2VydGFpbiBBUk0gYm9hcmRzLiBJJiMzOTttIHRoaW5raW5nIG9mIGBhbGx3aW5uZXItYTEwYCwgYHN1bjRpLWVtYWNgLCBgZHdjLXFvc2AsIGBpbXhgLCBhbmQgYHN0ZWxsYXJpc2AuIEkgc2VlIHNvbWUgbWVudGlvbiBvZiBgYWxsd2lubmVyLXN1bjhpLWVtYWNgIG9yIGB4aWxpbngtZXRobGl0ZWAsIGJ1dCB0aGF0JiMzOTtzIGEgaGludCwgYW5kIEkmIzM5O20gb24gYW1kNjQgbm93LgoKQWhhISBUYXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGBhbWQ2NGAuIE5vdywgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBRRU1VIG9uIHg4Ni9hbWQ2NCBlbXVsYXRlcyBgc3RtbWFjYCBvciBpZiBpdCByZXF1aXJlcyBhIHBoeXNpY2FsIFNvQy9QQ0kgTklDLiBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgdmlydHVhbCBvciBlbXVsYXRlZCBkZXZpY2UgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIGlmIGBzeXprYWxsZXJgIGNhbiBpbnN0YW50aWF0ZSBpdCB0aHJvdWdoIHNvbWUgcGxhdGZvcm0vZHVtbXkgZGV2aWNlLgoKUmlnaHQsIHNvIGNhbiBhIHVzZXJzcGFjZSBwcm9ncmFtIG9yIHN5c2NhbGwgZXZlbiBjcmVhdGUgYHN0bW1hY2A/IE5vLCBpdCYjMzk7cyBhbiBFdGhlcm5ldCBNQUMgZHJpdmVyLiBJdOKAmXMgZm9yIGVtYmVkZGVkIFNvQ3MsIGxpa2UgdGhvc2UgZnJvbSBBbGx3aW5uZXIsIEFtbG9naWMsIFNUTTMyLCBSb2NrY2hpcCwgSW50ZWwgUXVhcmsvRUhML1RHTCwgb3IgZm9yIFBDSSBldGhlcm5ldCBjYXJkcy4KCkFscmlnaHQsIGxldCYjMzk7cyBleHBsaWNpdGx5IGNoZWNrIHdoYXQmIzM5O3MgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VICh4ODZfNjQpLiBFbXVsYXRlZCBuZXR3b3JrIGRldmljZXMgb24geDg2XzY0IGFyZSB0aGUgZTEwMDAsIGUxMDAwZSwgcnRsODEzOSwgcGNuZXQsIG5lMmtfcGNpLCB2bXhuZXQzLCB2aXJ0aW8tbmV0LCBhbmQgaWdiLiBDcnVjaWFsbHksIHRoZXJlJiMzOTtzIG5vIGBzdG1tYWNgIG9yIGBkd21hY2AgUENJIGRldmljZSBpbiBRRU1VJiMzOTtzIHN0YW5kYXJkIGhhcmR3YXJlIGxpc3QuIEkgY2FuIGNoZWNrIHRoZSBgaHcvbmV0L2AgZGlyZWN0b3J5IGFuZCBjb25maXJtLCBidXQgSSYjMzk7bSBsb29raW5nIGF0IGZpbGVzIGxpa2UgYGFsbHdpbm5lci1zdW44aS1lbWFjLmNgLCBgY2FkZW5jZV9nZW0uY2AsIGBlMTAwMC5jYCwgYHZpcnRpby1uZXQuY2AgZXRjLiBObyBgc3RtbWFjYCwgbm8gYGR3bWFjYC4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIG90aGVyIHBvdGVudGlhbCBhdmVudWVzOiBjYW4gaXQgYmUgZnV6emVkIHRocm91Z2ggYSBVU0IgZ2FkZ2V0PyBOby4gVmlydGlvPyBOby4gQSBtb2NrIGRldmljZT8gTm8uCgpPa2F5LCBiYWNrIHRvIHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNyaXRlcmlhLiBSZS1yZWFkaW5nIHRoZSBndWlkZWxpbmVzOiAmIzM0Oy0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOiAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4ucmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OwoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjazogYHN0bW1hY2AgaXMgYSBkcml2ZXIgZm9yIFNUTWljcm8mIzM5O3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyBmb3IgKnBoeXNpY2FsKiBFdGhlcm5ldCBjb250cm9sbGVycy4gVGhhdCBtZWFucyBEV01BQyBvbiB2YXJpb3VzIFNvQ3Mgb3IgSW50ZWwgUXVhcmsgLyBNb3RvcmNvbW0gWVQ2ODAxIFBDSSBjYXJkcy4gU28sIHRoaXMgcmVxdWlyZXMgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBvciBBUk0vUklTQy1WL01JUFMgU29DcyB3aXRoIERXTUFDIGhhcmR3YXJlIHRoYXQgaXMgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBpcyBlc3BlY2lhbGx5IHRydWUgZ2l2ZW4gdGhlIGFtZDY0IHRhcmdldCBhcmNoaXRlY3R1cmUuCgpTbywgSSBuZWVkIHRvIGtub3cgZGVmaW5pdGl2ZWx5OiBpcyAqYW55KiBwYXJ0IG9mIGBzdG1tYWNgIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBvciBub3Q/IEkgYW0gZ29pbmcgdG8gZ3JlcCBmb3IgYHN0bW1hY2AgaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYz05Mz1zdGF0aWMgaW50IGFuYXJpb25fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEwNDpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMDUtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzA3Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMDgtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MTY3PXN0YXRpYyBpbnQgZWljNzcwMF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM6MTgxOlx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTE4Mi1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYz0xOT1zdGF0aWMgaW50IGR3bWFjX2dlbmVyaWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjktXHRpZiAocGRldi1cdTAwM2VkZXYub2Zfbm9kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjMwOlx0XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMzEtXHRcdGlmIChJU19FUlIocGxhdF9kYXQpKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MjkzPXN0YXRpYyBpbnQgaW14X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzA5Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzEwLVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTE2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjc6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTY4LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6NTQ6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtNTUtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjM4NzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy0zODgtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MTg4Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMTg5LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy01Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo1MzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy01NC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjMxOlx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MzItXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy01Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTg6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTU5LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTM4Mj1zdGF0aWMgaW50IG1lc29uOGJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtMzkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjM5MzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy0zOTQtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9ODI9c3RhdGljIGludCBudnRfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzo5NDpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05NS1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTY5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Njk5Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MDAtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYz0xMzE9c3RhdGljIGludCByZW5lc2FzX2diZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE0NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoxNDY6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMTQ3LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNTY4PXN0YXRpYyBpbnQgcmtfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTU4NTpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4Ni1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz00OD1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6NTk6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtNjAtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYz0xNDQ9c3RhdGljIGludCBzMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0xNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoxNjM6XHRwbGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHJlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTY0LVx0aWYgKElTX0VSUihwbGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM9NTk2PXN0YXRpYyBpbnQgc29jZnBnYV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6NjE1Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTYxNi1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo0ODpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTQ5LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoxNjk6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTE3MC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM9OTA9c3RhdGljIGludCBzdGFyZml2ZV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxMDM6XHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTEwNC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jPTI0OT1zdGF0aWMgaW50IHN0aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI2NzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTI2OC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM9NTI1PXN0YXRpYyBpbnQgc3RtMzJfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTUzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NTM3Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MzgtXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYz0xMDU9c3RhdGljIGludCBzdW41NWlfZ21hYzIwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjExNzpcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExOC1cdGlmIChJU19FUlIocGxhdF9kYXQpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTczLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTc0Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMTc1LVx0aWYgKElTX0VSUihwbGF0X2RhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYz05OT1zdGF0aWMgaW50IHN1bjdpX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTExMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM6MTExOlx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xMTItXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTIxND1zdGF0aWMgaW50IHRlZ3JhX21nYmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MzIwOlx0cGxhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCByZXMubWFjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzIxLVx0aWYgKElTX0VSUihwbGF0KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjE2PXN0YXRpYyBpbnQgdGhlYWRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIyOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjMwOlx0cGxhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTIzMS1cdGlmIChJU19FUlIocGxhdCkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yMDU9c3RhdGljIGludCB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjE2Olx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMTctXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz0zOTM9c3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzdG1tYWNfZ21hYzRfY29tcGF0c1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQwNS0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjQwNjogKiBzdG1tYWNfcHJvYmVfY29uZmlnX2R0IC0gcGFyc2UgZGV2aWNlLXRyZWUgZHJpdmVyIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQwNy0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTQxMz1zdGF0aWMgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjQxNDpzdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy00MTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY0MT1zdGF0aWMgdm9pZCBkZXZtX3N0bW1hY19yZW1vdmVfY29uZmlnX2R0KHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjUxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NjUyOiAqIGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjUzLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02NTQtICogQG1hYzogTUFDIGFkZHJlc3MgdG8gdXNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTU6ICogRGVzY3JpcHRpb246IERldnJlcyB2YXJpYW50IG9mIHN0bW1hY19wcm9iZV9jb25maWdfZHQoKS5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY1Ni0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY1Nz1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NjU4OmRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjU5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02NjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NjM6XHRwbGF0ID0gc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBtYWMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjY0LVx0aWYgKElTX0VSUihwbGF0KSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz02NzU9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY3NjpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY3Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjgwLSNlbmRpZiAvKiBDT05GSUdfT0YgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY4MTpFWFBPUlRfU1lNQk9MX0dQTChkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oPTE0PXN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaDoxNTpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0xNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2NDcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgTUFDIERyaXZlciBQQ0kgSUQgTWF0Y2hpbmcqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlc2UgRXRoZXJuZXQgZHJpdmVycyBoYW5kbGUgUENJIGRldmljZSBJRCBtYXRjaGluZy4gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBzdGFydCB3aXRoIGBzdG1tYWNfcGNpLmNgLCB0aGVuIG1vdmUgb24gdG8gYGR3bWFjLWludGVsLmNgIGFuZCBgZHdtYWMtbW90b3Jjb21tLmNgLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB3aGljaCBzcGVjaWZpYyBQQ0kgSURzIGVhY2ggZHJpdmVyIGNsYWltcyByZXNwb25zaWJpbGl0eSBmb3IuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlaXIgaW50ZW5kZWQgaGFyZHdhcmUgc2NvcGUgYW5kIGFueSBwb3RlbnRpYWwgb3ZlcmxhcHMgb3IgY29uZmxpY3RzLiBJdCYjMzk7cyB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IHRvIGdldCBhIGJpcmQmIzM5O3MtZXllIHZpZXcgb2YgdGhlaXIgaW50ZW5kZWQgZGV2aWNlIHN1cHBvcnQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgaW5jbHVkZXMgcmV2ZWFsIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfZGV2aWNlX2lkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjQ6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzYyPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk2LVx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFFVQVJLLCBcdTAwMjZxdWFya19pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDc5PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NDk4OnN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDk5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTU3OD1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kd21hY19yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU5NjpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbG9vbmdzb25fZHdtYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk3LVx0eyBQQ0lfREVWSUNFX0RBVEEoTE9PTkdTT04sIEdNQUMxLCBcdTAwMjZsb29uZ3Nvbl9nbWFjX3BjaV9pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI2ND1zdGF0aWMgaW50IG1vdG9yY29tbV9zZXR1cF9pcnEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjkzOnN0YXRpYyBpbnQgbW90b3Jjb21tX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yOTQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTM2Mj1zdGF0aWMgdm9pZCBtb3RvcmNvbW1fcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgZHdtYWNfbW90b3Jjb21tX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzY4LVx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTExOD1zdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5Olx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTIwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMDQtXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE3MgoJCQkJCQkJb3V0cHV0OiAxMjUKCQkJCQkJCXRob3VnaHRzOiA3MTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIFNUTU1BQyBEcml2ZXIgZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoaXMgaXMgdGhlIFNUTU1BQyAob3IgRFdNQUMpIEV0aGVybmV0IGRyaXZlciwgd2hpY2ggaXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoaXMgaXMgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIElQLCBmb3VuZCBpbiB2YXJpb3VzIFNvQ3MgYW5kIHNvbWV0aW1lcyBzcGVjaWZpYyBQQ0kgY2FyZHMuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZSBpcyAqKm5vdCoqIGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUsIGVzcGVjaWFsbHkgb24gdGhlIGFtZDY0IGFyY2hpdGVjdHVyZSwgb3IgZXZlbiBpbiBHQ0UuIFRoYXQgbWVhbnMgdGhlcmUmIzM5O3Mgbm8gd2F5IGZvciB0aGUgY29kZSBpbiB0aGlzIGRyaXZlciB0byBleGVjdXRlIGluIGEgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudC4gVGhlIGRldmljZSBjYW5ub3QgcHJvYmUgb3IgZnVuY3Rpb24uCgpJJiMzOTttIGRvdWJsZS1jaGVja2luZyB0aGUgaW5zdHJ1Y3Rpb25zLCBzcGVjaWZpY2FsbHkgdGhlIHNlY3Rpb24gYWJvdXQgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuJiMzNDsgVGhpcyBmaXRzIHRoZSBiaWxsIHBlcmZlY3RseTogaXQmIzM5O3MgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIChTeW5vcHN5cy9TVE1pY3JvZWxlY3Ryb25pY3MpLCByZXF1aXJpbmcgYSBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZCwgYW5kIGl0JiMzOTtzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4KCk5vdyBsZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmLiBBbGwgb2YgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHdpdGhpbiBgc3RtbWFjX21haW4uY2AuIEkgc2VlIHRoYXQgdGhlIGNoYW5nZXMgYXJlIGFkZGluZyBudWxsIGNoZWNrcyBhbmQgaW1wcm92aW5nIGVycm9yIGhhbmRsaW5nIGFyb3VuZCBETUEgcmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBUWC9SWCBidWZmZXJzLiBJbXBvcnRhbnRseSwgdGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgcGFydCBvZiB0aGUgZHJpdmVyJiMzOTtzIGNvcmUgZnVuY3Rpb25hbGl0eSwgdGhhdCByZXF1aXJlcyB0aGUgU1RNTUFDL0RXTUFDIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgYW5kIGluaXRpYWxpemVkLgoKQmVjYXVzZSB0aGlzIGRyaXZlciBuZWNlc3NpdGF0ZXMgcGh5c2ljYWwgU1RNTUFDIGhhcmR3YXJlLCBhbmQgc2luY2UgdGhpcyBoYXJkd2FyZSBpcyB1bmF2YWlsYWJsZSBpbiB0aGUgdGFyZ2V0IHZpcnR1YWwgZW52aXJvbm1lbnRzIChRRU1VLCBHQ0UpLCB0aGlzIG1lYW5zIHRoZSBjb2RlIGluIHRoaXMgcGF0Y2ggaXMgdW5yZWFjaGFibGUgdW5kZXIgZnV6emluZy4gVGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgKnN0cnVjdHVyYWxseSogaW5hY2Nlc3NpYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LgoKVGhlcmVmb3JlOgoKKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqIOKAkyBUaGUgY29kZSYjMzk7cyB1bmRlcmx5aW5nIGhhcmR3YXJlIGRlcGVuZGVuY2UgbWFrZXMgaXQgdW5mZWFzaWJsZSB0byBmdXp6LgoqICAgKipGb2N1c1N5bWJvbHM6IFxbIF0qKiDigJMgU2luY2UgdGhlIGRldmljZSBpcyB1bnByb2JlZCwgdGhlcmUgYXJlIG5vIGZ1bmN0aW9ucyB0byBwb2ludCBhdC4KKiAgICoqRW5hYmxlQ29uZmlnczogXFsgXSoqIOKAkyBBcyB0aGUgZGV2aWNlIGlzIHVuYXZhaWxhYmxlLCBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5LgoqICAgKipSZWFzb25pbmc6KiogVGhlIHN0bW1hYyBkcml2ZXIgZGVwZW5kcyBvbiBwaHlzaWNhbCBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgY29udHJvbGxlcnMgYW5kIFNvQ3MsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgYW1kNjQgZW52aXJvbm1lbnRzLCByZW5kZXJpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLgoKQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuIEkmIzM5O3ZlIHJldmlld2VkIGV2ZXJ5dGhpbmcsIGFuZCBpdCYjMzk7cyBhbGwgY29uc2lzdGVudCBhbmQgYWNjdXJhdGUuIEkmIzM5O20gY29uZmlkZW50IGluIHRoaXMgYXNzZXNzbWVudC4gTGV0JiMzOTtzIHN1Ym1pdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDYgMTU6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1oYW5kbGluZyBhbmQgYnVmZmVyLWZyZWVpbmcgcGF0aHMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0NzIC8gUENJZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1oYW5kbGluZyBhbmQgYnVmZmVyLWZyZWVpbmcgcGF0aHMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0NzIC8gUENJZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNiAxNTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MTQuODA2MTg3Mzc3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNDQ1MTQ3MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvci1oYW5kbGluZyBhbmQgYnVmZmVyLWZyZWVpbmcgcGF0aHMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLyBTb0NzIC8gUENJZSBkZXZpY2VzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVSAvIEdDRSBvbiBhbWQ2NCksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NToxNC44MDYxOTY1NjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MTI5MzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJjMTQ2OThhZmE1Y2RmZTNkOTBkY2NhY2EzNTM4NmI1OWM0YzFjODZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFN1biBTZXAgNiAxNTo0NToxMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IGYyZmM4OTE3NjY1NGUuLmYwZTA2YzAxMWI4ZGUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMTcyOCw3ICsxNzI4LDcgQEAgc3RhdGljIHZvaWQgc3RtbWFjX2ZyZWVfdHhfYnVmZmVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0XFx0XFx0XFx0IERNQV9UT19ERVZJQ0UpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAodHhfcS1cXHUwMDNleGRwZltpXSBcXHUwMDI2XFx1MDAyNlxcbitcXHRpZiAodHhfcS1cXHUwMDNleGRwZiBcXHUwMDI2XFx1MDAyNiB0eF9xLVxcdTAwM2V4ZHBmW2ldIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICAodHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfVFggfHxcXG4gXFx0ICAgICB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7XFxuIFxcdFxcdHhkcF9yZXR1cm5fZnJhbWUodHhfcS1cXHUwMDNleGRwZltpXSk7XFxuQEAgLTE3MzgsNyArMTczOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdGlmICh0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hTS19UWClcXG4gXFx0XFx0dHhfcS1cXHUwMDNleHNrX2ZyYW1lc19kb25lKys7XFxuIFxcbi1cXHRpZiAodHhfcS1cXHUwMDNldHhfc2tidWZmW2ldIFxcdTAwMjZcXHUwMDI2XFxuK1xcdGlmICh0eF9xLVxcdTAwM2V0eF9za2J1ZmYgXFx1MDAyNlxcdTAwMjYgdHhfcS1cXHUwMDNldHhfc2tidWZmW2ldIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICB0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1NLQikge1xcbiBcXHRcXHRkZXZfa2ZyZWVfc2tiX2FueSh0eF9xLVxcdTAwM2V0eF9za2J1ZmZbaV0pO1xcbiBcXHRcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZbaV0gPSBOVUxMO1xcbkBAIC0xNzYxLDYgKzE3NjEsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0c3RydWN0IHN0bW1hY19yeF9xdWV1ZSAqcnhfcSA9IFxcdTAwMjZkbWFfY29uZi1cXHUwMDNlcnhfcXVldWVbcXVldWVdO1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdC8qIGJ1Zl9wb29sIG1heSBub3QgYmUgYWxsb2NhdGVkIGlmIGFsbG9jIGZhaWxlZCBlYXJseSAqL1xcbitcXHRpZiAoIXJ4X3EtXFx1MDAzZWJ1Zl9wb29sKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZG1hX2NvbmYtXFx1MDAzZWRtYV9yeF9zaXplOyBpKyspXFxuIFxcdFxcdHN0bW1hY19mcmVlX3J4X2J1ZmZlcihwcml2LCByeF9xLCBpKTtcXG4gfVxcbkBAIC0xODAyLDYgKzE4MDYsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfeHNrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdHN0cnVjdCBzdG1tYWNfcnhfcXVldWUgKnJ4X3EgPSBcXHUwMDI2ZG1hX2NvbmYtXFx1MDAzZXJ4X3F1ZXVlW3F1ZXVlXTtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cXG4rXFx0aWYgKCFyeF9xLVxcdTAwM2VidWZfcG9vbClcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRtYV9jb25mLVxcdTAwM2VkbWFfcnhfc2l6ZTsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBzdG1tYWNfcnhfYnVmZmVyICpidWYgPSBcXHUwMDI2cnhfcS1cXHUwMDNlYnVmX3Bvb2xbaV07XFxuIFxcbkBAIC0yMDk3LDYgKzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0c3RydWN0IHN0bW1hY190eF9xdWV1ZSAqdHhfcSA9IFxcdTAwMjZkbWFfY29uZi1cXHUwMDNldHhfcXVldWVbcXVldWVdO1xcbiBcXHRpbnQgaTtcXG4gXFxuK1xcdC8qIHR4X3NrYnVmZl9kbWEgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovXFxuK1xcdGlmICghdHhfcS1cXHUwMDNldHhfc2tidWZmX2RtYSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0dHhfcS1cXHUwMDNleHNrX2ZyYW1lc19kb25lID0gMDtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkbWFfY29uZi1cXHUwMDNlZG1hX3R4X3NpemU7IGkrKylcXG5AQCAtMjI3MiwxNSArMjI4NCwxOSBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3J4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0fVxcbiBcXG4gXFx0cnhfcS1cXHUwMDNlYnVmX3Bvb2wgPSBremFsbG9jX29ianMoKnJ4X3EtXFx1MDAzZWJ1Zl9wb29sLCBkbWFfY29uZi1cXHUwMDNlZG1hX3J4X3NpemUpO1xcbi1cXHRpZiAoIXJ4X3EtXFx1MDAzZWJ1Zl9wb29sKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0aWYgKCFyeF9xLVxcdTAwM2VidWZfcG9vbCkge1xcbitcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbitcXHRcXHRnb3RvIGVycl9kZXN0cm95X3Bvb2w7XFxuK1xcdH1cXG4gXFxuIFxcdHNpemUgPSBzdG1tYWNfZ2V0X3J4X2Rlc2Nfc2l6ZShwcml2KSAqIGRtYV9jb25mLVxcdTAwM2VkbWFfcnhfc2l6ZTtcXG4gXFxuIFxcdGFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQocHJpdi1cXHUwMDNlZGV2aWNlLCBzaXplLCBcXHUwMDI2cnhfcS1cXHUwMDNlZG1hX3J4X3BoeSxcXG4gXFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMKTtcXG4tXFx0aWYgKCFhZGRyKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0aWYgKCFhZGRyKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfYnVmX3Bvb2w7XFxuK1xcdH1cXG4gXFxuIFxcdGlmIChwcml2LVxcdTAwM2VleHRlbmRfZGVzYylcXG4gXFx0XFx0cnhfcS1cXHUwMDNlZG1hX2VyeCA9IGFkZHI7XFxuQEAgLTIyOTYsMTAgKzIzMTIsMjcgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdHJldCA9IHhkcF9yeHFfaW5mb19yZWcoXFx1MDAyNnJ4X3EtXFx1MDAzZXhkcF9yeHEsIHByaXYtXFx1MDAzZWRldiwgcXVldWUsIG5hcGlfaWQpO1xcbiBcXHRpZiAocmV0KSB7XFxuIFxcdFxcdG5ldGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHhkcCByeHEgaW5mb1xcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRnb3RvIGVycl9mcmVlX2RtYTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfZnJlZV9kbWE6XFxuK1xcdGlmIChwcml2LVxcdTAwM2VleHRlbmRfZGVzYylcXG4rXFx0XFx0ZG1hX2ZyZWVfY29oZXJlbnQocHJpdi1cXHUwMDNlZGV2aWNlLCBzaXplLCByeF9xLVxcdTAwM2VkbWFfZXJ4LFxcbitcXHRcXHRcXHRcXHQgIHJ4X3EtXFx1MDAzZWRtYV9yeF9waHkpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGRtYV9mcmVlX2NvaGVyZW50KHByaXYtXFx1MDAzZWRldmljZSwgc2l6ZSwgcnhfcS1cXHUwMDNlZG1hX3J4LFxcbitcXHRcXHRcXHRcXHQgIHJ4X3EtXFx1MDAzZWRtYV9yeF9waHkpO1xcbitcXHRyeF9xLVxcdTAwM2VkbWFfZXJ4ID0gTlVMTDtcXG4rXFx0cnhfcS1cXHUwMDNlZG1hX3J4ID0gTlVMTDtcXG4rZXJyX2ZyZWVfYnVmX3Bvb2w6XFxuK1xcdGtmcmVlKHJ4X3EtXFx1MDAzZWJ1Zl9wb29sKTtcXG4rXFx0cnhfcS1cXHUwMDNlYnVmX3Bvb2wgPSBOVUxMO1xcbitlcnJfZGVzdHJveV9wb29sOlxcbitcXHRwYWdlX3Bvb2xfZGVzdHJveShyeF9xLVxcdTAwM2VwYWdlX3Bvb2wpO1xcbitcXHRyeF9xLVxcdTAwM2VwYWdlX3Bvb2wgPSBOVUxMO1xcbitcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuQEAgLTIzNTIsMTQgKzIzODUsMTQgQEAgc3RhdGljIGludCBfX2FsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcbiBcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmYgPSBremFsbG9jX29ianMoc3RydWN0IHNrX2J1ZmYgKiwgZG1hX2NvbmYtXFx1MDAzZWRtYV90eF9zaXplKTtcXG4gXFx0aWYgKCF0eF9xLVxcdTAwM2V0eF9za2J1ZmYpXFxuLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXHRcXHRnb3RvIGVycl9mcmVlX3NrYnVmZl9kbWE7XFxuIFxcbiBcXHRzaXplID0gc3RtbWFjX2dldF90eF9kZXNjX3NpemUocHJpdiwgdHhfcSkgKiBkbWFfY29uZi1cXHUwMDNlZG1hX3R4X3NpemU7XFxuIFxcbiBcXHRhZGRyID0gZG1hX2FsbG9jX2NvaGVyZW50KHByaXYtXFx1MDAzZWRldmljZSwgc2l6ZSxcXG4gXFx0XFx0XFx0XFx0ICBcXHUwMDI2dHhfcS1cXHUwMDNlZG1hX3R4X3BoeSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmICghYWRkcilcXG4tXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gZXJyX2ZyZWVfc2tidWZmO1xcbiBcXG4gXFx0aWYgKHByaXYtXFx1MDAzZWV4dGVuZF9kZXNjKVxcbiBcXHRcXHR0eF9xLVxcdTAwM2VkbWFfZXR4ID0gYWRkcjtcXG5AQCAtMjM2OSw2ICsyNDAyLDE0IEBAIHN0YXRpYyBpbnQgX19hbGxvY19kbWFfdHhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbiBcXHRcXHR0eF9xLVxcdTAwM2VkbWFfdHggPSBhZGRyO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfZnJlZV9za2J1ZmY6XFxuK1xcdGtmcmVlKHR4X3EtXFx1MDAzZXR4X3NrYnVmZik7XFxuK1xcdHR4X3EtXFx1MDAzZXR4X3NrYnVmZiA9IE5VTEw7XFxuK2Vycl9mcmVlX3NrYnVmZl9kbWE6XFxuK1xcdGtmcmVlKHR4X3EtXFx1MDAzZXR4X3NrYnVmZl9kbWEpO1xcbitcXHR0eF9xLVxcdTAwM2V0eF9za2J1ZmZfZG1hID0gTlVMTDtcXG4rXFx0cmV0dXJuIC1FTk9NRU07XFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MTUuNDY4NzY2MTk2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MjQ4MTkwNjM5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiYzE0Njk4YWZhNWNkZmUzZDkwZGNjYWNhMzUzODZiNTljNGMxYzg2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBTZXAgNiAxNTo0NToxMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBmMmZjODkxNzY2NTRlLi5mMGUwNmMwMTFiOGRlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTE3MjgsNyArMTcyOCw3IEBAIHN0YXRpYyB2b2lkIHN0bW1hY19mcmVlX3R4X2J1ZmZlcihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHRcdCBETUFfVE9fREVWSUNFKTtcbiBcdH1cbiBcbi1cdGlmICh0eF9xLVx1MDAzZXhkcGZbaV0gXHUwMDI2XHUwMDI2XG4rXHRpZiAodHhfcS1cdTAwM2V4ZHBmIFx1MDAyNlx1MDAyNiB0eF9xLVx1MDAzZXhkcGZbaV0gXHUwMDI2XHUwMDI2XG4gXHQgICAgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YRFBfVFggfHxcbiBcdCAgICAgdHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hW2ldLmJ1Zl90eXBlID09IFNUTU1BQ19UWEJVRl9UX1hEUF9ORE8pKSB7XG4gXHRcdHhkcF9yZXR1cm5fZnJhbWUodHhfcS1cdTAwM2V4ZHBmW2ldKTtcbkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBzdGF0aWMgdm9pZCBzdG1tYWNfZnJlZV90eF9idWZmZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9YU0tfVFgpXG4gXHRcdHR4X3EtXHUwMDNleHNrX2ZyYW1lc19kb25lKys7XG4gXG4tXHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0gXHUwMDI2XHUwMDI2XG4rXHRpZiAodHhfcS1cdTAwM2V0eF9za2J1ZmYgXHUwMDI2XHUwMDI2IHR4X3EtXHUwMDNldHhfc2tidWZmW2ldIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHR4X3EtXHUwMDNldHhfc2tidWZmX2RtYVtpXS5idWZfdHlwZSA9PSBTVE1NQUNfVFhCVUZfVF9TS0IpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYl9hbnkodHhfcS1cdTAwM2V0eF9za2J1ZmZbaV0pO1xuIFx0XHR0eF9xLVx1MDAzZXR4X3NrYnVmZltpXSA9IE5VTEw7XG5AQCAtMTc2MSw2ICsxNzYxLDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9mcmVlX3J4X3NrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXHUwMDI2ZG1hX2NvbmYtXHUwMDNlcnhfcXVldWVbcXVldWVdO1xuIFx0aW50IGk7XG4gXG4rXHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbitcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbitcdFx0cmV0dXJuO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkrKylcbiBcdFx0c3RtbWFjX2ZyZWVfcnhfYnVmZmVyKHByaXYsIHJ4X3EsIGkpO1xuIH1cbkBAIC0xODAyLDYgKzE4MDYsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfcnhfeHNrYnVmcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRzdHJ1Y3Qgc3RtbWFjX3J4X3F1ZXVlICpyeF9xID0gXHUwMDI2ZG1hX2NvbmYtXHUwMDNlcnhfcXVldWVbcXVldWVdO1xuIFx0aW50IGk7XG4gXG4rXHQvKiBidWZfcG9vbCBtYXkgbm90IGJlIGFsbG9jYXRlZCBpZiBhbGxvYyBmYWlsZWQgZWFybHkgKi9cbitcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbClcbitcdFx0cmV0dXJuO1xuK1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemU7IGkrKykge1xuIFx0XHRzdHJ1Y3Qgc3RtbWFjX3J4X2J1ZmZlciAqYnVmID0gXHUwMDI2cnhfcS1cdTAwM2VidWZfcG9vbFtpXTtcbiBcbkBAIC0yMDk3LDYgKzIxMDUsMTAgQEAgc3RhdGljIHZvaWQgZG1hX2ZyZWVfdHhfc2tidWZzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdHN0cnVjdCBzdG1tYWNfdHhfcXVldWUgKnR4X3EgPSBcdTAwMjZkbWFfY29uZi1cdTAwM2V0eF9xdWV1ZVtxdWV1ZV07XG4gXHRpbnQgaTtcbiBcbitcdC8qIHR4X3NrYnVmZl9kbWEgbWF5IG5vdCBiZSBhbGxvY2F0ZWQgaWYgYWxsb2MgZmFpbGVkIGVhcmx5ICovXG4rXHRpZiAoIXR4X3EtXHUwMDNldHhfc2tidWZmX2RtYSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0dHhfcS1cdTAwM2V4c2tfZnJhbWVzX2RvbmUgPSAwO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZG1hX2NvbmYtXHUwMDNlZG1hX3R4X3NpemU7IGkrKylcbkBAIC0yMjcyLDE1ICsyMjg0LDE5IEBAIHN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0fVxuIFxuIFx0cnhfcS1cdTAwM2VidWZfcG9vbCA9IGt6YWxsb2Nfb2JqcygqcnhfcS1cdTAwM2VidWZfcG9vbCwgZG1hX2NvbmYtXHUwMDNlZG1hX3J4X3NpemUpO1xuLVx0aWYgKCFyeF9xLVx1MDAzZWJ1Zl9wb29sKVxuLVx0XHRyZXR1cm4gLUVOT01FTTtcbitcdGlmICghcnhfcS1cdTAwM2VidWZfcG9vbCkge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIGVycl9kZXN0cm95X3Bvb2w7XG4rXHR9XG4gXG4gXHRzaXplID0gc3RtbWFjX2dldF9yeF9kZXNjX3NpemUocHJpdikgKiBkbWFfY29uZi1cdTAwM2VkbWFfcnhfc2l6ZTtcbiBcbiBcdGFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQocHJpdi1cdTAwM2VkZXZpY2UsIHNpemUsIFx1MDAyNnJ4X3EtXHUwMDNlZG1hX3J4X3BoeSxcbiBcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4tXHRpZiAoIWFkZHIpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0aWYgKCFhZGRyKSB7XG4rXHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdGdvdG8gZXJyX2ZyZWVfYnVmX3Bvb2w7XG4rXHR9XG4gXG4gXHRpZiAocHJpdi1cdTAwM2VleHRlbmRfZGVzYylcbiBcdFx0cnhfcS1cdTAwM2VkbWFfZXJ4ID0gYWRkcjtcbkBAIC0yMjk2LDEwICsyMzEyLDI3IEBAIHN0YXRpYyBpbnQgX19hbGxvY19kbWFfcnhfZGVzY19yZXNvdXJjZXMoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0cmV0ID0geGRwX3J4cV9pbmZvX3JlZyhcdTAwMjZyeF9xLVx1MDAzZXhkcF9yeHEsIHByaXYtXHUwMDNlZGV2LCBxdWV1ZSwgbmFwaV9pZCk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdG5ldGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwiRmFpbGVkIHRvIHJlZ2lzdGVyIHhkcCByeHEgaW5mb1xcblwiKTtcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdGdvdG8gZXJyX2ZyZWVfZG1hO1xuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX2ZyZWVfZG1hOlxuK1x0aWYgKHByaXYtXHUwMDNlZXh0ZW5kX2Rlc2MpXG4rXHRcdGRtYV9mcmVlX2NvaGVyZW50KHByaXYtXHUwMDNlZGV2aWNlLCBzaXplLCByeF9xLVx1MDAzZWRtYV9lcngsXG4rXHRcdFx0XHQgIHJ4X3EtXHUwMDNlZG1hX3J4X3BoeSk7XG4rXHRlbHNlXG4rXHRcdGRtYV9mcmVlX2NvaGVyZW50KHByaXYtXHUwMDNlZGV2aWNlLCBzaXplLCByeF9xLVx1MDAzZWRtYV9yeCxcbitcdFx0XHRcdCAgcnhfcS1cdTAwM2VkbWFfcnhfcGh5KTtcbitcdHJ4X3EtXHUwMDNlZG1hX2VyeCA9IE5VTEw7XG4rXHRyeF9xLVx1MDAzZWRtYV9yeCA9IE5VTEw7XG4rZXJyX2ZyZWVfYnVmX3Bvb2w6XG4rXHRrZnJlZShyeF9xLVx1MDAzZWJ1Zl9wb29sKTtcbitcdHJ4X3EtXHUwMDNlYnVmX3Bvb2wgPSBOVUxMO1xuK2Vycl9kZXN0cm95X3Bvb2w6XG4rXHRwYWdlX3Bvb2xfZGVzdHJveShyeF9xLVx1MDAzZXBhZ2VfcG9vbCk7XG4rXHRyeF9xLVx1MDAzZXBhZ2VfcG9vbCA9IE5VTEw7XG4rXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV9yeF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5AQCAtMjM1MiwxNCArMjM4NSwxNCBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcbiBcdHR4X3EtXHUwMDNldHhfc2tidWZmID0ga3phbGxvY19vYmpzKHN0cnVjdCBza19idWZmICosIGRtYV9jb25mLVx1MDAzZWRtYV90eF9zaXplKTtcbiBcdGlmICghdHhfcS1cdTAwM2V0eF9za2J1ZmYpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHRnb3RvIGVycl9mcmVlX3NrYnVmZl9kbWE7XG4gXG4gXHRzaXplID0gc3RtbWFjX2dldF90eF9kZXNjX3NpemUocHJpdiwgdHhfcSkgKiBkbWFfY29uZi1cdTAwM2VkbWFfdHhfc2l6ZTtcbiBcbiBcdGFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQocHJpdi1cdTAwM2VkZXZpY2UsIHNpemUsXG4gXHRcdFx0XHQgIFx1MDAyNnR4X3EtXHUwMDNlZG1hX3R4X3BoeSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIWFkZHIpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0XHRnb3RvIGVycl9mcmVlX3NrYnVmZjtcbiBcbiBcdGlmIChwcml2LVx1MDAzZWV4dGVuZF9kZXNjKVxuIFx0XHR0eF9xLVx1MDAzZWRtYV9ldHggPSBhZGRyO1xuQEAgLTIzNjksNiArMjQwMiwxNCBAQCBzdGF0aWMgaW50IF9fYWxsb2NfZG1hX3R4X2Rlc2NfcmVzb3VyY2VzKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0dHhfcS1cdTAwM2VkbWFfdHggPSBhZGRyO1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX2ZyZWVfc2tidWZmOlxuK1x0a2ZyZWUodHhfcS1cdTAwM2V0eF9za2J1ZmYpO1xuK1x0dHhfcS1cdTAwM2V0eF9za2J1ZmYgPSBOVUxMO1xuK2Vycl9mcmVlX3NrYnVmZl9kbWE6XG4rXHRrZnJlZSh0eF9xLVx1MDAzZXR4X3NrYnVmZl9kbWEpO1xuK1x0dHhfcS1cdTAwM2V0eF9za2J1ZmZfZG1hID0gTlVMTDtcbitcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbiBzdGF0aWMgaW50IGFsbG9jX2RtYV90eF9kZXNjX3Jlc291cmNlcyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NToxNS40Njg3NzAxNDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4MTMxNTUwNTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGFzc2VzcyB3aGV0aGVyIHRoaXMgcGF0Y2ggaXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGFjdCBhbmQgd2hlcmUgaXQgdG91Y2hlcy5cblxuQWxyaWdodCwgdGhlIGNoYW5nZSBpcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIFRoYXQncyB0aGUga2V5LiBOb3csIHdoYXQncyBgc3RtbWFjYD8gQWgsIHJpZ2h0ISBTVE1pY3JvZWxlY3Ryb25pY3MnIEV0aGVybmV0IGRyaXZlci4gU3BlY2lmaWNhbGx5LCB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMsIG9yIGF0IGxlYXN0IGEgZmxhdm9yIG9mIGl0LlxuXG5Ob3csIGEgY3J1Y2lhbCBxdWVzdGlvbiBwb3BzIHVwIGltbWVkaWF0ZWx5OiBpcyB0aGlzIHNvbWV0aGluZyB0aGF0IHJ1bnMgKm9ubHkqIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBvciBpcyBpdCBhbHNvIGVtdWxhdGVkIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVU/IElzIHRoZXJlIFBDSSBnbHVlLCBvciBwbGF0Zm9ybSBnbHVlIGluIHBsYXk/IElmIGl0J3MgdGhlIGxhdHRlciwgdGhlbiBpdCdzIGZhciBlYXNpZXIgdG8gZnV6eiBlZmZlY3RpdmVseS4gSWYgaXQncyBqdXN0IGhhcmR3YXJlLCB0aGF0IG1ha2VzIGxpZmUgaGFyZGVyLCBidXQgZnV6emluZyBpcyBzdGlsbCB2YWx1YWJsZSB0byBpZGVudGlmeSBwb3NzaWJsZSBzZWN1cml0eSBob2xlcyBvciBwZXJmb3JtYW5jZSBpc3N1ZXMuXG5cbkkgbmVlZCB0byBxdWlja2x5IGNoZWNrIHRoZSByZXN0IG9mIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuIFRpbWUgdG8gZmlyZSB1cCBteSB0b29scyDigJMgZ3JlcHBlciwgY29kZXNlYXJjaCwgd2hhdGV2ZXIgd29ya3MgYmVzdC4gR290dGEgc2VlIHRoZSBjb250ZXh0IG9mIHRoaXMgYHN0bW1hY2AgZHJpdmVyLiBVbmRlcnN0YW5kaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgaG93IGl0J3MgdXNlZCwgaXMgZXNzZW50aWFsIHRvIGRldGVybWluZSB0aGUgYmVzdCBmdXp6aW5nIHN0cmF0ZWd5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzkwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MjMuNjAwMzI1NjY4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzOTgzNzgwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX0VUSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NToyMy45NDAxNzM4MDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTE5OTc1MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBTVE1NQUNfRVRIIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSwgZGVwZW5kZW5jaWVzLCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoaW4gdGhlIGJ1aWxkIHN5c3RlbS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBoaWdoLWxldmVsIHZpZXcgb2YgaG93IFNUTU1BQ19FVEggaXMgcHJlc2VudGVkIGFuZCBvcmdhbml6ZWQuIEkgZXhwZWN0IHRvIGZpbmQgZGVwZW5kZW5jaWVzIG9uIGxvd2VyLWxldmVsIGhhcmR3YXJlIG9wdGlvbnMgYW5kIHBlcmhhcHMgcGxhdGZvcm0tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIEkgd2lsbCBsb29rIGZvciBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdGhhdCBjb3VsZCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3Igc3VwcG9ydGVkIGZlYXR1cmVzLiBJJ2xsIHBheSBhdHRlbnRpb24gdG8gYW55IHN5bWJvbHMgdGhhdCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIG9yIHJlcXVpcmUgc3BlY2lmaWMgU09DIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQuIEkgd2FudCB0byBidWlsZCBhIG1lbnRhbCBtYXAgb2YgdGhpcyBLY29uZmlnIHNwYWNlIGFuZCBzdGFydCBwaW5wb2ludGluZyBwb3RlbnRpYWwgYXJlYXMgZm9yIGN1c3RvbWl6YXRpb24gb3Igb3B0aW1pemF0aW9uIGRlcGVuZGluZyBvbiB0aGUgdXNlIGNhc2UuIFRoaXMgaW52ZXN0aWdhdGlvbiB3aWxsIGxlYWQgbWUgdG93YXJkcyB0aGUgYmVzdCB3YXkgdG8gdXRpbGl6ZSBhbmQgcG9zc2libHkgZXh0ZW5kIHRoZSBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MDUsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NToyNS44NjAxNTI3NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4MTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTVE1NQUNfRVRIXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcXG4gICA3OlxcdFxcdHNlbGVjdCBNSUlcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcXG4gIDE2OlxcdFxcdCAgU3lub3BzeXMgSVAgQ29yZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgU1RNTUFDX0VUSFxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbiAgMjE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG4gIDIyOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgMjM6XFx0XFx0ZGVmYXVsdCBuXFxuICAyNDpcXHRcXHRoZWxwXFxuICAyNTpcXHRcXHQgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzIHVzaW5nIGV0aHRvb2wuIEVuYWJsZSB0aGlzXFxuICAyNjpcXHRcXHQgIGZlYXR1cmUgaWYgeW91IGFyZSBmYWNpbmcgcHJvYmxlbXMgd2l0aCB5b3VyIEhXIGFuZCBzdWJtaXQgdGhlIHRlc3RcXG4gIDI3OlxcdFxcdCAgcmVzdWx0cyB0byB0aGUgbmV0ZGV2IE1haWxpbmcgTGlzdC5cXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbiAgMzA6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFxcXCJcXG4gIDMxOlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICAzMjpcXHRcXHRkZWZhdWx0IHlcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuICAzNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciB1c2VkIG9uIHNldmVyYWwgU29DczpcXG4gIDM2OlxcdFxcdCAgU1RpLCBBbGx3aW5uZXIsIEFtbG9naWMgTWVzb24sIEFsdGVyYSBTT0NGUEdBLlxcbiAgMzc6XFx0XFxuICAzODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgY29udHJvbGxlciB3aXRoIHRoaXMgaW50ZXJmYWNlLCBzYXkgWSBvciBNIGhlcmUuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0aWYgU1RNTUFDX1BMQVRGT1JNXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBEV01BQ19EV0NfUU9TX0VUSFxcbiAgNDU6XFx0XFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIHNucHMsZHdjLXFvcy1ldGhlcm5ldC50eHQgRFQgYmluZGluZy5cXFwiXFxuICA0NjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDQ3OlxcdFxcdHNlbGVjdCBNSUlcXG4gIDQ4OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgNDk6XFx0XFx0aGVscFxcbiAgNTA6XFx0XFx0ICBTdXBwb3J0IGZvciBjaGlwcyB1c2luZyB0aGUgc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcbiAgNTE6XFx0XFxuICA1MjpcXHRjb25maWcgRFdNQUNfR0VORVJJQ1xcbiAgNTM6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG4gIDU0OlxcdFxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuICA1NTpcXHRcXHRoZWxwXFxuICA1NjpcXHRcXHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbiAgNTc6XFx0XFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuICA1ODpcXHRcXHQgIGRhdGEgZm9yIHNldHVwLlxcbiAgNTk6XFx0XFxuICA2MDpcXHRjb25maWcgRFdNQUNfQU5BUklPTlxcbiAgNjE6XFx0XFx0dHJpc3RhdGUgXFxcIkFkYXB0cnVtIEFuYXJpb24gR01BQyBzdXBwb3J0XFxcIlxcbiAgNjI6XFx0XFx0ZGVmYXVsdCBBUkNcXG4gIDYzOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQyB8fCBDT01QSUxFX1RFU1QpXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEFkYXB0cnVtIEFuYXJpb24gR01BQyBFdGhlcm5ldCBjb250cm9sbGVyLlxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgQW5hcmlvbiBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gIDY4OlxcdFxcbiAgNjk6XFx0Y29uZmlnIERXTUFDX0VJQzc3MDBcXG4gIDcwOlxcdFxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IGZvciBFc3dpbiBlaWM3NzAwIGV0aGVybmV0IGRyaXZlclxcXCJcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBBUkNIX0VTV0lOIHx8IENPTVBJTEVfVEVTVFxcbiAgNzI6XFx0XFx0aGVscFxcbiAgNzM6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgRXN3aW4gRUlDNzcwMCBFdGhlcm5ldCBjb250cm9sbGVyLFxcbiAgNzQ6XFx0XFx0ICB3aGljaCBpbnRlZ3JhdGVzIFN5bm9wc3lzIERlc2lnbldhcmUgUW9TIGZlYXR1cmVzLiBJdCBlbmFibGVzXFxuICA3NTpcXHRcXHQgIGhpZ2gtc3BlZWQgbmV0d29ya2luZyB3aXRoIERNQSBhY2NlbGVyYXRpb24gYW5kIGlzIG9wdGltaXplZFxcbiAgNzY6XFx0XFx0ICBmb3IgZW1iZWRkZWQgc3lzdGVtcy5cXG4gIDc3OlxcdFxcbiAgNzg6XFx0Y29uZmlnIERXTUFDX0lOR0VOSUNcXG4gIDc5OlxcdFxcdHRyaXN0YXRlIFxcXCJJbmdlbmljIE1BQyBzdXBwb3J0XFxcIlxcbiAgODA6XFx0XFx0ZGVmYXVsdCBNQUNIX0lOR0VOSUNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MjUuODYwMjUzMTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTY1MTA3NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBQQ0kgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBLY29uZmlnIGZvciBTVE1NQUNfUENJIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMuIEknbSB0aGlua2luZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIHdpdGhpbiB0aGUgYnJvYWRlciBTVE1NQUMgZnJhbWV3b3JrLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBzZWUgaG93IHRoZSBQQ0ktc3BlY2lmaWMgcGFydHMgYXJlIGhhbmRsZWQsIGFuZCBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBudWFuY2VzIG9yIGdvdGNoYXMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEknbSBsb29raW5nIGZvciB0aGUgbWVhdCBhbmQgcG90YXRvZXMgb2YgdGhlIEtjb25maWcgZW50cmllczogdGhlIHN5bWJvbHMsIHRoZWlyIGRlZmF1bHQgdmFsdWVzLCBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIChsaWtlIG90aGVyIGRyaXZlciBvciBoYXJkd2FyZSBmZWF0dXJlcyksIGFuZCB0aGUgKndoeSogYmVoaW5kIHRoZWlyIGRlc2lnbiBjaG9pY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGFzcGVjdHMgYXJlIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIFBDSSBpbnRlcmZhY2UgYW5kIG5vdCBqdXN0IGdlbmVyYWxseSBhcHBsaWNhYmxlIHRvIHRoZSBTVE1NQUMgZmFtaWx5LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgc3RhcnQgcGFyc2luZyB0aGUgS2NvbmZpZyBmaWxlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6NjczOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MjguMDI1MzYzNzAzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQyMDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODE6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgKE1BQ0hfSU5HRU5JQyB8fCBDT01QSUxFX1RFU1QpXFxuICA4MjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAgODM6XFx0XFx0aGVscFxcbiAgODQ6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEluZ2VuaWMgU29Dcy5cXG4gIDg1OlxcdFxcbiAgODY6XFx0XFx0ICBUaGlzIHNlbGVjdHMgSW5nZW5pYyBTb0NzIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAgODc6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIG9uIGZvciB0aGUgSW5nZW5pYyBTb0NzXFxuICA4ODpcXHRcXHQgIE1BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAgODk6XFx0XFxuICA5MDpcXHRjb25maWcgRFdNQUNfSVBRODA2WFxcbiAgOTE6XFx0XFx0dHJpc3RhdGUgXFxcIlFDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcXFwiXFxuICA5MjpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAgOTM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gIDk0OlxcdFxcdHNlbGVjdCBNRkRfU1lTQ09OXFxuICA5NTpcXHRcXHRoZWxwXFxuICA5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSVBRODA2eCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuICA5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSBhbnkgb2YgdGhlIGhhcmR3YXJlXFxuIDEwMDpcXHRcXHQgIGFjY2VsZXJhdGlvbiBmZWF0dXJlcyBhdmFpbGFibGUgb24gdGhpcyBTb0MuIE5ldHdvcmsgZGV2aWNlc1xcbiAxMDE6XFx0XFx0ICB3aWxsIGJlaGF2ZSBsaWtlIHN0YW5kYXJkIG5vbi1hY2NlbGVyYXRlZCBldGhlcm5ldCBpbnRlcmZhY2VzLlxcbiAxMDI6XFx0XFxuIDEwMzpcXHRcXHQgIFNlbGVjdCB0aGUgUUNPTV9TT0NJTkZPIGNvbmZpZyBmbGFnIHRvIGVuYWJsZSBzcGVjaWZpYyBkd21hY1xcbiAxMDQ6XFx0XFx0ICBmaXh1cCBiYXNlZCBvbiB0aGUgaXBxODA2eCBTb0MgcmV2aXNpb24uXFxuIDEwNTpcXHRcXG4gMTA2OlxcdGNvbmZpZyBEV01BQ19MUEMxOFhYXFxuIDEwNzpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIExQQzE4eHgvNDN4eCBEV01BQyBzdXBwb3J0XFxcIlxcbiAxMDg6XFx0XFx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcXG4gMTA5OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfTFBDMThYWCB8fCBDT01QSUxFX1RFU1QpXFxuIDExMDpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAxMTE6XFx0XFx0aGVscFxcbiAxMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxcbiAxMTM6XFx0XFxuIDExNDpcXHRjb25maWcgRFdNQUNfTUVESUFURUtcXG4gMTE1OlxcdFxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDI3eHggR01BQyBzdXBwb3J0XFxcIlxcbiAxMTY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9NRURJQVRFSyB8fCBDT01QSUxFX1RFU1QpXFxuIDExNzpcXHRcXHRoZWxwXFxuIDExODpcXHRcXHQgIFN1cHBvcnQgZm9yIE1lZGlhVGVrIEdNQUMgRXRoZXJuZXQgY29udHJvbGxlci5cXG4gMTE5OlxcdFxcbiAxMjA6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE1UMjcxMiBTb0Mgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDEyMTpcXHRcXG4gMTIyOlxcdGNvbmZpZyBEV01BQ19NRVNPTlxcbiAxMjM6XFx0XFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFxcXCJcXG4gMTI0OlxcdFxcdGRlZmF1bHQgQVJDSF9NRVNPTlxcbiAxMjU6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiBDT01NT05fQ0xLIFxcdTAwMjZcXHUwMDI2IChBUkNIX01FU09OIHx8IENPTVBJTEVfVEVTVClcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBBbWxvZ2ljIE1lc29uIFNvQ3MuXFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbWxvZ2ljIE1lc29uIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDEzMDpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgTWVzb242LFxcbiAxMzE6XFx0XFx0ICBNZXNvbjgsIE1lc29uOGIgYW5kIEdYQkIgU29Dcy5cXG4gMTMyOlxcdFxcbiAxMzM6XFx0Y29uZmlnIERXTUFDX05VVk9UT05cXG4gMTM0OlxcdFxcdHRyaXN0YXRlIFxcXCJOdXZvdG9uIE1BMzUgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMTM1OlxcdFxcdGRlZmF1bHQgQVJDSF9NQTM1XFxuIDEzNjpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01BMzUgfHwgQ09NUElMRV9URVNUKVxcbiAxMzc6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTM4OlxcdFxcdGhlbHBcXG4gMTM5OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBOdXZvdG9uIE1BMzUgc2VyaWVzIFNvQy5cXG4gMTQwOlxcdFxcbiAxNDE6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIE51dm90b24gTUEzNSBzZXJpZXMgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAxNDI6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGUgbnV2b3Rvbi1kd21hYyBkcml2ZXIgaXNcXG4gMTQzOlxcdFxcdCAgdXNlZCBmb3IgTUEzNSBzZXJpZXMgU29Dcy5cXG4gMTQ0OlxcdFxcbiAxNDU6XFx0Y29uZmlnIERXTUFDX1FDT01fRVRIUU9TXFxuIDE0NjpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRVRIUU9TIHN1cHBvcnRcXFwiXFxuIDE0NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbiAxNDg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVClcXG4gMTQ5OlxcdFxcdGhlbHBcXG4gMTUwOlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIFF1YWxjb21tIEVUSFFPUyBjb3JlLlxcbiAxNTE6XFx0XFxuIDE1MjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUXVhbGNvbW0gRVRIUU9TIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDE1MzpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLlxcbiAxNTQ6XFx0XFxuIDE1NTpcXHRjb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbiAxNTY6XFx0XFx0dHJpc3RhdGUgXFxcIlJlbmVzYXMgUlovVjJIKFApIEdCRVRIIGFuZCBSWi9UMkgsIFJaL04ySCBHTUFDIHN1cHBvcnRcXFwiXFxuIDE1NzpcXHRcXHRkZWZhdWx0IEFSQ0hfUkVORVNBU1xcbiAxNTg6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVClcXG4gMTU5OlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE2MDpcXHRcXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE1OjQ1OjI4LjAyNTUwNzc5M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyNDIyMzA4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIHN0bW1hYyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzdG1tYWMgZHJpdmVyIGluIEtjb25maWcuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgcG93ZXIgYW5kIGZsZXhpYmlsaXR5IHJlc2lkZS4gSSdtIHRoaW5raW5nIGFib3V0IGV2ZXJ5dGhpbmcgZnJvbSBiYXNpYyBQSFkgc2VsZWN0aW9uIGFuZCBsaW5rIHNwZWVkIGNvbmZpZ3VyYXRpb24sIHRvIG1vcmUgYWR2YW5jZWQgZmVhdHVyZXMgbGlrZSBETUEgc2V0dGluZ3MsIGludGVycnVwdCBoYW5kbGluZywgYW5kIG1heWJlIGV2ZW4gc29tZSBvZiB0aGUgcG93ZXIgbWFuYWdlbWVudCBvcHRpb25zLiBUaGUgc3BlY2lmaWNzIEknbSBsb29raW5nIGZvciB3aWxsIGRlcGVuZCBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIGFuZCBzcGVjaWZpYyB1c2UgY2FzZSwgYnV0IEkgaGF2ZSBhIHN0cm9uZyBnZW5lcmFsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZS4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgZ3JhbnVsYXIgbGV2ZWwgb2YgY29udHJvbCBoZXJlLCB3aGljaCBJIGNhbiB1c2UgZm9yIG9wdGltaXppbmcgcGVyZm9ybWFuY2UsIHR3ZWFraW5nIGZvciBzcGVjaWZpYyBoYXJkd2FyZSBjb25zdHJhaW50cywgb3IgcG90ZW50aWFsbHkgZW5hYmxpbmcgZXhwZXJpbWVudGFsIGZlYXR1cmVzLiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBidXJpZWQgaW4gdGhlIEtjb25maWfigKZcblxuXG4iLCJJbnB1dFRva2VucyI6ODI5MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MzAuMjY3NzQxOTk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTYxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MTpcXHRcXHQgIFN1cHBvcnQgZm9yIEdpZ2FiaXQgRXRoZXJuZXQgSW50ZXJmYWNlIChHQkVUSCkvIEV0aGVybmV0IE1BQyAoR01BQylcXG4gMTYyOlxcdFxcdCAgb24gUmVuZXNhcyBTb0NzLlxcbiAxNjM6XFx0XFxuIDE2NDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBSZW5lc2FzIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZGV2aWNlXFxuIDE2NTpcXHRcXHQgIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlIFJaL1YySChQKSBmYW1pbHksIFJaL1QySCBhbmRcXG4gMTY2OlxcdFxcdCAgUlovTjJIIFNvQ3MuXFxuIDE2NzpcXHRcXG4gMTY4OlxcdGNvbmZpZyBEV01BQ19ST0NLQ0hJUFxcbiAxNjk6XFx0XFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE3MDpcXHRcXHRkZWZhdWx0IEFSQ0hfUk9DS0NISVBcXG4gMTcxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKVxcbiAxNzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMTczOlxcdFxcdGhlbHBcXG4gMTc0OlxcdFxcdCAgU3VwcG9ydCBmb3IgRXRoZXJuZXQgY29udHJvbGxlciBvbiBSb2NrY2hpcCBSSzMyODggU29DLlxcbiAxNzU6XFx0XFxuIDE3NjpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgUkszMjg4IFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDE3NzpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0Y29uZmlnIERXTUFDX1JaTjFcXG4gMTgwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDE4MTpcXHRcXHRkZWZhdWx0IEFSQ0hfUlpOMVxcbiAxODI6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9SWk4xIHx8IENPTVBJTEVfVEVTVClcXG4gMTgzOlxcdFxcdHNlbGVjdCBQQ1NfUlpOMV9NSUlDXFxuIDE4NDpcXHRcXHRoZWxwXFxuIDE4NTpcXHRcXHQgIFN1cHBvcnQgZm9yIEV0aGVybmV0IGNvbnRyb2xsZXIgb24gUmVuZXNhcyBSWi9OMSBTb0MgZmFtaWx5LlxcbiAxODY6XFx0XFxuIDE4NzpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgUmVuZXNhcyBSWi9OMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvclxcbiAxODg6XFx0XFx0ICB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgc3VwcG9ydCBjYW4gbWFrZSB1c2Ugb2YgYSBjdXN0b20gTUlJXFxuIDE4OTpcXHRcXHQgIGNvbnZlcnRlciBQQ1MgZGV2aWNlLlxcbiAxOTA6XFx0XFxuIDE5MTpcXHRjb25maWcgRFdNQUNfUzMyXFxuIDE5MjpcXHRcXHR0cmlzdGF0ZSBcXFwiTlhQIFMzMkcvUzMyUiBHTUFDIHN1cHBvcnRcXFwiXFxuIDE5MzpcXHRcXHRkZWZhdWx0IEFSQ0hfUzMyXFxuIDE5NDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1MzMiB8fCBDT01QSUxFX1RFU1QpXFxuIDE5NTpcXHRcXHRoZWxwXFxuIDE5NjpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gTlhQIFMzMkNDIFNPQ3MuXFxuIDE5NzpcXHRcXG4gMTk4OlxcdFxcdCAgVGhpcyBzZWxlY3RzIE5YUCBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDE5OTpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIHRoZSBTMzJDQyBzZXJpZXNcXG4gMjAwOlxcdFxcdCAgU09DcyBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIsIGllLiBTMzJHMnh4LCBTMzJHM3h4IGFuZFxcbiAyMDE6XFx0XFx0ICBTMzJSNDUuXFxuIDIwMjpcXHRcXG4gMjAzOlxcdGNvbmZpZyBEV01BQ19TT0NGUEdBXFxuIDIwNDpcXHRcXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbiAyMDU6XFx0XFx0ZGVmYXVsdCBBUkNIX0lOVEVMX1NPQ0ZQR0FcXG4gMjA2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfSU5URUxfU09DRlBHQSB8fCBDT01QSUxFX1RFU1QpXFxuIDIwNzpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyMDg6XFx0XFx0c2VsZWN0IE1ESU9fUkVHTUFQXFxuIDIwOTpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG4gMjEwOlxcdFxcdHNlbGVjdCBQQ1NfTFlOWFxcbiAyMTE6XFx0XFx0aGVscFxcbiAyMTI6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIEFsdGVyYSBTT0NGUEdBXFxuIDIxMzpcXHRcXG4gMjE0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0XFxuIDIxNTpcXHRcXHQgIGZvciB0aGUgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yXFxuIDIxNjpcXHRcXHQgIGFycmlhNSBhbmQgY3ljbG9uZTUgRlBHQSBTb0NzLlxcbiAyMTc6XFx0XFxuIDIxODpcXHRjb25maWcgRFdNQUNfU09QSEdPXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiU29waGdvIGR3bWFjIHN1cHBvcnRcXFwiXFxuIDIyMDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NPUEhHTyB8fCBDT01QSUxFX1RFU1QpXFxuIDIyMTpcXHRcXHRkZWZhdWx0IG0gaWYgQVJDSF9TT1BIR09cXG4gMjIyOlxcdFxcdGhlbHBcXG4gMjIzOlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gU29waGdvIFJJU0MtViBTb0NzXFxuIDIyNDpcXHRcXG4gMjI1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTb3BoZ28gU29DIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAyMjY6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG4gMjI3OlxcdFxcdCAgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gdmFyaW91cyBTb3BoZ28gU29Dcy5cXG4gMjI4OlxcdFxcbiAyMjk6XFx0Y29uZmlnIERXTUFDX1NQQUNFTUlUXFxuIDIzMDpcXHRcXHR0cmlzdGF0ZSBcXFwiU3BhY2VtaXQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMjMxOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfU1BBQ0VNSVQgfHwgQ09NUElMRV9URVNUKVxcbiAyMzI6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjMzOlxcdFxcdGRlZmF1bHQgbSBpZiBBUkNIX1NQQUNFTUlUXFxuIDIzNDpcXHRcXHRoZWxwXFxuIDIzNTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXJzIG9uIFNwYWNlbWl0IFJJU0MtViBTb0NzXFxuIDIzNjpcXHRcXG4gMjM3OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBTcGFjZW1pdCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnRcXG4gMjM4OlxcdFxcdCAgZm9yIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgdGhlXFxuIDIzOTpcXHRcXHQgIFNwYWNlbWl0IEszIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAyNDA6XFx0XFxuIDI0MTpcXHRjb25maWcgRFdNQUNfU1RBUkZJVkVcXG4gMjQyOlxcdFxcdHRyaXN0YXRlIFxcXCJTdGFyRml2ZSBkd21hYyBzdXBwb3J0XFxcIlxcbiAyNDM6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVEFSRklWRSB8fCBDT01QSUxFX1RFU1QpXFxuIDI0NDpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNDU6XFx0XFx0ZGVmYXVsdCBtIGlmIEFSQ0hfU1RBUkZJVkVcXG4gMjQ2OlxcdFxcdGhlbHBcXG4gMjQ3OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlcnMgb24gU3RhckZpdmUgUklTQy1WIFNvQ3NcXG4gMjQ4OlxcdFxcbiAyNDk6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIFN0YXJGaXZlIHBsYXRmb3JtIHNwZWNpZmljIGdsdWUgbGF5ZXIgc3VwcG9ydFxcbiAyNTA6XFx0XFx0ICBmb3IgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGVcXG4gMjUxOlxcdFxcdCAgU3RhckZpdmUgSkg3MTAwIGFuZCBKSDcxMTAgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI1MjpcXHRcXG4gMjUzOlxcdGNvbmZpZyBEV01BQ19TVElcXG4gMjU0OlxcdFxcdHRyaXN0YXRlIFxcXCJTVGkgR01BQyBzdXBwb3J0XFxcIlxcbiAyNTU6XFx0XFx0ZGVmYXVsdCBBUkNIX1NUSVxcbiAyNTY6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVEkgfHwgQ09NUElMRV9URVNUKVxcbiAyNTc6XFx0XFx0c2VsZWN0IE1GRF9TWVNDT05cXG4gMjU4OlxcdFxcdGhlbHBcXG4gMjU5OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBTVGkgU09Dcy5cXG4gMjYwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NTozMC4yNjc4NDE4MzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTU4MjA5NDc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSByZXN0IG9mIHRoaXMgS2NvbmZpZyBmaWxlLCBwaWNraW5nIHVwIGZyb20sIHNheSwgbGluZSAyNjAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgZmxvdywgc28gSSdsbCBuZWVkIHRvIGFic29yYiB0aGUgc3BlY2lmaWNzIGZyb20gdGhlcmUuIEnigJltIGFscmVhZHkgZmFtaWxpYXIgd2l0aCB0aGlzIHNlY3Rpb24sIGJ1dCBhIHJlZnJlc2hlciBpcyBpbiBvcmRlciwgSSdsbCBnbyB0aHJvdWdoIGl0IGxpbmUgYnkgbGluZS4gSSBoYXZlIGEgZmVlbGluZyB0aGVyZSB3aWxsIGJlIG1vcmUgaW50ZXJlc3RpbmcgY29uZmlnIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0byB1bnBhY2sgZnVydGhlciBkb3duIHRoYXQgY291bGQgYWZmZWN0IHBlcmZvcm1hbmNlLiBJIHNob3VsZCBiZSBhYmxlIHRvIG1ha2UgYW4gZWZmZWN0aXZlIHN1bW1hcnksIGFuZCBsb29rIHRvIG1ha2UgZnVydGhlciBpbmZlcmVuY2VzLiBMZXQncyBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTE2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NTozMS44NDk5Mzk0NjhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjYxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjYxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUaSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDI2MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgb24gZm9yIHRoZSBTVGkgc2VyaWVzXFxuIDI2MzpcXHRcXHQgIFNPQ3MgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyNjQ6XFx0XFxuIDI2NTpcXHRjb25maWcgRFdNQUNfU1RNMzJcXG4gMjY2OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE0zMiBEV01BQyBzdXBwb3J0XFxcIlxcbiAyNjc6XFx0XFx0ZGVmYXVsdCBBUkNIX1NUTTMyXFxuIDI2ODpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVE0zMiB8fCBDT01QSUxFX1RFU1QpXFxuIDI2OTpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAyNzA6XFx0XFx0aGVscFxcbiAyNzE6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIFNUTTMyIFNPQ3MuXFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdCAgVGhpcyBzZWxlY3RzIFNUTTMyIFNvQyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWNcXG4gMjc0OlxcdFxcdCAgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBvbiBmb3IgdGhlIFNUTTMyIHNlcmllc1xcbiAyNzU6XFx0XFx0ICBTT0NzIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjc2OlxcdFxcbiAyNzc6XFx0Y29uZmlnIERXTUFDX1NVTlhJXFxuIDI3ODpcXHRcXHR0cmlzdGF0ZSBcXFwiQWxsd2lubmVyIEdNQUMgc3VwcG9ydFxcXCJcXG4gMjc5OlxcdFxcdGRlZmF1bHQgQVJDSF9TVU5YSVxcbiAyODA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9TVU5YSSB8fCBDT01QSUxFX1RFU1QpXFxuIDI4MTpcXHRcXHRoZWxwXFxuIDI4MjpcXHRcXHQgIFN1cHBvcnQgZm9yIEFsbHdpbm5lciBBMjAvQTMxIEdNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI4MzpcXHRcXG4gMjg0OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjg1OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEEyMC9BMzFcXG4gMjg2OlxcdFxcdCAgR01BQyBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAyODc6XFx0XFxuIDI4ODpcXHRjb25maWcgRFdNQUNfU1VOOElcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgc3VuOGkgR01BQyBzdXBwb3J0XFxcIlxcbiAyOTA6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDI5MTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMjkyOlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMjkzOlxcdFxcdGhlbHBcXG4gMjk0OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEgzIEE4M1QgQTY0IEVNQUMgZXRoZXJuZXQgY29udHJvbGxlcnMuXFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVGhpcyBzZWxlY3RzIEFsbHdpbm5lciBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGVcXG4gMjk3OlxcdFxcdCAgc3RtbWFjIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIEgzL0E4M1QvQTY0XFxuIDI5ODpcXHRcXHQgIEVNQUMgZXRoZXJuZXQgY29udHJvbGxlci5cXG4gMjk5OlxcdFxcbiAzMDA6XFx0Y29uZmlnIERXTUFDX1NVTjU1SVxcbiAzMDE6XFx0XFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbiAzMDI6XFx0XFx0ZGVmYXVsdCBBUkNIX1NVTlhJXFxuIDMwMzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX1NVTlhJIHx8IENPTVBJTEVfVEVTVClcXG4gMzA0OlxcdFxcdHNlbGVjdCBNRElPX0JVU19NVVhcXG4gMzA1OlxcdFxcdGhlbHBcXG4gMzA2OlxcdFxcdCAgU3VwcG9ydCBmb3IgQWxsd2lubmVyIEE1MjMvVDUyNyBHTUFDMjAwIGV0aGVybmV0IGNvbnRyb2xsZXJzLlxcbiAzMDc6XFx0XFxuIDMwODpcXHRcXHQgIFRoaXMgc2VsZWN0cyBBbGx3aW5uZXIgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlXFxuIDMwOTpcXHRcXHQgIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBBNTIzL1Q1MjdcXG4gMzEwOlxcdFxcdCAgR01BQzIwMCBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMTE6XFx0XFxuIDMxMjpcXHRjb25maWcgRFdNQUNfVEhFQURcXG4gMzEzOlxcdFxcdHRyaXN0YXRlIFxcXCJULUhFQUQgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzE0OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfVEhFQUQgfHwgQ09NUElMRV9URVNUKVxcbiAzMTU6XFx0XFx0aGVscFxcbiAzMTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBULUhFQUQgUklTQy1WIFNvQ3NcXG4gMzE3OlxcdFxcbiAzMTg6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIFQtSEVBRCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuIDMxOTpcXHRcXHQgIHRoZSBzdG1tYWMgZGV2aWNlIGRyaXZlci4gVGhpcyBkcml2ZXIgaXMgdXNlZCBmb3IgVC1IRUFEIFRIMTUyMFxcbiAzMjA6XFx0XFx0ICBldGhlcm5ldCBjb250cm9sbGVyLlxcbiAzMjE6XFx0XFxuIDMyMjpcXHRjb25maWcgRFdNQUNfSU1YOFxcbiAzMjM6XFx0XFx0dHJpc3RhdGUgXFxcIk5YUCBJTVg4IERXTUFDIHN1cHBvcnRcXFwiXFxuIDMyNDpcXHRcXHRkZWZhdWx0IEFSQ0hfTVhDXFxuIDMyNTpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX01YQyB8fCBDT01QSUxFX1RFU1QpXFxuIDMyNjpcXHRcXHRzZWxlY3QgTUZEX1NZU0NPTlxcbiAzMjc6XFx0XFx0aGVscFxcbiAzMjg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIE5YUCBpLk1YOCBTT0NzLlxcbiAzMjk6XFx0XFxuIDMzMDpcXHRcXHQgIFRoaXMgc2VsZWN0cyBOWFAgU29DIGdsdWUgbGF5ZXIgc3VwcG9ydCBmb3IgdGhlIHN0bW1hY1xcbiAzMzE6XFx0XFx0ICBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBpLk1YOCBzZXJpZXMgbGlrZVxcbiAzMzI6XFx0XFx0ICBpTVg4TVAvaU1YOERYTCBHTUFDIGV0aGVybmV0IGNvbnRyb2xsZXIuXFxuIDMzMzpcXHRcXG4gMzM0OlxcdGNvbmZpZyBEV01BQ19JTlRFTF9QTEFUXFxuIDMzNTpcXHRcXHR0cmlzdGF0ZSBcXFwiSW50ZWwgZHdtYWMgc3VwcG9ydFxcXCJcXG4gMzM2OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMS1xcbiAzMzc6XFx0XFx0aGVscFxcbiAzMzg6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVycyBvbiBJbnRlbCBTb0NzXFxuIDMzOTpcXHRcXG4gMzQwOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBJbnRlbCBwbGF0Zm9ybSBzcGVjaWZpYyBnbHVlIGxheWVyIHN1cHBvcnQgZm9yXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE1OjQ1OjMxLjg1MDExMzIwOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDAyNzUyMzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHRoZSBLY29uZmlnIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoZSBLY29uZmlnIGNvbnRleHQgcHJldHR5IHdlbGwgZXN0YWJsaXNoZWQsIGJ1dCBJIG5lZWQgdG8gem9vbSBpbi4gVGhlIG92ZXJhbGwgZnJhbWV3b3JrIGlzIGluIHBsYWNlLCBJIHVuZGVyc3RhbmQgaG93IHRoZSBkZXBlbmRlbmNpZXMgd29yayBhbmQgd2hlcmUgdGhlIG1haW4gZmlsZXMgYXJlLCBidXQgdGhlIGRldmlsIGlzIGFsd2F5cyBpbiB0aGUgZGV0YWlscywgaXNuJ3QgaXQ/IExldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBnbyB0aHJvdWdoIGl0IGxpbmUgYnkgbGluZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgdGhpcyBzcGVjaWZpYyBLY29uZmlnIGZpbGUsIHNvIEknbSBnb2luZyB0byBsb29rIGF0IHRoZSByZW1haW5kZXIgb2YgdGhlIGZpbGUsIHN0YXJ0aW5nIGZyb20gbGluZSAzNDAuIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBjcnVjaWFsIGVsZW1lbnRzLCBhbmQgcHJvYmFibHkgbW9yZSBkZWZpbml0aW9ucywgbW9yZSB2YXJpYWJsZXMsIGFuZCBzb21lIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljLiBJIHdpbGwgYmUgbG9va2luZyBmb3IgY29uZGl0aW9uYWwgY29tcGlsYXRpb25zLCBhbmQgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTc5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NTozNC4yNTI4Njg3NDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzQxLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzQxOlxcdFxcdCAgdGhlIHN0bW1hYyBkZXZpY2UgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciB0aGUgSW50ZWwgS2VlbSBCYXlcXG4gMzQyOlxcdFxcdCAgU29DLlxcbiAzNDM6XFx0XFxuIDM0NDpcXHRjb25maWcgRFdNQUNfTE9PTkdTT04xXFxuIDM0NTpcXHRcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24xIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzQ2OlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjMyXFxuIDM0NzpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChNQUNIX0xPT05HU09OMzIgfHwgQ09NUElMRV9URVNUKVxcbiAzNDg6XFx0XFx0aGVscFxcbiAzNDk6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uMSBTb0MuXFxuIDM1MDpcXHRcXG4gMzUxOlxcdFxcdCAgVGhpcyBzZWxlY3RzIExvb25nc29uMSBTb0MgZ2x1ZSBsYXllciBzdXBwb3J0IGZvciB0aGUgc3RtbWFjXFxuIDM1MjpcXHRcXHQgIGRldmljZSBkcml2ZXIuIFRoaXMgZHJpdmVyIGlzIHVzZWQgZm9yIExvb25nc29uMS1iYXNlZCBib2FyZHNcXG4gMzUzOlxcdFxcdCAgbGlrZSBMb29uZ3NvbiBMUzFCL0xTMUMuXFxuIDM1NDpcXHRcXG4gMzU1OlxcdGNvbmZpZyBEV01BQ19URUdSQVxcbiAzNTY6XFx0XFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcXFwiXFxuIDM1NzpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXFxuIDM1ODpcXHRcXHRoZWxwXFxuIDM1OTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTXVsdGktR2lnYUJpdCBFdGhlcm5ldCAoTUdCRSkgQ29udHJvbGxlciB0aGF0IGlzXFxuIDM2MDpcXHRcXHQgIGZvdW5kIG9uIHRoZSBOVklESUEgVGVncmEgU29DIGRldmljZXMuIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHRoZSBnbHVlXFxuIDM2MTpcXHRcXHQgIGxheWVyIG9uIHRvcCBvZiB0aGUgc3RtbWFjIGRyaXZlciByZXF1aXJlZCBmb3IgdGhlc2UgTlZJRElBIFRlZ3JhIFNvQ1xcbiAzNjI6XFx0XFx0ICBkZXZpY2VzLlxcbiAzNjM6XFx0XFxuIDM2NDpcXHRjb25maWcgRFdNQUNfVklTQ09OVElcXG4gMzY1OlxcdFxcdHRyaXN0YXRlIFxcXCJUb3NoaWJhIFZpc2NvbnRpIERXTUFDIHN1cHBvcnRcXFwiXFxuIDM2NjpcXHRcXHRkZWZhdWx0IEFSQ0hfVklTQ09OVElcXG4gMzY3OlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQ09NTU9OX0NMSyBcXHUwMDI2XFx1MDAyNiAoQVJDSF9WSVNDT05USSB8fCBDT01QSUxFX1RFU1QpXFxuIDM2ODpcXHRcXHRoZWxwXFxuIDM2OTpcXHRcXHQgIFN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbnRyb2xsZXIgb24gVmlzY29udGkgU29Dcy5cXG4gMzcwOlxcdFxcbiAzNzE6XFx0ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG4gMzcyOlxcdFxcbiAzNzM6XFx0Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4gMzc0OlxcdFxcdHRyaXN0YXRlXFxuIDM3NTpcXHRcXHRoZWxwXFxuIDM3NjpcXHRcXHQgIFRoaXMgb3B0aW9uIGVuYWJsZXMgdGhlIFBDSSBidXMgaGVscGVycyBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDM3NzpcXHRcXG4gMzc4OlxcdGNvbmZpZyBEV01BQ19JTlRFTFxcbiAzNzk6XFx0XFx0dHJpc3RhdGUgXFxcIkludGVsIEdNQUMgc3VwcG9ydFxcXCJcXG4gMzgwOlxcdFxcdGRlZmF1bHQgWDg2XFxuIDM4MTpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzgyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzODM6XFx0XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuIDM4NDpcXHRcXHRoZWxwXFxuIDM4NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgSW50ZWwgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZVxcbiAzODY6XFx0XFx0ICBzdG1tYWMgZHJpdmVyLiBUaGlzIGRyaXZlciBpcyB1c2VkIGZvciBJbnRlbCBRdWFyay9FSEwvVEdMLlxcbiAzODc6XFx0XFxuIDM4ODpcXHRjb25maWcgRFdNQUNfTE9PTkdTT05cXG4gMzg5OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gMzkwOlxcdFxcdGRlZmF1bHQgTUFDSF9MT09OR1NPTjY0XFxuIDM5MTpcXHRcXHRkZXBlbmRzIG9uIChNQUNIX0xPT05HU09ONjQgfHwgQ09NUElMRV9URVNUKSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gMzkyOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiAzOTM6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gMzk0OlxcdFxcdGhlbHBcXG4gMzk1OlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxcbiAzOTY6XFx0XFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cXG4gMzk3OlxcdFxcbiAzOTg6XFx0Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbiAzOTk6XFx0XFx0dHJpc3RhdGUgXFxcIk1vdG9yY29tbSBQQ0kgRFdNQUMgc3VwcG9ydFxcXCJcXG4gNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuIDQyMDpcXHRlbmRpZiAjIFNUTU1BQ19FVEhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6MzQuMjUzMDQ2NTg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg2MjcwNDI2NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIERlY2lzaW9uIGZvciBTVE1NQUNfRVRIKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYFNUTU1BQ19FVEhgLCB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQ3MuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIEkgY2FuIGV2ZW4gcmVhY2ggaXQgd2l0aGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG9yIGlmIEkgY2FuIGluc3RhbnRpYXRlIGl0LlxuXG5CYXNlZCBvbiB0aGUgZ3VpZGVsaW5lcywgSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIFwiV29ydGhGdXp6aW5nLlwiIFRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBoaW5nZXMgb24gd2hldGhlciB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIGNlcnRhaW4gY2F0ZWdvcmllcy4gVGhlIGtleSBvbmUgaGVyZSBpcyBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSxcIiB3aGljaCBpbmNsdWRlcyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyB0aGF0IG5lY2Vzc2l0YXRlIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cblxuU28sIHRoZSBmaXJzdCB0aGluZyBJJ20gYXNraW5nIGlzOiBkb2VzIFFFTVUgZW11bGF0ZSB0aGUgYHN0bW1hY2Agb3IgYGR3bWFjYCAoRGVzaWduV2FyZSBNQUMpPyBJIGtub3cgUUVNVSAqZG9lcyogZW11bGF0ZSBgZHdtYWNgIGZvciBjZXJ0YWluIEFSTSBib2FyZHMuIEknbSB0aGlua2luZyBvZiBgYWxsd2lubmVyLWExMGAsIGBzdW40aS1lbWFjYCwgYGR3Yy1xb3NgLCBgaW14YCwgYW5kIGBzdGVsbGFyaXNgLiBJIHNlZSBzb21lIG1lbnRpb24gb2YgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBgeGlsaW54LWV0aGxpdGVgLCBidXQgdGhhdCdzIGEgaGludCwgYW5kIEknbSBvbiBhbWQ2NCBub3cuXG5cbkFoYSEgVGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgLiBOb3csIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgUUVNVSBvbiB4ODYvYW1kNjQgZW11bGF0ZXMgYHN0bW1hY2Agb3IgaWYgaXQgcmVxdWlyZXMgYSBwaHlzaWNhbCBTb0MvUENJIE5JQy4gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUncyBhbnkgdmlydHVhbCBvciBlbXVsYXRlZCBkZXZpY2UgaW4gdGhlIHN0YW5kYXJkIFFFTVUgc2V0dXAsIG9yIGlmIGBzeXprYWxsZXJgIGNhbiBpbnN0YW50aWF0ZSBpdCB0aHJvdWdoIHNvbWUgcGxhdGZvcm0vZHVtbXkgZGV2aWNlLlxuXG5SaWdodCwgc28gY2FuIGEgdXNlcnNwYWNlIHByb2dyYW0gb3Igc3lzY2FsbCBldmVuIGNyZWF0ZSBgc3RtbWFjYD8gTm8sIGl0J3MgYW4gRXRoZXJuZXQgTUFDIGRyaXZlci4gSXTigJlzIGZvciBlbWJlZGRlZCBTb0NzLCBsaWtlIHRob3NlIGZyb20gQWxsd2lubmVyLCBBbWxvZ2ljLCBTVE0zMiwgUm9ja2NoaXAsIEludGVsIFF1YXJrL0VITC9UR0wsIG9yIGZvciBQQ0kgZXRoZXJuZXQgY2FyZHMuXG5cbkFscmlnaHQsIGxldCdzIGV4cGxpY2l0bHkgY2hlY2sgd2hhdCdzIHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVSAoeDg2XzY0KS4gRW11bGF0ZWQgbmV0d29yayBkZXZpY2VzIG9uIHg4Nl82NCBhcmUgdGhlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgdm14bmV0MywgdmlydGlvLW5ldCwgYW5kIGlnYi4gQ3J1Y2lhbGx5LCB0aGVyZSdzIG5vIGBzdG1tYWNgIG9yIGBkd21hY2AgUENJIGRldmljZSBpbiBRRU1VJ3Mgc3RhbmRhcmQgaGFyZHdhcmUgbGlzdC4gSSBjYW4gY2hlY2sgdGhlIGBody9uZXQvYCBkaXJlY3RvcnkgYW5kIGNvbmZpcm0sIGJ1dCBJJ20gbG9va2luZyBhdCBmaWxlcyBsaWtlIGBhbGx3aW5uZXItc3VuOGktZW1hYy5jYCwgYGNhZGVuY2VfZ2VtLmNgLCBgZTEwMDAuY2AsIGB2aXJ0aW8tbmV0LmNgIGV0Yy4gTm8gYHN0bW1hY2AsIG5vIGBkd21hY2AuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgb3RoZXIgcG90ZW50aWFsIGF2ZW51ZXM6IGNhbiBpdCBiZSBmdXp6ZWQgdGhyb3VnaCBhIFVTQiBnYWRnZXQ/IE5vLiBWaXJ0aW8/IE5vLiBBIG1vY2sgZGV2aWNlPyBOby5cblxuT2theSwgYmFjayB0byB0aGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjcml0ZXJpYS4gUmUtcmVhZGluZyB0aGUgZ3VpZGVsaW5lczogXCItIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTogKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4uLnJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCJcblxuTGV0J3MgZG91YmxlLWNoZWNrOiBgc3RtbWFjYCBpcyBhIGRyaXZlciBmb3IgU1RNaWNybydzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBNQUMgZm9yICpwaHlzaWNhbCogRXRoZXJuZXQgY29udHJvbGxlcnMuIFRoYXQgbWVhbnMgRFdNQUMgb24gdmFyaW91cyBTb0NzIG9yIEludGVsIFF1YXJrIC8gTW90b3Jjb21tIFlUNjgwMSBQQ0kgY2FyZHMuIFNvLCB0aGlzIHJlcXVpcmVzIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcywgb3IgQVJNL1JJU0MtVi9NSVBTIFNvQ3Mgd2l0aCBEV01BQyBoYXJkd2FyZSB0aGF0IGlzICpub3QqIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgaXMgZXNwZWNpYWxseSB0cnVlIGdpdmVuIHRoZSBhbWQ2NCB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG5TbywgSSBuZWVkIHRvIGtub3cgZGVmaW5pdGl2ZWx5OiBpcyAqYW55KiBwYXJ0IG9mIGBzdG1tYWNgIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBvciBub3Q/IEkgYW0gZ29pbmcgdG8gZ3JlcCBmb3IgYHN0bW1hY2AgaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNjIsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTY5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6NDIuODgwMDk0MDcyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTEwNTA1NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9OTM9c3RhdGljIGludCBhbmFyaW9uX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMDQ6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMDUtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTI4Mz1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzA3OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMwOC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYz0xNjc9c3RhdGljIGludCBlaWM3NzAwX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMTgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzoxODE6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0xODItXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM9MTk9c3RhdGljIGludCBkd21hY19nZW5lcmljX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMjktXFx0aWYgKHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjMwOlxcdFxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMzEtXFx0XFx0aWYgKElTX0VSUihwbGF0X2RhdCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jPTI5Mz1zdGF0aWMgaW50IGlteF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jOjMwOTpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzEwLVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jPTE1ND1zdGF0aWMgaW50IGluZ2VuaWNfbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoxNjc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0xNjgtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9NDI9c3RhdGljIGludCBpbnRlbF9ldGhfcGxhdF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTUzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzo1NDpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTU1LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtMzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzozODc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy0zODgtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYz0xNTg9c3RhdGljIGludCBsczF4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0xODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MTg4OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0xODktXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NDI9c3RhdGljIGludCBscGMxOHh4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjUzOlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNTQtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTU5OT1zdGF0aWMgaW50IG1lZGlhdGVrX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTYzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjYzMTpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02MzItXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTQ3PXN0YXRpYyBpbnQgbWVzb242X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6NTg6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmMtNTktXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9MzgyPXN0YXRpYyBpbnQgbWVzb244Yl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTM5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6MzkzOlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtMzk0LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jPTgyPXN0YXRpYyBpbnQgbnZ0X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6OTQ6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy05NS1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjk4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6Njk5OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTcwMC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTEzMT1zdGF0aWMgaW50IHJlbmVzYXNfZ2JldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0xNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjE0NjpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTE0Ny1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM9MTU2OD1zdGF0aWMgaW50IHJrX2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE1ODU6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmMtMTU4Ni1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz00OD1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy01OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6NTk6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02MC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTE0ND1zdGF0aWMgaW50IHMzMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjE2MzpcXHRwbGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHJlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTE2NC1cXHRpZiAoSVNfRVJSKHBsYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTU5Nj1zdGF0aWMgaW50IHNvY2ZwZ2FfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjYxNTpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTYxNi1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jPTM1PXN0YXRpYyBpbnQgc29waGdvX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy00Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo0ODpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNDktXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jPTE0Nz1zdGF0aWMgaW50IHNwYWNlbWl0X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTE2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjE2OTpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0xNzAtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTkwPXN0YXRpYyBpbnQgc3RhcmZpdmVfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTAyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTAzOlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTEwNC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jPTI0OT1zdGF0aWMgaW50IHN0aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjI2NzpcXHRwbGF0X2RhdCA9IGRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChwZGV2LCBzdG1tYWNfcmVzLm1hYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMjY4LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Mzc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTM4LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM9MTA1PXN0YXRpYyBpbnQgc3VuNTVpX2dtYWMyMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYzoxMTc6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTExOC1cXHRpZiAoSVNfRVJSKHBsYXRfZGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM9MTEwNT1zdGF0aWMgaW50IHN1bjhpX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExNzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMTc0OlxcdHBsYXRfZGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHN0bW1hY19yZXMubWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTExNzUtXFx0aWYgKElTX0VSUihwbGF0X2RhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTk5PXN0YXRpYyBpbnQgc3VuN2lfZ21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxMTE6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTEyLVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTMxOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjMyMDpcXHRwbGF0ID0gZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHBkZXYsIHJlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzIxLVxcdGlmIChJU19FUlIocGxhdCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM9MjE2PXN0YXRpYyBpbnQgdGhlYWRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjMwOlxcdHBsYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjMxLVxcdGlmIChJU19FUlIocGxhdCkpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jPTIwNT1zdGF0aWMgaW50IHZpc2NvbnRpX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYzoyMTY6XFx0cGxhdF9kYXQgPSBkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgc3RtbWFjX3Jlcy5tYWMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjE3LVxcdGlmIChJU19FUlIocGxhdF9kYXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9MzkzPXN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3RtbWFjX2dtYWM0X2NvbXBhdHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTQwNS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo0MDY6ICogc3RtbWFjX3Byb2JlX2NvbmZpZ19kdCAtIHBhcnNlIGRldmljZS10cmVlIGRyaXZlciBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNDA3LSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz00MTM9c3RhdGljIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6NDE0OnN0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy00MTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9NjQxPXN0YXRpYyB2b2lkIGRldm1fc3RtbWFjX3JlbW92ZV9jb25maWdfZHQodm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY1MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTI6ICogZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjUzLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjU0LSAqIEBtYWM6IE1BQyBhZGRyZXNzIHRvIHVzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY1NTogKiBEZXNjcmlwdGlvbjogRGV2cmVzIHZhcmlhbnQgb2Ygc3RtbWFjX3Byb2JlX2NvbmZpZ19kdCgpLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY1Ni0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYz02NTc9c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NTg6ZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHU4ICptYWMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjU5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTY2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2NjM6XFx0cGxhdCA9IHN0bW1hY19wcm9iZV9jb25maWdfZHQocGRldiwgbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02NjQtXFx0aWYgKElTX0VSUihwbGF0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTY3NT1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjY3NjpkZXZtX3N0bW1hY19wcm9iZV9jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02Nzcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtNjgwLSNlbmRpZiAvKiBDT05GSUdfT0YgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo2ODE6RVhQT1JUX1NZTUJPTF9HUEwoZGV2bV9zdG1tYWNfcHJvYmVfY29uZmlnX2R0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy02ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaD0xND1zdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5oOjE1OmRldm1fc3RtbWFjX3Byb2JlX2NvbmZpZ19kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB1OCAqbWFjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uaC0xNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6NDMuMzcxMTU3OTg0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE5OTQyOTQxMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkV4YW1pbmluZyBNQUMgRHJpdmVyIFBDSSBJRCBNYXRjaGluZyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoZXNlIEV0aGVybmV0IGRyaXZlcnMgaGFuZGxlIFBDSSBkZXZpY2UgSUQgbWF0Y2hpbmcuIEknbSB0aGlua2luZyBJIHNob3VsZCBzdGFydCB3aXRoIGBzdG1tYWNfcGNpLmNgLCB0aGVuIG1vdmUgb24gdG8gYGR3bWFjLWludGVsLmNgIGFuZCBgZHdtYWMtbW90b3Jjb21tLmNgLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB3aGljaCBzcGVjaWZpYyBQQ0kgSURzIGVhY2ggZHJpdmVyIGNsYWltcyByZXNwb25zaWJpbGl0eSBmb3IuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gdGhlaXIgaW50ZW5kZWQgaGFyZHdhcmUgc2NvcGUgYW5kIGFueSBwb3RlbnRpYWwgb3ZlcmxhcHMgb3IgY29uZmxpY3RzLiBJdCdzIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gZ2V0IGEgYmlyZCdzLWV5ZSB2aWV3IG9mIHRoZWlyIGludGVuZGVkIGRldmljZSBzdXBwb3J0LiBMZXQncyBzZWUgd2hhdCB0aGUgaW5jbHVkZXMgcmV2ZWFsIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY0NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA2VDE1OjQ1OjQ1LjM2NTQ1NTI5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODQ2OTYwNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjQ6XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzYyPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5NTpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5Ni1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00Nzk9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19maXhfcmVzZXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo0OTg6c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NTc4PXN0YXRpYyB2b2lkIGxvb25nc29uX2R3bWFjX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTk3LVxcdHsgUENJX0RFVklDRV9EQVRBKExPT05HU09OLCBHTUFDMSwgXFx1MDAyNmxvb25nc29uX2dtYWNfcGNpX2luZm8pIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yNjQ9c3RhdGljIGludCBtb3RvcmNvbW1fc2V0dXBfaXJxKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI5MzpzdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTI5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNjI9c3RhdGljIHZvaWQgbW90b3Jjb21tX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNjc6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNjgtXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTU9UT1JDT01NLCAweDY4MDEpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE5OlxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTkyPXN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA0LVxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNlQxNTo0NTo0NS41NTAxNjAxMTdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTI0MDA0NTEyMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIFNUTU1BQyBEcml2ZXIgZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkgYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhpcyBpcyB0aGUgU1RNTUFDIChvciBEV01BQykgRXRoZXJuZXQgZHJpdmVyLCB3aGljaCBpcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhpcyBpcyB0aGUgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgSVAsIGZvdW5kIGluIHZhcmlvdXMgU29DcyBhbmQgc29tZXRpbWVzIHNwZWNpZmljIFBDSSBjYXJkcy4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlIGlzICoqbm90KiogZW11bGF0ZWQgYnkgc3RhbmRhcmQgUUVNVSwgZXNwZWNpYWxseSBvbiB0aGUgYW1kNjQgYXJjaGl0ZWN0dXJlLCBvciBldmVuIGluIEdDRS4gVGhhdCBtZWFucyB0aGVyZSdzIG5vIHdheSBmb3IgdGhlIGNvZGUgaW4gdGhpcyBkcml2ZXIgdG8gZXhlY3V0ZSBpbiBhIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnQuIFRoZSBkZXZpY2UgY2Fubm90IHByb2JlIG9yIGZ1bmN0aW9uLlxuXG5JJ20gZG91YmxlLWNoZWNraW5nIHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgc2VjdGlvbiBhYm91dCBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS5cIiBUaGlzIGZpdHMgdGhlIGJpbGwgcGVyZmVjdGx5OiBpdCdzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSAoU3lub3BzeXMvU1RNaWNyb2VsZWN0cm9uaWNzKSwgcmVxdWlyaW5nIGEgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmQsIGFuZCBpdCdzIG5vdCBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC5cblxuTm93IGxldCdzIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZi4gQWxsIG9mIHRoZSBtb2RpZmljYXRpb25zIGFyZSB3aXRoaW4gYHN0bW1hY19tYWluLmNgLiBJIHNlZSB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBhZGRpbmcgbnVsbCBjaGVja3MgYW5kIGltcHJvdmluZyBlcnJvciBoYW5kbGluZyBhcm91bmQgRE1BIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcgVFgvUlggYnVmZmVycy4gSW1wb3J0YW50bHksIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxsIHBhcnQgb2YgdGhlIGRyaXZlcidzIGNvcmUgZnVuY3Rpb25hbGl0eSwgdGhhdCByZXF1aXJlcyB0aGUgU1RNTUFDL0RXTUFDIGhhcmR3YXJlIHRvIGJlIHByZXNlbnQgYW5kIGluaXRpYWxpemVkLlxuXG5CZWNhdXNlIHRoaXMgZHJpdmVyIG5lY2Vzc2l0YXRlcyBwaHlzaWNhbCBTVE1NQUMgaGFyZHdhcmUsIGFuZCBzaW5jZSB0aGlzIGhhcmR3YXJlIGlzIHVuYXZhaWxhYmxlIGluIHRoZSB0YXJnZXQgdmlydHVhbCBlbnZpcm9ubWVudHMgKFFFTVUsIEdDRSksIHRoaXMgbWVhbnMgdGhlIGNvZGUgaW4gdGhpcyBwYXRjaCBpcyB1bnJlYWNoYWJsZSB1bmRlciBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyAqc3RydWN0dXJhbGx5KiBpbmFjY2Vzc2libGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblRoZXJlZm9yZTpcblxuKiAgICoqV29ydGhGdXp6aW5nOiBmYWxzZSoqIOKAkyBUaGUgY29kZSdzIHVuZGVybHlpbmcgaGFyZHdhcmUgZGVwZW5kZW5jZSBtYWtlcyBpdCB1bmZlYXNpYmxlIHRvIGZ1enouXG4qICAgKipGb2N1c1N5bWJvbHM6IFxcWyBdKiog4oCTIFNpbmNlIHRoZSBkZXZpY2UgaXMgdW5wcm9iZWQsIHRoZXJlIGFyZSBubyBmdW5jdGlvbnMgdG8gcG9pbnQgYXQuXG4qICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqIOKAkyBBcyB0aGUgZGV2aWNlIGlzIHVuYXZhaWxhYmxlLCBubyBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5LlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBzdG1tYWMgZHJpdmVyIGRlcGVuZHMgb24gcGh5c2ljYWwgU1RNaWNyb2VsZWN0cm9uaWNzL1N5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGNvbnRyb2xsZXJzIGFuZCBTb0NzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGFtZDY0IGVudmlyb25tZW50cywgcmVuZGVyaW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuQWxyaWdodCwgdGhhdCBjb3ZlcnMgaXQuIEkndmUgcmV2aWV3ZWQgZXZlcnl0aGluZywgYW5kIGl0J3MgYWxsIGNvbnNpc3RlbnQgYW5kIGFjY3VyYXRlLiBJJ20gY29uZmlkZW50IGluIHRoaXMgYXNzZXNzbWVudC4gTGV0J3Mgc3VibWl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE3MiwiT3V0cHV0VG9rZW5zIjoxMjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6NTcuOTUwNjE4NTc3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3ItaGFuZGxpbmcgYW5kIGJ1ZmZlci1mcmVlaW5nIHBhdGhzIGluIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC8gU29DcyAvIFBDSWUgZGV2aWNlcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUgLyBHQ0Ugb24gYW1kNjQpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDZUMTU6NDU6NTcuOTUwNjc3MTM3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowfcb7w[1] Phase: Running StartedAt: 2026-09-06 15:46:08 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfcb7w[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-06 15:46:08 +0000 UTC FinishedAt: 2026-09-06 15:46:19 +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,}