Name: series-workflowxvngw Phase: Failed StartedAt: 2026-06-24 20:21:15 +0000 UTC FinishedAt: 2026-06-24 20:37:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvngw[0] Phase: Succeeded StartedAt: 2026-06-24 20:21:15 +0000 UTC FinishedAt: 2026-06-24 20:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvngw[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 20:21:15 +0000 UTC FinishedAt: 2026-06-24 20:37:33 +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+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgTWV0YSYjMzk7cyBuZXR3b3JrIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVhZmQzMjJkNDU2ZjFhNWExNTZkNWViMzhlOTk2MzQ5ZmQyMTE5ZDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAyMDozNjo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmhcbmluZGV4IGQwNzE1Njk1YzQzZTc1Li5lMzFkNmY4OGI3NDY5MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oXG5AQCAtNiw2ICYjNDM7Niw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbkBAIC0yNyw2ICYjNDM7MjgsNyBAQCBzdHJ1Y3QgZmJuaWNfZGV2IHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkYmdfZmJkO1xuIFx0c3RydWN0IGRldmljZSAqaHdtb247XG4mIzQzO1x0c3RydWN0IG11dGV4IGh3bW9uX211dGV4OyAvKiBTZXJpYWxpemVzIGh3bW9uIHNlbnNvciByZWFkcyAqL1xuIFx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpmd19yZXBvcnRlcjtcbiBcdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqb3RwX3JlcG9ydGVyO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uY1xuaW5kZXggZGVmODU5OGFjZWVjZjcuLmFjMWI0YTQyMjY3N2RmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19od21vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmNcbkBAIC0zMywxMCAmIzQzOzMzLDE3IEBAIHN0YXRpYyBpbnQgZmJuaWNfaHdtb25fcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsXG4ge1xuIFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gXHRjb25zdCBzdHJ1Y3QgZmJuaWNfbWFjICptYWMgPSBmYmQtXHUwMDNlbWFjO1xuLVx0aW50IGlkO1xuJiM0MztcdGludCBpZCwgZXJyO1xuIFxuIFx0aWQgPSBmYm5pY19od21vbl9zZW5zb3JfaWQodHlwZSk7XG4tXHRyZXR1cm4gaWQgXHUwMDNjIDAgPyBpZCA6IG1hYy1cdTAwM2VnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7XG4mIzQzO1x0aWYgKGlkIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIGlkO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmZiZC1cdTAwM2Vod21vbl9tdXRleCk7XG4mIzQzO1x0ZXJyID0gbWFjLVx1MDAzZWdldF9zZW5zb3IoZmJkLCBpZCwgdmFsKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9vcHMgZmJuaWNfaHdtb25fb3BzID0ge1xuQEAgLTYwLDYgJiM0Mzs2Nyw4IEBAIHZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxuIFx0aWYgKCFJU19SRUFDSEFCTEUoQ09ORklHX0hXTU9OKSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdG11dGV4X2luaXQoXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbiYjNDM7XG4gXHRmYmQtXHUwMDNlaHdtb24gPSBod21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9pbmZvKGZiZC1cdTAwM2VkZXYsIFwmIzM0O2ZibmljXCYjMzQ7LFxuIFx0XHRcdFx0XHRcdCAgICAgZmJkLCBcdTAwMjZmYm5pY19jaGlwX2luZm8sXG4gXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbkBAIC02OCw2ICYjNDM7NzcsNyBAQCB2b2lkIGZibmljX2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbiBcdFx0XHQgICBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgaHdtb24gZGV2aWNlICVwZVxcblwmIzM0OyxcbiBcdFx0XHQgICBmYmQtXHUwMDNlaHdtb24pO1xuIFx0XHRmYmQtXHUwMDNlaHdtb24gPSBOVUxMO1xuJiM0MztcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZmYmQtXHUwMDNlaHdtb25fbXV0ZXgpO1xuIFx0fVxuIH1cbiBcbkBAIC03OCw0ICYjNDM7ODgsNSBAQCB2b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxuIFxuIFx0aHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZmJkLVx1MDAzZWh3bW9uKTtcbiBcdGZiZC1cdTAwM2Vod21vbiA9IE5VTEw7XG4mIzQzO1x0bXV0ZXhfZGVzdHJveShcdTAwMjZmYmQtXHUwMDNlaHdtb25fbXV0ZXgpO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgbmV0d29yayBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVhZmQzMjJkNDU2ZjFhNWExNTZkNWViMzhlOTk2MzQ5ZmQyMTE5ZDMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAyMDozNjo0NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaAppbmRleCBkMDcxNTY5NWM0M2U3NS4uZTMxZDZmODhiNzQ2OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgKQEAgLTYsNiAmIzQzOzYsNyBAQAogCiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wdHBfY2xvY2tfa2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC93b3JrcXVldWUuaCZndDsKQEAgLTI3LDYgJiM0MzsyOCw3IEBAIHN0cnVjdCBmYm5pY19kZXYgewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CiAJc3RydWN0IGRlbnRyeSAqZGJnX2ZiZDsKIAlzdHJ1Y3QgZGV2aWNlICpod21vbjsKJiM0MzsJc3RydWN0IG11dGV4IGh3bW9uX211dGV4OyAvKiBTZXJpYWxpemVzIGh3bW9uIHNlbnNvciByZWFkcyAqLwogCXN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqZndfcmVwb3J0ZXI7CiAJc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpvdHBfcmVwb3J0ZXI7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYwppbmRleCBkZWY4NTk4YWNlZWNmNy4uYWMxYjRhNDIyNjc3ZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmMKQEAgLTMzLDEwICYjNDM7MzMsMTcgQEAgc3RhdGljIGludCBmYm5pY19od21vbl9yZWFkKHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBod21vbl9zZW5zb3JfdHlwZXMgdHlwZSwKIHsKIAlzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAljb25zdCBzdHJ1Y3QgZmJuaWNfbWFjICptYWMgPSBmYmQtJmd0O21hYzsKLQlpbnQgaWQ7CiYjNDM7CWludCBpZCwgZXJyOwogCiAJaWQgPSBmYm5pY19od21vbl9zZW5zb3JfaWQodHlwZSk7Ci0JcmV0dXJuIGlkICZsdDsgMCA/IGlkIDogbWFjLSZndDtnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7CiYjNDM7CWlmIChpZCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gaWQ7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtmYmQtJmd0O2h3bW9uX211dGV4KTsKJiM0MzsJZXJyID0gbWFjLSZndDtnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2ZiZC0mZ3Q7aHdtb25fbXV0ZXgpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX29wcyBmYm5pY19od21vbl9vcHMgPSB7CkBAIC02MCw2ICYjNDM7NjcsOCBAQCB2b2lkIGZibmljX2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCkKIAlpZiAoIUlTX1JFQUNIQUJMRShDT05GSUdfSFdNT04pKQogCQlyZXR1cm47CiAKJiM0MzsJbXV0ZXhfaW5pdCgmYW1wO2ZiZC0mZ3Q7aHdtb25fbXV0ZXgpOwomIzQzOwogCWZiZC0mZ3Q7aHdtb24gPSBod21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9pbmZvKGZiZC0mZ3Q7ZGV2LCAmIzM0O2ZibmljJiMzNDssCiAJCQkJCQkgICAgIGZiZCwgJmFtcDtmYm5pY19jaGlwX2luZm8sCiAJCQkJCQkgICAgIE5VTEwpOwpAQCAtNjgsNiAmIzQzOzc3LDcgQEAgdm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpCiAJCQkgICAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBod21vbiBkZXZpY2UgJXBlXG4mIzM0OywKIAkJCSAgIGZiZC0mZ3Q7aHdtb24pOwogCQlmYmQtJmd0O2h3bW9uID0gTlVMTDsKJiM0MzsJCW11dGV4X2Rlc3Ryb3koJmFtcDtmYmQtJmd0O2h3bW9uX211dGV4KTsKIAl9CiB9CiAKQEAgLTc4LDQgJiM0Mzs4OCw1IEBAIHZvaWQgZmJuaWNfaHdtb25fdW5yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpCiAKIAlod21vbl9kZXZpY2VfdW5yZWdpc3RlcihmYmQtJmd0O2h3bW9uKTsKIAlmYmQtJmd0O2h3bW9uID0gTlVMTDsKJiM0MzsJbXV0ZXhfZGVzdHJveSgmYW1wO2ZiZC0mZ3Q7aHdtb25fbXV0ZXgpOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgZmJuaWMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGZibmljYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgTWV0YS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIGFkZGluZyBhIG11dGV4LCBgaHdtb25fbXV0ZXhgLCB0byB0aGUgYHN0cnVjdCBmYm5pY19kZXZgIHN0cnVjdHVyZS4gVGhpcyBtdXRleCBpcyBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGBmYm5pY19od21vbl9yZWdpc3RlcmAgZnVuY3Rpb24gYW5kLCBjcnVjaWFsbHksIGRlc3Ryb3llZCBpbiBgZmJuaWNfaHdtb25fdW5yZWdpc3RlcmAgYW5kIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGVycm9yIGhhbmRsaW5nIHBhdGhzLiAgVGhlIGxvY2sgYW5kIHVubG9jayBvcGVyYXRpb25zIHVzaW5nIHRoaXMgbXV0ZXggYXJlIHN0cmF0ZWdpY2FsbHkgcGxhY2VkIHdpdGhpbiB0aGUgYGZibmljX2h3bW9uX3JlYWRgIGZ1bmN0aW9uLCBkaXJlY3RseSBhcm91bmQgdGhlIGNhbGwgdG8gYG1hYy0mZ3Q7Z2V0X3NlbnNvcigpYC4gVGhhdCYjMzk7cyBzbWFydDsgdGhleSYjMzk7cmUgY2xlYXJseSB0cnlpbmcgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIG1vbml0b3JpbmcgZGF0YS4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVsZXZhbnQqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaXQmIzM5O3MgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aC4gSXMgaXQgYSBQQ0kgZGV2aWNlPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgd2UgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzIGRyaXZlciBnZXR0aW5nIGV4cG9zZWQgdG8gVk1zLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jYCBvciBhIHNpbWlsYXIgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UmIzM5O3MgYXR0YWNobWVudCBtZXRob2QuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IHRoZSByZWFsIHN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZibmljX2h3bW9uX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xODY9dm9pZCBmYm5pY19md19mcmVlX21ieChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODg6dm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4OS12b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmM9NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGlwX2luZm8gZmJuaWNfY2hpcF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYy02NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYzo2NTp2b2lkIGZibmljX2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYy02Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNTk9c3RhdGljIGludCBmYm5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTM0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzUwOlx0ZmJuaWNfaHdtb25fcmVnaXN0ZXIoZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmMtMzUxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjUKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBDSSBEcml2ZXIgYW5kIEVtdWxhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFBDSSBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGVtdWxhdGUgdGhpcyB0aGluZyB3aXRoaW4gUUVNVT8gVGhhdCYjMzk7cyB0aGUgb2J2aW91cyBmaXJzdCBxdWVzdGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS4gVGhlIGFuc3dlciwgb2YgY291cnNlLCBoaW5nZXMgb24gd2hldGhlciBRRU1VIGhhcyBidWlsdC1pbiBlbXVsYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgZGV2aWNlLiBJdCYjMzk7cyBoaWdobHkgdW5saWtlbHkgdW5sZXNzIGl0JiMzOTtzIGEgdmVyeSBjb21tb24gb3Igd2VsbC1kZWZpbmVkIGRldmljZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiBgZmJuaWNgIGVtdWxhdGlvbiBpbiBRRU1VLCBvciBldmVuIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24uIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBhdGggdG8gaW52ZXN0aWdhdGUuIFRvIGJlZ2luIHRoYXQsIEkmIzM5O2xsIGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGFueSBwb2ludGVycy4gSSYjMzk7bGwgc3RhcnQgd2l0aCBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL0tjb25maWdgIHRvIHNlZSBpZiB0aGUgZHJpdmVyIGlzIGV2ZW4gcHJvcGVybHkgY29uZmlndXJlZC4gRnJvbSBoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIHBvc3NpYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZCTklDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX01FVEFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyMDpjb25maWcgRkJOSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O01ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODUxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCYjMzk7cyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGUgcHJvdmlkZWQgdGFzaywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGl2aW5nIGludG8gdGhlIEV0aGVybmV0IEtjb25maWcqKgoKQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGlzIHBhcnRpY3VsYXIgS2NvbmZpZyBmaWxlIGlzIGludGVyZXN0aW5nLiBCYXNlZCBvbiB0aGUgcGF0aCwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIG1ldGEtY29uZmlndXJhdGlvbiBmaWxlIGZvciBFdGhlcm5ldCBkcml2ZXJzLiBJdCB3b24mIzM5O3QgYmUgc3BlY2lmaWMgdG8gYSAqc2luZ2xlKiBoYXJkd2FyZSBkcml2ZXIsIGJ1dCByYXRoZXIgd2lsbCBsaWtlbHkgY29udGFpbiBkZWZpbml0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZ3JvdXBpbmcgcmVsYXRlZCB0byB0aGUgKmJyb2FkZXIgY2F0ZWdvcnkqIG9mIEV0aGVybmV0IHN1cHBvcnQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkmIzM5O20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipPdmVyYWxsIEV0aGVybmV0IEZlYXR1cmUgQ29udHJvbDoqKiBEb2VzIHRoaXMgZmlsZSBkZWZpbmUgYSB0b3AtbGV2ZWwgYENPTkZJR19FVEhFUk5FVGAgc3ltYm9sPyBPciBtYXliZSBpbmRpdmlkdWFsIGZlYXR1cmUgZmxhZ3MgZm9yIGRpZmZlcmVudCBFdGhlcm5ldCBmdW5jdGlvbmFsaXRpZXM/CiogICAqKkFyY2hpdGVjdHVyYWwgT3ZlcnZpZXdzKio6IEl0IHNob3VsZCwgYXQgYSBtaW5pbXVtLCBzaG93IHRoZSBzdHJ1Y3R1cmUgb2YgZmVhdHVyZXMgd2l0aCBhbiBvdmVydmlldyBvZiB0aGUgaGllcmFyY2h5IG9mIGZlYXR1cmVzLgoqICAgKipEZXBlbmRlbmNpZXMgYW5kIFJlbGF0aW9uc2hpcHM6KiogSSYjMzk7bSBrZWVuIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGJldHdlZW4gZGlmZmVyZW50IEV0aGVybmV0IGZlYXR1cmVzIGFuZCBkcml2ZXJzLiBGb3IgZXhhbXBsZSwgZG9lcyBlbmFibGluZyBvbmUgZmVhdHVyZSBhdXRvbWF0aWNhbGx5IGVuYWJsZSBhbm90aGVyLCBvciBkb2VzIGl0IGRlcGVuZCBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3QgYmV0d2VlbiBvcHRpb25zIG9yIHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgc3ViLW1vZHVsZXMgdG8gYmUgY29uZmlndXJlZCBmaXJzdD8KKiAgICoqRHJpdmVyIEFic3RyYWN0aW9uOioqIFdpbGwgdGhpcyBzaG93IGFuIG92ZXJ2aWV3IG9mIGEgZHJpdmVyLW1vZGVsIGFuZCBpdHMgaW1wbGVtZW50YXRpb24/IEkmIzM5O2xsIHByb2JhYmx5IGJlIGxvb2tpbmcgZm9yIHNvbWUgYWJzdHJhY3Rpb24gdG8gYWxsb3cgYSBjb21tb24gQVBJIGZvciBFdGhlcm5ldCwgc28gdGhhdCBkaWZmZXJlbnQgZHJpdmVycyBjYW4gYmUgY3JlYXRlZC4KKiAgICoqSGFyZHdhcmUgVmFyaWFudHMgYW5kIE9wdGlvbnM6KiogQXJlIHRoZXJlIHByb3Zpc2lvbnMgZm9yIHNlbGVjdGluZyBzcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVyIHR5cGVzIChlLmcuLCBnaWdhYml0LCAxMEcsIGV0Yy4pIG9yIGludGVyZmFjZSBzdGFuZGFyZHM/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGhhcmR3YXJlIHJldmlzaW9ucywgc3BlZWQgc2V0dGluZ3MsIFBIWSBtYW5hZ2VtZW50LCBhbmQgYW55IG90aGVyIGJvYXJkLXNwZWNpZmljIG51YW5jZXMuCiogICAqKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uOioqIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBob3cgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaXMgaGFuZGxlZC4gQXJlIHRoZXJlIGFueSBgaWYuLi5kZXBlbmRzIG9uLi4uYCBzdGF0ZW1lbnRzIG9yIG90aGVyIGxvZ2ljIHRvIHNlbGVjdCBFdGhlcm5ldCBmZWF0dXJlcyBiYXNlZCBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBwbGF0Zm9ybSBvciBvdGhlciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zPwoqICAgKipEb2N1bWVudGF0aW9uOioqIEkmIzM5O20gaG9waW5nIHRoZXJlJiMzOTtzIHNvbWUgZ29vZCBkb2N1bWVudGF0aW9uIGFuZCBjb21tZW50cyB3aXRoaW4gdGhlIEtjb25maWcgZmlsZSBpdHNlbGYuIEV2ZW4gYSBoaWdoLWxldmVsIG92ZXJ2aWV3IHdpbGwgYmUgaGVscGZ1bCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIHB1cnBvc2Ugb2YgdGhlIGNvbmZpZ3VyYXRpb25zLgoKSSYjMzk7bSByZWFkeSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGRlY2lwaGVyIHRoZSBkZXRhaWxzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoaXMgS2NvbmZpZyEgVGhpcyBzaG91bGQgYmUgYSBnb29kIGluZGljYXRvciBvZiBob3cgdGhlIEV0aGVybmV0IHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGlzIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNZXRhIFBsYXRmb3JtcyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX01FVEFcbiAgIDc6XHRcdGJvb2wgXCYjMzQ7TWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1wmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZGVzaWduZWQgYnkgTWV0YSwgc2F5IFkuXG4gIDExOlx0XHQgIFRoYXQmIzM5O3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXG4gIDEyOlx0XG4gIDEzOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNDpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXG4gIDE1Olx0XHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTWV0YSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTY6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNzpcdFxuICAxODpcdGlmIE5FVF9WRU5ET1JfTUVUQVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBGQk5JQ1xuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZVwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiA2NEJJVCB8fCBDT01QSUxFX1RFU1RcbiAgMjM6XHRcdGRlcGVuZHMgb24gIVMzOTBcbiAgMjQ6XHRcdGRlcGVuZHMgb24gTUFYX1NLQl9GUkFHUyBcdTAwM2MgMjJcbiAgMjU6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICAyNjpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyNzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDI4Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDI5Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgMzA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDMxOlx0XHRzZWxlY3QgUExETUZXXG4gIDMyOlx0XHRoZWxwXG4gIDMzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXG4gIDM0Olx0XG4gIDM1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgMzY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgZmJuaWMuICBNU0ktWCBpbnRlcnJ1cHQgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAgMzc6XHRcbiAgMzg6XHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MjYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgSGFyZHdhcmUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIE1ldGEgbmV0d29yayBjYXJkIGRyaXZlci4gSXQmIzM5O3MgYGZibmljYCwgcmlnaHQ/IEFuZCB0aGUgaW1tZWRpYXRlIGlzc3VlIGlzIHRoYXQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIGl0IHdpdGhpbiB0aGUga2VybmVsLCB1bmxpa2UgdGhvc2UgaGVscGZ1bCB0b29scyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgLiBJdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHByZXR0eSBtdWNoIHVzZWxlc3MgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IHVubGVzcyBRRU1VLCBzcGVjaWZpY2FsbHksIGNhbiBlbXVsYXRlIGl0LgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogRG9lcyBRRU1VIGV2ZW4gaGF2ZSBhbnkgZW11bGF0aW9uIGZvciBgZmJuaWNgPyBNeSBndXQgc2F5cyBuby4gVGhpcyBkcml2ZXIgaXMgdmVyeSBzcGVjaWFsaXplZC4gR2l2ZW4gdGhlIHNwZWNpZmljcyBvZiB0aGUgaGFyZHdhcmUsIGl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHRoaXMgaXMgc29tZXRoaW5nIFFFTVUgd291bGQgYm90aGVyIHRvIGltcGxlbWVudC4KClNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIGlzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHdoZXRoZXIgaXQmIzM5O3MgR0NFIG9yIHBsYWluIG9sZCBRRU1VLiBUaGF0IG1lYW5zLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCBJIHNob3VsZCBtYXJrIGBXb3J0aEZ1enppbmdgIGFzIGBmYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgdGhvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIEkmIzM5O3ZlIG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBhYm91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIENhbiYjMzk7dCBiZSB0b28gY2FyZWZ1bCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYm5pYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3Rvb2xzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMzUKCQkJCQkJCW91dHB1dDogODEKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBVbmZ1enphYmxlIENvZGUqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIGFuYWx5emVkIHRoZSBjb2RlLiBJJiMzOTttIGRlYWxpbmcgd2l0aCBtb2RpZmljYXRpb25zIHRvIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZXJ5IHNwZWNpZmljLCBoYXJkd2FyZS1kZXBlbmRlbnQgUENJIGRyaXZlciBkZXNpZ25lZCBmb3IgTWV0YSYjMzk7cyBuZXR3b3JraW5nIGNhcmRzLiBUaGlzIGlzIGEgcHJvYmxlbS4gVGhlIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHRvb2xzLCB0aGUgdXN1YWwgc3VzcGVjdHMgbGlrZSBRRU1VIGFuZCBHQ0UsIGRvbiYjMzk7dCBlbXVsYXRlIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZS4gVGhhdCBtZWFucyBubyBtYXR0ZXIgaG93IGhhcmQgSSB0cnksIEkgd29uJiMzOTt0IGJlIGFibGUgdG8gZ2V0IHRoaXMgY29kZSB0byBleGVjdXRlIHVuZGVyIGEgZnV6emVyJiMzOTtzIHByb2JpbmcuCgpJJiMzOTt2ZSBleGhhdXN0ZWQgbXkgdXN1YWwgYXZlbnVlcy4gTm8gb3RoZXIgbWV0aG9kcyBvciB0ZXN0IGZyYW1ld29ya3MgYXJlIGFwcGxpY2FibGUgaGVyZS4gSSYjMzk7dmUgaGl0IGEgZGVhZCBlbmQuIFRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBzZXQgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgdG8gYGZhbHNlYC4gVGhlcmUmIzM5O3Mgbm8gcG9pbnQgaW4gd2FzdGluZyBmdXJ0aGVyIHJlc291cmNlcyBvbiBzb21ldGhpbmcgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIHVuZGVyIHN0YW5kYXJkIGZ1enppbmcgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgbmV0d29yayBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgTWV0YSYjMzk7cyBuZXR3b3JrIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIwOjM2OjQ1LjE1NzMxMzU5MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MTU1OTEzNzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIE1ldGEncyBuZXR3b3JrIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6MzY6NDUuMTU3MzE4NDYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTc3MDcxMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YWZkMzIyZDQ1NmYxYTVhMTU2ZDVlYjM4ZTk5NjM0OWZkMjExOWQzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDIwOjM2OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaFxcbmluZGV4IGQwNzE1Njk1YzQzZTc1Li5lMzFkNmY4OGI3NDY5MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmhcXG5AQCAtNiw2ICs2LDcgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXFx1MDAzZVxcbkBAIC0yNyw2ICsyOCw3IEBAIHN0cnVjdCBmYm5pY19kZXYge1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpkYmdfZmJkO1xcbiBcXHRzdHJ1Y3QgZGV2aWNlICpod21vbjtcXG4rXFx0c3RydWN0IG11dGV4IGh3bW9uX211dGV4OyAvKiBTZXJpYWxpemVzIGh3bW9uIHNlbnNvciByZWFkcyAqL1xcbiBcXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKmZ3X3JlcG9ydGVyO1xcbiBcXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKm90cF9yZXBvcnRlcjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uY1xcbmluZGV4IGRlZjg1OThhY2VlY2Y3Li5hYzFiNGE0MjI2NzdkZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmNcXG5AQCAtMzMsMTAgKzMzLDE3IEBAIHN0YXRpYyBpbnQgZmJuaWNfaHdtb25fcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsXFxuIHtcXG4gXFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuIFxcdGNvbnN0IHN0cnVjdCBmYm5pY19tYWMgKm1hYyA9IGZiZC1cXHUwMDNlbWFjO1xcbi1cXHRpbnQgaWQ7XFxuK1xcdGludCBpZCwgZXJyO1xcbiBcXG4gXFx0aWQgPSBmYm5pY19od21vbl9zZW5zb3JfaWQodHlwZSk7XFxuLVxcdHJldHVybiBpZCBcXHUwMDNjIDAgPyBpZCA6IG1hYy1cXHUwMDNlZ2V0X3NlbnNvcihmYmQsIGlkLCB2YWwpO1xcbitcXHRpZiAoaWQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gaWQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZmYmQtXFx1MDAzZWh3bW9uX211dGV4KTtcXG4rXFx0ZXJyID0gbWFjLVxcdTAwM2VnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZmJkLVxcdTAwM2Vod21vbl9tdXRleCk7XFxuK1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX29wcyBmYm5pY19od21vbl9vcHMgPSB7XFxuQEAgLTYwLDYgKzY3LDggQEAgdm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuIFxcdGlmICghSVNfUkVBQ0hBQkxFKENPTkZJR19IV01PTikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNmZiZC1cXHUwMDNlaHdtb25fbXV0ZXgpO1xcbitcXG4gXFx0ZmJkLVxcdTAwM2Vod21vbiA9IGh3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2luZm8oZmJkLVxcdTAwM2VkZXYsIFxcXCJmYm5pY1xcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZmJkLCBcXHUwMDI2ZmJuaWNfY2hpcF9pbmZvLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbkBAIC02OCw2ICs3Nyw3IEBAIHZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbiBcXHRcXHRcXHQgICBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGh3bW9uIGRldmljZSAlcGVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgIGZiZC1cXHUwMDNlaHdtb24pO1xcbiBcXHRcXHRmYmQtXFx1MDAzZWh3bW9uID0gTlVMTDtcXG4rXFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2ZmJkLVxcdTAwM2Vod21vbl9tdXRleCk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtNzgsNCArODgsNSBAQCB2b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbiBcXG4gXFx0aHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZmJkLVxcdTAwM2Vod21vbik7XFxuIFxcdGZiZC1cXHUwMDNlaHdtb24gPSBOVUxMO1xcbitcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZmYmQtXFx1MDAzZWh3bW9uX211dGV4KTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNjo0NS41MTU4MDk0MTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0Nzk3NDEyMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIE1ldGEncyBuZXR3b3JrIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YWZkMzIyZDQ1NmYxYTVhMTU2ZDVlYjM4ZTk5NjM0OWZkMjExOWQzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMjA6MzY6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmhcbmluZGV4IGQwNzE1Njk1YzQzZTc1Li5lMzFkNmY4OGI3NDY5MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oXG5AQCAtNiw2ICs2LDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG5AQCAtMjcsNiArMjgsNyBAQCBzdHJ1Y3QgZmJuaWNfZGV2IHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkYmdfZmJkO1xuIFx0c3RydWN0IGRldmljZSAqaHdtb247XG4rXHRzdHJ1Y3QgbXV0ZXggaHdtb25fbXV0ZXg7IC8qIFNlcmlhbGl6ZXMgaHdtb24gc2Vuc29yIHJlYWRzICovXG4gXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKmZ3X3JlcG9ydGVyO1xuIFx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpvdHBfcmVwb3J0ZXI7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19od21vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19od21vbi5jXG5pbmRleCBkZWY4NTk4YWNlZWNmNy4uYWMxYjRhNDIyNjc3ZGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uY1xuQEAgLTMzLDEwICszMywxNyBAQCBzdGF0aWMgaW50IGZibmljX2h3bW9uX3JlYWQoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGh3bW9uX3NlbnNvcl90eXBlcyB0eXBlLFxuIHtcbiBcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuIFx0Y29uc3Qgc3RydWN0IGZibmljX21hYyAqbWFjID0gZmJkLVx1MDAzZW1hYztcbi1cdGludCBpZDtcbitcdGludCBpZCwgZXJyO1xuIFxuIFx0aWQgPSBmYm5pY19od21vbl9zZW5zb3JfaWQodHlwZSk7XG4tXHRyZXR1cm4gaWQgXHUwMDNjIDAgPyBpZCA6IG1hYy1cdTAwM2VnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7XG4rXHRpZiAoaWQgXHUwMDNjIDApXG4rXHRcdHJldHVybiBpZDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbitcdGVyciA9IG1hYy1cdTAwM2VnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbitcbitcdHJldHVybiBlcnI7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fb3BzIGZibmljX2h3bW9uX29wcyA9IHtcbkBAIC02MCw2ICs2Nyw4IEBAIHZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxuIFx0aWYgKCFJU19SRUFDSEFCTEUoQ09ORklHX0hXTU9OKSlcbiBcdFx0cmV0dXJuO1xuIFxuK1x0bXV0ZXhfaW5pdChcdTAwMjZmYmQtXHUwMDNlaHdtb25fbXV0ZXgpO1xuK1xuIFx0ZmJkLVx1MDAzZWh3bW9uID0gaHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfaW5mbyhmYmQtXHUwMDNlZGV2LCBcImZibmljXCIsXG4gXHRcdFx0XHRcdFx0ICAgICBmYmQsIFx1MDAyNmZibmljX2NoaXBfaW5mbyxcbiBcdFx0XHRcdFx0XHQgICAgIE5VTEwpO1xuQEAgLTY4LDYgKzc3LDcgQEAgdm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4gXHRcdFx0ICAgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgaHdtb24gZGV2aWNlICVwZVxcblwiLFxuIFx0XHRcdCAgIGZiZC1cdTAwM2Vod21vbik7XG4gXHRcdGZiZC1cdTAwM2Vod21vbiA9IE5VTEw7XG4rXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbiBcdH1cbiB9XG4gXG5AQCAtNzgsNCArODgsNSBAQCB2b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxuIFxuIFx0aHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZmJkLVx1MDAzZWh3bW9uKTtcbiBcdGZiZC1cdTAwM2Vod21vbiA9IE5VTEw7XG4rXHRtdXRleF9kZXN0cm95KFx1MDAyNmZiZC1cdTAwM2Vod21vbl9tdXRleCk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6MzY6NDUuNTE1ODEwODI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3ODU5MDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGZibmljIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgZmJuaWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBNZXRhLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBUaGUgY29yZSBvZiBpdCByZXZvbHZlcyBhcm91bmQgYWRkaW5nIGEgbXV0ZXgsIGBod21vbl9tdXRleGAsIHRvIHRoZSBgc3RydWN0IGZibmljX2RldmAgc3RydWN0dXJlLiBUaGlzIG11dGV4IGlzIGluaXRpYWxpemVkIGR1cmluZyB0aGUgYGZibmljX2h3bW9uX3JlZ2lzdGVyYCBmdW5jdGlvbiBhbmQsIGNydWNpYWxseSwgZGVzdHJveWVkIGluIGBmYm5pY19od21vbl91bnJlZ2lzdGVyYCBhbmQgd2l0aGluIHRoZSBkcml2ZXIncyBlcnJvciBoYW5kbGluZyBwYXRocy4gIFRoZSBsb2NrIGFuZCB1bmxvY2sgb3BlcmF0aW9ucyB1c2luZyB0aGlzIG11dGV4IGFyZSBzdHJhdGVnaWNhbGx5IHBsYWNlZCB3aXRoaW4gdGhlIGBmYm5pY19od21vbl9yZWFkYCBmdW5jdGlvbiwgZGlyZWN0bHkgYXJvdW5kIHRoZSBjYWxsIHRvIGBtYWMtXHUwMDNlZ2V0X3NlbnNvcigpYC4gVGhhdCdzIHNtYXJ0OyB0aGV5J3JlIGNsZWFybHkgdHJ5aW5nIHRvIHByb3RlY3QgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBtb25pdG9yaW5nIGRhdGEuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVsZXZhbnQqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaXQncyBkZXNpZ25lZCB0byBpbnRlcmFjdCB3aXRoLiBJcyBpdCBhIFBDSSBkZXZpY2U/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB3ZSBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMgZHJpdmVyIGdldHRpbmcgZXhwb3NlZCB0byBWTXMuIEknbGwgbmVlZCB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuY2Agb3IgYSBzaW1pbGFyIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlJ3MgYXR0YWNobWVudCBtZXRob2QuIFRoaXMgaXMgd2hlcmUgSSdsbCBnZXQgdGhlIHJlYWwgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNjo0OS43OTQ0MDMzNDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMDc1MzI1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYm5pY19od21vbl9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg9MTg2PXZvaWQgZmJuaWNfZndfZnJlZV9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODg6dm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODktdm9pZCBmYm5pY19od21vbl91bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmM9NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGlwX2luZm8gZmJuaWNfY2hpcF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19od21vbi5jLTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYzo2NTp2b2lkIGZibmljX2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmMtNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNTk9c3RhdGljIGludCBmYm5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmMtMzQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzUwOlxcdGZibmljX2h3bW9uX3JlZ2lzdGVyKGZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zNTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIwOjM2OjUxLjcyNTE2NDkxOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODk4MTI0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyIGFuZCBFbXVsYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUENJIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gd2UgZW11bGF0ZSB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VPyBUaGF0J3MgdGhlIG9idmlvdXMgZmlyc3QgcXVlc3Rpb24gd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUuIFRoZSBhbnN3ZXIsIG9mIGNvdXJzZSwgaGluZ2VzIG9uIHdoZXRoZXIgUUVNVSBoYXMgYnVpbHQtaW4gZW11bGF0aW9uIGZvciB0aGF0IHNwZWNpZmljIGRldmljZS4gSXQncyBoaWdobHkgdW5saWtlbHkgdW5sZXNzIGl0J3MgYSB2ZXJ5IGNvbW1vbiBvciB3ZWxsLWRlZmluZWQgZGV2aWNlLiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgbWVudGlvbiBvZiBgZmJuaWNgIGVtdWxhdGlvbiBpbiBRRU1VLCBvciBldmVuIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24uIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBhdGggdG8gaW52ZXN0aWdhdGUuIFRvIGJlZ2luIHRoYXQsIEknbGwgZ28gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYW55IHBvaW50ZXJzLiBJJ2xsIHN0YXJ0IHdpdGggbG9va2luZyBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9LY29uZmlnYCB0byBzZWUgaWYgdGhlIGRyaXZlciBpcyBldmVuIHByb3Blcmx5IGNvbmZpZ3VyZWQuIEZyb20gaGVyZSwgSSBjYW4gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBwb3NzaWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDY1LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6MzY6NTUuMjE0OTc5MDA0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTkwMjI2ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZCTklDXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX01FVEFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjIwOmNvbmZpZyBGQk5JQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6MzY6NTcuMjM0MDA2NTg3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5MTY5NDIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGUgcHJvdmlkZWQgdGFzaywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBFdGhlcm5ldCBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGlzIHBhcnRpY3VsYXIgS2NvbmZpZyBmaWxlIGlzIGludGVyZXN0aW5nLiBCYXNlZCBvbiB0aGUgcGF0aCwgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEgbWV0YS1jb25maWd1cmF0aW9uIGZpbGUgZm9yIEV0aGVybmV0IGRyaXZlcnMuIEl0IHdvbid0IGJlIHNwZWNpZmljIHRvIGEgKnNpbmdsZSogaGFyZHdhcmUgZHJpdmVyLCBidXQgcmF0aGVyIHdpbGwgbGlrZWx5IGNvbnRhaW4gZGVmaW5pdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGdyb3VwaW5nIHJlbGF0ZWQgdG8gdGhlICpicm9hZGVyIGNhdGVnb3J5KiBvZiBFdGhlcm5ldCBzdXBwb3J0IHdpdGhpbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqT3ZlcmFsbCBFdGhlcm5ldCBGZWF0dXJlIENvbnRyb2w6KiogRG9lcyB0aGlzIGZpbGUgZGVmaW5lIGEgdG9wLWxldmVsIGBDT05GSUdfRVRIRVJORVRgIHN5bWJvbD8gT3IgbWF5YmUgaW5kaXZpZHVhbCBmZWF0dXJlIGZsYWdzIGZvciBkaWZmZXJlbnQgRXRoZXJuZXQgZnVuY3Rpb25hbGl0aWVzP1xuKiAgICoqQXJjaGl0ZWN0dXJhbCBPdmVydmlld3MqKjogSXQgc2hvdWxkLCBhdCBhIG1pbmltdW0sIHNob3cgdGhlIHN0cnVjdHVyZSBvZiBmZWF0dXJlcyB3aXRoIGFuIG92ZXJ2aWV3IG9mIHRoZSBoaWVyYXJjaHkgb2YgZmVhdHVyZXMuXG4qICAgKipEZXBlbmRlbmNpZXMgYW5kIFJlbGF0aW9uc2hpcHM6KiogSSdtIGtlZW4gdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBkaWZmZXJlbnQgRXRoZXJuZXQgZmVhdHVyZXMgYW5kIGRyaXZlcnMuIEZvciBleGFtcGxlLCBkb2VzIGVuYWJsaW5nIG9uZSBmZWF0dXJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlIGFub3RoZXIsIG9yIGRvZXMgaXQgZGVwZW5kIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgYSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybT8gQXJlIHRoZXJlIGFueSBjb25mbGljdCBiZXR3ZWVuIG9wdGlvbnMgb3IgcmVxdWlyZW1lbnRzIGZvciBvdGhlciBzdWItbW9kdWxlcyB0byBiZSBjb25maWd1cmVkIGZpcnN0P1xuKiAgICoqRHJpdmVyIEFic3RyYWN0aW9uOioqIFdpbGwgdGhpcyBzaG93IGFuIG92ZXJ2aWV3IG9mIGEgZHJpdmVyLW1vZGVsIGFuZCBpdHMgaW1wbGVtZW50YXRpb24/IEknbGwgcHJvYmFibHkgYmUgbG9va2luZyBmb3Igc29tZSBhYnN0cmFjdGlvbiB0byBhbGxvdyBhIGNvbW1vbiBBUEkgZm9yIEV0aGVybmV0LCBzbyB0aGF0IGRpZmZlcmVudCBkcml2ZXJzIGNhbiBiZSBjcmVhdGVkLlxuKiAgICoqSGFyZHdhcmUgVmFyaWFudHMgYW5kIE9wdGlvbnM6KiogQXJlIHRoZXJlIHByb3Zpc2lvbnMgZm9yIHNlbGVjdGluZyBzcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVyIHR5cGVzIChlLmcuLCBnaWdhYml0LCAxMEcsIGV0Yy4pIG9yIGludGVyZmFjZSBzdGFuZGFyZHM/IEknbGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcmV2aXNpb25zLCBzcGVlZCBzZXR0aW5ncywgUEhZIG1hbmFnZW1lbnQsIGFuZCBhbnkgb3RoZXIgYm9hcmQtc3BlY2lmaWMgbnVhbmNlcy5cbiogICAqKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uOioqIEknbSBpbnRlcmVzdGVkIGluIGhvdyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpcyBoYW5kbGVkLiBBcmUgdGhlcmUgYW55IGBpZi4uLmRlcGVuZHMgb24uLi5gIHN0YXRlbWVudHMgb3Igb3RoZXIgbG9naWMgdG8gc2VsZWN0IEV0aGVybmV0IGZlYXR1cmVzIGJhc2VkIG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHBsYXRmb3JtIG9yIG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnM/XG4qICAgKipEb2N1bWVudGF0aW9uOioqIEknbSBob3BpbmcgdGhlcmUncyBzb21lIGdvb2QgZG9jdW1lbnRhdGlvbiBhbmQgY29tbWVudHMgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgaXRzZWxmLiBFdmVuIGEgaGlnaC1sZXZlbCBvdmVydmlldyB3aWxsIGJlIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBwdXJwb3NlIG9mIHRoZSBjb25maWd1cmF0aW9ucy5cblxuSSdtIHJlYWR5IHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgZGVjaXBoZXIgdGhlIGRldGFpbHMuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGlzIEtjb25maWchIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBpbmRpY2F0b3Igb2YgaG93IHRoZSBFdGhlcm5ldCBzdWJzeXN0ZW0gaXMgc3RydWN0dXJlZCB3aXRoaW4gdGhpcyBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNzowMS43MjU3MDI4ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ldGEgUGxhdGZvcm1zIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTUVUQVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiTWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGRlc2lnbmVkIGJ5IE1ldGEsIHNheSBZLlxcbiAgMTE6XFx0XFx0ICBUaGF0J3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE0OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTU6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1ldGEgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxNjpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgTkVUX1ZFTkRPUl9NRVRBXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBGQk5JQ1xcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIDY0QklUIHx8IENPTVBJTEVfVEVTVFxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBNQVhfU0tCX0ZSQUdTIFxcdTAwM2MgMjJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gUENJX01TSVxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjc6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAyODpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyOTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAzMTpcXHRcXHRzZWxlY3QgUExETUZXXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBmYm5pYy4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkLlxcbiAgMzc6XFx0XFxuICAzODpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNzowMS43MjU3NjM0MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEwNzM0NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIEhhcmR3YXJlIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgTWV0YSBuZXR3b3JrIGNhcmQgZHJpdmVyLiBJdCdzIGBmYm5pY2AsIHJpZ2h0PyBBbmQgdGhlIGltbWVkaWF0ZSBpc3N1ZSBpcyB0aGF0IHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIGl0IHdpdGhpbiB0aGUga2VybmVsLCB1bmxpa2UgdGhvc2UgaGVscGZ1bCB0b29scyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgLiBJdCdzIGEgUENJIGRldmljZSwgd2hpY2ggbWVhbnMgaXQncyBwcmV0dHkgbXVjaCB1c2VsZXNzIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCB1bmxlc3MgUUVNVSwgc3BlY2lmaWNhbGx5LCBjYW4gZW11bGF0ZSBpdC5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogRG9lcyBRRU1VIGV2ZW4gaGF2ZSBhbnkgZW11bGF0aW9uIGZvciBgZmJuaWNgPyBNeSBndXQgc2F5cyBuby4gVGhpcyBkcml2ZXIgaXMgdmVyeSBzcGVjaWFsaXplZC4gR2l2ZW4gdGhlIHNwZWNpZmljcyBvZiB0aGUgaGFyZHdhcmUsIGl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgdGhpcyBpcyBzb21ldGhpbmcgUUVNVSB3b3VsZCBib3RoZXIgdG8gaW1wbGVtZW50LlxuXG5TbywgcmVhbGlzdGljYWxseSwgdGhpcyBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aGV0aGVyIGl0J3MgR0NFIG9yIHBsYWluIG9sZCBRRU1VLiBUaGF0IG1lYW5zLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCBJIHNob3VsZCBtYXJrIGBXb3J0aEZ1enppbmdgIGFzIGBmYWxzZWAuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCB0aG91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBJJ3ZlIG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBhYm91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIENhbid0IGJlIHRvbyBjYXJlZnVsIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTI2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6Mzc6MDYuMjM2NDk5NjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjEwMzgyNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmJuaWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNzowNi40MzI2MTE0NzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MDU4MTg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBVbmZ1enphYmxlIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCBhbmFseXplZCB0aGUgY29kZS4gSSdtIGRlYWxpbmcgd2l0aCBtb2RpZmljYXRpb25zIHRvIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZXJ5IHNwZWNpZmljLCBoYXJkd2FyZS1kZXBlbmRlbnQgUENJIGRyaXZlciBkZXNpZ25lZCBmb3IgTWV0YSdzIG5ldHdvcmtpbmcgY2FyZHMuIFRoaXMgaXMgYSBwcm9ibGVtLiBUaGUgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdG9vbHMsIHRoZSB1c3VhbCBzdXNwZWN0cyBsaWtlIFFFTVUgYW5kIEdDRSwgZG9uJ3QgZW11bGF0ZSB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUuIFRoYXQgbWVhbnMgbm8gbWF0dGVyIGhvdyBoYXJkIEkgdHJ5LCBJIHdvbid0IGJlIGFibGUgdG8gZ2V0IHRoaXMgY29kZSB0byBleGVjdXRlIHVuZGVyIGEgZnV6emVyJ3MgcHJvYmluZy5cblxuSSd2ZSBleGhhdXN0ZWQgbXkgdXN1YWwgYXZlbnVlcy4gTm8gb3RoZXIgbWV0aG9kcyBvciB0ZXN0IGZyYW1ld29ya3MgYXJlIGFwcGxpY2FibGUgaGVyZS4gSSd2ZSBoaXQgYSBkZWFkIGVuZC4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gc2V0IHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHRvIGBmYWxzZWAuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gd2FzdGluZyBmdXJ0aGVyIHJlc291cmNlcyBvbiBzb21ldGhpbmcgdGhhdCdzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgdW5kZXIgc3RhbmRhcmQgZnV6emluZyBjb25kaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzM1LCJPdXRwdXRUb2tlbnMiOjgxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6Mzc6MTAuMzEzMTk1NDg0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZibmljIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciBNZXRhJ3MgbmV0d29yayBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgTWV0YSdzIG5ldHdvcmsgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvngw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 20:21:15 +0000 UTC FinishedAt: 2026-06-24 20:37:11 +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+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgTWV0YSYjMzk7cyBuZXR3b3JrIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDVhZmQzMjJkNDU2ZjFhNWExNTZkNWViMzhlOTk2MzQ5ZmQyMTE5ZDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAyMDozNjo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmhcbmluZGV4IGQwNzE1Njk1YzQzZTc1Li5lMzFkNmY4OGI3NDY5MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oXG5AQCAtNiw2ICYjNDM7Niw3IEBAXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L211dGV4LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wdHBfY2xvY2tfa2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC90eXBlcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcdTAwM2VcbkBAIC0yNyw2ICYjNDM7MjgsNyBAQCBzdHJ1Y3QgZmJuaWNfZGV2IHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkYmdfZmJkO1xuIFx0c3RydWN0IGRldmljZSAqaHdtb247XG4mIzQzO1x0c3RydWN0IG11dGV4IGh3bW9uX211dGV4OyAvKiBTZXJpYWxpemVzIGh3bW9uIHNlbnNvciByZWFkcyAqL1xuIFx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpmd19yZXBvcnRlcjtcbiBcdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqb3RwX3JlcG9ydGVyO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uY1xuaW5kZXggZGVmODU5OGFjZWVjZjcuLmFjMWI0YTQyMjY3N2RmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19od21vbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmNcbkBAIC0zMywxMCAmIzQzOzMzLDE3IEBAIHN0YXRpYyBpbnQgZmJuaWNfaHdtb25fcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsXG4ge1xuIFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gXHRjb25zdCBzdHJ1Y3QgZmJuaWNfbWFjICptYWMgPSBmYmQtXHUwMDNlbWFjO1xuLVx0aW50IGlkO1xuJiM0MztcdGludCBpZCwgZXJyO1xuIFxuIFx0aWQgPSBmYm5pY19od21vbl9zZW5zb3JfaWQodHlwZSk7XG4tXHRyZXR1cm4gaWQgXHUwMDNjIDAgPyBpZCA6IG1hYy1cdTAwM2VnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7XG4mIzQzO1x0aWYgKGlkIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIGlkO1xuJiM0MztcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmZiZC1cdTAwM2Vod21vbl9tdXRleCk7XG4mIzQzO1x0ZXJyID0gbWFjLVx1MDAzZWdldF9zZW5zb3IoZmJkLCBpZCwgdmFsKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9vcHMgZmJuaWNfaHdtb25fb3BzID0ge1xuQEAgLTYwLDYgJiM0Mzs2Nyw4IEBAIHZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxuIFx0aWYgKCFJU19SRUFDSEFCTEUoQ09ORklHX0hXTU9OKSlcbiBcdFx0cmV0dXJuO1xuIFxuJiM0MztcdG11dGV4X2luaXQoXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbiYjNDM7XG4gXHRmYmQtXHUwMDNlaHdtb24gPSBod21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9pbmZvKGZiZC1cdTAwM2VkZXYsIFwmIzM0O2ZibmljXCYjMzQ7LFxuIFx0XHRcdFx0XHRcdCAgICAgZmJkLCBcdTAwMjZmYm5pY19jaGlwX2luZm8sXG4gXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbkBAIC02OCw2ICYjNDM7NzcsNyBAQCB2b2lkIGZibmljX2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbiBcdFx0XHQgICBcJiMzNDtGYWlsZWQgdG8gcmVnaXN0ZXIgaHdtb24gZGV2aWNlICVwZVxcblwmIzM0OyxcbiBcdFx0XHQgICBmYmQtXHUwMDNlaHdtb24pO1xuIFx0XHRmYmQtXHUwMDNlaHdtb24gPSBOVUxMO1xuJiM0MztcdFx0bXV0ZXhfZGVzdHJveShcdTAwMjZmYmQtXHUwMDNlaHdtb25fbXV0ZXgpO1xuIFx0fVxuIH1cbiBcbkBAIC03OCw0ICYjNDM7ODgsNSBAQCB2b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxuIFxuIFx0aHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZmJkLVx1MDAzZWh3bW9uKTtcbiBcdGZiZC1cdTAwM2Vod21vbiA9IE5VTEw7XG4mIzQzO1x0bXV0ZXhfZGVzdHJveShcdTAwMjZmYmQtXHUwMDNlaHdtb25fbXV0ZXgpO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgbmV0d29yayBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVhZmQzMjJkNDU2ZjFhNWExNTZkNWViMzhlOTk2MzQ5ZmQyMTE5ZDMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAyMDozNjo0NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaAppbmRleCBkMDcxNTY5NWM0M2U3NS4uZTMxZDZmODhiNzQ2OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgKQEAgLTYsNiAmIzQzOzYsNyBAQAogCiAjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvaW8uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9wdHBfY2xvY2tfa2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdHlwZXMuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC93b3JrcXVldWUuaCZndDsKQEAgLTI3LDYgJiM0MzsyOCw3IEBAIHN0cnVjdCBmYm5pY19kZXYgewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7CiAJc3RydWN0IGRlbnRyeSAqZGJnX2ZiZDsKIAlzdHJ1Y3QgZGV2aWNlICpod21vbjsKJiM0MzsJc3RydWN0IG11dGV4IGh3bW9uX211dGV4OyAvKiBTZXJpYWxpemVzIGh3bW9uIHNlbnNvciByZWFkcyAqLwogCXN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqZndfcmVwb3J0ZXI7CiAJc3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpvdHBfcmVwb3J0ZXI7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYwppbmRleCBkZWY4NTk4YWNlZWNmNy4uYWMxYjRhNDIyNjc3ZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmMKQEAgLTMzLDEwICYjNDM7MzMsMTcgQEAgc3RhdGljIGludCBmYm5pY19od21vbl9yZWFkKHN0cnVjdCBkZXZpY2UgKmRldiwgZW51bSBod21vbl9zZW5zb3JfdHlwZXMgdHlwZSwKIHsKIAlzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAljb25zdCBzdHJ1Y3QgZmJuaWNfbWFjICptYWMgPSBmYmQtJmd0O21hYzsKLQlpbnQgaWQ7CiYjNDM7CWludCBpZCwgZXJyOwogCiAJaWQgPSBmYm5pY19od21vbl9zZW5zb3JfaWQodHlwZSk7Ci0JcmV0dXJuIGlkICZsdDsgMCA/IGlkIDogbWFjLSZndDtnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7CiYjNDM7CWlmIChpZCAmbHQ7IDApCiYjNDM7CQlyZXR1cm4gaWQ7CiYjNDM7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtmYmQtJmd0O2h3bW9uX211dGV4KTsKJiM0MzsJZXJyID0gbWFjLSZndDtnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2ZiZC0mZ3Q7aHdtb25fbXV0ZXgpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX29wcyBmYm5pY19od21vbl9vcHMgPSB7CkBAIC02MCw2ICYjNDM7NjcsOCBAQCB2b2lkIGZibmljX2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCkKIAlpZiAoIUlTX1JFQUNIQUJMRShDT05GSUdfSFdNT04pKQogCQlyZXR1cm47CiAKJiM0MzsJbXV0ZXhfaW5pdCgmYW1wO2ZiZC0mZ3Q7aHdtb25fbXV0ZXgpOwomIzQzOwogCWZiZC0mZ3Q7aHdtb24gPSBod21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9pbmZvKGZiZC0mZ3Q7ZGV2LCAmIzM0O2ZibmljJiMzNDssCiAJCQkJCQkgICAgIGZiZCwgJmFtcDtmYm5pY19jaGlwX2luZm8sCiAJCQkJCQkgICAgIE5VTEwpOwpAQCAtNjgsNiAmIzQzOzc3LDcgQEAgdm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpCiAJCQkgICAmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBod21vbiBkZXZpY2UgJXBlXG4mIzM0OywKIAkJCSAgIGZiZC0mZ3Q7aHdtb24pOwogCQlmYmQtJmd0O2h3bW9uID0gTlVMTDsKJiM0MzsJCW11dGV4X2Rlc3Ryb3koJmFtcDtmYmQtJmd0O2h3bW9uX211dGV4KTsKIAl9CiB9CiAKQEAgLTc4LDQgJiM0Mzs4OCw1IEBAIHZvaWQgZmJuaWNfaHdtb25fdW5yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpCiAKIAlod21vbl9kZXZpY2VfdW5yZWdpc3RlcihmYmQtJmd0O2h3bW9uKTsKIAlmYmQtJmd0O2h3bW9uID0gTlVMTDsKJiM0MzsJbXV0ZXhfZGVzdHJveSgmYW1wO2ZiZC0mZ3Q7aHdtb25fbXV0ZXgpOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTY2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTczCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgZmJuaWMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGZibmljYCBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgTWV0YS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIGFkZGluZyBhIG11dGV4LCBgaHdtb25fbXV0ZXhgLCB0byB0aGUgYHN0cnVjdCBmYm5pY19kZXZgIHN0cnVjdHVyZS4gVGhpcyBtdXRleCBpcyBpbml0aWFsaXplZCBkdXJpbmcgdGhlIGBmYm5pY19od21vbl9yZWdpc3RlcmAgZnVuY3Rpb24gYW5kLCBjcnVjaWFsbHksIGRlc3Ryb3llZCBpbiBgZmJuaWNfaHdtb25fdW5yZWdpc3RlcmAgYW5kIHdpdGhpbiB0aGUgZHJpdmVyJiMzOTtzIGVycm9yIGhhbmRsaW5nIHBhdGhzLiAgVGhlIGxvY2sgYW5kIHVubG9jayBvcGVyYXRpb25zIHVzaW5nIHRoaXMgbXV0ZXggYXJlIHN0cmF0ZWdpY2FsbHkgcGxhY2VkIHdpdGhpbiB0aGUgYGZibmljX2h3bW9uX3JlYWRgIGZ1bmN0aW9uLCBkaXJlY3RseSBhcm91bmQgdGhlIGNhbGwgdG8gYG1hYy0mZ3Q7Z2V0X3NlbnNvcigpYC4gVGhhdCYjMzk7cyBzbWFydDsgdGhleSYjMzk7cmUgY2xlYXJseSB0cnlpbmcgdG8gcHJvdGVjdCBhY2Nlc3MgdG8gdGhlIGhhcmR3YXJlIG1vbml0b3JpbmcgZGF0YS4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVsZXZhbnQqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaXQmIzM5O3MgZGVzaWduZWQgdG8gaW50ZXJhY3Qgd2l0aC4gSXMgaXQgYSBQQ0kgZGV2aWNlPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgd2UgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGlzIGRyaXZlciBnZXR0aW5nIGV4cG9zZWQgdG8gVk1zLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jYCBvciBhIHNpbWlsYXIgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UmIzM5O3MgYXR0YWNobWVudCBtZXRob2QuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IHRoZSByZWFsIHN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZibmljX2h3bW9uX3JlZ2lzdGVyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaD0xODY9dm9pZCBmYm5pY19md19mcmVlX21ieChzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODg6dm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oLTE4OS12b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmM9NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGlwX2luZm8gZmJuaWNfY2hpcF9pbmZvID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYy02NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYzo2NTp2b2lkIGZibmljX2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYy02Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNTk9c3RhdGljIGludCBmYm5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BjaS5jLTM0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzUwOlx0ZmJuaWNfaHdtb25fcmVnaXN0ZXIoZmJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmMtMzUxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjUKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBDSSBEcml2ZXIgYW5kIEVtdWxhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFBDSSBkcml2ZXIuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGVtdWxhdGUgdGhpcyB0aGluZyB3aXRoaW4gUUVNVT8gVGhhdCYjMzk7cyB0aGUgb2J2aW91cyBmaXJzdCBxdWVzdGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS4gVGhlIGFuc3dlciwgb2YgY291cnNlLCBoaW5nZXMgb24gd2hldGhlciBRRU1VIGhhcyBidWlsdC1pbiBlbXVsYXRpb24gZm9yIHRoYXQgc3BlY2lmaWMgZGV2aWNlLiBJdCYjMzk7cyBoaWdobHkgdW5saWtlbHkgdW5sZXNzIGl0JiMzOTtzIGEgdmVyeSBjb21tb24gb3Igd2VsbC1kZWZpbmVkIGRldmljZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiBgZmJuaWNgIGVtdWxhdGlvbiBpbiBRRU1VLCBvciBldmVuIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24uIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBhdGggdG8gaW52ZXN0aWdhdGUuIFRvIGJlZ2luIHRoYXQsIEkmIzM5O2xsIGdvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIGFueSBwb2ludGVycy4gSSYjMzk7bGwgc3RhcnQgd2l0aCBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL0tjb25maWdgIHRvIHNlZSBpZiB0aGUgZHJpdmVyIGlzIGV2ZW4gcHJvcGVybHkgY29uZmlndXJlZC4gRnJvbSBoZXJlLCBJIGNhbiBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgdGhlIHBvc3NpYmlsaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZCTklDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX01FVEFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzoyMDpjb25maWcgRkJOSUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O01ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODUxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCYjMzk7cyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGUgcHJvdmlkZWQgdGFzaywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZDoKCioqRGl2aW5nIGludG8gdGhlIEV0aGVybmV0IEtjb25maWcqKgoKQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGlzIHBhcnRpY3VsYXIgS2NvbmZpZyBmaWxlIGlzIGludGVyZXN0aW5nLiBCYXNlZCBvbiB0aGUgcGF0aCwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIG1ldGEtY29uZmlndXJhdGlvbiBmaWxlIGZvciBFdGhlcm5ldCBkcml2ZXJzLiBJdCB3b24mIzM5O3QgYmUgc3BlY2lmaWMgdG8gYSAqc2luZ2xlKiBoYXJkd2FyZSBkcml2ZXIsIGJ1dCByYXRoZXIgd2lsbCBsaWtlbHkgY29udGFpbiBkZWZpbml0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZ3JvdXBpbmcgcmVsYXRlZCB0byB0aGUgKmJyb2FkZXIgY2F0ZWdvcnkqIG9mIEV0aGVybmV0IHN1cHBvcnQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEkmIzM5O20gbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6CgoqICAgKipPdmVyYWxsIEV0aGVybmV0IEZlYXR1cmUgQ29udHJvbDoqKiBEb2VzIHRoaXMgZmlsZSBkZWZpbmUgYSB0b3AtbGV2ZWwgYENPTkZJR19FVEhFUk5FVGAgc3ltYm9sPyBPciBtYXliZSBpbmRpdmlkdWFsIGZlYXR1cmUgZmxhZ3MgZm9yIGRpZmZlcmVudCBFdGhlcm5ldCBmdW5jdGlvbmFsaXRpZXM/CiogICAqKkFyY2hpdGVjdHVyYWwgT3ZlcnZpZXdzKio6IEl0IHNob3VsZCwgYXQgYSBtaW5pbXVtLCBzaG93IHRoZSBzdHJ1Y3R1cmUgb2YgZmVhdHVyZXMgd2l0aCBhbiBvdmVydmlldyBvZiB0aGUgaGllcmFyY2h5IG9mIGZlYXR1cmVzLgoqICAgKipEZXBlbmRlbmNpZXMgYW5kIFJlbGF0aW9uc2hpcHM6KiogSSYjMzk7bSBrZWVuIHRvIHNlZSB0aGUgZGVwZW5kZW5jaWVzIGJldHdlZW4gZGlmZmVyZW50IEV0aGVybmV0IGZlYXR1cmVzIGFuZCBkcml2ZXJzLiBGb3IgZXhhbXBsZSwgZG9lcyBlbmFibGluZyBvbmUgZmVhdHVyZSBhdXRvbWF0aWNhbGx5IGVuYWJsZSBhbm90aGVyLCBvciBkb2VzIGl0IGRlcGVuZCBvbiB0aGUgYXZhaWxhYmlsaXR5IG9mIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0/IEFyZSB0aGVyZSBhbnkgY29uZmxpY3QgYmV0d2VlbiBvcHRpb25zIG9yIHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgc3ViLW1vZHVsZXMgdG8gYmUgY29uZmlndXJlZCBmaXJzdD8KKiAgICoqRHJpdmVyIEFic3RyYWN0aW9uOioqIFdpbGwgdGhpcyBzaG93IGFuIG92ZXJ2aWV3IG9mIGEgZHJpdmVyLW1vZGVsIGFuZCBpdHMgaW1wbGVtZW50YXRpb24/IEkmIzM5O2xsIHByb2JhYmx5IGJlIGxvb2tpbmcgZm9yIHNvbWUgYWJzdHJhY3Rpb24gdG8gYWxsb3cgYSBjb21tb24gQVBJIGZvciBFdGhlcm5ldCwgc28gdGhhdCBkaWZmZXJlbnQgZHJpdmVycyBjYW4gYmUgY3JlYXRlZC4KKiAgICoqSGFyZHdhcmUgVmFyaWFudHMgYW5kIE9wdGlvbnM6KiogQXJlIHRoZXJlIHByb3Zpc2lvbnMgZm9yIHNlbGVjdGluZyBzcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVyIHR5cGVzIChlLmcuLCBnaWdhYml0LCAxMEcsIGV0Yy4pIG9yIGludGVyZmFjZSBzdGFuZGFyZHM/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGhhcmR3YXJlIHJldmlzaW9ucywgc3BlZWQgc2V0dGluZ3MsIFBIWSBtYW5hZ2VtZW50LCBhbmQgYW55IG90aGVyIGJvYXJkLXNwZWNpZmljIG51YW5jZXMuCiogICAqKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uOioqIEkmIzM5O20gaW50ZXJlc3RlZCBpbiBob3cgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gaXMgaGFuZGxlZC4gQXJlIHRoZXJlIGFueSBgaWYuLi5kZXBlbmRzIG9uLi4uYCBzdGF0ZW1lbnRzIG9yIG90aGVyIGxvZ2ljIHRvIHNlbGVjdCBFdGhlcm5ldCBmZWF0dXJlcyBiYXNlZCBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBwbGF0Zm9ybSBvciBvdGhlciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zPwoqICAgKipEb2N1bWVudGF0aW9uOioqIEkmIzM5O20gaG9waW5nIHRoZXJlJiMzOTtzIHNvbWUgZ29vZCBkb2N1bWVudGF0aW9uIGFuZCBjb21tZW50cyB3aXRoaW4gdGhlIEtjb25maWcgZmlsZSBpdHNlbGYuIEV2ZW4gYSBoaWdoLWxldmVsIG92ZXJ2aWV3IHdpbGwgYmUgaGVscGZ1bCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlbnQgYW5kIHB1cnBvc2Ugb2YgdGhlIGNvbmZpZ3VyYXRpb25zLgoKSSYjMzk7bSByZWFkeSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGRlY2lwaGVyIHRoZSBkZXRhaWxzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZ2VtcyBhcmUgaGlkZGVuIGluIHRoaXMgS2NvbmZpZyEgVGhpcyBzaG91bGQgYmUgYSBnb29kIGluZGljYXRvciBvZiBob3cgdGhlIEV0aGVybmV0IHN1YnN5c3RlbSBpcyBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGlzIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBNZXRhIFBsYXRmb3JtcyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBORVRfVkVORE9SX01FVEFcbiAgIDc6XHRcdGJvb2wgXCYjMzQ7TWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1wmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgZGVzaWduZWQgYnkgTWV0YSwgc2F5IFkuXG4gIDExOlx0XHQgIFRoYXQmIzM5O3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXG4gIDEyOlx0XG4gIDEzOlx0XHQgIE5vdGUgdGhhdCB0aGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24gZG9lc24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IHRoZVxuICAxNDpcdFx0ICBrZXJuZWw6IHNheWluZyBOIHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yIHRvIHNraXAgYWxsXG4gIDE1Olx0XHQgIHRoZSBxdWVzdGlvbnMgYWJvdXQgTWV0YSBjYXJkcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZCBmb3JcbiAgMTY6XHRcdCAgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zLlxuICAxNzpcdFxuICAxODpcdGlmIE5FVF9WRU5ET1JfTUVUQVxuICAxOTpcdFxuICAyMDpcdGNvbmZpZyBGQk5JQ1xuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZVwmIzM0O1xuICAyMjpcdFx0ZGVwZW5kcyBvbiA2NEJJVCB8fCBDT01QSUxFX1RFU1RcbiAgMjM6XHRcdGRlcGVuZHMgb24gIVMzOTBcbiAgMjQ6XHRcdGRlcGVuZHMgb24gTUFYX1NLQl9GUkFHUyBcdTAwM2MgMjJcbiAgMjU6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICAyNjpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyNzpcdFx0c2VsZWN0IE5FVF9ERVZMSU5LXG4gIDI4Olx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDI5Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgMzA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gIDMxOlx0XHRzZWxlY3QgUExETUZXXG4gIDMyOlx0XHRoZWxwXG4gIDMzOlx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXG4gIDM0Olx0XG4gIDM1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuIFRoZSBtb2R1bGVcbiAgMzY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgZmJuaWMuICBNU0ktWCBpbnRlcnJ1cHQgc3VwcG9ydCBpcyByZXF1aXJlZC5cbiAgMzc6XHRcbiAgMzg6XHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MjYKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgSGFyZHdhcmUgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIE1ldGEgbmV0d29yayBjYXJkIGRyaXZlci4gSXQmIzM5O3MgYGZibmljYCwgcmlnaHQ/IEFuZCB0aGUgaW1tZWRpYXRlIGlzc3VlIGlzIHRoYXQgdGhlcmUmIzM5O3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIGl0IHdpdGhpbiB0aGUga2VybmVsLCB1bmxpa2UgdGhvc2UgaGVscGZ1bCB0b29scyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgLiBJdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHByZXR0eSBtdWNoIHVzZWxlc3MgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IHVubGVzcyBRRU1VLCBzcGVjaWZpY2FsbHksIGNhbiBlbXVsYXRlIGl0LgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogRG9lcyBRRU1VIGV2ZW4gaGF2ZSBhbnkgZW11bGF0aW9uIGZvciBgZmJuaWNgPyBNeSBndXQgc2F5cyBuby4gVGhpcyBkcml2ZXIgaXMgdmVyeSBzcGVjaWFsaXplZC4gR2l2ZW4gdGhlIHNwZWNpZmljcyBvZiB0aGUgaGFyZHdhcmUsIGl0JiMzOTtzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHRoaXMgaXMgc29tZXRoaW5nIFFFTVUgd291bGQgYm90aGVyIHRvIGltcGxlbWVudC4KClNvLCByZWFsaXN0aWNhbGx5LCB0aGlzIGlzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHdoZXRoZXIgaXQmIzM5O3MgR0NFIG9yIHBsYWluIG9sZCBRRU1VLiBUaGF0IG1lYW5zLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCBJIHNob3VsZCBtYXJrIGBXb3J0aEZ1enppbmdgIGFzIGBmYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgdGhvdWdoLCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgZG91YmxlLWNoZWNrIGlmIEkmIzM5O3ZlIG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBhYm91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIENhbiYjMzk7dCBiZSB0b28gY2FyZWZ1bCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYm5pYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3Rvb2xzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIwOjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMzUKCQkJCQkJCW91dHB1dDogODEKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBVbmZ1enphYmxlIENvZGUqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIGFuYWx5emVkIHRoZSBjb2RlLiBJJiMzOTttIGRlYWxpbmcgd2l0aCBtb2RpZmljYXRpb25zIHRvIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZXJ5IHNwZWNpZmljLCBoYXJkd2FyZS1kZXBlbmRlbnQgUENJIGRyaXZlciBkZXNpZ25lZCBmb3IgTWV0YSYjMzk7cyBuZXR3b3JraW5nIGNhcmRzLiBUaGlzIGlzIGEgcHJvYmxlbS4gVGhlIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHRvb2xzLCB0aGUgdXN1YWwgc3VzcGVjdHMgbGlrZSBRRU1VIGFuZCBHQ0UsIGRvbiYjMzk7dCBlbXVsYXRlIHRoaXMgcGFydGljdWxhciBoYXJkd2FyZS4gVGhhdCBtZWFucyBubyBtYXR0ZXIgaG93IGhhcmQgSSB0cnksIEkgd29uJiMzOTt0IGJlIGFibGUgdG8gZ2V0IHRoaXMgY29kZSB0byBleGVjdXRlIHVuZGVyIGEgZnV6emVyJiMzOTtzIHByb2JpbmcuCgpJJiMzOTt2ZSBleGhhdXN0ZWQgbXkgdXN1YWwgYXZlbnVlcy4gTm8gb3RoZXIgbWV0aG9kcyBvciB0ZXN0IGZyYW1ld29ya3MgYXJlIGFwcGxpY2FibGUgaGVyZS4gSSYjMzk7dmUgaGl0IGEgZGVhZCBlbmQuIFRoZXJlZm9yZSwgSSYjMzk7bSBnb2luZyB0byBzZXQgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgdG8gYGZhbHNlYC4gVGhlcmUmIzM5O3Mgbm8gcG9pbnQgaW4gd2FzdGluZyBmdXJ0aGVyIHJlc291cmNlcyBvbiBzb21ldGhpbmcgdGhhdCYjMzk7cyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIHVuZGVyIHN0YW5kYXJkIGZ1enppbmcgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIE1ldGEmIzM5O3MgbmV0d29yayBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgTWV0YSYjMzk7cyBuZXR3b3JrIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIwOjM2OjQ1LjE1NzMxMzU5MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MTU1OTEzNzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIE1ldGEncyBuZXR3b3JrIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6MzY6NDUuMTU3MzE4NDYxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTc3MDcxMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YWZkMzIyZDQ1NmYxYTVhMTU2ZDVlYjM4ZTk5NjM0OWZkMjExOWQzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDIwOjM2OjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaFxcbmluZGV4IGQwNzE1Njk1YzQzZTc1Li5lMzFkNmY4OGI3NDY5MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmhcXG5AQCAtNiw2ICs2LDcgQEBcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXFx1MDAzZVxcbkBAIC0yNyw2ICsyOCw3IEBAIHN0cnVjdCBmYm5pY19kZXYge1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbiBcXHRzdHJ1Y3QgZGVudHJ5ICpkYmdfZmJkO1xcbiBcXHRzdHJ1Y3QgZGV2aWNlICpod21vbjtcXG4rXFx0c3RydWN0IG11dGV4IGh3bW9uX211dGV4OyAvKiBTZXJpYWxpemVzIGh3bW9uIHNlbnNvciByZWFkcyAqL1xcbiBcXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKmZ3X3JlcG9ydGVyO1xcbiBcXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKm90cF9yZXBvcnRlcjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uY1xcbmluZGV4IGRlZjg1OThhY2VlY2Y3Li5hYzFiNGE0MjI2NzdkZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmNcXG5AQCAtMzMsMTAgKzMzLDE3IEBAIHN0YXRpYyBpbnQgZmJuaWNfaHdtb25fcmVhZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGVudW0gaHdtb25fc2Vuc29yX3R5cGVzIHR5cGUsXFxuIHtcXG4gXFx0c3RydWN0IGZibmljX2RldiAqZmJkID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuIFxcdGNvbnN0IHN0cnVjdCBmYm5pY19tYWMgKm1hYyA9IGZiZC1cXHUwMDNlbWFjO1xcbi1cXHRpbnQgaWQ7XFxuK1xcdGludCBpZCwgZXJyO1xcbiBcXG4gXFx0aWQgPSBmYm5pY19od21vbl9zZW5zb3JfaWQodHlwZSk7XFxuLVxcdHJldHVybiBpZCBcXHUwMDNjIDAgPyBpZCA6IG1hYy1cXHUwMDNlZ2V0X3NlbnNvcihmYmQsIGlkLCB2YWwpO1xcbitcXHRpZiAoaWQgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gaWQ7XFxuK1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZmYmQtXFx1MDAzZWh3bW9uX211dGV4KTtcXG4rXFx0ZXJyID0gbWFjLVxcdTAwM2VnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2ZmJkLVxcdTAwM2Vod21vbl9tdXRleCk7XFxuK1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGh3bW9uX29wcyBmYm5pY19od21vbl9vcHMgPSB7XFxuQEAgLTYwLDYgKzY3LDggQEAgdm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXFxuIFxcdGlmICghSVNfUkVBQ0hBQkxFKENPTkZJR19IV01PTikpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuK1xcdG11dGV4X2luaXQoXFx1MDAyNmZiZC1cXHUwMDNlaHdtb25fbXV0ZXgpO1xcbitcXG4gXFx0ZmJkLVxcdTAwM2Vod21vbiA9IGh3bW9uX2RldmljZV9yZWdpc3Rlcl93aXRoX2luZm8oZmJkLVxcdTAwM2VkZXYsIFxcXCJmYm5pY1xcXCIsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZmJkLCBcXHUwMDI2ZmJuaWNfY2hpcF9pbmZvLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbkBAIC02OCw2ICs3Nyw3IEBAIHZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbiBcXHRcXHRcXHQgICBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGh3bW9uIGRldmljZSAlcGVcXFxcblxcXCIsXFxuIFxcdFxcdFxcdCAgIGZiZC1cXHUwMDNlaHdtb24pO1xcbiBcXHRcXHRmYmQtXFx1MDAzZWh3bW9uID0gTlVMTDtcXG4rXFx0XFx0bXV0ZXhfZGVzdHJveShcXHUwMDI2ZmJkLVxcdTAwM2Vod21vbl9tdXRleCk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtNzgsNCArODgsNSBAQCB2b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxcbiBcXG4gXFx0aHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZmJkLVxcdTAwM2Vod21vbik7XFxuIFxcdGZiZC1cXHUwMDNlaHdtb24gPSBOVUxMO1xcbitcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZmYmQtXFx1MDAzZWh3bW9uX211dGV4KTtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNjo0NS41MTU4MDk0MTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI0Nzk3NDEyMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmJuaWMgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgZm9yIE1ldGEncyBuZXR3b3JrIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIHRoZSBjb2RlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YWZkMzIyZDQ1NmYxYTVhMTU2ZDVlYjM4ZTk5NjM0OWZkMjExOWQzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMjA6MzY6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmhcbmluZGV4IGQwNzE1Njk1YzQzZTc1Li5lMzFkNmY4OGI3NDY5MyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pYy5oXG5AQCAtNiw2ICs2LDcgQEBcbiBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2lvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHRwX2Nsb2NrX2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG5AQCAtMjcsNiArMjgsNyBAQCBzdHJ1Y3QgZmJuaWNfZGV2IHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4gXHRzdHJ1Y3QgZGVudHJ5ICpkYmdfZmJkO1xuIFx0c3RydWN0IGRldmljZSAqaHdtb247XG4rXHRzdHJ1Y3QgbXV0ZXggaHdtb25fbXV0ZXg7IC8qIFNlcmlhbGl6ZXMgaHdtb24gc2Vuc29yIHJlYWRzICovXG4gXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKmZ3X3JlcG9ydGVyO1xuIFx0c3RydWN0IGRldmxpbmtfaGVhbHRoX3JlcG9ydGVyICpvdHBfcmVwb3J0ZXI7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19od21vbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19od21vbi5jXG5pbmRleCBkZWY4NTk4YWNlZWNmNy4uYWMxYjRhNDIyNjc3ZGYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uY1xuQEAgLTMzLDEwICszMywxNyBAQCBzdGF0aWMgaW50IGZibmljX2h3bW9uX3JlYWQoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGh3bW9uX3NlbnNvcl90eXBlcyB0eXBlLFxuIHtcbiBcdHN0cnVjdCBmYm5pY19kZXYgKmZiZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuIFx0Y29uc3Qgc3RydWN0IGZibmljX21hYyAqbWFjID0gZmJkLVx1MDAzZW1hYztcbi1cdGludCBpZDtcbitcdGludCBpZCwgZXJyO1xuIFxuIFx0aWQgPSBmYm5pY19od21vbl9zZW5zb3JfaWQodHlwZSk7XG4tXHRyZXR1cm4gaWQgXHUwMDNjIDAgPyBpZCA6IG1hYy1cdTAwM2VnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7XG4rXHRpZiAoaWQgXHUwMDNjIDApXG4rXHRcdHJldHVybiBpZDtcbitcbitcdG11dGV4X2xvY2soXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbitcdGVyciA9IG1hYy1cdTAwM2VnZXRfc2Vuc29yKGZiZCwgaWQsIHZhbCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbitcbitcdHJldHVybiBlcnI7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fb3BzIGZibmljX2h3bW9uX29wcyA9IHtcbkBAIC02MCw2ICs2Nyw4IEBAIHZvaWQgZmJuaWNfaHdtb25fcmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxuIFx0aWYgKCFJU19SRUFDSEFCTEUoQ09ORklHX0hXTU9OKSlcbiBcdFx0cmV0dXJuO1xuIFxuK1x0bXV0ZXhfaW5pdChcdTAwMjZmYmQtXHUwMDNlaHdtb25fbXV0ZXgpO1xuK1xuIFx0ZmJkLVx1MDAzZWh3bW9uID0gaHdtb25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfaW5mbyhmYmQtXHUwMDNlZGV2LCBcImZibmljXCIsXG4gXHRcdFx0XHRcdFx0ICAgICBmYmQsIFx1MDAyNmZibmljX2NoaXBfaW5mbyxcbiBcdFx0XHRcdFx0XHQgICAgIE5VTEwpO1xuQEAgLTY4LDYgKzc3LDcgQEAgdm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4gXHRcdFx0ICAgXCJGYWlsZWQgdG8gcmVnaXN0ZXIgaHdtb24gZGV2aWNlICVwZVxcblwiLFxuIFx0XHRcdCAgIGZiZC1cdTAwM2Vod21vbik7XG4gXHRcdGZiZC1cdTAwM2Vod21vbiA9IE5VTEw7XG4rXHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2ZmJkLVx1MDAzZWh3bW9uX211dGV4KTtcbiBcdH1cbiB9XG4gXG5AQCAtNzgsNCArODgsNSBAQCB2b2lkIGZibmljX2h3bW9uX3VucmVnaXN0ZXIoc3RydWN0IGZibmljX2RldiAqZmJkKVxuIFxuIFx0aHdtb25fZGV2aWNlX3VucmVnaXN0ZXIoZmJkLVx1MDAzZWh3bW9uKTtcbiBcdGZiZC1cdTAwM2Vod21vbiA9IE5VTEw7XG4rXHRtdXRleF9kZXN0cm95KFx1MDAyNmZiZC1cdTAwM2Vod21vbl9tdXRleCk7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6MzY6NDUuNTE1ODEwODI0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3ODU5MDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGZibmljIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgZmJuaWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBNZXRhLXNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBUaGUgY29yZSBvZiBpdCByZXZvbHZlcyBhcm91bmQgYWRkaW5nIGEgbXV0ZXgsIGBod21vbl9tdXRleGAsIHRvIHRoZSBgc3RydWN0IGZibmljX2RldmAgc3RydWN0dXJlLiBUaGlzIG11dGV4IGlzIGluaXRpYWxpemVkIGR1cmluZyB0aGUgYGZibmljX2h3bW9uX3JlZ2lzdGVyYCBmdW5jdGlvbiBhbmQsIGNydWNpYWxseSwgZGVzdHJveWVkIGluIGBmYm5pY19od21vbl91bnJlZ2lzdGVyYCBhbmQgd2l0aGluIHRoZSBkcml2ZXIncyBlcnJvciBoYW5kbGluZyBwYXRocy4gIFRoZSBsb2NrIGFuZCB1bmxvY2sgb3BlcmF0aW9ucyB1c2luZyB0aGlzIG11dGV4IGFyZSBzdHJhdGVnaWNhbGx5IHBsYWNlZCB3aXRoaW4gdGhlIGBmYm5pY19od21vbl9yZWFkYCBmdW5jdGlvbiwgZGlyZWN0bHkgYXJvdW5kIHRoZSBjYWxsIHRvIGBtYWMtXHUwMDNlZ2V0X3NlbnNvcigpYC4gVGhhdCdzIHNtYXJ0OyB0aGV5J3JlIGNsZWFybHkgdHJ5aW5nIHRvIHByb3RlY3QgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZSBtb25pdG9yaW5nIGRhdGEuXG5cbk15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVsZXZhbnQqIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgaXQncyBkZXNpZ25lZCB0byBpbnRlcmFjdCB3aXRoLiBJcyBpdCBhIFBDSSBkZXZpY2U/IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB3ZSBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMgZHJpdmVyIGdldHRpbmcgZXhwb3NlZCB0byBWTXMuIEknbGwgbmVlZCB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuY2Agb3IgYSBzaW1pbGFyIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlJ3MgYXR0YWNobWVudCBtZXRob2QuIFRoaXMgaXMgd2hlcmUgSSdsbCBnZXQgdGhlIHJlYWwgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNjo0OS43OTQ0MDMzNDVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkzMDc1MzI1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYm5pY19od21vbl9yZWdpc3RlclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmg9MTg2PXZvaWQgZmJuaWNfZndfZnJlZV9tYngoc3RydWN0IGZibmljX2RldiAqZmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljLmgtMTg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaDoxODg6dm9pZCBmYm5pY19od21vbl9yZWdpc3RlcihzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWMuaC0xODktdm9pZCBmYm5pY19od21vbl91bnJlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmM9NjA9c3RhdGljIGNvbnN0IHN0cnVjdCBod21vbl9jaGlwX2luZm8gZmJuaWNfY2hpcF9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19od21vbi5jLTY0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfaHdtb24uYzo2NTp2b2lkIGZibmljX2h3bW9uX3JlZ2lzdGVyKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX2h3bW9uLmMtNjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYz0yNTk9c3RhdGljIGludCBmYm5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmMtMzQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGNpLmM6MzUwOlxcdGZibmljX2h3bW9uX3JlZ2lzdGVyKGZiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19wY2kuYy0zNTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIwOjM2OjUxLjcyNTE2NDkxOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODk4MTI0MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQQ0kgRHJpdmVyIGFuZCBFbXVsYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgUENJIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gd2UgZW11bGF0ZSB0aGlzIHRoaW5nIHdpdGhpbiBRRU1VPyBUaGF0J3MgdGhlIG9idmlvdXMgZmlyc3QgcXVlc3Rpb24gd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUuIFRoZSBhbnN3ZXIsIG9mIGNvdXJzZSwgaGluZ2VzIG9uIHdoZXRoZXIgUUVNVSBoYXMgYnVpbHQtaW4gZW11bGF0aW9uIGZvciB0aGF0IHNwZWNpZmljIGRldmljZS4gSXQncyBoaWdobHkgdW5saWtlbHkgdW5sZXNzIGl0J3MgYSB2ZXJ5IGNvbW1vbiBvciB3ZWxsLWRlZmluZWQgZGV2aWNlLiBMZXQncyBzZWUgaWYgdGhlcmUncyBhbnkgbWVudGlvbiBvZiBgZmJuaWNgIGVtdWxhdGlvbiBpbiBRRU1VLCBvciBldmVuIHNvbWUgc29ydCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24uIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBsb2dpY2FsIHBhdGggdG8gaW52ZXN0aWdhdGUuIFRvIGJlZ2luIHRoYXQsIEknbGwgZ28gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgYW55IHBvaW50ZXJzLiBJJ2xsIHN0YXJ0IHdpdGggbG9va2luZyBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9LY29uZmlnYCB0byBzZWUgaWYgdGhlIGRyaXZlciBpcyBldmVuIHByb3Blcmx5IGNvbmZpZ3VyZWQuIEZyb20gaGVyZSwgSSBjYW4gZ2V0IGEgYmV0dGVyIHNlbnNlIG9mIHRoZSBwb3NzaWJpbGl0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDY1LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6MzY6NTUuMjE0OTc5MDA0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTkwMjI2ODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZCTklDXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX01FVEFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnOjIwOmNvbmZpZyBGQk5JQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiTWV0YSBQbGF0Zm9ybXMgSG9zdCBOZXR3b3JrIEludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6MzY6NTcuMjM0MDA2NTg3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5MTY5NDIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGUgcHJvdmlkZWQgdGFzaywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBFdGhlcm5ldCBLY29uZmlnKipcblxuQWxyaWdodCwgdGltZSB0byBjcmFjayBvcGVuIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdgLiBUaGlzIHBhcnRpY3VsYXIgS2NvbmZpZyBmaWxlIGlzIGludGVyZXN0aW5nLiBCYXNlZCBvbiB0aGUgcGF0aCwgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEgbWV0YS1jb25maWd1cmF0aW9uIGZpbGUgZm9yIEV0aGVybmV0IGRyaXZlcnMuIEl0IHdvbid0IGJlIHNwZWNpZmljIHRvIGEgKnNpbmdsZSogaGFyZHdhcmUgZHJpdmVyLCBidXQgcmF0aGVyIHdpbGwgbGlrZWx5IGNvbnRhaW4gZGVmaW5pdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGdyb3VwaW5nIHJlbGF0ZWQgdG8gdGhlICpicm9hZGVyIGNhdGVnb3J5KiBvZiBFdGhlcm5ldCBzdXBwb3J0IHdpdGhpbiB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBzeXN0ZW0uIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqT3ZlcmFsbCBFdGhlcm5ldCBGZWF0dXJlIENvbnRyb2w6KiogRG9lcyB0aGlzIGZpbGUgZGVmaW5lIGEgdG9wLWxldmVsIGBDT05GSUdfRVRIRVJORVRgIHN5bWJvbD8gT3IgbWF5YmUgaW5kaXZpZHVhbCBmZWF0dXJlIGZsYWdzIGZvciBkaWZmZXJlbnQgRXRoZXJuZXQgZnVuY3Rpb25hbGl0aWVzP1xuKiAgICoqQXJjaGl0ZWN0dXJhbCBPdmVydmlld3MqKjogSXQgc2hvdWxkLCBhdCBhIG1pbmltdW0sIHNob3cgdGhlIHN0cnVjdHVyZSBvZiBmZWF0dXJlcyB3aXRoIGFuIG92ZXJ2aWV3IG9mIHRoZSBoaWVyYXJjaHkgb2YgZmVhdHVyZXMuXG4qICAgKipEZXBlbmRlbmNpZXMgYW5kIFJlbGF0aW9uc2hpcHM6KiogSSdtIGtlZW4gdG8gc2VlIHRoZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBkaWZmZXJlbnQgRXRoZXJuZXQgZmVhdHVyZXMgYW5kIGRyaXZlcnMuIEZvciBleGFtcGxlLCBkb2VzIGVuYWJsaW5nIG9uZSBmZWF0dXJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlIGFub3RoZXIsIG9yIGRvZXMgaXQgZGVwZW5kIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgYSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybT8gQXJlIHRoZXJlIGFueSBjb25mbGljdCBiZXR3ZWVuIG9wdGlvbnMgb3IgcmVxdWlyZW1lbnRzIGZvciBvdGhlciBzdWItbW9kdWxlcyB0byBiZSBjb25maWd1cmVkIGZpcnN0P1xuKiAgICoqRHJpdmVyIEFic3RyYWN0aW9uOioqIFdpbGwgdGhpcyBzaG93IGFuIG92ZXJ2aWV3IG9mIGEgZHJpdmVyLW1vZGVsIGFuZCBpdHMgaW1wbGVtZW50YXRpb24/IEknbGwgcHJvYmFibHkgYmUgbG9va2luZyBmb3Igc29tZSBhYnN0cmFjdGlvbiB0byBhbGxvdyBhIGNvbW1vbiBBUEkgZm9yIEV0aGVybmV0LCBzbyB0aGF0IGRpZmZlcmVudCBkcml2ZXJzIGNhbiBiZSBjcmVhdGVkLlxuKiAgICoqSGFyZHdhcmUgVmFyaWFudHMgYW5kIE9wdGlvbnM6KiogQXJlIHRoZXJlIHByb3Zpc2lvbnMgZm9yIHNlbGVjdGluZyBzcGVjaWZpYyBFdGhlcm5ldCBjb250cm9sbGVyIHR5cGVzIChlLmcuLCBnaWdhYml0LCAxMEcsIGV0Yy4pIG9yIGludGVyZmFjZSBzdGFuZGFyZHM/IEknbGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gaGFyZHdhcmUgcmV2aXNpb25zLCBzcGVlZCBzZXR0aW5ncywgUEhZIG1hbmFnZW1lbnQsIGFuZCBhbnkgb3RoZXIgYm9hcmQtc3BlY2lmaWMgbnVhbmNlcy5cbiogICAqKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uOioqIEknbSBpbnRlcmVzdGVkIGluIGhvdyBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpcyBoYW5kbGVkLiBBcmUgdGhlcmUgYW55IGBpZi4uLmRlcGVuZHMgb24uLi5gIHN0YXRlbWVudHMgb3Igb3RoZXIgbG9naWMgdG8gc2VsZWN0IEV0aGVybmV0IGZlYXR1cmVzIGJhc2VkIG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHBsYXRmb3JtIG9yIG90aGVyIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnM/XG4qICAgKipEb2N1bWVudGF0aW9uOioqIEknbSBob3BpbmcgdGhlcmUncyBzb21lIGdvb2QgZG9jdW1lbnRhdGlvbiBhbmQgY29tbWVudHMgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgaXRzZWxmLiBFdmVuIGEgaGlnaC1sZXZlbCBvdmVydmlldyB3aWxsIGJlIGhlbHBmdWwgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW50IGFuZCBwdXJwb3NlIG9mIHRoZSBjb25maWd1cmF0aW9ucy5cblxuSSdtIHJlYWR5IHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgZGVjaXBoZXIgdGhlIGRldGFpbHMuIExldCdzIHNlZSB3aGF0IGdlbXMgYXJlIGhpZGRlbiBpbiB0aGlzIEtjb25maWchIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBpbmRpY2F0b3Igb2YgaG93IHRoZSBFdGhlcm5ldCBzdWJzeXN0ZW0gaXMgc3RydWN0dXJlZCB3aXRoaW4gdGhpcyBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNzowMS43MjU3MDI4ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ldGEgUGxhdGZvcm1zIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIE5FVF9WRU5ET1JfTUVUQVxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiTWV0YSBQbGF0Zm9ybXMgZGV2aWNlc1xcXCJcXG4gICA4OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGRlc2lnbmVkIGJ5IE1ldGEsIHNheSBZLlxcbiAgMTE6XFx0XFx0ICBUaGF0J3MgTWV0YSBhcyBpbiB0aGUgcGFyZW50IGNvbXBhbnkgb2YgRmFjZWJvb2suXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDE0OlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTU6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IE1ldGEgY2FyZHMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWQgZm9yXFxuICAxNjpcXHRcXHQgIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHF1ZXN0aW9ucy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgTkVUX1ZFTkRPUl9NRVRBXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBGQk5JQ1xcbiAgMjE6XFx0XFx0dHJpc3RhdGUgXFxcIk1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2VcXFwiXFxuICAyMjpcXHRcXHRkZXBlbmRzIG9uIDY0QklUIHx8IENPTVBJTEVfVEVTVFxcbiAgMjM6XFx0XFx0ZGVwZW5kcyBvbiAhUzM5MFxcbiAgMjQ6XFx0XFx0ZGVwZW5kcyBvbiBNQVhfU0tCX0ZSQUdTIFxcdTAwM2MgMjJcXG4gIDI1OlxcdFxcdGRlcGVuZHMgb24gUENJX01TSVxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjc6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAyODpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAyOTpcXHRcXHRzZWxlY3QgUENTX1hQQ1NcXG4gIDMwOlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAzMTpcXHRcXHRzZWxlY3QgUExETUZXXFxuICAzMjpcXHRcXHRoZWxwXFxuICAzMzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIE1ldGEgUGxhdGZvcm1zIEhvc3QgTmV0d29yayBJbnRlcmZhY2UuXFxuICAzNDpcXHRcXG4gIDM1OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlIG1vZHVsZVxcbiAgMzY6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBmYm5pYy4gIE1TSS1YIGludGVycnVwdCBzdXBwb3J0IGlzIHJlcXVpcmVkLlxcbiAgMzc6XFx0XFxuICAzODpcXHRlbmRpZiAjIE5FVF9WRU5ET1JfTUVUQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNzowMS43MjU3NjM0MjNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTEwNzM0NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIEhhcmR3YXJlIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgTWV0YSBuZXR3b3JrIGNhcmQgZHJpdmVyLiBJdCdzIGBmYm5pY2AsIHJpZ2h0PyBBbmQgdGhlIGltbWVkaWF0ZSBpc3N1ZSBpcyB0aGF0IHRoZXJlJ3Mgbm8gc29mdHdhcmUgZW11bGF0aW9uIG9mIGl0IHdpdGhpbiB0aGUga2VybmVsLCB1bmxpa2UgdGhvc2UgaGVscGZ1bCB0b29scyBsaWtlIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZoY2lgLiBJdCdzIGEgUENJIGRldmljZSwgd2hpY2ggbWVhbnMgaXQncyBwcmV0dHkgbXVjaCB1c2VsZXNzIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCB1bmxlc3MgUUVNVSwgc3BlY2lmaWNhbGx5LCBjYW4gZW11bGF0ZSBpdC5cblxuTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogRG9lcyBRRU1VIGV2ZW4gaGF2ZSBhbnkgZW11bGF0aW9uIGZvciBgZmJuaWNgPyBNeSBndXQgc2F5cyBuby4gVGhpcyBkcml2ZXIgaXMgdmVyeSBzcGVjaWFsaXplZC4gR2l2ZW4gdGhlIHNwZWNpZmljcyBvZiB0aGUgaGFyZHdhcmUsIGl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgdGhpcyBpcyBzb21ldGhpbmcgUUVNVSB3b3VsZCBib3RoZXIgdG8gaW1wbGVtZW50LlxuXG5TbywgcmVhbGlzdGljYWxseSwgdGhpcyBpcyB1bnJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aGV0aGVyIGl0J3MgR0NFIG9yIHBsYWluIG9sZCBRRU1VLiBUaGF0IG1lYW5zLCBmb3IgYWxsIGludGVudHMgYW5kIHB1cnBvc2VzLCBJIHNob3VsZCBtYXJrIGBXb3J0aEZ1enppbmdgIGFzIGBmYWxzZWAuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCB0aG91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGRvdWJsZS1jaGVjayBpZiBJJ3ZlIG1pc3NlZCBzb21ldGhpbmcgb2J2aW91cyBhYm91dCBzb2Z0d2FyZSBlbXVsYXRpb24uIENhbid0IGJlIHRvbyBjYXJlZnVsIVxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTI2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6Mzc6MDYuMjM2NDk5NjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjEwMzgyNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmJuaWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidG9vbHMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMDozNzowNi40MzI2MTE0NzZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4MDU4MTg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBVbmZ1enphYmxlIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCBhbmFseXplZCB0aGUgY29kZS4gSSdtIGRlYWxpbmcgd2l0aCBtb2RpZmljYXRpb25zIHRvIHRoZSBgZmJuaWNgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZXJ5IHNwZWNpZmljLCBoYXJkd2FyZS1kZXBlbmRlbnQgUENJIGRyaXZlciBkZXNpZ25lZCBmb3IgTWV0YSdzIG5ldHdvcmtpbmcgY2FyZHMuIFRoaXMgaXMgYSBwcm9ibGVtLiBUaGUgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gdG9vbHMsIHRoZSB1c3VhbCBzdXNwZWN0cyBsaWtlIFFFTVUgYW5kIEdDRSwgZG9uJ3QgZW11bGF0ZSB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUuIFRoYXQgbWVhbnMgbm8gbWF0dGVyIGhvdyBoYXJkIEkgdHJ5LCBJIHdvbid0IGJlIGFibGUgdG8gZ2V0IHRoaXMgY29kZSB0byBleGVjdXRlIHVuZGVyIGEgZnV6emVyJ3MgcHJvYmluZy5cblxuSSd2ZSBleGhhdXN0ZWQgbXkgdXN1YWwgYXZlbnVlcy4gTm8gb3RoZXIgbWV0aG9kcyBvciB0ZXN0IGZyYW1ld29ya3MgYXJlIGFwcGxpY2FibGUgaGVyZS4gSSd2ZSBoaXQgYSBkZWFkIGVuZC4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gc2V0IHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHRvIGBmYWxzZWAuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gd2FzdGluZyBmdXJ0aGVyIHJlc291cmNlcyBvbiBzb21ldGhpbmcgdGhhdCdzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgdW5kZXIgc3RhbmRhcmQgZnV6emluZyBjb25kaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzM1LCJPdXRwdXRUb2tlbnMiOjgxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjA6Mzc6MTAuMzEzMTk1NDg0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZibmljIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciBNZXRhJ3MgbmV0d29yayBjYXJkcy4gVGhpcyBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgY29kZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmYm5pYyBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgTWV0YSdzIG5ldHdvcmsgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIGNvZGUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxvngw[1] Phase: Running StartedAt: 2026-06-24 20:37:33 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxvngw[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-24 20:37:33 +0000 UTC FinishedAt: 2026-06-24 20:37:37 +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,}