Name: series-workflow5nrhm Phase: Failed StartedAt: 2026-08-31 05:24:11 +0000 UTC FinishedAt: 2026-08-31 05:44:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nrhm[0] Phase: Succeeded StartedAt: 2026-08-31 05:24:11 +0000 UTC FinishedAt: 2026-08-31 05:44:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nrhm[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 05:24:11 +0000 UTC FinishedAt: 2026-08-31 05:44:13 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIGhhcmR3YXJlIG92ZXIgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTdiMTgwYTAzZDQwNWI4ZDQ1ZmFkMjRhNzY3MjhmYzZmNzI4NTc3YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA1OjQzOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbmluZGV4IDFhOWQ2ZjgzYTAyMzIuLjc4NDQyY2MzNzY0MzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbkBAIC0xNDg2LDYgJiM0MzsxNDg2LDQxIEBAIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcbiBcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4gXHR9LFxuIFxuJiM0MztcdFtLU1o5ODk3U10gPSB7XG4mIzQzO1x0XHQuY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQsXG4mIzQzO1x0XHQuZGV2X25hbWUgPSBcJiMzNDtLU1o5ODk3U1wmIzM0OyxcbiYjNDM7XHRcdC5udW1fdmxhbnMgPSA0MDk2LFxuJiM0MztcdFx0Lm51bV9hbHVzID0gNDA5NixcbiYjNDM7XHRcdC5udW1fc3RhdGljcyA9IDE2LFxuJiM0MztcdFx0LmNwdV9wb3J0cyA9IDB4N0YsXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xuJiM0MztcdFx0LnBvcnRfY250ID0gNyxcdFx0LyogdG90YWwgcGh5c2ljYWwgcG9ydCBjb3VudCAqL1xuJiM0MztcdFx0LnBvcnRfbmlycXMgPSAyLFxuJiM0MztcdFx0Lm51bV90eF9xdWV1ZXMgPSA0LFxuJiM0MztcdFx0Lm51bV9pcG1zID0gOCxcbiYjNDM7XHRcdC5vcHMgPSBcdTAwMjZrc3o5NDc3X2Rldl9vcHMsXG4mIzQzO1x0XHQuc3dpdGNoX29wcyA9IFx1MDAyNmtzejk0Nzdfc3dpdGNoX29wcyxcbiYjNDM7XHRcdC5waHlsaW5rX21hY19vcHMgPSBcdTAwMjZrc3o5NDc3X3BoeWxpbmtfbWFjX29wcyxcbiYjNDM7XHRcdC5waHlfZXJyYXRhXzk0NzcgPSB0cnVlLFxuJiM0MztcdFx0Lm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLFxuJiM0MztcdFx0Lm1pYl9jbnQgPSBBUlJBWV9TSVpFKGtzejk0NzdfbWliX25hbWVzKSxcbiYjNDM7XHRcdC5yZWdfbWliX2NudCA9IE1JQl9DT1VOVEVSX05VTSxcbiYjNDM7XHRcdC5yZWdzID0ga3N6OTQ3N19yZWdzLFxuJiM0MztcdFx0Lm1hc2tzID0ga3N6OTQ3N19tYXNrcyxcbiYjNDM7XHRcdC5zaGlmdHMgPSBrc3o5NDc3X3NoaWZ0cyxcbiYjNDM7XHRcdC54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLFxuJiM0MztcdFx0LnhtaWlfY3RybDEgPSBrc3o5NDc3X3htaWlfY3RybDEsXG4mIzQzO1x0XHQuc3VwcG9ydHNfbWlpXHQ9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbiYjNDM7XHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sXG4mIzQzO1x0XHQuc3VwcG9ydHNfcm1paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4mIzQzO1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIHRydWV9LFxuJiM0MztcdFx0LnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuJiM0MztcdFx0XHRcdCAgIGZhbHNlLCB0cnVlLCB0cnVlfSxcbiYjNDM7XHRcdC5pbnRlcm5hbF9waHlcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsXG4mIzQzO1x0XHRcdFx0ICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSxcbiYjNDM7XHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuJiM0MztcdFx0LnNnbWlpX3BvcnQgPSA3LFxuJiM0MztcdH0sXG4mIzQzO1xuIFx0W0tTWjk4OTNdID0ge1xuIFx0XHQuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCxcbiBcdFx0LmRldl9uYW1lID0gXCYjMzQ7S1NaOTg5M1wmIzM0OyxcbkBAIC0xODUyLDYgJiM0MzsxODg3LDEzIEBAIHN0YXRpYyBpbnQga3N6X2NoZWNrX2RldmljZV9pZChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRleHBlY3RlZF9jaGlwX2lkID0gZXhwZWN0ZWRfY2hpcF9kYXRhLVx1MDAzZWNoaXBfaWQ7XG4gXHR9XG4gXG4mIzQzO1x0LyogVGhlIEtTWjk4OTdTIGlzIG9ubHkgdG9sZCBhcGFydCBmcm9tIHRoZSBLU1o5ODk3UiBhdCBydW4gdGltZSwgc28gYVxuJiM0MztcdCAqIGRldmljZSB0cmVlIG5hbWluZyB0aGUgS1NaOTg5NyBtYXRjaGVzIGl0IGFzIHdlbGwuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGV4cGVjdGVkX2NoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBkZXYtXHUwMDNlY2hpcF9pZCA9PSBLU1o5ODk3U19DSElQX0lEKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0aWYgKGV4cGVjdGVkX2NoaXBfaWQgIT0gZGV2LVx1MDAzZWNoaXBfaWQpIHtcbiBcdFx0ZGV2X2VycihkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFwmIzM0O0RldmljZSB0cmVlIHNwZWNpZmllcyBjaGlwICVzIGJ1dCBmb3VuZCAlcywgcGxlYXNlIGZpeCBpdCFcXG5cJiMzNDssXG5AQCAtMjk2Niw3ICYjNDM7MzAwOCw2IEBAIHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbiBcdFx0c3dpdGNoIChpZDMyKSB7XG4gXHRcdGNhc2UgS1NaOTQ3N19DSElQX0lEOlxuIFx0XHRjYXNlIEtTWjk4OTZfQ0hJUF9JRDpcbi1cdFx0Y2FzZSBLU1o5ODk3X0NISVBfSUQ6XG4gXHRcdGNhc2UgS1NaOTU2N19DSElQX0lEOlxuIFx0XHRjYXNlIEtTWjg1NjdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBMQU45MzcwX0NISVBfSUQ6XG5AQCAtMjk3OSw2ICYjNDM7MzAyMCwyMyBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdFx0aWYgKGRldi1cdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcbiBcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gaWQzMjtcbiBcdFx0XHRicmVhaztcbiYjNDM7XHRcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxuJiM0MztcdFx0XHQvKiBPbmx5IHRoZSBLU1o5ODk3UyBoYXMgYW4gU0dNSUkgcG9ydCA3OyB0aGUgS1NaOTg5N1JcbiYjNDM7XHRcdFx0ICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3U1xuJiM0MztcdFx0XHQgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlXG4mIzQzO1x0XHRcdCAqIEtTWjk4OTdSIGRhdGEgc2hlZXQgRFMwMDAwMjMzMEQgc2VjdGlvbiA1LjIuMy4xLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsXG4mIzQzO1x0XHRcdFx0XHRcdTAwMjZpZDQpO1xuJiM0MztcdFx0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoaWQ0IFx1MDAyNiBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTClcbiYjNDM7XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7XG4mIzQzO1x0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdfQ0hJUF9JRDtcbiYjNDM7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcbiBcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfQ0hJUF9JRDQsXG4gXHRcdFx0XHRcdFx1MDAyNmlkNCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuaW5kZXggY2JlOTg0OTQ1NzhjMy4uMGNmZjMzZGYwNmE0YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuQEAgLTI4NCw2ICYjNDM7Mjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xuIFx0S1NaOTQ3NyxcbiBcdEtTWjk4OTYsXG4gXHRLU1o5ODk3LFxuJiM0MztcdEtTWjk4OTdTLFxuIFx0S1NaOTg5MyxcbiBcdEtTWjk1NjMsXG4gXHRLU1o5NTY3LFxuQEAgLTg3NCw2ICYjNDM7ODc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbiAjZGVmaW5lIFNLVV9JRF9LU1o4NTYzXHRcdFx0MHgzY1xuICNkZWZpbmUgU0tVX0lEX0tTWjk1NjNcdFx0XHQweDFjXG4gXG4mIzQzOy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xuJiM0MzsjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wXHQweDczMDBcbiYjNDM7I2RlZmluZSBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTFx0XHRCSVQoNylcbiYjNDM7XG4gLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXHQxMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuQEAgLTM0LDYgJiM0MzszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xuIFx0S1NaOTQ3N19DSElQX0lEID0gMHgwMDk0NzcwMCxcbiBcdEtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsXG4gXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxuJiM0MztcdEtTWjk4OTdTX0NISVBfSUQgPSAweDAwOTg5NzAxLFxuIFx0S1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCxcbiBcdEtTWjk1NjNfQ0hJUF9JRCA9IDB4MDA5NTYzMDAsXG4gXHRLU1o4NTY3X0NISVBfSUQgPSAweDAwODU2NzAwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoa3N6X2NvbW1vbi5jKS4gVGhpcyBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBoYXJkd2FyZSBvdmVyIFNQSSwgSTJDLCBvciBTTUksIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU3YjE4MGEwM2Q0MDViOGQ0NWZhZDI0YTc2NzI4ZmM2ZjcyODU3N2EKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAwNTo0MzozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMKaW5kZXggMWE5ZDZmODNhMDIzMi4uNzg0NDJjYzM3NjQzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMKQEAgLTE0ODYsNiAmIzQzOzE0ODYsNDEgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0gewogCQkuZ2JpdF9jYXBhYmxlCT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LAogCX0sCiAKJiM0MzsJW0tTWjk4OTdTXSA9IHsKJiM0MzsJCS5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCwKJiM0MzsJCS5kZXZfbmFtZSA9ICYjMzQ7S1NaOTg5N1MmIzM0OywKJiM0MzsJCS5udW1fdmxhbnMgPSA0MDk2LAomIzQzOwkJLm51bV9hbHVzID0gNDA5NiwKJiM0MzsJCS5udW1fc3RhdGljcyA9IDE2LAomIzQzOwkJLmNwdV9wb3J0cyA9IDB4N0YsCS8qIGNhbiBiZSBjb25maWd1cmVkIGFzIGNwdSBwb3J0ICovCiYjNDM7CQkucG9ydF9jbnQgPSA3LAkJLyogdG90YWwgcGh5c2ljYWwgcG9ydCBjb3VudCAqLwomIzQzOwkJLnBvcnRfbmlycXMgPSAyLAomIzQzOwkJLm51bV90eF9xdWV1ZXMgPSA0LAomIzQzOwkJLm51bV9pcG1zID0gOCwKJiM0MzsJCS5vcHMgPSAmYW1wO2tzejk0NzdfZGV2X29wcywKJiM0MzsJCS5zd2l0Y2hfb3BzID0gJmFtcDtrc3o5NDc3X3N3aXRjaF9vcHMsCiYjNDM7CQkucGh5bGlua19tYWNfb3BzID0gJmFtcDtrc3o5NDc3X3BoeWxpbmtfbWFjX29wcywKJiM0MzsJCS5waHlfZXJyYXRhXzk0NzcgPSB0cnVlLAomIzQzOwkJLm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLAomIzQzOwkJLm1pYl9jbnQgPSBBUlJBWV9TSVpFKGtzejk0NzdfbWliX25hbWVzKSwKJiM0MzsJCS5yZWdfbWliX2NudCA9IE1JQl9DT1VOVEVSX05VTSwKJiM0MzsJCS5yZWdzID0ga3N6OTQ3N19yZWdzLAomIzQzOwkJLm1hc2tzID0ga3N6OTQ3N19tYXNrcywKJiM0MzsJCS5zaGlmdHMgPSBrc3o5NDc3X3NoaWZ0cywKJiM0MzsJCS54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLAomIzQzOwkJLnhtaWlfY3RybDEgPSBrc3o5NDc3X3htaWlfY3RybDEsCiYjNDM7CQkuc3VwcG9ydHNfbWlpCT0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAomIzQzOwkJCQkgICBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sCiYjNDM7CQkuc3VwcG9ydHNfcm1paQk9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIHRydWV9LAomIzQzOwkJLnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAomIzQzOwkJCQkgICBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sCiYjNDM7CQkuaW50ZXJuYWxfcGh5CT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsCiYjNDM7CQkJCSAgIHRydWUsIGZhbHNlLCBmYWxzZX0sCiYjNDM7CQkuZ2JpdF9jYXBhYmxlCT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LAomIzQzOwkJLnNnbWlpX3BvcnQgPSA3LAomIzQzOwl9LAomIzQzOwogCVtLU1o5ODkzXSA9IHsKIAkJLmNoaXBfaWQgPSBLU1o5ODkzX0NISVBfSUQsCiAJCS5kZXZfbmFtZSA9ICYjMzQ7S1NaOTg5MyYjMzQ7LApAQCAtMTg1Miw2ICYjNDM7MTg4NywxMyBAQCBzdGF0aWMgaW50IGtzel9jaGVja19kZXZpY2VfaWQoc3RydWN0IGtzel9kZXZpY2UgKmRldikKIAkJZXhwZWN0ZWRfY2hpcF9pZCA9IGV4cGVjdGVkX2NoaXBfZGF0YS0mZ3Q7Y2hpcF9pZDsKIAl9CiAKJiM0MzsJLyogVGhlIEtTWjk4OTdTIGlzIG9ubHkgdG9sZCBhcGFydCBmcm9tIHRoZSBLU1o5ODk3UiBhdCBydW4gdGltZSwgc28gYQomIzQzOwkgKiBkZXZpY2UgdHJlZSBuYW1pbmcgdGhlIEtTWjk4OTcgbWF0Y2hlcyBpdCBhcyB3ZWxsLgomIzQzOwkgKi8KJiM0MzsJaWYgKGV4cGVjdGVkX2NoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEICZhbXA7JmFtcDsKJiM0MzsJICAgIGRldi0mZ3Q7Y2hpcF9pZCA9PSBLU1o5ODk3U19DSElQX0lEKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJaWYgKGV4cGVjdGVkX2NoaXBfaWQgIT0gZGV2LSZndDtjaGlwX2lkKSB7CiAJCWRldl9lcnIoZGV2LSZndDtkZXYsCiAJCQkmIzM0O0RldmljZSB0cmVlIHNwZWNpZmllcyBjaGlwICVzIGJ1dCBmb3VuZCAlcywgcGxlYXNlIGZpeCBpdCFcbiYjMzQ7LApAQCAtMjk2Niw3ICYjNDM7MzAwOCw2IEBAIHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldikKIAkJc3dpdGNoIChpZDMyKSB7CiAJCWNhc2UgS1NaOTQ3N19DSElQX0lEOgogCQljYXNlIEtTWjk4OTZfQ0hJUF9JRDoKLQkJY2FzZSBLU1o5ODk3X0NISVBfSUQ6CiAJCWNhc2UgS1NaOTU2N19DSElQX0lEOgogCQljYXNlIEtTWjg1NjdfQ0hJUF9JRDoKIAkJY2FzZSBMQU45MzcwX0NISVBfSUQ6CkBAIC0yOTc5LDYgJiM0MzszMDIwLDIzIEBAIHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldikKIAkJCWlmIChkZXYtJmd0O2NoaXBfaWQgIT0gTEFOOTY0Nl9DSElQX0lEKQogCQkJCWRldi0mZ3Q7Y2hpcF9pZCA9IGlkMzI7CiAJCQlicmVhazsKJiM0MzsJCWNhc2UgS1NaOTg5N19DSElQX0lEOgomIzQzOwkJCS8qIE9ubHkgdGhlIEtTWjk4OTdTIGhhcyBhbiBTR01JSSBwb3J0IDc7IHRoZSBLU1o5ODk3UgomIzQzOwkJCSAqIGhhcyBhIHNlY29uZCBSR01JSSBwb3J0IGluc3RlYWQuIFNlZSB0aGUgS1NaOTg5N1MKJiM0MzsJCQkgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlCiYjNDM7CQkJICogS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuCiYjNDM7CQkJICovCiYjNDM7CQkJcmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsCiYjNDM7CQkJCQkmYW1wO2lkNCk7CiYjNDM7CQkJaWYgKHJldCkKJiM0MzsJCQkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJCQlpZiAoaWQ0ICZhbXA7IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKQomIzQzOwkJCQlkZXYtJmd0O2NoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEOwomIzQzOwkJCWVsc2UKJiM0MzsJCQkJZGV2LSZndDtjaGlwX2lkID0gS1NaOTg5N19DSElQX0lEOwomIzQzOwomIzQzOwkJCWJyZWFrOwogCQljYXNlIEtTWjk4OTNfQ0hJUF9JRDoKIAkJCXJldCA9IGtzel9yZWFkOChkZXYsIFJFR19DSElQX0lENCwKIAkJCQkJJmFtcDtpZDQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaAppbmRleCBjYmU5ODQ5NDU3OGMzLi4wY2ZmMzNkZjA2YTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaApAQCAtMjg0LDYgJiM0MzsyODQsNyBAQCBlbnVtIGtzel9tb2RlbCB7CiAJS1NaOTQ3NywKIAlLU1o5ODk2LAogCUtTWjk4OTcsCiYjNDM7CUtTWjk4OTdTLAogCUtTWjk4OTMsCiAJS1NaOTU2MywKIAlLU1o5NTY3LApAQCAtODc0LDYgJiM0Mzs4NzUsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGtzel9pc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KQogI2RlZmluZSBTS1VfSURfS1NaODU2MwkJCTB4M2MKICNkZWZpbmUgU0tVX0lEX0tTWjk1NjMJCQkweDFjCiAKJiM0MzsvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi8KJiM0MzsjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wCTB4NzMwMAomIzQzOyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUwJCUJJVCg3KQomIzQzOwogLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovCiAjZGVmaW5lIEJST0FEQ0FTVF9TVE9STV9QUk9UX1JBVEUJMTAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaCBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmgKaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oCkBAIC0zNCw2ICYjNDM7MzQsNyBAQCBlbnVtIGtzel9jaGlwX2lkIHsKIAlLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLAogCUtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsCiAJS1NaOTg5N19DSElQX0lEID0gMHgwMDk4OTcwMCwKJiM0MzsJS1NaOTg5N1NfQ0hJUF9JRCA9IDB4MDA5ODk3MDEsCiAJS1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCwKIAlLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLAogCUtTWjg1NjdfQ0hJUF9JRCA9IDB4MDA4NTY3MDAsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNaWNyb2NoaXAgS1NaIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIHVzZXImIzM5O3Mgc3VibWl0dGVkIGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY2AsIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaGAsIGFuZCBgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIgaXMgZXZlbiBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJdCYjMzk7cyB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggZHJpdmVyIHdpdGhpbiB0aGUgRFNBIGZyYW1ld29yayDigJMgc3BlY2lmaWNhbGx5LCBga3N6X2NvbW1vbi5jYC4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBnZXRzIGhvb2tlZCB1cC4gSXMgaXQgcHJvYmVkIHRocm91Z2ggU1BJLCBJMkMsIE1NSU8sIFBDSWUsIE1ESU8sIE9wZW5GaXJtd2FyZSwgb3IgcGxhdGZvcm0gZGF0YT8gVW5kZXJzdGFuZGluZyB0aGUgYXR0YWNobWVudCBtZXRob2QgaXMgY3J1Y2lhbC4KCk5vdywgbGV0JiMzOTtzIGFwcGx5IHRoZSBydWxlLXNldDogSXMgdGhlcmUgYW55dGhpbmcgaW4gdGhpcyBwYXRjaCB0aGF0IHN1Z2dlc3RzIGl0JiMzOTtzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgbm90IHRvIHdhc3RlIHRpbWUgb24gcGF0aHMgdGhhdCBjYW4mIzM5O3QgYmUgaGl0IHdpdGggc3RhbmRhcmQgZW11bGF0ZWQgaGFyZHdhcmUuIEFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHZlbmRvci1zcGVjaWZpYyB0aGF0IHJlcXVpcmVzIGFjdHVhbCBQQ0llIGhhcmR3YXJlIGxpa2UgYW4gbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBvciBhbWRncHUgZHJpdmVyPyBGaW5hbGx5LCBhcmUgd2UganVzdCBsb29raW5nIGF0IGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIGNhbGxiYWNrcyB0aGF0IGFyZSBvbmx5IHRyaWdnZXJlZCBieSBob3QtdW5wbHVnIG9yIHN5c2ZzIHVuYmluZCBvcGVyYXRpb25zPyBJIG5lZWQgdG8gcnVsZSB0aG9zZSBvdXQgdG9vLgoKSSBzaG91bGQgcHJvYmFibHkgdXNlIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciAmIzM0O2tzeiYjMzQ7IGRyaXZlcnMgdG8gc2VlIGhvdyB0aGUga3N6OTQ3NyBhbmQgb3RoZXIgS1NaIHN3aXRjaCBkcml2ZXJzIGFyZSBhdHRhY2hlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBwYXRoIHRvIGV4cGxvaXRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3pfc3dpdGNoX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MTMzPXN0YXRpYyBpbnQga3N6ODg2M19zbWlfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNjgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTY5Olx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE3MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM9MTc9c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo1MTpcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTQ3PXN0YXRpYyBpbnQga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTUxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mzk1MjppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzk1My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA5Ny19XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDk4OkVYUE9SVF9TWU1CT0woa3N6X3N3aXRjaF9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00MDk5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQyOD1zdHJ1Y3Qga3N6X2RldmljZSAqa3N6X3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMC1cdFx0XHRcdCAgICB2b2lkICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjQzMTppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMi12b2lkIGtzel9zd2l0Y2hfcmVtb3ZlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jPTEzNz1zdGF0aWMgaW50IGtzel9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoxOTU6XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYwMQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBLU1ogU3dpdGNoIEhhcmR3YXJlIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UgZHJpdmVycyDigJMgc3BlY2lmaWNhbGx5IGBrc3o5NDc3X2kyYy5jYCwgYGtzel9zcGkuY2AsIGFuZCBga3N6ODg2M19zbWkuY2AuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgaGFyZHdhcmUgd2l0aG91dCBuZWVkaW5nIHBoeXNpY2FsIGFjY2Vzcy4gQ2FuIEkgcHJvYmUsIGVtdWxhdGUsIG9yIHNvbWVob3cgYWNjZXNzIGl0IGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgb3IgdGhyb3VnaCB2aXJ0dWFsaXphdGlvbiBmb3IgZnV6emluZyBwdXJwb3Nlcz8KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoZXNlIEkyQy9TUEkvTURJTyBEU0Egc3dpdGNoIGhhcmR3YXJlIGNvbXBvbmVudHMgYXJlIGFjY2Vzc2libGUgdmlydHVhbGx5IG9yIGlmIEkmIzM5O20gZ29pbmcgdG8gYmUgc3R1Y2sgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLiBBaCwgcmlnaHQsIERTQSBzd2l0Y2hlcyBhcmUgb2Z0ZW4gaG9va2VkIHVwIHZpYSBJMkMgb3IgU1BJLiBOb3csIGlzIHRoZXJlIHNvbWUga2luZCBvZiBtb2NrIG9yIGVtdWxhdGVkIGRldmljZSBpbiBRRU1VIHRoYXQgSSBjYW4gdGFyZ2V0LCBsaWtlIGZvciBhIE1pY3JvY2hpcCBLU1o5ODk3IGZvciBpbnN0YW5jZT8gSG9sZCBvbiwgbm8sIFFFTVUgKmRvZXNuJiMzOTt0KiBhcHBlYXIgdG8gZW11bGF0ZSB0aGUgTWljcm9jaGlwIEtTWjk0Nzcgb3IgS1NaOTg5NyBzd2l0Y2hlcy4gVGhhdOKAmXMgYSBzbmFnLgoKT2theSwgc28gaWYgUUVNVSBlbXVsYXRpb24gaXMgb2ZmIHRoZSB0YWJsZSwgd2hhdCBhYm91dCBpbnN0YW50aWF0aW5nIEkyQy9TUEkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZT8gQ2FuIEksIGZvciBleGFtcGxlLCBsZXZlcmFnZSBgc3lzZnNgIGFuZCBpdHMgYG5ld19kZXZpY2VgIGVudHJpZXMgZm9yIEkyQyBvciBTUEkgZGV2aWNlIGNyZWF0aW9uPyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoYXQgd29ya3MuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBleGFtaW5lIGBrc3o5NDc3X2kyYy5jYCBhbmQgYGtzel9zcGkuY2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBwYXRod2F5IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKlxuICAgMzpcdCAqIE1pY3JvY2hpcCBLU1o5NDc3IHNlcmllcyByZWdpc3RlciBhY2Nlc3MgdGhyb3VnaCBJMkNcbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI0IE1pY3JvY2hpcCBUZWNobm9sb2d5IEluYy5cbiAgIDY6XHQgKi9cbiAgIDc6XHRcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pMmMuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAxMjpcdFxuICAxMzpcdCNpbmNsdWRlIFwmIzM0O2tzel9jb21tb24uaFwmIzM0O1xuICAxNDpcdFxuICAxNTpcdEtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcbiAgMTY6XHRcbiAgMTc6XHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDE4Olx0e1xuICAxOTpcdFx0Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmNoaXA7XG4gIDIwOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZGV2ID0gXHUwMDI2aTJjLVx1MDAzZWRldjtcbiAgMjE6XHRcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjO1xuICAyMjpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcbiAgMjM6XHRcdGludCBpLCByZXQ7XG4gIDI0Olx0XG4gIDI1Olx0XHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xuICAyNjpcdFx0aWYgKCFjaGlwKVxuICAyNzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAgMjg6XHRcbiAgMjk6XHRcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXHUwMDI2aTJjLVx1MDAzZWRldiwgY2hpcCwgaTJjKTtcbiAgMzA6XHRcdGlmICghZGV2KVxuICAzMTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgMzI6XHRcbiAgMzM6XHRcdC8qIFNhdmUgY2hpcCBpZCB0byBkbyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIHdoZW4gcHJvYmluZy4gKi9cbiAgMzQ6XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gY2hpcC1cdTAwM2VjaGlwX2lkO1xuICAzNTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgX19LU1pfTlVNX1JFR01BUFM7IGkmIzQzOyYjNDM7KSB7XG4gIDM2Olx0XHRcdHJjID0ga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldO1xuICAzNzpcdFx0XHRyYy5sb2NrX2FyZyA9IFx1MDAyNmRldi1cdTAwM2VyZWdtYXBfbXV0ZXg7XG4gIDM4Olx0XHRcdGRldi1cdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFx1MDAyNnJjKTtcbiAgMzk6XHRcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSkge1xuICA0MDpcdFx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNmkyYy1cdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSksXG4gIDQxOlx0XHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXG5cJiMzNDssXG4gIDQyOlx0XHRcdFx0XHRcdCAgICAga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldLnZhbF9iaXRzKTtcbiAgNDM6XHRcdFx0fVxuICA0NDpcdFx0fVxuICA0NTpcdFxuICA0NjpcdFx0aWYgKGkyYy1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcbiAgNDc6XHRcdFx0ZGV2LVx1MDAzZXBkYXRhID0gaTJjLVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuICA0ODpcdFxuICA0OTpcdFx0ZGV2LVx1MDAzZWlycSA9IGkyYy1cdTAwM2VpcnE7XG4gIDUwOlx0XG4gIDUxOlx0XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG4gIDUyOlx0XG4gIDUzOlx0XHQvKiBNYWluIERTQSBkcml2ZXIgbWF5IG5vdCBiZSBzdGFydGVkIHlldC4gKi9cbiAgNTQ6XHRcdGlmIChyZXQpXG4gIDU1Olx0XHRcdHJldHVybiByZXQ7XG4gIDU2Olx0XG4gIDU3Olx0XHRpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBkZXYpO1xuICA1ODpcdFxuICA1OTpcdFx0cmV0dXJuIDA7XG4gIDYwOlx0fVxuICA2MTpcdFxuICA2MjpcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICA2MzpcdHtcbiAgNjQ6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcbiAgNjU6XHRcbiAgNjY6XHRcdGlmIChkZXYpXG4gIDY3Olx0XHRcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XG4gIDY4Olx0fVxuICA2OTpcdFxuICA3MDpcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDcxOlx0e1xuICA3MjpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xuICA3MzpcdFxuICA3NDpcdFx0aWYgKCFkZXYpXG4gIDc1Olx0XHRcdHJldHVybjtcbiAgNzY6XHRcbiAgNzc6XHRcdGtzel9zd2l0Y2hfc2h1dGRvd24oZGV2KTtcbiAgNzg6XHRcbiAgNzk6XHRcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xuICA4MDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzQyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIGZ1bmN0aW9uIGluIGBrc3pfY29tbW9uLmNgLgoKKipEaXZpbmcgaW50byBrc3pfc3dpdGNoX3JlZ2lzdGVyKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgd2VlZHMgb2YgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggbGluZSAzOTUyIGFzIGEgZ29vZCBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgZHVyaW5nIHRoZSBzd2l0Y2ggcmVnaXN0cmF0aW9uIHByb2Nlc3MuIEkgc3VzcGVjdCB0aGlzIGlzIGEga2V5IHBhcnQgb2YgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgcHJvYmFibHkgaW52b2x2ZXMgc2V0dGluZyB1cCB0aGUgZGV2aWNlIHN0cnVjdHVyZSwgYWxsb2NhdGluZyByZXNvdXJjZXMsIGFuZCBnZXR0aW5nIHRoZSBoYXJkd2FyZSByZWFkeSBmb3Igb3BlcmF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IG9wZXJhdGlvbnMgb2NjdXJyaW5nIGF0IHRoaXMgcG9pbnQgdG8gZ2V0IHRoZSBoaWdoLWxldmVsIGZsb3cuIEnigJlsbCBrZWVwIGEgbWVudGFsIG5vdGUgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBpdCBpbnRlcmFjdHMgd2l0aC4gTGV04oCZcyBzZWUgd2hhdCBnb29kaWVzIHRoaXMgcGllY2Ugb2YgY29kZSBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzk1MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszOTUyOlx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbjM5NTM6XHR7XG4zOTU0Olx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcbjM5NTU6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XG4zOTU2Olx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xuMzk1NzpcdFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xuMzk1ODpcdFx0aW50IHJldDtcbjM5NTk6XHRcdGludCBpO1xuMzk2MDpcdFxuMzk2MTpcdFx0ZGV2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbjM5NjI6XHRcdFx0XHRcdFx0XHQgIEdQSU9EX09VVF9MT1cpO1xuMzk2MzpcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3BpbykpXG4zOTY0Olx0XHRcdHJldHVybiBQVFJfRVJSKGRldi1cdTAwM2VyZXNldF9ncGlvKTtcbjM5NjU6XHRcbjM5NjY6XHRcdGlmIChkZXYtXHUwMDNlcmVzZXRfZ3Bpbykge1xuMzk2NzpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5Njg6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XG4zOTY5Olx0XHRcdFx0aWYgKHJldClcbjM5NzA6XHRcdFx0XHRcdHJldHVybiByZXQ7XG4zOTcxOlx0XHRcdH1cbjM5NzI6XHRcbjM5NzM6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbjM5NzQ6XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMjAwMCk7XG4zOTc1Olx0XHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4zOTc2Olx0XHRcdG1zbGVlcCgxMDApO1xuMzk3NzpcdFxuMzk3ODpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5Nzk6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShkZXYpO1xuMzk4MDpcdFx0XHRcdGlmIChyZXQpXG4zOTgxOlx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMzk4MjpcdFx0XHR9XG4zOTgzOlx0XHR9XG4zOTg0Olx0XG4zOTg1Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkZXZfbXV0ZXgpO1xuMzk4NjpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4KTtcbjM5ODc6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG4zOTg4Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2V2bGFuX211dGV4KTtcbjM5ODk6XHRcbjM5OTA6XHRcdHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7XG4zOTkxOlx0XHRpZiAocmV0KVxuMzk5MjpcdFx0XHRyZXR1cm4gcmV0O1xuMzk5MzpcdFxuMzk5NDpcdFx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhkZXYtXHUwMDNlY2hpcF9pZCk7XG4zOTk1Olx0XHRpZiAoIWluZm8pXG4zOTk2Olx0XHRcdHJldHVybiAtRU5PREVWO1xuMzk5NzpcdFxuMzk5ODpcdFx0LyogVXBkYXRlIHRoZSBjb21wYXRpYmxlIGluZm8gd2l0aCB0aGUgcHJvYmVkIG9uZSAqL1xuMzk5OTpcdFx0ZGV2LVx1MDAzZWluZm8gPSBpbmZvO1xuNDAwMDpcdFxuNDAwMTpcdFx0ZGV2X2luZm8oZGV2LVx1MDAzZWRldiwgXCYjMzQ7Zm91bmQgc3dpdGNoOiAlcywgcmV2ICVpXFxuXCYjMzQ7LFxuNDAwMjpcdFx0XHQgZGV2LVx1MDAzZWluZm8tXHUwMDNlZGV2X25hbWUsIGRldi1cdTAwM2VjaGlwX3Jldik7XG40MDAzOlx0XG40MDA0Olx0XHRyZXQgPSBrc3pfY2hlY2tfZGV2aWNlX2lkKGRldik7XG40MDA1Olx0XHRpZiAocmV0KVxuNDAwNjpcdFx0XHRyZXR1cm4gcmV0O1xuNDAwNzpcdFxuNDAwODpcdFx0ZGV2LVx1MDAzZWRldl9vcHMgPSBkZXYtXHUwMDNlaW5mby1cdTAwM2VvcHM7XG40MDA5Olx0XG40MDEwOlx0XHRyZXQgPSBkZXYtXHUwMDNlZGV2X29wcy1cdTAwM2Vpbml0KGRldik7XG40MDExOlx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1NaIFN3aXRjaCBEZXRlY3Rpb24gYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIFRoZSBga3N6X3N3aXRjaF9kZXRlY3RgIGZ1bmN0aW9uIGlzIGFjY2Vzc2luZyBoYXJkd2FyZSByZWdpc3RlcnMgdGhyb3VnaCBTUEksIEkyQywgb3IgU01JIHRvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBjaGlwLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgZXZlbiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LCBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VLCAqd2l0aG91dCogdGhhdCBhY3R1YWwgS1NaIHN3aXRjaCBhdHRhY2hlZC4gSXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBub3QgYmUuCgpIYW5nIG9u4oCmIGlzIHRoZXJlIGV2ZW4gYSB2aXJ0dWFsIERTQSBzd2l0Y2ggb3IgYW55IGtpbmQgb2YgbW9jayBJMkMgb3IgU1BJIGRldmljZSBidWlsdC1pbiB0byB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIG9yIFFFTVUgc2V0dXA/IE5vLCBub3QgdGhhdCBJJiMzOTttIGF3YXJlIG9mLiBTeXprYWxsZXIgaXMgZGVzaWduZWQgdG8gcnVuIGluIHg4Nl82NCBvciBhcm02NCBWTXMsIHdoaWNoIGlzIGhlbHBmdWwsIGJ1dCBub3QgZW5vdWdoIGluIHRoaXMgY2FzZS4KCkxldCYjMzk7cyBzZWXigKYgcmVhZGluZyB0aGUgaW5zdHJ1Y3Rpb25zIGFib3V0IHBhdGNoIHdvcnRoaW5lc3MsIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFRoaXMgaXMgcmVsZXZhbnQsIGFuZCB0aGlzIGxpa2VseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuIFRoZSBpbnN0cnVjdGlvbnMgYWxzbyBzdGF0ZSB0aGF0IGNlcnRhaW4gZHJpdmVycyBhcmUgbm90IHdvcnRoIGZ1enppbmcsIHNwZWNpZmljYWxseToKLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKR2l2ZW4gdGhhdCB0aGUgRFNBIHN3aXRjaCBpcyBsaWtlbHkgZW1iZWRkZWQgaGFyZHdhcmUsIGl0IG1lYW5zIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYW55IHZpcnR1YWwgYnVzLCBtb2NrIGRldmljZSwgb3IgZXZlbiBpZiBEU0EgbWljcm9jaGlwIHN3aXRjaCBkcml2ZXJzIGFyZSBvbmx5IGZvciBlbWJlZGRlZCBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIHRvIHNlZSBpZiBJIGNhbiBjbGFyaWZ5IGFueSBvZiB0aGVzZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9NSUNST0NISVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTc6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyNDpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgS1NaOTU2My9MQU45Mzd4IEV0aGVybmV0IFN3aXRjaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MTQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRXhhbWluaW5nIHRoZSBEU0EgTWljcm9jaGlwIEtjb25maWcqKgoKT2theSwgdGltZSB0byBnZXQgc3RhcnRlZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGUuIExldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGxvdy1sZXZlbCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIE1pY3JvY2hpcCBEU0EgZHJpdmVycyB3aWxsIGJlIGRlZmluZWQuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luLCBzbyBJIGNhbiBzZWUgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBjb250cm9sbGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQsIGhlbHBpbmcgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgS1NaOFhYWC9LU1o5WFhYL0xBTjkzN1ggc2VyaWVzIHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FcbiAgIDU6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19LU1pcbiAgIDY6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19OT05FXG4gICA3Olx0XHRzZWxlY3QgTkVUX0lFRUU4MDIxUV9IRUxQRVJTXG4gICA4Olx0XHRzZWxlY3QgRENCXG4gICA5Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBNaWNyb2NoaXAgS1NaOCwgS1NaOSBhbmRcbiAgMTI6XHRcdCAgTEFOOTM3WCBzZXJpZXMgc3dpdGNoIGNoaXBzLCBiZWluZyBLU1o4ODYzLzg4NzMsXG4gIDEzOlx0XHQgIEtTWjg4OTUvODg2NCwgS1NaODc5NC84Nzk1Lzg3NjUsXG4gIDE0Olx0XHQgIEtTWjk0NzcvOTg5Ny85ODk2Lzk1NjcvODU2NywgS1NaOTg5My85NTYzLzg1NjMgYW5kXG4gIDE1Olx0XHQgIExBTjkzNzAvOTM3MS85MzcyLzkzNzMvOTM3NC5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IEkyQ1xuICAyMDpcdFx0c2VsZWN0IFJFR01BUF9JMkNcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggSTJDLlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXG4gIDI1Olx0XHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuICAyNjpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFx1MDAyNlx1MDAyNiBTUElcbiAgMjc6XHRcdHNlbGVjdCBSRUdNQVBfU1BJXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoIFNQSS5cbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxuICAzMjpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXCYjMzQ7XG4gIDMzOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IFBUUF8xNTg4X0NMT0NLXG4gIDM0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT049bSB8fCBQVFBfMTU4OF9DTE9DSz15XG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGltZXN0YW1waW5nIFx1MDAyNiBQVFAgY2xvY2sgbWFuaXB1bGF0aW9uIGluXG4gIDM3Olx0XHQgIEtTWjg1NjMvS1NaOTU2My9MQU45Mzd4IHNlcmllcyBvZiBzd2l0Y2hlcy4gS1NaOTU2My9LU1o4NTYzIHN1cHBvcnRzXG4gIDM4Olx0XHQgIG9ubHkgb25lIHN0ZXAgdGltZXN0YW1waW5nLiBMQU45Mzd4IHN3aXRjaCBzdXBwb3J0cyBib3RoIG9uZSBzdGVwIGFuZFxuICAzOTpcdFx0ICB0d28gc3RlcCB0aW1lc3RhbXBpbmcuXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjg4NjNfU01JXG4gIDQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIFNNSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuICA0MzpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXG4gIDQ0Olx0XHRzZWxlY3QgTURJT19CSVRCQU5HXG4gIDQ1Olx0XHRoZWxwXG4gIDQ2Olx0XHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoXG4gIDQ3Olx0XHQgIE1pY3JvY2hpcCBTTUkuIEl0IHN1cHBvcnRzIHRoZSBLU1o4ODYzIGFuZCBLU1o4ODczIHN3aXRjaC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MjMKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogNTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBLU1o5ODk3UyBTdXBwb3J0IGluIE1pY3JvY2hpcCBEU0EgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyBzdXBwb3J0IGZvciB0aGUgS1NaOTg5N1MgdmFyaWFudCBvZiB0aGUgTWljcm9jaGlwIEV0aGVybmV0IHN3aXRjaC4gTXkgbWFpbiBjb25jZXJuLCBhcyBhbHdheXMgd2l0aCB0aGVzZSB0aGluZ3MsIGlzIHdoZXRoZXIgaXQmIzM5O3MgZnV6emFibGUuIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgYSBkcml2ZXIgZm9yICpoYXJkd2FyZSogRXRoZXJuZXQgc3dpdGNoZXMgZnJvbSBNaWNyb2NoaXAg4oCTIHNwZWNpZmljYWxseSwgdGhlIEtTWiBzZXJpZXMsIGNvbm5lY3RlZCB0aHJvdWdoIEkyQywgU1BJLCBvciBTTUkuICBJdCAqbmVlZHMqIHRoZSBhY3R1YWwgc2lsaWNvbiB0byBwcm9iZSBhbmQgdGFsayB0by4gIFN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IEZvcmdldCBpdC4gVGhleSBkb24mIzM5O3QgZW11bGF0ZSB0aG9zZSBLU1ogY2hpcHMuICBXaXRob3V0IHRoZSByZWFsIGhhcmR3YXJlLCBga3N6X3N3aXRjaF9kZXRlY3RgIGp1c3QgcGxhaW4gZmFpbHMsIG9yIHRoZSBkZXZpY2UgaXNuJiMzOTt0IGV2ZW4gaW5zdGFudGlhdGVkLiBJdCYjMzk7cyBhIG5vLWdvIGZyb20gdGhlIGdldC1nby4gQW5kIGl0JiMzOTtzIGFsc28gYSBEU0Egc3dpdGNoLCBzbyBpdCYjMzk7cyBhbGwgcGh5c2ljYWwgRFNBIGhvc3QgZXRoZXJuZXQgZGV2aWNlcywgRFNBIHRhZ3MsIGFuZCBwb3J0cyBkZWZpbmVkIGJ5IHRoZSBkZXZpY2UgdHJlZS4KClRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGNvZGUgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSBLU1o5ODk3UyBhbmQgdGhlIEtTWjk4OTdSIOKAkyBzb21ldGhpbmcgYmFzZWQgb24gdGhlIHBvcnQgNyBYTUlJIHJlZ2lzdGVyLiAgVGhlIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY2AgZmlsZSBhbmQgaGVhZGVycy4KClRoZXJlZm9yZSwgYWNjb3JkaW5nIHRvIHRoZSBndWlkZWxpbmUgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywmIzM0OyB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkICYjMzQ7bm8uJiMzNDsgSXQmIzM5O3MgcGh5c2ljYWxseSBpbXBvc3NpYmxlIHRvIGhpdCB0aGlzIGNvZGUgaW4gYSBRRU1VIG9yIEdDRSBzZXR1cC4gIEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSB1c2VmdWxseSBmdXp6ZWQsIGFzIGl0IHJlcXVpcmVzIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLgoKU28sIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nID0gZmFsc2VgLCBgRW5hYmxlQ29uZmlncyA9IFtdYCwgYW5kIGBGb2N1c1N5bWJvbHMgPSBbXWAuIFRoZSByZWFzb25pbmcgSSYjMzk7bSBwcm92aWRpbmcgdG8gdGhlIHRvb2wgaXM6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGlzdGluZ3Vpc2hpbmcgdGhlIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWljcm9jaGlwIEtTWiBzd2l0Y2ggaGFyZHdhcmUgKGNvbm5lY3RlZCBvdmVyIEkyQywgU1BJLCBvciBTTUkpIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7IFRoYXQgc2hvdWxkIGNvdmVyIGl0LiBUaW1lIHRvIHJ1biB0aGUgdG9vbCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoa3N6X2NvbW1vbi5jKS4gVGhpcyBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBoYXJkd2FyZSBvdmVyIFNQSSwgSTJDLCBvciBTTUksIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIGhhcmR3YXJlIG92ZXIgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDU6NDM6MzQuNTg1MDY2ODE4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYyOTc0MTkyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgaW4gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbW11bmljYXRlcyB3aXRoIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggaGFyZHdhcmUgb3ZlciBTUEksIEkyQywgb3IgU01JLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjM0LjU4NTA3NDYwOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzNDc5MzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTdiMTgwYTAzZDQwNWI4ZDQ1ZmFkMjRhNzY3MjhmYzZmNzI4NTc3YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNTo0MzozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXFxuaW5kZXggMWE5ZDZmODNhMDIzMi4uNzg0NDJjYzM3NjQzNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXFxuQEAgLTE0ODYsNiArMTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XFxuIFxcdFxcdC5nYml0X2NhcGFibGVcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcXG4gXFx0fSxcXG4gXFxuK1xcdFtLU1o5ODk3U10gPSB7XFxuK1xcdFxcdC5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCxcXG4rXFx0XFx0LmRldl9uYW1lID0gXFxcIktTWjk4OTdTXFxcIixcXG4rXFx0XFx0Lm51bV92bGFucyA9IDQwOTYsXFxuK1xcdFxcdC5udW1fYWx1cyA9IDQwOTYsXFxuK1xcdFxcdC5udW1fc3RhdGljcyA9IDE2LFxcbitcXHRcXHQuY3B1X3BvcnRzID0gMHg3RixcXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xcbitcXHRcXHQucG9ydF9jbnQgPSA3LFxcdFxcdC8qIHRvdGFsIHBoeXNpY2FsIHBvcnQgY291bnQgKi9cXG4rXFx0XFx0LnBvcnRfbmlycXMgPSAyLFxcbitcXHRcXHQubnVtX3R4X3F1ZXVlcyA9IDQsXFxuK1xcdFxcdC5udW1faXBtcyA9IDgsXFxuK1xcdFxcdC5vcHMgPSBcXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxcbitcXHRcXHQuc3dpdGNoX29wcyA9IFxcdTAwMjZrc3o5NDc3X3N3aXRjaF9vcHMsXFxuK1xcdFxcdC5waHlsaW5rX21hY19vcHMgPSBcXHUwMDI2a3N6OTQ3N19waHlsaW5rX21hY19vcHMsXFxuK1xcdFxcdC5waHlfZXJyYXRhXzk0NzcgPSB0cnVlLFxcbitcXHRcXHQubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsXFxuK1xcdFxcdC5taWJfY250ID0gQVJSQVlfU0laRShrc3o5NDc3X21pYl9uYW1lcyksXFxuK1xcdFxcdC5yZWdfbWliX2NudCA9IE1JQl9DT1VOVEVSX05VTSxcXG4rXFx0XFx0LnJlZ3MgPSBrc3o5NDc3X3JlZ3MsXFxuK1xcdFxcdC5tYXNrcyA9IGtzejk0NzdfbWFza3MsXFxuK1xcdFxcdC5zaGlmdHMgPSBrc3o5NDc3X3NoaWZ0cyxcXG4rXFx0XFx0LnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsXFxuK1xcdFxcdC54bWlpX2N0cmwxID0ga3N6OTQ3N194bWlpX2N0cmwxLFxcbitcXHRcXHQuc3VwcG9ydHNfbWlpXFx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCB0cnVlfSxcXG4rXFx0XFx0LnN1cHBvcnRzX3JtaWlcXHQ9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcXG4rXFx0XFx0XFx0XFx0ICAgZmFsc2UsIHRydWUsIHRydWV9LFxcbitcXHRcXHQuc3VwcG9ydHNfcmdtaWkgPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCB0cnVlfSxcXG4rXFx0XFx0LmludGVybmFsX3BoeVxcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsXFxuK1xcdFxcdFxcdFxcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXFxuK1xcdFxcdC5nYml0X2NhcGFibGVcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcXG4rXFx0XFx0LnNnbWlpX3BvcnQgPSA3LFxcbitcXHR9LFxcbitcXG4gXFx0W0tTWjk4OTNdID0ge1xcbiBcXHRcXHQuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCxcXG4gXFx0XFx0LmRldl9uYW1lID0gXFxcIktTWjk4OTNcXFwiLFxcbkBAIC0xODUyLDYgKzE4ODcsMTMgQEAgc3RhdGljIGludCBrc3pfY2hlY2tfZGV2aWNlX2lkKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdFxcdGV4cGVjdGVkX2NoaXBfaWQgPSBleHBlY3RlZF9jaGlwX2RhdGEtXFx1MDAzZWNoaXBfaWQ7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIFRoZSBLU1o5ODk3UyBpcyBvbmx5IHRvbGQgYXBhcnQgZnJvbSB0aGUgS1NaOTg5N1IgYXQgcnVuIHRpbWUsIHNvIGFcXG4rXFx0ICogZGV2aWNlIHRyZWUgbmFtaW5nIHRoZSBLU1o5ODk3IG1hdGNoZXMgaXQgYXMgd2VsbC5cXG4rXFx0ICovXFxuK1xcdGlmIChleHBlY3RlZF9jaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZGV2LVxcdTAwM2VjaGlwX2lkID09IEtTWjk4OTdTX0NISVBfSUQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0aWYgKGV4cGVjdGVkX2NoaXBfaWQgIT0gZGV2LVxcdTAwM2VjaGlwX2lkKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcXCJEZXZpY2UgdHJlZSBzcGVjaWZpZXMgY2hpcCAlcyBidXQgZm91bmQgJXMsIHBsZWFzZSBmaXggaXQhXFxcXG5cXFwiLFxcbkBAIC0yOTY2LDcgKzMwMDgsNiBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdFxcdHN3aXRjaCAoaWQzMikge1xcbiBcXHRcXHRjYXNlIEtTWjk0NzdfQ0hJUF9JRDpcXG4gXFx0XFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XFxuLVxcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbiBcXHRcXHRjYXNlIEtTWjk1NjdfQ0hJUF9JRDpcXG4gXFx0XFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XFxuIFxcdFxcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxcbkBAIC0yOTc5LDYgKzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcXG4gXFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gaWQzMjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbitcXHRcXHRcXHQvKiBPbmx5IHRoZSBLU1o5ODk3UyBoYXMgYW4gU0dNSUkgcG9ydCA3OyB0aGUgS1NaOTg5N1JcXG4rXFx0XFx0XFx0ICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3U1xcbitcXHRcXHRcXHQgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlXFxuK1xcdFxcdFxcdCAqIEtTWjk4OTdSIGRhdGEgc2hlZXQgRFMwMDAwMjMzMEQgc2VjdGlvbiA1LjIuMy4xLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZpZDQpO1xcbitcXHRcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0XFx0XFx0aWYgKGlkNCBcXHUwMDI2IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKVxcbitcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEO1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdfQ0hJUF9JRDtcXG4rXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcXG4gXFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHUwMDI2aWQ0KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbkBAIC0yODQsNiArMjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xcbiBcXHRLU1o5NDc3LFxcbiBcXHRLU1o5ODk2LFxcbiBcXHRLU1o5ODk3LFxcbitcXHRLU1o5ODk3UyxcXG4gXFx0S1NaOTg5MyxcXG4gXFx0S1NaOTU2MyxcXG4gXFx0S1NaOTU2NyxcXG5AQCAtODc0LDYgKzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuICNkZWZpbmUgU0tVX0lEX0tTWjg1NjNcXHRcXHRcXHQweDNjXFxuICNkZWZpbmUgU0tVX0lEX0tTWjk1NjNcXHRcXHRcXHQweDFjXFxuIFxcbisvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi9cXG4rI2RlZmluZSBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMFxcdDB4NzMwMFxcbisjZGVmaW5lIEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMXFx0XFx0QklUKDcpXFxuK1xcbiAvKiBEcml2ZXIgc2V0IHN3aXRjaCBicm9hZGNhc3Qgc3Rvcm0gcHJvdGVjdGlvbiBhdCAxMCUgcmF0ZS4gKi9cXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXFx0MTBcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxcbkBAIC0zNCw2ICszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xcbiBcXHRLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLFxcbiBcXHRLU1o5ODk2X0NISVBfSUQgPSAweDAwOTg5NjAwLFxcbiBcXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxcbitcXHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcXG4gXFx0S1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCxcXG4gXFx0S1NaOTU2M19DSElQX0lEID0gMHgwMDk1NjMwMCxcXG4gXFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDU6NDM6MzUuMDM5ODk4Njg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNTg0MjU2ODU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIGhhcmR3YXJlIG92ZXIgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlN2IxODBhMDNkNDA1YjhkNDVmYWQyNGE3NjcyOGZjNmY3Mjg1NzdhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDU6NDM6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCAxYTlkNmY4M2EwMjMyLi43ODQ0MmNjMzc2NDM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5AQCAtMTQ4Niw2ICsxNDg2LDQxIEBAIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcbiBcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4gXHR9LFxuIFxuK1x0W0tTWjk4OTdTXSA9IHtcbitcdFx0LmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELFxuK1x0XHQuZGV2X25hbWUgPSBcIktTWjk4OTdTXCIsXG4rXHRcdC5udW1fdmxhbnMgPSA0MDk2LFxuK1x0XHQubnVtX2FsdXMgPSA0MDk2LFxuK1x0XHQubnVtX3N0YXRpY3MgPSAxNixcbitcdFx0LmNwdV9wb3J0cyA9IDB4N0YsXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xuK1x0XHQucG9ydF9jbnQgPSA3LFx0XHQvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovXG4rXHRcdC5wb3J0X25pcnFzID0gMixcbitcdFx0Lm51bV90eF9xdWV1ZXMgPSA0LFxuK1x0XHQubnVtX2lwbXMgPSA4LFxuK1x0XHQub3BzID0gXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxuK1x0XHQuc3dpdGNoX29wcyA9IFx1MDAyNmtzejk0Nzdfc3dpdGNoX29wcyxcbitcdFx0LnBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmtzejk0NzdfcGh5bGlua19tYWNfb3BzLFxuK1x0XHQucGh5X2VycmF0YV85NDc3ID0gdHJ1ZSxcbitcdFx0Lm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLFxuK1x0XHQubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLFxuK1x0XHQucmVnX21pYl9jbnQgPSBNSUJfQ09VTlRFUl9OVU0sXG4rXHRcdC5yZWdzID0ga3N6OTQ3N19yZWdzLFxuK1x0XHQubWFza3MgPSBrc3o5NDc3X21hc2tzLFxuK1x0XHQuc2hpZnRzID0ga3N6OTQ3N19zaGlmdHMsXG4rXHRcdC54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLFxuK1x0XHQueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSxcbitcdFx0LnN1cHBvcnRzX21paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4rXHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sXG4rXHRcdC5zdXBwb3J0c19ybWlpXHQ9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbitcdFx0XHRcdCAgIGZhbHNlLCB0cnVlLCB0cnVlfSxcbitcdFx0LnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuK1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIHRydWV9LFxuK1x0XHQuaW50ZXJuYWxfcGh5XHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxuK1x0XHRcdFx0ICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSxcbitcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4rXHRcdC5zZ21paV9wb3J0ID0gNyxcbitcdH0sXG4rXG4gXHRbS1NaOTg5M10gPSB7XG4gXHRcdC5jaGlwX2lkID0gS1NaOTg5M19DSElQX0lELFxuIFx0XHQuZGV2X25hbWUgPSBcIktTWjk4OTNcIixcbkBAIC0xODUyLDYgKzE4ODcsMTMgQEAgc3RhdGljIGludCBrc3pfY2hlY2tfZGV2aWNlX2lkKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdGV4cGVjdGVkX2NoaXBfaWQgPSBleHBlY3RlZF9jaGlwX2RhdGEtXHUwMDNlY2hpcF9pZDtcbiBcdH1cbiBcbitcdC8qIFRoZSBLU1o5ODk3UyBpcyBvbmx5IHRvbGQgYXBhcnQgZnJvbSB0aGUgS1NaOTg5N1IgYXQgcnVuIHRpbWUsIHNvIGFcbitcdCAqIGRldmljZSB0cmVlIG5hbWluZyB0aGUgS1NaOTg5NyBtYXRjaGVzIGl0IGFzIHdlbGwuXG4rXHQgKi9cbitcdGlmIChleHBlY3RlZF9jaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCBcdTAwMjZcdTAwMjZcbitcdCAgICBkZXYtXHUwMDNlY2hpcF9pZCA9PSBLU1o5ODk3U19DSElQX0lEKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdGlmIChleHBlY3RlZF9jaGlwX2lkICE9IGRldi1cdTAwM2VjaGlwX2lkKSB7XG4gXHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcIkRldmljZSB0cmVlIHNwZWNpZmllcyBjaGlwICVzIGJ1dCBmb3VuZCAlcywgcGxlYXNlIGZpeCBpdCFcXG5cIixcbkBAIC0yOTY2LDcgKzMwMDgsNiBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdHN3aXRjaCAoaWQzMikge1xuIFx0XHRjYXNlIEtTWjk0NzdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XG4tXHRcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxuIFx0XHRjYXNlIEtTWjk1NjdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XG4gXHRcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxuQEAgLTI5NzksNiArMzAyMCwyMyBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdFx0aWYgKGRldi1cdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcbiBcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gaWQzMjtcbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBLU1o5ODk3X0NISVBfSUQ6XG4rXHRcdFx0LyogT25seSB0aGUgS1NaOTg5N1MgaGFzIGFuIFNHTUlJIHBvcnQgNzsgdGhlIEtTWjk4OTdSXG4rXHRcdFx0ICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3U1xuK1x0XHRcdCAqIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIGFuZCB0aGVcbitcdFx0XHQgKiBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS5cbitcdFx0XHQgKi9cbitcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMCxcbitcdFx0XHRcdFx0XHUwMDI2aWQ0KTtcbitcdFx0XHRpZiAocmV0KVxuK1x0XHRcdFx0cmV0dXJuIHJldDtcbitcbitcdFx0XHRpZiAoaWQ0IFx1MDAyNiBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTClcbitcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRDtcbitcdFx0XHRlbHNlXG4rXHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdfQ0hJUF9JRDtcbitcbitcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBLU1o5ODkzX0NISVBfSUQ6XG4gXHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxuIFx0XHRcdFx0XHRcdTAwMjZpZDQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbkBAIC0yODQsNiArMjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xuIFx0S1NaOTQ3NyxcbiBcdEtTWjk4OTYsXG4gXHRLU1o5ODk3LFxuK1x0S1NaOTg5N1MsXG4gXHRLU1o5ODkzLFxuIFx0S1NaOTU2MyxcbiBcdEtTWjk1NjcsXG5AQCAtODc0LDYgKzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4gI2RlZmluZSBTS1VfSURfS1NaODU2M1x0XHRcdDB4M2NcbiAjZGVmaW5lIFNLVV9JRF9LU1o5NTYzXHRcdFx0MHgxY1xuIFxuKy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xuKyNkZWZpbmUgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzBcdDB4NzMwMFxuKyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUxcdFx0QklUKDcpXG4rXG4gLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXHQxMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuQEAgLTM0LDYgKzM0LDcgQEAgZW51bSBrc3pfY2hpcF9pZCB7XG4gXHRLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLFxuIFx0S1NaOTg5Nl9DSElQX0lEID0gMHgwMDk4OTYwMCxcbiBcdEtTWjk4OTdfQ0hJUF9JRCA9IDB4MDA5ODk3MDAsXG4rXHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcbiBcdEtTWjk4OTNfQ0hJUF9JRCA9IDB4MDA5ODkzMDAsXG4gXHRLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLFxuIFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjM1LjAzOTkwMDk2NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgxNDE5MDg2MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNaWNyb2NoaXAgS1NaIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgdXNlcidzIHN1Ym1pdHRlZCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLCBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhgLCBhbmQgYGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGlzIGV2ZW4gYSB3b3J0aHdoaWxlIHRhcmdldCBmb3IgZnV6emluZy4gSXQncyB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggZHJpdmVyIHdpdGhpbiB0aGUgRFNBIGZyYW1ld29yayDigJMgc3BlY2lmaWNhbGx5LCBga3N6X2NvbW1vbi5jYC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGdldHMgaG9va2VkIHVwLiBJcyBpdCBwcm9iZWQgdGhyb3VnaCBTUEksIEkyQywgTU1JTywgUENJZSwgTURJTywgT3BlbkZpcm13YXJlLCBvciBwbGF0Zm9ybSBkYXRhPyBVbmRlcnN0YW5kaW5nIHRoZSBhdHRhY2htZW50IG1ldGhvZCBpcyBjcnVjaWFsLlxuXG5Ob3csIGxldCdzIGFwcGx5IHRoZSBydWxlLXNldDogSXMgdGhlcmUgYW55dGhpbmcgaW4gdGhpcyBwYXRjaCB0aGF0IHN1Z2dlc3RzIGl0J3MgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/IFdlIGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gd2FzdGUgdGltZSBvbiBwYXRocyB0aGF0IGNhbid0IGJlIGhpdCB3aXRoIHN0YW5kYXJkIGVtdWxhdGVkIGhhcmR3YXJlLiBBcmUgd2UgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB2ZW5kb3Itc3BlY2lmaWMgdGhhdCByZXF1aXJlcyBhY3R1YWwgUENJZSBoYXJkd2FyZSBsaWtlIGFuIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgb3IgYW1kZ3B1IGRyaXZlcj8gRmluYWxseSwgYXJlIHdlIGp1c3QgbG9va2luZyBhdCBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCBjYWxsYmFja3MgdGhhdCBhcmUgb25seSB0cmlnZ2VyZWQgYnkgaG90LXVucGx1ZyBvciBzeXNmcyB1bmJpbmQgb3BlcmF0aW9ucz8gSSBuZWVkIHRvIHJ1bGUgdGhvc2Ugb3V0IHRvby5cblxuSSBzaG91bGQgcHJvYmFibHkgdXNlIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBcImtzelwiIGRyaXZlcnMgdG8gc2VlIGhvdyB0aGUga3N6OTQ3NyBhbmQgb3RoZXIgS1NaIHN3aXRjaCBkcml2ZXJzIGFyZSBhdHRhY2hlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBwYXRoIHRvIGV4cGxvaXRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjQzLjE4MTgxNDg0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg5MjQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrc3pfc3dpdGNoX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTEzMz1zdGF0aWMgaW50IGtzejg4NjNfc21pX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNjgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjE2OTpcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz0xNz1zdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjUxOlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTQ3PXN0YXRpYyBpbnQga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM5NTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mzk1MjppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM5NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA5Ny19XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6NDA5ODpFWFBPUlRfU1lNQk9MKGtzel9zd2l0Y2hfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQwOTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD00Mjg9c3RydWN0IGtzel9kZXZpY2UgKmtzel9zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMC1cXHRcXHRcXHRcXHQgICAgdm9pZCAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDMxOmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMi12b2lkIGtzel9zd2l0Y2hfcmVtb3ZlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM9MTM3PXN0YXRpYyBpbnQga3N6X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTk0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jOjE5NTpcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTk2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo0My4yNDQ3MTc5MzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTgyODQ4ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIEtTWiBTd2l0Y2ggSGFyZHdhcmUgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UgZHJpdmVycyDigJMgc3BlY2lmaWNhbGx5IGBrc3o5NDc3X2kyYy5jYCwgYGtzel9zcGkuY2AsIGFuZCBga3N6ODg2M19zbWkuY2AuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgaGFyZHdhcmUgd2l0aG91dCBuZWVkaW5nIHBoeXNpY2FsIGFjY2Vzcy4gQ2FuIEkgcHJvYmUsIGVtdWxhdGUsIG9yIHNvbWVob3cgYWNjZXNzIGl0IGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgb3IgdGhyb3VnaCB2aXJ0dWFsaXphdGlvbiBmb3IgZnV6emluZyBwdXJwb3Nlcz9cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgdGhlc2UgSTJDL1NQSS9NRElPIERTQSBzd2l0Y2ggaGFyZHdhcmUgY29tcG9uZW50cyBhcmUgYWNjZXNzaWJsZSB2aXJ0dWFsbHkgb3IgaWYgSSdtIGdvaW5nIHRvIGJlIHN0dWNrIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS4gQWgsIHJpZ2h0LCBEU0Egc3dpdGNoZXMgYXJlIG9mdGVuIGhvb2tlZCB1cCB2aWEgSTJDIG9yIFNQSS4gTm93LCBpcyB0aGVyZSBzb21lIGtpbmQgb2YgbW9jayBvciBlbXVsYXRlZCBkZXZpY2UgaW4gUUVNVSB0aGF0IEkgY2FuIHRhcmdldCwgbGlrZSBmb3IgYSBNaWNyb2NoaXAgS1NaOTg5NyBmb3IgaW5zdGFuY2U/IEhvbGQgb24sIG5vLCBRRU1VICpkb2Vzbid0KiBhcHBlYXIgdG8gZW11bGF0ZSB0aGUgTWljcm9jaGlwIEtTWjk0Nzcgb3IgS1NaOTg5NyBzd2l0Y2hlcy4gVGhhdOKAmXMgYSBzbmFnLlxuXG5Pa2F5LCBzbyBpZiBRRU1VIGVtdWxhdGlvbiBpcyBvZmYgdGhlIHRhYmxlLCB3aGF0IGFib3V0IGluc3RhbnRpYXRpbmcgSTJDL1NQSSBkZXZpY2VzIGZyb20gdXNlcnNwYWNlPyBDYW4gSSwgZm9yIGV4YW1wbGUsIGxldmVyYWdlIGBzeXNmc2AgYW5kIGl0cyBgbmV3X2RldmljZWAgZW50cmllcyBmb3IgSTJDIG9yIFNQSSBkZXZpY2UgY3JlYXRpb24/IEkgbmVlZCB0byBjaGVjayBob3cgdGhhdCB3b3Jrcy4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGV4YW1pbmUgYGtzejk0NzdfaTJjLmNgIGFuZCBga3N6X3NwaS5jYCB0byBzZWUgaWYgdGhlcmUncyBhbnkgcGF0aHdheSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYwMSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo0Ni40Mjc1NzI5MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjQgTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLlxcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pMmMuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gIDEyOlxcdFxcbiAgMTM6XFx0I2luY2x1ZGUgXFxcImtzel9jb21tb24uaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0S1NaX1JFR01BUF9UQUJMRShrc3o5NDc3LCBub3RfdXNlZCwgMTYsIDAsIDApO1xcbiAgMTY6XFx0XFxuICAxNzpcXHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICAxODpcXHR7XFxuICAxOTpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcXG4gIDIwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcXHUwMDI2aTJjLVxcdTAwM2VkZXY7XFxuICAyMTpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcXG4gIDIyOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuICAyMzpcXHRcXHRpbnQgaSwgcmV0O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xcbiAgMjY6XFx0XFx0aWYgKCFjaGlwKVxcbiAgMjc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBjaGlwLCBpMmMpO1xcbiAgMzA6XFx0XFx0aWYgKCFkZXYpXFxuICAzMTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0LyogU2F2ZSBjaGlwIGlkIHRvIGRvIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gd2hlbiBwcm9iaW5nLiAqL1xcbiAgMzQ6XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gY2hpcC1cXHUwMDNlY2hpcF9pZDtcXG4gIDM1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSsrKSB7XFxuICAzNjpcXHRcXHRcXHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcXG4gIDM3OlxcdFxcdFxcdHJjLmxvY2tfYXJnID0gXFx1MDAyNmRldi1cXHUwMDNlcmVnbWFwX211dGV4O1xcbiAgMzg6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFxcdTAwMjZyYyk7XFxuICAzOTpcXHRcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSkge1xcbiAgNDA6XFx0XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSxcXG4gIDQxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbiAgNDI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xcbiAgNDM6XFx0XFx0XFx0fVxcbiAgNDQ6XFx0XFx0fVxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRpZiAoaTJjLVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcXG4gIDQ3OlxcdFxcdFxcdGRldi1cXHUwMDNlcGRhdGEgPSBpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHRkZXYtXFx1MDAzZWlycSA9IGkyYy1cXHUwMDNlaXJxO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdC8qIE1haW4gRFNBIGRyaXZlciBtYXkgbm90IGJlIHN0YXJ0ZWQgeWV0LiAqL1xcbiAgNTQ6XFx0XFx0aWYgKHJldClcXG4gIDU1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGRldik7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHJldHVybiAwO1xcbiAgNjA6XFx0fVxcbiAgNjE6XFx0XFxuICA2MjpcXHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDYzOlxcdHtcXG4gIDY0OlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0aWYgKGRldilcXG4gIDY3OlxcdFxcdFxcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XFxuICA2ODpcXHR9XFxuICA2OTpcXHRcXG4gIDcwOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICA3MTpcXHR7XFxuICA3MjpcXHRcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdGlmICghZGV2KVxcbiAgNzU6XFx0XFx0XFx0cmV0dXJuO1xcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xcbiAgODA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo0Ni40Mjc3Njc3MzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODMyNzE3Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIGZ1bmN0aW9uIGluIGBrc3pfY29tbW9uLmNgLlxuXG4qKkRpdmluZyBpbnRvIGtzel9zd2l0Y2hfcmVnaXN0ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgd2VlZHMgb2YgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgLiBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBsaW5lIDM5NTIgYXMgYSBnb29kIGVudHJ5IHBvaW50LiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgc3dpdGNoIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJIHN1c3BlY3QgdGhpcyBpcyBhIGtleSBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JhYmx5IGludm9sdmVzIHNldHRpbmcgdXAgdGhlIGRldmljZSBzdHJ1Y3R1cmUsIGFsbG9jYXRpbmcgcmVzb3VyY2VzLCBhbmQgZ2V0dGluZyB0aGUgaGFyZHdhcmUgcmVhZHkgZm9yIG9wZXJhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGtleSBvcGVyYXRpb25zIG9jY3VycmluZyBhdCB0aGlzIHBvaW50IHRvIGdldCB0aGUgaGlnaC1sZXZlbCBmbG93LiBJ4oCZbGwga2VlcCBhIG1lbnRhbCBub3RlIHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpbnRlZ3JhdGVzIHdpdGggdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IHdoYXQgb3RoZXIgbW9kdWxlcyBvciBmdW5jdGlvbnMgaXQgaW50ZXJhY3RzIHdpdGguIExldOKAmXMgc2VlIHdoYXQgZ29vZGllcyB0aGlzIHBpZWNlIG9mIGNvZGUgaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjQ4LjI2MDQ5MTM5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzOTUyLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzOTUyOlxcdGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuMzk1MzpcXHR7XFxuMzk1NDpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcXG4zOTU1OlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XFxuMzk1NjpcXHRcXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xcbjM5NTc6XFx0XFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xcbjM5NTg6XFx0XFx0aW50IHJldDtcXG4zOTU5OlxcdFxcdGludCBpO1xcbjM5NjA6XFx0XFxuMzk2MTpcXHRcXHRkZXYtXFx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXFx1MDAzZWRldiwgXFxcInJlc2V0XFxcIixcXG4zOTYyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR1BJT0RfT1VUX0xPVyk7XFxuMzk2MzpcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3BpbykpXFxuMzk2NDpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkZXYtXFx1MDAzZXJlc2V0X2dwaW8pO1xcbjM5NjU6XFx0XFxuMzk2NjpcXHRcXHRpZiAoZGV2LVxcdTAwM2VyZXNldF9ncGlvKSB7XFxuMzk2NzpcXHRcXHRcXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsIFxcXCJtaWNyb2NoaXAsa3N6ODQ2M1xcXCIpKSB7XFxuMzk2ODpcXHRcXHRcXHRcXHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XFxuMzk2OTpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjM5NzA6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zOTcxOlxcdFxcdFxcdH1cXG4zOTcyOlxcdFxcbjM5NzM6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cXHUwMDNlcmVzZXRfZ3BpbywgMSk7XFxuMzk3NDpcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDEyMDAwKTtcXG4zOTc1OlxcdFxcdFxcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXFx1MDAzZXJlc2V0X2dwaW8sIDApO1xcbjM5NzY6XFx0XFx0XFx0bXNsZWVwKDEwMCk7XFxuMzk3NzpcXHRcXG4zOTc4OlxcdFxcdFxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIikpIHtcXG4zOTc5OlxcdFxcdFxcdFxcdHJldCA9IGtzejg0NjNfcmVsZWFzZV9zdHJhcHNfc3BpKGRldik7XFxuMzk4MDpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjM5ODE6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zOTgyOlxcdFxcdFxcdH1cXG4zOTgzOlxcdFxcdH1cXG4zOTg0OlxcdFxcbjM5ODU6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VkZXZfbXV0ZXgpO1xcbjM5ODY6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VyZWdtYXBfbXV0ZXgpO1xcbjM5ODc6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbjM5ODg6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2V2bGFuX211dGV4KTtcXG4zOTg5OlxcdFxcbjM5OTA6XFx0XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG4zOTkxOlxcdFxcdGlmIChyZXQpXFxuMzk5MjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5OTM6XFx0XFxuMzk5NDpcXHRcXHRpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGRldi1cXHUwMDNlY2hpcF9pZCk7XFxuMzk5NTpcXHRcXHRpZiAoIWluZm8pXFxuMzk5NjpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4zOTk3OlxcdFxcbjM5OTg6XFx0XFx0LyogVXBkYXRlIHRoZSBjb21wYXRpYmxlIGluZm8gd2l0aCB0aGUgcHJvYmVkIG9uZSAqL1xcbjM5OTk6XFx0XFx0ZGV2LVxcdTAwM2VpbmZvID0gaW5mbztcXG40MDAwOlxcdFxcbjQwMDE6XFx0XFx0ZGV2X2luZm8oZGV2LVxcdTAwM2VkZXYsIFxcXCJmb3VuZCBzd2l0Y2g6ICVzLCByZXYgJWlcXFxcblxcXCIsXFxuNDAwMjpcXHRcXHRcXHQgZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VkZXZfbmFtZSwgZGV2LVxcdTAwM2VjaGlwX3Jldik7XFxuNDAwMzpcXHRcXG40MDA0OlxcdFxcdHJldCA9IGtzel9jaGVja19kZXZpY2VfaWQoZGV2KTtcXG40MDA1OlxcdFxcdGlmIChyZXQpXFxuNDAwNjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjQwMDc6XFx0XFxuNDAwODpcXHRcXHRkZXYtXFx1MDAzZWRldl9vcHMgPSBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZW9wcztcXG40MDA5OlxcdFxcbjQwMTA6XFx0XFx0cmV0ID0gZGV2LVxcdTAwM2VkZXZfb3BzLVxcdTAwM2Vpbml0KGRldik7XFxuNDAxMTpcXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo0OC4yNjA3NDU0MDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTIxNDY1NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtTWiBTd2l0Y2ggRGV0ZWN0aW9uIGFuZCBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBUaGUgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmdW5jdGlvbiBpcyBhY2Nlc3NpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIHRocm91Z2ggU1BJLCBJMkMsIG9yIFNNSSB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgY2hpcC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIGV2ZW4gcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCwgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVSwgKndpdGhvdXQqIHRoYXQgYWN0dWFsIEtTWiBzd2l0Y2ggYXR0YWNoZWQuIEl0IHNlZW1zIGxpa2UgaXQgd291bGQgbm90IGJlLlxuXG5IYW5nIG9u4oCmIGlzIHRoZXJlIGV2ZW4gYSB2aXJ0dWFsIERTQSBzd2l0Y2ggb3IgYW55IGtpbmQgb2YgbW9jayBJMkMgb3IgU1BJIGRldmljZSBidWlsdC1pbiB0byB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIG9yIFFFTVUgc2V0dXA/IE5vLCBub3QgdGhhdCBJJ20gYXdhcmUgb2YuIFN5emthbGxlciBpcyBkZXNpZ25lZCB0byBydW4gaW4geDg2XzY0IG9yIGFybTY0IFZNcywgd2hpY2ggaXMgaGVscGZ1bCwgYnV0IG5vdCBlbm91Z2ggaW4gdGhpcyBjYXNlLlxuXG5MZXQncyBzZWXigKYgcmVhZGluZyB0aGUgaW5zdHJ1Y3Rpb25zIGFib3V0IHBhdGNoIHdvcnRoaW5lc3MsIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFRoaXMgaXMgcmVsZXZhbnQsIGFuZCB0aGlzIGxpa2VseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuIFRoZSBpbnN0cnVjdGlvbnMgYWxzbyBzdGF0ZSB0aGF0IGNlcnRhaW4gZHJpdmVycyBhcmUgbm90IHdvcnRoIGZ1enppbmcsIHNwZWNpZmljYWxseTpcbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKSB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbkdpdmVuIHRoYXQgdGhlIERTQSBzd2l0Y2ggaXMgbGlrZWx5IGVtYmVkZGVkIGhhcmR3YXJlLCBpdCBtZWFucyBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGFueSB2aXJ0dWFsIGJ1cywgbW9jayBkZXZpY2UsIG9yIGV2ZW4gaWYgRFNBIG1pY3JvY2hpcCBzd2l0Y2ggZHJpdmVycyBhcmUgb25seSBmb3IgZW1iZWRkZWQgcGh5c2ljYWwgaGFyZHdhcmUuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyB0byBzZWUgaWYgSSBjYW4gY2xhcmlmeSBhbnkgb2YgdGhlc2UgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjU0LjE4MjIxNjQwNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNjAxNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgS1NaOFhYWC9LU1o5WFhYL0xBTjkzN1ggc2VyaWVzIHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoxNzpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTIzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyNDpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjQxOmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBTTUkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjU0LjI4MzgzNjE5OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjcwNDE5NjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRXhhbWluaW5nIHRoZSBEU0EgTWljcm9jaGlwIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBzdGFydGVkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSBsb3ctbGV2ZWwgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBNaWNyb2NoaXAgRFNBIGRyaXZlcnMgd2lsbCBiZSBkZWZpbmVkLiBJdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luLCBzbyBJIGNhbiBzZWUgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBjb250cm9sbGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQsIGhlbHBpbmcgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo1NS45NTQyNjI2NzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgS1NaOFhYWC9LU1o5WFhYL0xBTjkzN1ggc2VyaWVzIHN3aXRjaCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBXFxuICAgNTpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfS1NaXFxuICAgNjpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfTk9ORVxcbiAgIDc6XFx0XFx0c2VsZWN0IE5FVF9JRUVFODAyMVFfSEVMUEVSU1xcbiAgIDg6XFx0XFx0c2VsZWN0IERDQlxcbiAgIDk6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgTWljcm9jaGlwIEtTWjgsIEtTWjkgYW5kXFxuICAxMjpcXHRcXHQgIExBTjkzN1ggc2VyaWVzIHN3aXRjaCBjaGlwcywgYmVpbmcgS1NaODg2My84ODczLFxcbiAgMTM6XFx0XFx0ICBLU1o4ODk1Lzg4NjQsIEtTWjg3OTQvODc5NS84NzY1LFxcbiAgMTQ6XFx0XFx0ICBLU1o5NDc3Lzk4OTcvOTg5Ni85NTY3Lzg1NjcsIEtTWjk4OTMvOTU2My84NTYzIGFuZFxcbiAgMTU6XFx0XFx0ICBMQU45MzcwLzkzNzEvOTM3Mi85MzczLzkzNzQuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1xcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IEkyQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFJFR01BUF9JMkNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggSTJDLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVxcbiAgMjU6XFx0XFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFNQSVxcbiAgMjc6XFx0XFx0c2VsZWN0IFJFR01BUF9TUElcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggU1BJLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbiAgMzI6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgS1NaOTU2My9MQU45Mzd4IEV0aGVybmV0IFN3aXRjaFxcXCJcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBQVFBfMTU4OF9DTE9DS1xcbiAgMzQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OPW0gfHwgUFRQXzE1ODhfQ0xPQ0s9eVxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRpbWVzdGFtcGluZyBcXHUwMDI2IFBUUCBjbG9jayBtYW5pcHVsYXRpb24gaW5cXG4gIDM3OlxcdFxcdCAgS1NaODU2My9LU1o5NTYzL0xBTjkzN3ggc2VyaWVzIG9mIHN3aXRjaGVzLiBLU1o5NTYzL0tTWjg1NjMgc3VwcG9ydHNcXG4gIDM4OlxcdFxcdCAgb25seSBvbmUgc3RlcCB0aW1lc3RhbXBpbmcuIExBTjkzN3ggc3dpdGNoIHN1cHBvcnRzIGJvdGggb25lIHN0ZXAgYW5kXFxuICAzOTpcXHRcXHQgIHR3byBzdGVwIHRpbWVzdGFtcGluZy5cXG4gIDQwOlxcdFxcbiAgNDE6XFx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjg4NjNfU01JXFxuICA0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBTTUkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuICA0MzpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cXG4gIDQ0OlxcdFxcdHNlbGVjdCBNRElPX0JJVEJBTkdcXG4gIDQ1OlxcdFxcdGhlbHBcXG4gIDQ2OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2hcXG4gIDQ3OlxcdFxcdCAgTWljcm9jaGlwIFNNSS4gSXQgc3VwcG9ydHMgdGhlIEtTWjg4NjMgYW5kIEtTWjg4NzMgc3dpdGNoLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo1NS45NTQzNjE4OTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDkyODA2Njg1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogS1NaOTg5N1MgU3VwcG9ydCBpbiBNaWNyb2NoaXAgRFNBIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBLU1o5ODk3UyB2YXJpYW50IG9mIHRoZSBNaWNyb2NoaXAgRXRoZXJuZXQgc3dpdGNoLiBNeSBtYWluIGNvbmNlcm4sIGFzIGFsd2F5cyB3aXRoIHRoZXNlIHRoaW5ncywgaXMgd2hldGhlciBpdCdzIGZ1enphYmxlLiBMZXQncyBzZWUuLi4gaXQncyBhIGRyaXZlciBmb3IgKmhhcmR3YXJlKiBFdGhlcm5ldCBzd2l0Y2hlcyBmcm9tIE1pY3JvY2hpcCDigJMgc3BlY2lmaWNhbGx5LCB0aGUgS1NaIHNlcmllcywgY29ubmVjdGVkIHRocm91Z2ggSTJDLCBTUEksIG9yIFNNSS4gIEl0ICpuZWVkcyogdGhlIGFjdHVhbCBzaWxpY29uIHRvIHByb2JlIGFuZCB0YWxrIHRvLiAgU3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gRm9yZ2V0IGl0LiBUaGV5IGRvbid0IGVtdWxhdGUgdGhvc2UgS1NaIGNoaXBzLiAgV2l0aG91dCB0aGUgcmVhbCBoYXJkd2FyZSwgYGtzel9zd2l0Y2hfZGV0ZWN0YCBqdXN0IHBsYWluIGZhaWxzLCBvciB0aGUgZGV2aWNlIGlzbid0IGV2ZW4gaW5zdGFudGlhdGVkLiBJdCdzIGEgbm8tZ28gZnJvbSB0aGUgZ2V0LWdvLiBBbmQgaXQncyBhbHNvIGEgRFNBIHN3aXRjaCwgc28gaXQncyBhbGwgcGh5c2ljYWwgRFNBIGhvc3QgZXRoZXJuZXQgZGV2aWNlcywgRFNBIHRhZ3MsIGFuZCBwb3J0cyBkZWZpbmVkIGJ5IHRoZSBkZXZpY2UgdHJlZS5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhZGRpbmcgY29kZSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIEtTWjk4OTdTIGFuZCB0aGUgS1NaOTg5N1Ig4oCTIHNvbWV0aGluZyBiYXNlZCBvbiB0aGUgcG9ydCA3IFhNSUkgcmVnaXN0ZXIuICBUaGUgY2hhbmdlcyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYCBmaWxlIGFuZCBoZWFkZXJzLlxuXG5UaGVyZWZvcmUsIGFjY29yZGluZyB0byB0aGUgZ3VpZGVsaW5lIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsXCIgdGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBcIm5vLlwiIEl0J3MgcGh5c2ljYWxseSBpbXBvc3NpYmxlIHRvIGhpdCB0aGlzIGNvZGUgaW4gYSBRRU1VIG9yIEdDRSBzZXR1cC4gIEknbSBjb25maWRlbnQgdGhpcyBpc24ndCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdXNlZnVsbHkgZnV6emVkLCBhcyBpdCByZXF1aXJlcyBzcGVjaWFsaXplZCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuU28sIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmcgPSBmYWxzZWAsIGBFbmFibGVDb25maWdzID0gW11gLCBhbmQgYEZvY3VzU3ltYm9scyA9IFtdYC4gVGhlIHJlYXNvbmluZyBJJ20gcHJvdmlkaW5nIHRvIHRoZSB0b29sIGlzOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRpc3Rpbmd1aXNoaW5nIHRoZSBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgb3ZlciBJMkMsIFNQSSwgb3IgU01JKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIiBUaGF0IHNob3VsZCBjb3ZlciBpdC4gVGltZSB0byBydW4gdGhlIHRvb2wgY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5MjMsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDU6NDQ6MDAuODgyNDMyMDA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIGhhcmR3YXJlIG92ZXIgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgaW4gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbW11bmljYXRlcyB3aXRoIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggaGFyZHdhcmUgb3ZlciBTUEksIEkyQywgb3IgU01JLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQ0OjAwLjg4MjQ2OTgyN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow5nrhm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 05:24:11 +0000 UTC FinishedAt: 2026-08-31 05:44:03 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIGhhcmR3YXJlIG92ZXIgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTdiMTgwYTAzZDQwNWI4ZDQ1ZmFkMjRhNzY3MjhmYzZmNzI4NTc3YVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDA1OjQzOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbmluZGV4IDFhOWQ2ZjgzYTAyMzIuLjc4NDQyY2MzNzY0MzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbkBAIC0xNDg2LDYgJiM0MzsxNDg2LDQxIEBAIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcbiBcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4gXHR9LFxuIFxuJiM0MztcdFtLU1o5ODk3U10gPSB7XG4mIzQzO1x0XHQuY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQsXG4mIzQzO1x0XHQuZGV2X25hbWUgPSBcJiMzNDtLU1o5ODk3U1wmIzM0OyxcbiYjNDM7XHRcdC5udW1fdmxhbnMgPSA0MDk2LFxuJiM0MztcdFx0Lm51bV9hbHVzID0gNDA5NixcbiYjNDM7XHRcdC5udW1fc3RhdGljcyA9IDE2LFxuJiM0MztcdFx0LmNwdV9wb3J0cyA9IDB4N0YsXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xuJiM0MztcdFx0LnBvcnRfY250ID0gNyxcdFx0LyogdG90YWwgcGh5c2ljYWwgcG9ydCBjb3VudCAqL1xuJiM0MztcdFx0LnBvcnRfbmlycXMgPSAyLFxuJiM0MztcdFx0Lm51bV90eF9xdWV1ZXMgPSA0LFxuJiM0MztcdFx0Lm51bV9pcG1zID0gOCxcbiYjNDM7XHRcdC5vcHMgPSBcdTAwMjZrc3o5NDc3X2Rldl9vcHMsXG4mIzQzO1x0XHQuc3dpdGNoX29wcyA9IFx1MDAyNmtzejk0Nzdfc3dpdGNoX29wcyxcbiYjNDM7XHRcdC5waHlsaW5rX21hY19vcHMgPSBcdTAwMjZrc3o5NDc3X3BoeWxpbmtfbWFjX29wcyxcbiYjNDM7XHRcdC5waHlfZXJyYXRhXzk0NzcgPSB0cnVlLFxuJiM0MztcdFx0Lm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLFxuJiM0MztcdFx0Lm1pYl9jbnQgPSBBUlJBWV9TSVpFKGtzejk0NzdfbWliX25hbWVzKSxcbiYjNDM7XHRcdC5yZWdfbWliX2NudCA9IE1JQl9DT1VOVEVSX05VTSxcbiYjNDM7XHRcdC5yZWdzID0ga3N6OTQ3N19yZWdzLFxuJiM0MztcdFx0Lm1hc2tzID0ga3N6OTQ3N19tYXNrcyxcbiYjNDM7XHRcdC5zaGlmdHMgPSBrc3o5NDc3X3NoaWZ0cyxcbiYjNDM7XHRcdC54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLFxuJiM0MztcdFx0LnhtaWlfY3RybDEgPSBrc3o5NDc3X3htaWlfY3RybDEsXG4mIzQzO1x0XHQuc3VwcG9ydHNfbWlpXHQ9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbiYjNDM7XHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sXG4mIzQzO1x0XHQuc3VwcG9ydHNfcm1paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4mIzQzO1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIHRydWV9LFxuJiM0MztcdFx0LnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuJiM0MztcdFx0XHRcdCAgIGZhbHNlLCB0cnVlLCB0cnVlfSxcbiYjNDM7XHRcdC5pbnRlcm5hbF9waHlcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsXG4mIzQzO1x0XHRcdFx0ICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSxcbiYjNDM7XHRcdC5nYml0X2NhcGFibGVcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LFxuJiM0MztcdFx0LnNnbWlpX3BvcnQgPSA3LFxuJiM0MztcdH0sXG4mIzQzO1xuIFx0W0tTWjk4OTNdID0ge1xuIFx0XHQuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCxcbiBcdFx0LmRldl9uYW1lID0gXCYjMzQ7S1NaOTg5M1wmIzM0OyxcbkBAIC0xODUyLDYgJiM0MzsxODg3LDEzIEBAIHN0YXRpYyBpbnQga3N6X2NoZWNrX2RldmljZV9pZChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuIFx0XHRleHBlY3RlZF9jaGlwX2lkID0gZXhwZWN0ZWRfY2hpcF9kYXRhLVx1MDAzZWNoaXBfaWQ7XG4gXHR9XG4gXG4mIzQzO1x0LyogVGhlIEtTWjk4OTdTIGlzIG9ubHkgdG9sZCBhcGFydCBmcm9tIHRoZSBLU1o5ODk3UiBhdCBydW4gdGltZSwgc28gYVxuJiM0MztcdCAqIGRldmljZSB0cmVlIG5hbWluZyB0aGUgS1NaOTg5NyBtYXRjaGVzIGl0IGFzIHdlbGwuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGV4cGVjdGVkX2NoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBkZXYtXHUwMDNlY2hpcF9pZCA9PSBLU1o5ODk3U19DSElQX0lEKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0aWYgKGV4cGVjdGVkX2NoaXBfaWQgIT0gZGV2LVx1MDAzZWNoaXBfaWQpIHtcbiBcdFx0ZGV2X2VycihkZXYtXHUwMDNlZGV2LFxuIFx0XHRcdFwmIzM0O0RldmljZSB0cmVlIHNwZWNpZmllcyBjaGlwICVzIGJ1dCBmb3VuZCAlcywgcGxlYXNlIGZpeCBpdCFcXG5cJiMzNDssXG5AQCAtMjk2Niw3ICYjNDM7MzAwOCw2IEBAIHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbiBcdFx0c3dpdGNoIChpZDMyKSB7XG4gXHRcdGNhc2UgS1NaOTQ3N19DSElQX0lEOlxuIFx0XHRjYXNlIEtTWjk4OTZfQ0hJUF9JRDpcbi1cdFx0Y2FzZSBLU1o5ODk3X0NISVBfSUQ6XG4gXHRcdGNhc2UgS1NaOTU2N19DSElQX0lEOlxuIFx0XHRjYXNlIEtTWjg1NjdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBMQU45MzcwX0NISVBfSUQ6XG5AQCAtMjk3OSw2ICYjNDM7MzAyMCwyMyBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdFx0aWYgKGRldi1cdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcbiBcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gaWQzMjtcbiBcdFx0XHRicmVhaztcbiYjNDM7XHRcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxuJiM0MztcdFx0XHQvKiBPbmx5IHRoZSBLU1o5ODk3UyBoYXMgYW4gU0dNSUkgcG9ydCA3OyB0aGUgS1NaOTg5N1JcbiYjNDM7XHRcdFx0ICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3U1xuJiM0MztcdFx0XHQgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlXG4mIzQzO1x0XHRcdCAqIEtTWjk4OTdSIGRhdGEgc2hlZXQgRFMwMDAwMjMzMEQgc2VjdGlvbiA1LjIuMy4xLlxuJiM0MztcdFx0XHQgKi9cbiYjNDM7XHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsXG4mIzQzO1x0XHRcdFx0XHRcdTAwMjZpZDQpO1xuJiM0MztcdFx0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdFx0XHRpZiAoaWQ0IFx1MDAyNiBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTClcbiYjNDM7XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdTX0NISVBfSUQ7XG4mIzQzO1x0XHRcdGVsc2VcbiYjNDM7XHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdfQ0hJUF9JRDtcbiYjNDM7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcbiBcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBSRUdfQ0hJUF9JRDQsXG4gXHRcdFx0XHRcdFx1MDAyNmlkNCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuaW5kZXggY2JlOTg0OTQ1NzhjMy4uMGNmZjMzZGYwNmE0YiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuQEAgLTI4NCw2ICYjNDM7Mjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xuIFx0S1NaOTQ3NyxcbiBcdEtTWjk4OTYsXG4gXHRLU1o5ODk3LFxuJiM0MztcdEtTWjk4OTdTLFxuIFx0S1NaOTg5MyxcbiBcdEtTWjk1NjMsXG4gXHRLU1o5NTY3LFxuQEAgLTg3NCw2ICYjNDM7ODc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBrc3pfaXNfc2dtaWlfcG9ydChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydClcbiAjZGVmaW5lIFNLVV9JRF9LU1o4NTYzXHRcdFx0MHgzY1xuICNkZWZpbmUgU0tVX0lEX0tTWjk1NjNcdFx0XHQweDFjXG4gXG4mIzQzOy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xuJiM0MzsjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wXHQweDczMDBcbiYjNDM7I2RlZmluZSBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTFx0XHRCSVQoNylcbiYjNDM7XG4gLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXHQxMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuQEAgLTM0LDYgJiM0MzszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xuIFx0S1NaOTQ3N19DSElQX0lEID0gMHgwMDk0NzcwMCxcbiBcdEtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsXG4gXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxuJiM0MztcdEtTWjk4OTdTX0NISVBfSUQgPSAweDAwOTg5NzAxLFxuIFx0S1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCxcbiBcdEtTWjk1NjNfQ0hJUF9JRCA9IDB4MDA5NTYzMDAsXG4gXHRLU1o4NTY3X0NISVBfSUQgPSAweDAwODU2NzAwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoa3N6X2NvbW1vbi5jKS4gVGhpcyBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBoYXJkd2FyZSBvdmVyIFNQSSwgSTJDLCBvciBTTUksIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU3YjE4MGEwM2Q0MDViOGQ0NWZhZDI0YTc2NzI4ZmM2ZjcyODU3N2EKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAwNTo0MzozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMKaW5kZXggMWE5ZDZmODNhMDIzMi4uNzg0NDJjYzM3NjQzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMKQEAgLTE0ODYsNiAmIzQzOzE0ODYsNDEgQEAgY29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEga3N6X3N3aXRjaF9jaGlwc1tdID0gewogCQkuZ2JpdF9jYXBhYmxlCT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LAogCX0sCiAKJiM0MzsJW0tTWjk4OTdTXSA9IHsKJiM0MzsJCS5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCwKJiM0MzsJCS5kZXZfbmFtZSA9ICYjMzQ7S1NaOTg5N1MmIzM0OywKJiM0MzsJCS5udW1fdmxhbnMgPSA0MDk2LAomIzQzOwkJLm51bV9hbHVzID0gNDA5NiwKJiM0MzsJCS5udW1fc3RhdGljcyA9IDE2LAomIzQzOwkJLmNwdV9wb3J0cyA9IDB4N0YsCS8qIGNhbiBiZSBjb25maWd1cmVkIGFzIGNwdSBwb3J0ICovCiYjNDM7CQkucG9ydF9jbnQgPSA3LAkJLyogdG90YWwgcGh5c2ljYWwgcG9ydCBjb3VudCAqLwomIzQzOwkJLnBvcnRfbmlycXMgPSAyLAomIzQzOwkJLm51bV90eF9xdWV1ZXMgPSA0LAomIzQzOwkJLm51bV9pcG1zID0gOCwKJiM0MzsJCS5vcHMgPSAmYW1wO2tzejk0NzdfZGV2X29wcywKJiM0MzsJCS5zd2l0Y2hfb3BzID0gJmFtcDtrc3o5NDc3X3N3aXRjaF9vcHMsCiYjNDM7CQkucGh5bGlua19tYWNfb3BzID0gJmFtcDtrc3o5NDc3X3BoeWxpbmtfbWFjX29wcywKJiM0MzsJCS5waHlfZXJyYXRhXzk0NzcgPSB0cnVlLAomIzQzOwkJLm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLAomIzQzOwkJLm1pYl9jbnQgPSBBUlJBWV9TSVpFKGtzejk0NzdfbWliX25hbWVzKSwKJiM0MzsJCS5yZWdfbWliX2NudCA9IE1JQl9DT1VOVEVSX05VTSwKJiM0MzsJCS5yZWdzID0ga3N6OTQ3N19yZWdzLAomIzQzOwkJLm1hc2tzID0ga3N6OTQ3N19tYXNrcywKJiM0MzsJCS5zaGlmdHMgPSBrc3o5NDc3X3NoaWZ0cywKJiM0MzsJCS54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLAomIzQzOwkJLnhtaWlfY3RybDEgPSBrc3o5NDc3X3htaWlfY3RybDEsCiYjNDM7CQkuc3VwcG9ydHNfbWlpCT0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAomIzQzOwkJCQkgICBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sCiYjNDM7CQkuc3VwcG9ydHNfcm1paQk9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKJiM0MzsJCQkJICAgZmFsc2UsIHRydWUsIHRydWV9LAomIzQzOwkJLnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAomIzQzOwkJCQkgICBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sCiYjNDM7CQkuaW50ZXJuYWxfcGh5CT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsCiYjNDM7CQkJCSAgIHRydWUsIGZhbHNlLCBmYWxzZX0sCiYjNDM7CQkuZ2JpdF9jYXBhYmxlCT0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWV9LAomIzQzOwkJLnNnbWlpX3BvcnQgPSA3LAomIzQzOwl9LAomIzQzOwogCVtLU1o5ODkzXSA9IHsKIAkJLmNoaXBfaWQgPSBLU1o5ODkzX0NISVBfSUQsCiAJCS5kZXZfbmFtZSA9ICYjMzQ7S1NaOTg5MyYjMzQ7LApAQCAtMTg1Miw2ICYjNDM7MTg4NywxMyBAQCBzdGF0aWMgaW50IGtzel9jaGVja19kZXZpY2VfaWQoc3RydWN0IGtzel9kZXZpY2UgKmRldikKIAkJZXhwZWN0ZWRfY2hpcF9pZCA9IGV4cGVjdGVkX2NoaXBfZGF0YS0mZ3Q7Y2hpcF9pZDsKIAl9CiAKJiM0MzsJLyogVGhlIEtTWjk4OTdTIGlzIG9ubHkgdG9sZCBhcGFydCBmcm9tIHRoZSBLU1o5ODk3UiBhdCBydW4gdGltZSwgc28gYQomIzQzOwkgKiBkZXZpY2UgdHJlZSBuYW1pbmcgdGhlIEtTWjk4OTcgbWF0Y2hlcyBpdCBhcyB3ZWxsLgomIzQzOwkgKi8KJiM0MzsJaWYgKGV4cGVjdGVkX2NoaXBfaWQgPT0gS1NaOTg5N19DSElQX0lEICZhbXA7JmFtcDsKJiM0MzsJICAgIGRldi0mZ3Q7Y2hpcF9pZCA9PSBLU1o5ODk3U19DSElQX0lEKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJaWYgKGV4cGVjdGVkX2NoaXBfaWQgIT0gZGV2LSZndDtjaGlwX2lkKSB7CiAJCWRldl9lcnIoZGV2LSZndDtkZXYsCiAJCQkmIzM0O0RldmljZSB0cmVlIHNwZWNpZmllcyBjaGlwICVzIGJ1dCBmb3VuZCAlcywgcGxlYXNlIGZpeCBpdCFcbiYjMzQ7LApAQCAtMjk2Niw3ICYjNDM7MzAwOCw2IEBAIHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldikKIAkJc3dpdGNoIChpZDMyKSB7CiAJCWNhc2UgS1NaOTQ3N19DSElQX0lEOgogCQljYXNlIEtTWjk4OTZfQ0hJUF9JRDoKLQkJY2FzZSBLU1o5ODk3X0NISVBfSUQ6CiAJCWNhc2UgS1NaOTU2N19DSElQX0lEOgogCQljYXNlIEtTWjg1NjdfQ0hJUF9JRDoKIAkJY2FzZSBMQU45MzcwX0NISVBfSUQ6CkBAIC0yOTc5LDYgJiM0MzszMDIwLDIzIEBAIHN0YXRpYyBpbnQga3N6X3N3aXRjaF9kZXRlY3Qoc3RydWN0IGtzel9kZXZpY2UgKmRldikKIAkJCWlmIChkZXYtJmd0O2NoaXBfaWQgIT0gTEFOOTY0Nl9DSElQX0lEKQogCQkJCWRldi0mZ3Q7Y2hpcF9pZCA9IGlkMzI7CiAJCQlicmVhazsKJiM0MzsJCWNhc2UgS1NaOTg5N19DSElQX0lEOgomIzQzOwkJCS8qIE9ubHkgdGhlIEtTWjk4OTdTIGhhcyBhbiBTR01JSSBwb3J0IDc7IHRoZSBLU1o5ODk3UgomIzQzOwkJCSAqIGhhcyBhIHNlY29uZCBSR01JSSBwb3J0IGluc3RlYWQuIFNlZSB0aGUgS1NaOTg5N1MKJiM0MzsJCQkgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlCiYjNDM7CQkJICogS1NaOTg5N1IgZGF0YSBzaGVldCBEUzAwMDAyMzMwRCBzZWN0aW9uIDUuMi4zLjEuCiYjNDM7CQkJICovCiYjNDM7CQkJcmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsCiYjNDM7CQkJCQkmYW1wO2lkNCk7CiYjNDM7CQkJaWYgKHJldCkKJiM0MzsJCQkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJCQlpZiAoaWQ0ICZhbXA7IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKQomIzQzOwkJCQlkZXYtJmd0O2NoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEOwomIzQzOwkJCWVsc2UKJiM0MzsJCQkJZGV2LSZndDtjaGlwX2lkID0gS1NaOTg5N19DSElQX0lEOwomIzQzOwomIzQzOwkJCWJyZWFrOwogCQljYXNlIEtTWjk4OTNfQ0hJUF9JRDoKIAkJCXJldCA9IGtzel9yZWFkOChkZXYsIFJFR19DSElQX0lENCwKIAkJCQkJJmFtcDtpZDQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaAppbmRleCBjYmU5ODQ5NDU3OGMzLi4wY2ZmMzNkZjA2YTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaApAQCAtMjg0LDYgJiM0MzsyODQsNyBAQCBlbnVtIGtzel9tb2RlbCB7CiAJS1NaOTQ3NywKIAlLU1o5ODk2LAogCUtTWjk4OTcsCiYjNDM7CUtTWjk4OTdTLAogCUtTWjk4OTMsCiAJS1NaOTU2MywKIAlLU1o5NTY3LApAQCAtODc0LDYgJiM0Mzs4NzUsMTAgQEAgc3RhdGljIGlubGluZSBib29sIGtzel9pc19zZ21paV9wb3J0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0KQogI2RlZmluZSBTS1VfSURfS1NaODU2MwkJCTB4M2MKICNkZWZpbmUgU0tVX0lEX0tTWjk1NjMJCQkweDFjCiAKJiM0MzsvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi8KJiM0MzsjZGVmaW5lIEtTWjk4OTdfUkVHX1BPUlQ3X1hNSUlfQ1RSTF8wCTB4NzMwMAomIzQzOyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUwJCUJJVCg3KQomIzQzOwogLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovCiAjZGVmaW5lIEJST0FEQ0FTVF9TVE9STV9QUk9UX1JBVEUJMTAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaCBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmgKaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oCkBAIC0zNCw2ICYjNDM7MzQsNyBAQCBlbnVtIGtzel9jaGlwX2lkIHsKIAlLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLAogCUtTWjk4OTZfQ0hJUF9JRCA9IDB4MDA5ODk2MDAsCiAJS1NaOTg5N19DSElQX0lEID0gMHgwMDk4OTcwMCwKJiM0MzsJS1NaOTg5N1NfQ0hJUF9JRCA9IDB4MDA5ODk3MDEsCiAJS1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCwKIAlLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLAogCUtTWjg1NjdfQ0hJUF9JRCA9IDB4MDA4NTY3MDAsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwOTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNaWNyb2NoaXAgS1NaIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIHVzZXImIzM5O3Mgc3VibWl0dGVkIGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY2AsIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaGAsIGFuZCBgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBkcml2ZXIgaXMgZXZlbiBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nLiBJdCYjMzk7cyB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggZHJpdmVyIHdpdGhpbiB0aGUgRFNBIGZyYW1ld29yayDigJMgc3BlY2lmaWNhbGx5LCBga3N6X2NvbW1vbi5jYC4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBnZXRzIGhvb2tlZCB1cC4gSXMgaXQgcHJvYmVkIHRocm91Z2ggU1BJLCBJMkMsIE1NSU8sIFBDSWUsIE1ESU8sIE9wZW5GaXJtd2FyZSwgb3IgcGxhdGZvcm0gZGF0YT8gVW5kZXJzdGFuZGluZyB0aGUgYXR0YWNobWVudCBtZXRob2QgaXMgY3J1Y2lhbC4KCk5vdywgbGV0JiMzOTtzIGFwcGx5IHRoZSBydWxlLXNldDogSXMgdGhlcmUgYW55dGhpbmcgaW4gdGhpcyBwYXRjaCB0aGF0IHN1Z2dlc3RzIGl0JiMzOTtzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VPyBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgbm90IHRvIHdhc3RlIHRpbWUgb24gcGF0aHMgdGhhdCBjYW4mIzM5O3QgYmUgaGl0IHdpdGggc3RhbmRhcmQgZW11bGF0ZWQgaGFyZHdhcmUuIEFyZSB3ZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHZlbmRvci1zcGVjaWZpYyB0aGF0IHJlcXVpcmVzIGFjdHVhbCBQQ0llIGhhcmR3YXJlIGxpa2UgYW4gbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBvciBhbWRncHUgZHJpdmVyPyBGaW5hbGx5LCBhcmUgd2UganVzdCBsb29raW5nIGF0IGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIG9yIGBwY2lfdW5yZWdpc3Rlcl9kcml2ZXJgIGNhbGxiYWNrcyB0aGF0IGFyZSBvbmx5IHRyaWdnZXJlZCBieSBob3QtdW5wbHVnIG9yIHN5c2ZzIHVuYmluZCBvcGVyYXRpb25zPyBJIG5lZWQgdG8gcnVsZSB0aG9zZSBvdXQgdG9vLgoKSSBzaG91bGQgcHJvYmFibHkgdXNlIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciAmIzM0O2tzeiYjMzQ7IGRyaXZlcnMgdG8gc2VlIGhvdyB0aGUga3N6OTQ3NyBhbmQgb3RoZXIgS1NaIHN3aXRjaCBkcml2ZXJzIGFyZSBhdHRhY2hlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBwYXRoIHRvIGV4cGxvaXRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrc3pfc3dpdGNoX3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM9MTMzPXN0YXRpYyBpbnQga3N6ODg2M19zbWlfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNjgtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejg4NjNfc21pLmM6MTY5Olx0cmV0ID0ga3N6X3N3aXRjaF9yZWdpc3RlcihkZXYpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE3MC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmM9MTc9c3RhdGljIGludCBrc3o5NDc3X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYzo1MTpcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYy01Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTQ3PXN0YXRpYyBpbnQga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zOTUxLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mzk1MjppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzk1My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA5Ny19XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzo0MDk4OkVYUE9SVF9TWU1CT0woa3N6X3N3aXRjaF9yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy00MDk5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQyOD1zdHJ1Y3Qga3N6X2RldmljZSAqa3N6X3N3aXRjaF9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpiYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMC1cdFx0XHRcdCAgICB2b2lkICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oOjQzMTppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMi12b2lkIGtzel9zd2l0Y2hfcmVtb3ZlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jPTEzNz1zdGF0aWMgaW50IGtzel9zcGlfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTQtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYzoxOTU6XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9zcGkuYy0xOTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYwMQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyBLU1ogU3dpdGNoIEhhcmR3YXJlIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UgZHJpdmVycyDigJMgc3BlY2lmaWNhbGx5IGBrc3o5NDc3X2kyYy5jYCwgYGtzel9zcGkuY2AsIGFuZCBga3N6ODg2M19zbWkuY2AuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgaGFyZHdhcmUgd2l0aG91dCBuZWVkaW5nIHBoeXNpY2FsIGFjY2Vzcy4gQ2FuIEkgcHJvYmUsIGVtdWxhdGUsIG9yIHNvbWVob3cgYWNjZXNzIGl0IGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgb3IgdGhyb3VnaCB2aXJ0dWFsaXphdGlvbiBmb3IgZnV6emluZyBwdXJwb3Nlcz8KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB3aGV0aGVyIHRoZXNlIEkyQy9TUEkvTURJTyBEU0Egc3dpdGNoIGhhcmR3YXJlIGNvbXBvbmVudHMgYXJlIGFjY2Vzc2libGUgdmlydHVhbGx5IG9yIGlmIEkmIzM5O20gZ29pbmcgdG8gYmUgc3R1Y2sgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLiBBaCwgcmlnaHQsIERTQSBzd2l0Y2hlcyBhcmUgb2Z0ZW4gaG9va2VkIHVwIHZpYSBJMkMgb3IgU1BJLiBOb3csIGlzIHRoZXJlIHNvbWUga2luZCBvZiBtb2NrIG9yIGVtdWxhdGVkIGRldmljZSBpbiBRRU1VIHRoYXQgSSBjYW4gdGFyZ2V0LCBsaWtlIGZvciBhIE1pY3JvY2hpcCBLU1o5ODk3IGZvciBpbnN0YW5jZT8gSG9sZCBvbiwgbm8sIFFFTVUgKmRvZXNuJiMzOTt0KiBhcHBlYXIgdG8gZW11bGF0ZSB0aGUgTWljcm9jaGlwIEtTWjk0Nzcgb3IgS1NaOTg5NyBzd2l0Y2hlcy4gVGhhdOKAmXMgYSBzbmFnLgoKT2theSwgc28gaWYgUUVNVSBlbXVsYXRpb24gaXMgb2ZmIHRoZSB0YWJsZSwgd2hhdCBhYm91dCBpbnN0YW50aWF0aW5nIEkyQy9TUEkgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZT8gQ2FuIEksIGZvciBleGFtcGxlLCBsZXZlcmFnZSBgc3lzZnNgIGFuZCBpdHMgYG5ld19kZXZpY2VgIGVudHJpZXMgZm9yIEkyQyBvciBTUEkgZGV2aWNlIGNyZWF0aW9uPyBJIG5lZWQgdG8gY2hlY2sgaG93IHRoYXQgd29ya3MuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBleGFtaW5lIGBrc3o5NDc3X2kyYy5jYCBhbmQgYGtzel9zcGkuY2AgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBwYXRod2F5IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKlxuICAgMzpcdCAqIE1pY3JvY2hpcCBLU1o5NDc3IHNlcmllcyByZWdpc3RlciBhY2Nlc3MgdGhyb3VnaCBJMkNcbiAgIDQ6XHQgKlxuICAgNTpcdCAqIENvcHlyaWdodCAoQykgMjAxOC0yMDI0IE1pY3JvY2hpcCBUZWNobm9sb2d5IEluYy5cbiAgIDY6XHQgKi9cbiAgIDc6XHRcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pMmMuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAxMjpcdFxuICAxMzpcdCNpbmNsdWRlIFwmIzM0O2tzel9jb21tb24uaFwmIzM0O1xuICAxNDpcdFxuICAxNTpcdEtTWl9SRUdNQVBfVEFCTEUoa3N6OTQ3Nywgbm90X3VzZWQsIDE2LCAwLCAwKTtcbiAgMTY6XHRcbiAgMTc6XHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDE4Olx0e1xuICAxOTpcdFx0Y29uc3Qgc3RydWN0IGtzel9jaGlwX2RhdGEgKmNoaXA7XG4gIDIwOlx0XHRzdHJ1Y3QgZGV2aWNlICpkZGV2ID0gXHUwMDI2aTJjLVx1MDAzZWRldjtcbiAgMjE6XHRcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjO1xuICAyMjpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldjtcbiAgMjM6XHRcdGludCBpLCByZXQ7XG4gIDI0Olx0XG4gIDI1Olx0XHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xuICAyNjpcdFx0aWYgKCFjaGlwKVxuICAyNzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAgMjg6XHRcbiAgMjk6XHRcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXHUwMDI2aTJjLVx1MDAzZWRldiwgY2hpcCwgaTJjKTtcbiAgMzA6XHRcdGlmICghZGV2KVxuICAzMTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgMzI6XHRcbiAgMzM6XHRcdC8qIFNhdmUgY2hpcCBpZCB0byBkbyBzcGVjaWFsIGluaXRpYWxpemF0aW9uIHdoZW4gcHJvYmluZy4gKi9cbiAgMzQ6XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gY2hpcC1cdTAwM2VjaGlwX2lkO1xuICAzNTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgX19LU1pfTlVNX1JFR01BUFM7IGkmIzQzOyYjNDM7KSB7XG4gIDM2Olx0XHRcdHJjID0ga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldO1xuICAzNzpcdFx0XHRyYy5sb2NrX2FyZyA9IFx1MDAyNmRldi1cdTAwM2VyZWdtYXBfbXV0ZXg7XG4gIDM4Olx0XHRcdGRldi1cdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFx1MDAyNnJjKTtcbiAgMzk6XHRcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVnbWFwW2ldKSkge1xuICA0MDpcdFx0XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKFx1MDAyNmkyYy1cdTAwM2VkZXYsIFBUUl9FUlIoZGV2LVx1MDAzZXJlZ21hcFtpXSksXG4gIDQxOlx0XHRcdFx0XHRcdCAgICAgXCYjMzQ7RmFpbGVkIHRvIGluaXRpYWxpemUgcmVnbWFwJWlcXG5cJiMzNDssXG4gIDQyOlx0XHRcdFx0XHRcdCAgICAga3N6OTQ3N19yZWdtYXBfY29uZmlnW2ldLnZhbF9iaXRzKTtcbiAgNDM6XHRcdFx0fVxuICA0NDpcdFx0fVxuICA0NTpcdFxuICA0NjpcdFx0aWYgKGkyYy1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcbiAgNDc6XHRcdFx0ZGV2LVx1MDAzZXBkYXRhID0gaTJjLVx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xuICA0ODpcdFxuICA0OTpcdFx0ZGV2LVx1MDAzZWlycSA9IGkyYy1cdTAwM2VpcnE7XG4gIDUwOlx0XG4gIDUxOlx0XHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XG4gIDUyOlx0XG4gIDUzOlx0XHQvKiBNYWluIERTQSBkcml2ZXIgbWF5IG5vdCBiZSBzdGFydGVkIHlldC4gKi9cbiAgNTQ6XHRcdGlmIChyZXQpXG4gIDU1Olx0XHRcdHJldHVybiByZXQ7XG4gIDU2Olx0XG4gIDU3Olx0XHRpMmNfc2V0X2NsaWVudGRhdGEoaTJjLCBkZXYpO1xuICA1ODpcdFxuICA1OTpcdFx0cmV0dXJuIDA7XG4gIDYwOlx0fVxuICA2MTpcdFxuICA2MjpcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuICA2MzpcdHtcbiAgNjQ6XHRcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcbiAgNjU6XHRcbiAgNjY6XHRcdGlmIChkZXYpXG4gIDY3Olx0XHRcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XG4gIDY4Olx0fVxuICA2OTpcdFxuICA3MDpcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4gIDcxOlx0e1xuICA3MjpcdFx0c3RydWN0IGtzel9kZXZpY2UgKmRldiA9IGkyY19nZXRfY2xpZW50ZGF0YShpMmMpO1xuICA3MzpcdFxuICA3NDpcdFx0aWYgKCFkZXYpXG4gIDc1Olx0XHRcdHJldHVybjtcbiAgNzY6XHRcbiAgNzc6XHRcdGtzel9zd2l0Y2hfc2h1dGRvd24oZGV2KTtcbiAgNzg6XHRcbiAgNzk6XHRcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xuICA4MDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzQyCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIGZ1bmN0aW9uIGluIGBrc3pfY29tbW9uLmNgLgoKKipEaXZpbmcgaW50byBrc3pfc3dpdGNoX3JlZ2lzdGVyKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgd2VlZHMgb2YgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGggbGluZSAzOTUyIGFzIGEgZ29vZCBlbnRyeSBwb2ludC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBoYXBwZW5pbmcgZHVyaW5nIHRoZSBzd2l0Y2ggcmVnaXN0cmF0aW9uIHByb2Nlc3MuIEkgc3VzcGVjdCB0aGlzIGlzIGEga2V5IHBhcnQgb2YgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBhbmQgcHJvYmFibHkgaW52b2x2ZXMgc2V0dGluZyB1cCB0aGUgZGV2aWNlIHN0cnVjdHVyZSwgYWxsb2NhdGluZyByZXNvdXJjZXMsIGFuZCBnZXR0aW5nIHRoZSBoYXJkd2FyZSByZWFkeSBmb3Igb3BlcmF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IG9wZXJhdGlvbnMgb2NjdXJyaW5nIGF0IHRoaXMgcG9pbnQgdG8gZ2V0IHRoZSBoaWdoLWxldmVsIGZsb3cuIEnigJlsbCBrZWVwIGEgbWVudGFsIG5vdGUgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCBzcGVjaWZpY2FsbHkgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBpdCBpbnRlcmFjdHMgd2l0aC4gTGV04oCZcyBzZWUgd2hhdCBnb29kaWVzIHRoaXMgcGllY2Ugb2YgY29kZSBob2xkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzk1MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszOTUyOlx0aW50IGtzel9zd2l0Y2hfcmVnaXN0ZXIoc3RydWN0IGtzel9kZXZpY2UgKmRldilcbjM5NTM6XHR7XG4zOTU0Olx0XHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcbjM5NTU6XHRcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XG4zOTU2Olx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xuMzk1NzpcdFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xuMzk1ODpcdFx0aW50IHJldDtcbjM5NTk6XHRcdGludCBpO1xuMzk2MDpcdFxuMzk2MTpcdFx0ZGV2LVx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbjM5NjI6XHRcdFx0XHRcdFx0XHQgIEdQSU9EX09VVF9MT1cpO1xuMzk2MzpcdFx0aWYgKElTX0VSUihkZXYtXHUwMDNlcmVzZXRfZ3BpbykpXG4zOTY0Olx0XHRcdHJldHVybiBQVFJfRVJSKGRldi1cdTAwM2VyZXNldF9ncGlvKTtcbjM5NjU6XHRcbjM5NjY6XHRcdGlmIChkZXYtXHUwMDNlcmVzZXRfZ3Bpbykge1xuMzk2NzpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5Njg6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XG4zOTY5Olx0XHRcdFx0aWYgKHJldClcbjM5NzA6XHRcdFx0XHRcdHJldHVybiByZXQ7XG4zOTcxOlx0XHRcdH1cbjM5NzI6XHRcbjM5NzM6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cdTAwM2VyZXNldF9ncGlvLCAxKTtcbjM5NzQ6XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAwLCAxMjAwMCk7XG4zOTc1Olx0XHRcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4zOTc2Olx0XHRcdG1zbGVlcCgxMDApO1xuMzk3NzpcdFxuMzk3ODpcdFx0XHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttaWNyb2NoaXAsa3N6ODQ2M1wmIzM0OykpIHtcbjM5Nzk6XHRcdFx0XHRyZXQgPSBrc3o4NDYzX3JlbGVhc2Vfc3RyYXBzX3NwaShkZXYpO1xuMzk4MDpcdFx0XHRcdGlmIChyZXQpXG4zOTgxOlx0XHRcdFx0XHRyZXR1cm4gcmV0O1xuMzk4MjpcdFx0XHR9XG4zOTgzOlx0XHR9XG4zOTg0Olx0XG4zOTg1Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2VkZXZfbXV0ZXgpO1xuMzk4NjpcdFx0bXV0ZXhfaW5pdChcdTAwMjZkZXYtXHUwMDNlcmVnbWFwX211dGV4KTtcbjM5ODc6XHRcdG11dGV4X2luaXQoXHUwMDI2ZGV2LVx1MDAzZWFsdV9tdXRleCk7XG4zOTg4Olx0XHRtdXRleF9pbml0KFx1MDAyNmRldi1cdTAwM2V2bGFuX211dGV4KTtcbjM5ODk6XHRcbjM5OTA6XHRcdHJldCA9IGtzel9zd2l0Y2hfZGV0ZWN0KGRldik7XG4zOTkxOlx0XHRpZiAocmV0KVxuMzk5MjpcdFx0XHRyZXR1cm4gcmV0O1xuMzk5MzpcdFxuMzk5NDpcdFx0aW5mbyA9IGtzel9sb29rdXBfaW5mbyhkZXYtXHUwMDNlY2hpcF9pZCk7XG4zOTk1Olx0XHRpZiAoIWluZm8pXG4zOTk2Olx0XHRcdHJldHVybiAtRU5PREVWO1xuMzk5NzpcdFxuMzk5ODpcdFx0LyogVXBkYXRlIHRoZSBjb21wYXRpYmxlIGluZm8gd2l0aCB0aGUgcHJvYmVkIG9uZSAqL1xuMzk5OTpcdFx0ZGV2LVx1MDAzZWluZm8gPSBpbmZvO1xuNDAwMDpcdFxuNDAwMTpcdFx0ZGV2X2luZm8oZGV2LVx1MDAzZWRldiwgXCYjMzQ7Zm91bmQgc3dpdGNoOiAlcywgcmV2ICVpXFxuXCYjMzQ7LFxuNDAwMjpcdFx0XHQgZGV2LVx1MDAzZWluZm8tXHUwMDNlZGV2X25hbWUsIGRldi1cdTAwM2VjaGlwX3Jldik7XG40MDAzOlx0XG40MDA0Olx0XHRyZXQgPSBrc3pfY2hlY2tfZGV2aWNlX2lkKGRldik7XG40MDA1Olx0XHRpZiAocmV0KVxuNDAwNjpcdFx0XHRyZXR1cm4gcmV0O1xuNDAwNzpcdFxuNDAwODpcdFx0ZGV2LVx1MDAzZWRldl9vcHMgPSBkZXYtXHUwMDNlaW5mby1cdTAwM2VvcHM7XG40MDA5Olx0XG40MDEwOlx0XHRyZXQgPSBkZXYtXHUwMDNlZGV2X29wcy1cdTAwM2Vpbml0KGRldik7XG40MDExOlx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1MTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgS1NaIFN3aXRjaCBEZXRlY3Rpb24gYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuIFRoZSBga3N6X3N3aXRjaF9kZXRlY3RgIGZ1bmN0aW9uIGlzIGFjY2Vzc2luZyBoYXJkd2FyZSByZWdpc3RlcnMgdGhyb3VnaCBTUEksIEkyQywgb3IgU01JIHRvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBjaGlwLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgZXZlbiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50LCBsaWtlIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBvciBRRU1VLCAqd2l0aG91dCogdGhhdCBhY3R1YWwgS1NaIHN3aXRjaCBhdHRhY2hlZC4gSXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBub3QgYmUuCgpIYW5nIG9u4oCmIGlzIHRoZXJlIGV2ZW4gYSB2aXJ0dWFsIERTQSBzd2l0Y2ggb3IgYW55IGtpbmQgb2YgbW9jayBJMkMgb3IgU1BJIGRldmljZSBidWlsdC1pbiB0byB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIG9yIFFFTVUgc2V0dXA/IE5vLCBub3QgdGhhdCBJJiMzOTttIGF3YXJlIG9mLiBTeXprYWxsZXIgaXMgZGVzaWduZWQgdG8gcnVuIGluIHg4Nl82NCBvciBhcm02NCBWTXMsIHdoaWNoIGlzIGhlbHBmdWwsIGJ1dCBub3QgZW5vdWdoIGluIHRoaXMgY2FzZS4KCkxldCYjMzk7cyBzZWXigKYgcmVhZGluZyB0aGUgaW5zdHJ1Y3Rpb25zIGFib3V0IHBhdGNoIHdvcnRoaW5lc3MsIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFRoaXMgaXMgcmVsZXZhbnQsIGFuZCB0aGlzIGxpa2VseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuIFRoZSBpbnN0cnVjdGlvbnMgYWxzbyBzdGF0ZSB0aGF0IGNlcnRhaW4gZHJpdmVycyBhcmUgbm90IHdvcnRoIGZ1enppbmcsIHNwZWNpZmljYWxseToKLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKR2l2ZW4gdGhhdCB0aGUgRFNBIHN3aXRjaCBpcyBsaWtlbHkgZW1iZWRkZWQgaGFyZHdhcmUsIGl0IG1lYW5zIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYW55IHZpcnR1YWwgYnVzLCBtb2NrIGRldmljZSwgb3IgZXZlbiBpZiBEU0EgbWljcm9jaGlwIHN3aXRjaCBkcml2ZXJzIGFyZSBvbmx5IGZvciBlbWJlZGRlZCBwaHlzaWNhbCBoYXJkd2FyZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIHRvIHNlZSBpZiBJIGNhbiBjbGFyaWZ5IGFueSBvZiB0aGVzZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0RTQV9NSUNST0NISVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O01pY3JvY2hpcCBLU1o4WFhYL0tTWjlYWFgvTEFOOTM3WCBzZXJpZXMgc3dpdGNoIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MTc6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjk0NzdfSTJDXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIEkyQyBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yMy1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyNDpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7S1NaIHNlcmllcyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWc6MzE6Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9QVFBcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zMi1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgS1NaOTU2My9MQU45Mzd4IEV0aGVybmV0IFN3aXRjaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00MC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzo0MTpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaODg2M19TTUlcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgU01JIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MTQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRXhhbWluaW5nIHRoZSBEU0EgTWljcm9jaGlwIEtjb25maWcqKgoKT2theSwgdGltZSB0byBnZXQgc3RhcnRlZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGZpbGUuIExldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSBhbGwgdGhlIGxvdy1sZXZlbCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIE1pY3JvY2hpcCBEU0EgZHJpdmVycyB3aWxsIGJlIGRlZmluZWQuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luLCBzbyBJIGNhbiBzZWUgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBjb250cm9sbGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQsIGhlbHBpbmcgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDA1OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudWNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNaWNyb2NoaXAgS1NaOFhYWC9LU1o5WFhYL0xBTjkzN1ggc2VyaWVzIHN3aXRjaCBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FcbiAgIDU6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19LU1pcbiAgIDY6XHRcdHNlbGVjdCBORVRfRFNBX1RBR19OT05FXG4gICA3Olx0XHRzZWxlY3QgTkVUX0lFRUU4MDIxUV9IRUxQRVJTXG4gICA4Olx0XHRzZWxlY3QgRENCXG4gICA5Olx0XHRzZWxlY3QgUENTX1hQQ1NcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBNaWNyb2NoaXAgS1NaOCwgS1NaOSBhbmRcbiAgMTI6XHRcdCAgTEFOOTM3WCBzZXJpZXMgc3dpdGNoIGNoaXBzLCBiZWluZyBLU1o4ODYzLzg4NzMsXG4gIDEzOlx0XHQgIEtTWjg4OTUvODg2NCwgS1NaODc5NC84Nzk1Lzg3NjUsXG4gIDE0Olx0XHQgIEtTWjk0NzcvOTg5Ny85ODk2Lzk1NjcvODU2NywgS1NaOTg5My85NTYzLzg1NjMgYW5kXG4gIDE1Olx0XHQgIExBTjkzNzAvOTM3MS85MzcyLzkzNzMvOTM3NC5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O0tTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IEkyQ1xuICAyMDpcdFx0c2VsZWN0IFJFR01BUF9JMkNcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggSTJDLlxuICAyMzpcdFxuICAyNDpcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfU1BJXG4gIDI1Olx0XHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIFNQSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuICAyNjpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFx1MDAyNlx1MDAyNiBTUElcbiAgMjc6XHRcdHNlbGVjdCBSRUdNQVBfU1BJXG4gIDI4Olx0XHRoZWxwXG4gIDI5Olx0XHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoIFNQSS5cbiAgMzA6XHRcbiAgMzE6XHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxuICAzMjpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgUFRQIGNsb2NrIG9uIHRoZSBLU1o5NTYzL0xBTjkzN3ggRXRoZXJuZXQgU3dpdGNoXCYjMzQ7XG4gIDMzOlx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT04gXHUwMDI2XHUwMDI2IFBUUF8xNTg4X0NMT0NLXG4gIDM0Olx0XHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT049bSB8fCBQVFBfMTU4OF9DTE9DSz15XG4gIDM1Olx0XHRoZWxwXG4gIDM2Olx0XHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGltZXN0YW1waW5nIFx1MDAyNiBQVFAgY2xvY2sgbWFuaXB1bGF0aW9uIGluXG4gIDM3Olx0XHQgIEtTWjg1NjMvS1NaOTU2My9MQU45Mzd4IHNlcmllcyBvZiBzd2l0Y2hlcy4gS1NaOTU2My9LU1o4NTYzIHN1cHBvcnRzXG4gIDM4Olx0XHQgIG9ubHkgb25lIHN0ZXAgdGltZXN0YW1waW5nLiBMQU45Mzd4IHN3aXRjaCBzdXBwb3J0cyBib3RoIG9uZSBzdGVwIGFuZFxuICAzOTpcdFx0ICB0d28gc3RlcCB0aW1lc3RhbXBpbmcuXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjg4NjNfU01JXG4gIDQyOlx0XHR0cmlzdGF0ZSBcJiMzNDtLU1ogc2VyaWVzIFNNSSBjb25uZWN0ZWQgc3dpdGNoIGRyaXZlclwmIzM0O1xuICA0MzpcdFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OXG4gIDQ0Olx0XHRzZWxlY3QgTURJT19CSVRCQU5HXG4gIDQ1Olx0XHRoZWxwXG4gIDQ2Olx0XHQgIFNlbGVjdCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgc3dpdGNoZXMgY29uZmlndXJlZCB0aHJvdWdoXG4gIDQ3Olx0XHQgIE1pY3JvY2hpcCBTTUkuIEl0IHN1cHBvcnRzIHRoZSBLU1o4ODYzIGFuZCBLU1o4ODczIHN3aXRjaC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMDU6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5MjMKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogNTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZyBBc3Nlc3NtZW50OiBLU1o5ODk3UyBTdXBwb3J0IGluIE1pY3JvY2hpcCBEU0EgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGFkZGluZyBzdXBwb3J0IGZvciB0aGUgS1NaOTg5N1MgdmFyaWFudCBvZiB0aGUgTWljcm9jaGlwIEV0aGVybmV0IHN3aXRjaC4gTXkgbWFpbiBjb25jZXJuLCBhcyBhbHdheXMgd2l0aCB0aGVzZSB0aGluZ3MsIGlzIHdoZXRoZXIgaXQmIzM5O3MgZnV6emFibGUuIExldCYjMzk7cyBzZWUuLi4gaXQmIzM5O3MgYSBkcml2ZXIgZm9yICpoYXJkd2FyZSogRXRoZXJuZXQgc3dpdGNoZXMgZnJvbSBNaWNyb2NoaXAg4oCTIHNwZWNpZmljYWxseSwgdGhlIEtTWiBzZXJpZXMsIGNvbm5lY3RlZCB0aHJvdWdoIEkyQywgU1BJLCBvciBTTUkuICBJdCAqbmVlZHMqIHRoZSBhY3R1YWwgc2lsaWNvbiB0byBwcm9iZSBhbmQgdGFsayB0by4gIFN0YW5kYXJkIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IEZvcmdldCBpdC4gVGhleSBkb24mIzM5O3QgZW11bGF0ZSB0aG9zZSBLU1ogY2hpcHMuICBXaXRob3V0IHRoZSByZWFsIGhhcmR3YXJlLCBga3N6X3N3aXRjaF9kZXRlY3RgIGp1c3QgcGxhaW4gZmFpbHMsIG9yIHRoZSBkZXZpY2UgaXNuJiMzOTt0IGV2ZW4gaW5zdGFudGlhdGVkLiBJdCYjMzk7cyBhIG5vLWdvIGZyb20gdGhlIGdldC1nby4gQW5kIGl0JiMzOTtzIGFsc28gYSBEU0Egc3dpdGNoLCBzbyBpdCYjMzk7cyBhbGwgcGh5c2ljYWwgRFNBIGhvc3QgZXRoZXJuZXQgZGV2aWNlcywgRFNBIHRhZ3MsIGFuZCBwb3J0cyBkZWZpbmVkIGJ5IHRoZSBkZXZpY2UgdHJlZS4KClRoZSBwYXRjaCBpdHNlbGYgaXMgYWRkaW5nIGNvZGUgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRoZSBLU1o5ODk3UyBhbmQgdGhlIEtTWjk4OTdSIOKAkyBzb21ldGhpbmcgYmFzZWQgb24gdGhlIHBvcnQgNyBYTUlJIHJlZ2lzdGVyLiAgVGhlIGNoYW5nZXMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY2AgZmlsZSBhbmQgaGVhZGVycy4KClRoZXJlZm9yZSwgYWNjb3JkaW5nIHRvIHRoZSBndWlkZWxpbmUgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywmIzM0OyB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkICYjMzQ7bm8uJiMzNDsgSXQmIzM5O3MgcGh5c2ljYWxseSBpbXBvc3NpYmxlIHRvIGhpdCB0aGlzIGNvZGUgaW4gYSBRRU1VIG9yIEdDRSBzZXR1cC4gIEkmIzM5O20gY29uZmlkZW50IHRoaXMgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0IGNhbiBiZSB1c2VmdWxseSBmdXp6ZWQsIGFzIGl0IHJlcXVpcmVzIHNwZWNpYWxpemVkIHBoeXNpY2FsIGhhcmR3YXJlLgoKU28sIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nID0gZmFsc2VgLCBgRW5hYmxlQ29uZmlncyA9IFtdYCwgYW5kIGBGb2N1c1N5bWJvbHMgPSBbXWAuIFRoZSByZWFzb25pbmcgSSYjMzk7bSBwcm92aWRpbmcgdG8gdGhlIHRvb2wgaXM6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZGlzdGluZ3Vpc2hpbmcgdGhlIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgTWljcm9jaGlwIEtTWiBzd2l0Y2ggaGFyZHdhcmUgKGNvbm5lY3RlZCBvdmVyIEkyQywgU1BJLCBvciBTTUkpIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSwgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7IFRoYXQgc2hvdWxkIGNvdmVyIGl0LiBUaW1lIHRvIHJ1biB0aGUgdG9vbCBjYWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1pY3JvY2hpcCBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlciAoa3N6X2NvbW1vbi5jKS4gVGhpcyBkcml2ZXIgY29tbXVuaWNhdGVzIHdpdGggcGh5c2ljYWwgTWljcm9jaGlwIHN3aXRjaCBoYXJkd2FyZSBvdmVyIFNQSSwgSTJDLCBvciBTTUksIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIGhhcmR3YXJlIG92ZXIgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAwNTo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDU6NDM6MzQuNTg1MDY2ODE4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYyOTc0MTkyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgaW4gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbW11bmljYXRlcyB3aXRoIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggaGFyZHdhcmUgb3ZlciBTUEksIEkyQywgb3IgU01JLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjM0LjU4NTA3NDYwOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUzNDc5MzY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTdiMTgwYTAzZDQwNWI4ZDQ1ZmFkMjRhNzY3MjhmYzZmNzI4NTc3YVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzMSAwNTo0MzozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXFxuaW5kZXggMWE5ZDZmODNhMDIzMi4uNzg0NDJjYzM3NjQzNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXFxuQEAgLTE0ODYsNiArMTQ4Niw0MSBAQCBjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSBrc3pfc3dpdGNoX2NoaXBzW10gPSB7XFxuIFxcdFxcdC5nYml0X2NhcGFibGVcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcXG4gXFx0fSxcXG4gXFxuK1xcdFtLU1o5ODk3U10gPSB7XFxuK1xcdFxcdC5jaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRCxcXG4rXFx0XFx0LmRldl9uYW1lID0gXFxcIktTWjk4OTdTXFxcIixcXG4rXFx0XFx0Lm51bV92bGFucyA9IDQwOTYsXFxuK1xcdFxcdC5udW1fYWx1cyA9IDQwOTYsXFxuK1xcdFxcdC5udW1fc3RhdGljcyA9IDE2LFxcbitcXHRcXHQuY3B1X3BvcnRzID0gMHg3RixcXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xcbitcXHRcXHQucG9ydF9jbnQgPSA3LFxcdFxcdC8qIHRvdGFsIHBoeXNpY2FsIHBvcnQgY291bnQgKi9cXG4rXFx0XFx0LnBvcnRfbmlycXMgPSAyLFxcbitcXHRcXHQubnVtX3R4X3F1ZXVlcyA9IDQsXFxuK1xcdFxcdC5udW1faXBtcyA9IDgsXFxuK1xcdFxcdC5vcHMgPSBcXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxcbitcXHRcXHQuc3dpdGNoX29wcyA9IFxcdTAwMjZrc3o5NDc3X3N3aXRjaF9vcHMsXFxuK1xcdFxcdC5waHlsaW5rX21hY19vcHMgPSBcXHUwMDI2a3N6OTQ3N19waHlsaW5rX21hY19vcHMsXFxuK1xcdFxcdC5waHlfZXJyYXRhXzk0NzcgPSB0cnVlLFxcbitcXHRcXHQubWliX25hbWVzID0ga3N6OTQ3N19taWJfbmFtZXMsXFxuK1xcdFxcdC5taWJfY250ID0gQVJSQVlfU0laRShrc3o5NDc3X21pYl9uYW1lcyksXFxuK1xcdFxcdC5yZWdfbWliX2NudCA9IE1JQl9DT1VOVEVSX05VTSxcXG4rXFx0XFx0LnJlZ3MgPSBrc3o5NDc3X3JlZ3MsXFxuK1xcdFxcdC5tYXNrcyA9IGtzejk0NzdfbWFza3MsXFxuK1xcdFxcdC5zaGlmdHMgPSBrc3o5NDc3X3NoaWZ0cyxcXG4rXFx0XFx0LnhtaWlfY3RybDAgPSBrc3o5NDc3X3htaWlfY3RybDAsXFxuK1xcdFxcdC54bWlpX2N0cmwxID0ga3N6OTQ3N194bWlpX2N0cmwxLFxcbitcXHRcXHQuc3VwcG9ydHNfbWlpXFx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCB0cnVlfSxcXG4rXFx0XFx0LnN1cHBvcnRzX3JtaWlcXHQ9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcXG4rXFx0XFx0XFx0XFx0ICAgZmFsc2UsIHRydWUsIHRydWV9LFxcbitcXHRcXHQuc3VwcG9ydHNfcmdtaWkgPSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXFxuK1xcdFxcdFxcdFxcdCAgIGZhbHNlLCB0cnVlLCB0cnVlfSxcXG4rXFx0XFx0LmludGVybmFsX3BoeVxcdD0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsXFxuK1xcdFxcdFxcdFxcdCAgIHRydWUsIGZhbHNlLCBmYWxzZX0sXFxuK1xcdFxcdC5nYml0X2NhcGFibGVcXHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlfSxcXG4rXFx0XFx0LnNnbWlpX3BvcnQgPSA3LFxcbitcXHR9LFxcbitcXG4gXFx0W0tTWjk4OTNdID0ge1xcbiBcXHRcXHQuY2hpcF9pZCA9IEtTWjk4OTNfQ0hJUF9JRCxcXG4gXFx0XFx0LmRldl9uYW1lID0gXFxcIktTWjk4OTNcXFwiLFxcbkBAIC0xODUyLDYgKzE4ODcsMTMgQEAgc3RhdGljIGludCBrc3pfY2hlY2tfZGV2aWNlX2lkKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdFxcdGV4cGVjdGVkX2NoaXBfaWQgPSBleHBlY3RlZF9jaGlwX2RhdGEtXFx1MDAzZWNoaXBfaWQ7XFxuIFxcdH1cXG4gXFxuK1xcdC8qIFRoZSBLU1o5ODk3UyBpcyBvbmx5IHRvbGQgYXBhcnQgZnJvbSB0aGUgS1NaOTg5N1IgYXQgcnVuIHRpbWUsIHNvIGFcXG4rXFx0ICogZGV2aWNlIHRyZWUgbmFtaW5nIHRoZSBLU1o5ODk3IG1hdGNoZXMgaXQgYXMgd2VsbC5cXG4rXFx0ICovXFxuK1xcdGlmIChleHBlY3RlZF9jaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZGV2LVxcdTAwM2VjaGlwX2lkID09IEtTWjk4OTdTX0NISVBfSUQpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0aWYgKGV4cGVjdGVkX2NoaXBfaWQgIT0gZGV2LVxcdTAwM2VjaGlwX2lkKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VkZXYsXFxuIFxcdFxcdFxcdFxcXCJEZXZpY2UgdHJlZSBzcGVjaWZpZXMgY2hpcCAlcyBidXQgZm91bmQgJXMsIHBsZWFzZSBmaXggaXQhXFxcXG5cXFwiLFxcbkBAIC0yOTY2LDcgKzMwMDgsNiBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuIFxcdFxcdHN3aXRjaCAoaWQzMikge1xcbiBcXHRcXHRjYXNlIEtTWjk0NzdfQ0hJUF9JRDpcXG4gXFx0XFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XFxuLVxcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbiBcXHRcXHRjYXNlIEtTWjk1NjdfQ0hJUF9JRDpcXG4gXFx0XFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XFxuIFxcdFxcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxcbkBAIC0yOTc5LDYgKzMwMjAsMjMgQEAgc3RhdGljIGludCBrc3pfc3dpdGNoX2RldGVjdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbiBcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcXG4gXFx0XFx0XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gaWQzMjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxcbitcXHRcXHRcXHQvKiBPbmx5IHRoZSBLU1o5ODk3UyBoYXMgYW4gU0dNSUkgcG9ydCA3OyB0aGUgS1NaOTg5N1JcXG4rXFx0XFx0XFx0ICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3U1xcbitcXHRcXHRcXHQgKiBkYXRhIHNoZWV0IERTMDAwMDIzOTRDIHNlY3Rpb24gNS4yLjQuMSBhbmQgdGhlXFxuK1xcdFxcdFxcdCAqIEtTWjk4OTdSIGRhdGEgc2hlZXQgRFMwMDAwMjMzMEQgc2VjdGlvbiA1LjIuMy4xLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzAsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdTAwMjZpZDQpO1xcbitcXHRcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0XFx0XFx0aWYgKGlkNCBcXHUwMDI2IEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMKVxcbitcXHRcXHRcXHRcXHRkZXYtXFx1MDAzZWNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lEO1xcbitcXHRcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdFxcdGRldi1cXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdfQ0hJUF9JRDtcXG4rXFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRjYXNlIEtTWjk4OTNfQ0hJUF9JRDpcXG4gXFx0XFx0XFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHUwMDI2aWQ0KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmggYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxcbkBAIC0yODQsNiArMjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xcbiBcXHRLU1o5NDc3LFxcbiBcXHRLU1o5ODk2LFxcbiBcXHRLU1o5ODk3LFxcbitcXHRLU1o5ODk3UyxcXG4gXFx0S1NaOTg5MyxcXG4gXFx0S1NaOTU2MyxcXG4gXFx0S1NaOTU2NyxcXG5AQCAtODc0LDYgKzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXFxuICNkZWZpbmUgU0tVX0lEX0tTWjg1NjNcXHRcXHRcXHQweDNjXFxuICNkZWZpbmUgU0tVX0lEX0tTWjk1NjNcXHRcXHRcXHQweDFjXFxuIFxcbisvKiBLU1o5ODk3IHNwZWNpZmljIHJlZ2lzdGVyOiBwb3J0IDcgWE1JSSBjb250cm9sIDAgKi9cXG4rI2RlZmluZSBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMFxcdDB4NzMwMFxcbisjZGVmaW5lIEtTWjk4OTdfUE9SVDdfU0dNSUlfU0VMXFx0XFx0QklUKDcpXFxuK1xcbiAvKiBEcml2ZXIgc2V0IHN3aXRjaCBicm9hZGNhc3Qgc3Rvcm0gcHJvdGVjdGlvbiBhdCAxMCUgcmF0ZS4gKi9cXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXFx0MTBcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuaW5kZXggMDI4NzgxYWQ0MDU5My4uZmU4ZGYxNzc0Mjg5YyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxcbkBAIC0zNCw2ICszNCw3IEBAIGVudW0ga3N6X2NoaXBfaWQge1xcbiBcXHRLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLFxcbiBcXHRLU1o5ODk2X0NISVBfSUQgPSAweDAwOTg5NjAwLFxcbiBcXHRLU1o5ODk3X0NISVBfSUQgPSAweDAwOTg5NzAwLFxcbitcXHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcXG4gXFx0S1NaOTg5M19DSElQX0lEID0gMHgwMDk4OTMwMCxcXG4gXFx0S1NaOTU2M19DSElQX0lEID0gMHgwMDk1NjMwMCxcXG4gXFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDU6NDM6MzUuMDM5ODk4Njg0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNTg0MjU2ODU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIGhhcmR3YXJlIG92ZXIgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlN2IxODBhMDNkNDA1YjhkNDVmYWQyNGE3NjcyOGZjNmY3Mjg1NzdhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMzEgMDU6NDM6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5pbmRleCAxYTlkNmY4M2EwMjMyLi43ODQ0MmNjMzc2NDM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jXG5AQCAtMTQ4Niw2ICsxNDg2LDQxIEBAIGNvbnN0IHN0cnVjdCBrc3pfY2hpcF9kYXRhIGtzel9zd2l0Y2hfY2hpcHNbXSA9IHtcbiBcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4gXHR9LFxuIFxuK1x0W0tTWjk4OTdTXSA9IHtcbitcdFx0LmNoaXBfaWQgPSBLU1o5ODk3U19DSElQX0lELFxuK1x0XHQuZGV2X25hbWUgPSBcIktTWjk4OTdTXCIsXG4rXHRcdC5udW1fdmxhbnMgPSA0MDk2LFxuK1x0XHQubnVtX2FsdXMgPSA0MDk2LFxuK1x0XHQubnVtX3N0YXRpY3MgPSAxNixcbitcdFx0LmNwdV9wb3J0cyA9IDB4N0YsXHQvKiBjYW4gYmUgY29uZmlndXJlZCBhcyBjcHUgcG9ydCAqL1xuK1x0XHQucG9ydF9jbnQgPSA3LFx0XHQvKiB0b3RhbCBwaHlzaWNhbCBwb3J0IGNvdW50ICovXG4rXHRcdC5wb3J0X25pcnFzID0gMixcbitcdFx0Lm51bV90eF9xdWV1ZXMgPSA0LFxuK1x0XHQubnVtX2lwbXMgPSA4LFxuK1x0XHQub3BzID0gXHUwMDI2a3N6OTQ3N19kZXZfb3BzLFxuK1x0XHQuc3dpdGNoX29wcyA9IFx1MDAyNmtzejk0Nzdfc3dpdGNoX29wcyxcbitcdFx0LnBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmtzejk0NzdfcGh5bGlua19tYWNfb3BzLFxuK1x0XHQucGh5X2VycmF0YV85NDc3ID0gdHJ1ZSxcbitcdFx0Lm1pYl9uYW1lcyA9IGtzejk0NzdfbWliX25hbWVzLFxuK1x0XHQubWliX2NudCA9IEFSUkFZX1NJWkUoa3N6OTQ3N19taWJfbmFtZXMpLFxuK1x0XHQucmVnX21pYl9jbnQgPSBNSUJfQ09VTlRFUl9OVU0sXG4rXHRcdC5yZWdzID0ga3N6OTQ3N19yZWdzLFxuK1x0XHQubWFza3MgPSBrc3o5NDc3X21hc2tzLFxuK1x0XHQuc2hpZnRzID0ga3N6OTQ3N19zaGlmdHMsXG4rXHRcdC54bWlpX2N0cmwwID0ga3N6OTQ3N194bWlpX2N0cmwwLFxuK1x0XHQueG1paV9jdHJsMSA9IGtzejk0NzdfeG1paV9jdHJsMSxcbitcdFx0LnN1cHBvcnRzX21paVx0PSB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsXG4rXHRcdFx0XHQgICBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sXG4rXHRcdC5zdXBwb3J0c19ybWlpXHQ9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxcbitcdFx0XHRcdCAgIGZhbHNlLCB0cnVlLCB0cnVlfSxcbitcdFx0LnN1cHBvcnRzX3JnbWlpID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLFxuK1x0XHRcdFx0ICAgZmFsc2UsIHRydWUsIHRydWV9LFxuK1x0XHQuaW50ZXJuYWxfcGh5XHQ9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLFxuK1x0XHRcdFx0ICAgdHJ1ZSwgZmFsc2UsIGZhbHNlfSxcbitcdFx0LmdiaXRfY2FwYWJsZVx0PSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sXG4rXHRcdC5zZ21paV9wb3J0ID0gNyxcbitcdH0sXG4rXG4gXHRbS1NaOTg5M10gPSB7XG4gXHRcdC5jaGlwX2lkID0gS1NaOTg5M19DSElQX0lELFxuIFx0XHQuZGV2X25hbWUgPSBcIktTWjk4OTNcIixcbkBAIC0xODUyLDYgKzE4ODcsMTMgQEAgc3RhdGljIGludCBrc3pfY2hlY2tfZGV2aWNlX2lkKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdGV4cGVjdGVkX2NoaXBfaWQgPSBleHBlY3RlZF9jaGlwX2RhdGEtXHUwMDNlY2hpcF9pZDtcbiBcdH1cbiBcbitcdC8qIFRoZSBLU1o5ODk3UyBpcyBvbmx5IHRvbGQgYXBhcnQgZnJvbSB0aGUgS1NaOTg5N1IgYXQgcnVuIHRpbWUsIHNvIGFcbitcdCAqIGRldmljZSB0cmVlIG5hbWluZyB0aGUgS1NaOTg5NyBtYXRjaGVzIGl0IGFzIHdlbGwuXG4rXHQgKi9cbitcdGlmIChleHBlY3RlZF9jaGlwX2lkID09IEtTWjk4OTdfQ0hJUF9JRCBcdTAwMjZcdTAwMjZcbitcdCAgICBkZXYtXHUwMDNlY2hpcF9pZCA9PSBLU1o5ODk3U19DSElQX0lEKVxuK1x0XHRyZXR1cm4gMDtcbitcbiBcdGlmIChleHBlY3RlZF9jaGlwX2lkICE9IGRldi1cdTAwM2VjaGlwX2lkKSB7XG4gXHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldixcbiBcdFx0XHRcIkRldmljZSB0cmVlIHNwZWNpZmllcyBjaGlwICVzIGJ1dCBmb3VuZCAlcywgcGxlYXNlIGZpeCBpdCFcXG5cIixcbkBAIC0yOTY2LDcgKzMwMDgsNiBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdHN3aXRjaCAoaWQzMikge1xuIFx0XHRjYXNlIEtTWjk0NzdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o5ODk2X0NISVBfSUQ6XG4tXHRcdGNhc2UgS1NaOTg5N19DSElQX0lEOlxuIFx0XHRjYXNlIEtTWjk1NjdfQ0hJUF9JRDpcbiBcdFx0Y2FzZSBLU1o4NTY3X0NISVBfSUQ6XG4gXHRcdGNhc2UgTEFOOTM3MF9DSElQX0lEOlxuQEAgLTI5NzksNiArMzAyMCwyMyBAQCBzdGF0aWMgaW50IGtzel9zd2l0Y2hfZGV0ZWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXG4gXHRcdFx0aWYgKGRldi1cdTAwM2VjaGlwX2lkICE9IExBTjk2NDZfQ0hJUF9JRClcbiBcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gaWQzMjtcbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSBLU1o5ODk3X0NISVBfSUQ6XG4rXHRcdFx0LyogT25seSB0aGUgS1NaOTg5N1MgaGFzIGFuIFNHTUlJIHBvcnQgNzsgdGhlIEtTWjk4OTdSXG4rXHRcdFx0ICogaGFzIGEgc2Vjb25kIFJHTUlJIHBvcnQgaW5zdGVhZC4gU2VlIHRoZSBLU1o5ODk3U1xuK1x0XHRcdCAqIGRhdGEgc2hlZXQgRFMwMDAwMjM5NEMgc2VjdGlvbiA1LjIuNC4xIGFuZCB0aGVcbitcdFx0XHQgKiBLU1o5ODk3UiBkYXRhIHNoZWV0IERTMDAwMDIzMzBEIHNlY3Rpb24gNS4yLjMuMS5cbitcdFx0XHQgKi9cbitcdFx0XHRyZXQgPSBrc3pfcmVhZDgoZGV2LCBLU1o5ODk3X1JFR19QT1JUN19YTUlJX0NUUkxfMCxcbitcdFx0XHRcdFx0XHUwMDI2aWQ0KTtcbitcdFx0XHRpZiAocmV0KVxuK1x0XHRcdFx0cmV0dXJuIHJldDtcbitcbitcdFx0XHRpZiAoaWQ0IFx1MDAyNiBLU1o5ODk3X1BPUlQ3X1NHTUlJX1NFTClcbitcdFx0XHRcdGRldi1cdTAwM2VjaGlwX2lkID0gS1NaOTg5N1NfQ0hJUF9JRDtcbitcdFx0XHRlbHNlXG4rXHRcdFx0XHRkZXYtXHUwMDNlY2hpcF9pZCA9IEtTWjk4OTdfQ0hJUF9JRDtcbitcbitcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSBLU1o5ODkzX0NISVBfSUQ6XG4gXHRcdFx0cmV0ID0ga3N6X3JlYWQ4KGRldiwgUkVHX0NISVBfSUQ0LFxuIFx0XHRcdFx0XHRcdTAwMjZpZDQpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbmluZGV4IGNiZTk4NDk0NTc4YzMuLjBjZmYzM2RmMDZhNGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhcbkBAIC0yODQsNiArMjg0LDcgQEAgZW51bSBrc3pfbW9kZWwge1xuIFx0S1NaOTQ3NyxcbiBcdEtTWjk4OTYsXG4gXHRLU1o5ODk3LFxuK1x0S1NaOTg5N1MsXG4gXHRLU1o5ODkzLFxuIFx0S1NaOTU2MyxcbiBcdEtTWjk1NjcsXG5AQCAtODc0LDYgKzg3NSwxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3N6X2lzX3NnbWlpX3BvcnQoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQpXG4gI2RlZmluZSBTS1VfSURfS1NaODU2M1x0XHRcdDB4M2NcbiAjZGVmaW5lIFNLVV9JRF9LU1o5NTYzXHRcdFx0MHgxY1xuIFxuKy8qIEtTWjk4OTcgc3BlY2lmaWMgcmVnaXN0ZXI6IHBvcnQgNyBYTUlJIGNvbnRyb2wgMCAqL1xuKyNkZWZpbmUgS1NaOTg5N19SRUdfUE9SVDdfWE1JSV9DVFJMXzBcdDB4NzMwMFxuKyNkZWZpbmUgS1NaOTg5N19QT1JUN19TR01JSV9TRUxcdFx0QklUKDcpXG4rXG4gLyogRHJpdmVyIHNldCBzd2l0Y2ggYnJvYWRjYXN0IHN0b3JtIHByb3RlY3Rpb24gYXQgMTAlIHJhdGUuICovXG4gI2RlZmluZSBCUk9BRENBU1RfU1RPUk1fUFJPVF9SQVRFXHQxMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmggYi9pbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5oXG5pbmRleCAwMjg3ODFhZDQwNTkzLi5mZThkZjE3NzQyODljIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuKysrIGIvaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21pY3JvY2hpcC1rc3ouaFxuQEAgLTM0LDYgKzM0LDcgQEAgZW51bSBrc3pfY2hpcF9pZCB7XG4gXHRLU1o5NDc3X0NISVBfSUQgPSAweDAwOTQ3NzAwLFxuIFx0S1NaOTg5Nl9DSElQX0lEID0gMHgwMDk4OTYwMCxcbiBcdEtTWjk4OTdfQ0hJUF9JRCA9IDB4MDA5ODk3MDAsXG4rXHRLU1o5ODk3U19DSElQX0lEID0gMHgwMDk4OTcwMSxcbiBcdEtTWjk4OTNfQ0hJUF9JRCA9IDB4MDA5ODkzMDAsXG4gXHRLU1o5NTYzX0NISVBfSUQgPSAweDAwOTU2MzAwLFxuIFx0S1NaODU2N19DSElQX0lEID0gMHgwMDg1NjcwMCxcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjM1LjAzOTkwMDk2NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjgxNDE5MDg2MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNaWNyb2NoaXAgS1NaIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgdXNlcidzIHN1Ym1pdHRlZCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmNgLCBgZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmhgLCBhbmQgYGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9taWNyb2NoaXAta3N6LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgZHJpdmVyIGlzIGV2ZW4gYSB3b3J0aHdoaWxlIHRhcmdldCBmb3IgZnV6emluZy4gSXQncyB0aGUgTWljcm9jaGlwIEtTWiBzd2l0Y2ggZHJpdmVyIHdpdGhpbiB0aGUgRFNBIGZyYW1ld29yayDigJMgc3BlY2lmaWNhbGx5LCBga3N6X2NvbW1vbi5jYC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGdldHMgaG9va2VkIHVwLiBJcyBpdCBwcm9iZWQgdGhyb3VnaCBTUEksIEkyQywgTU1JTywgUENJZSwgTURJTywgT3BlbkZpcm13YXJlLCBvciBwbGF0Zm9ybSBkYXRhPyBVbmRlcnN0YW5kaW5nIHRoZSBhdHRhY2htZW50IG1ldGhvZCBpcyBjcnVjaWFsLlxuXG5Ob3csIGxldCdzIGFwcGx5IHRoZSBydWxlLXNldDogSXMgdGhlcmUgYW55dGhpbmcgaW4gdGhpcyBwYXRjaCB0aGF0IHN1Z2dlc3RzIGl0J3MgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVU/IFdlIGhhdmUgdG8gYmUgY2FyZWZ1bCBub3QgdG8gd2FzdGUgdGltZSBvbiBwYXRocyB0aGF0IGNhbid0IGJlIGhpdCB3aXRoIHN0YW5kYXJkIGVtdWxhdGVkIGhhcmR3YXJlLiBBcmUgd2UgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB2ZW5kb3Itc3BlY2lmaWMgdGhhdCByZXF1aXJlcyBhY3R1YWwgUENJZSBoYXJkd2FyZSBsaWtlIGFuIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgb3IgYW1kZ3B1IGRyaXZlcj8gRmluYWxseSwgYXJlIHdlIGp1c3QgbG9va2luZyBhdCBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBvciBgcGNpX3VucmVnaXN0ZXJfZHJpdmVyYCBjYWxsYmFja3MgdGhhdCBhcmUgb25seSB0cmlnZ2VyZWQgYnkgaG90LXVucGx1ZyBvciBzeXNmcyB1bmJpbmQgb3BlcmF0aW9ucz8gSSBuZWVkIHRvIHJ1bGUgdGhvc2Ugb3V0IHRvby5cblxuSSBzaG91bGQgcHJvYmFibHkgdXNlIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBcImtzelwiIGRyaXZlcnMgdG8gc2VlIGhvdyB0aGUga3N6OTQ3NyBhbmQgb3RoZXIgS1NaIHN3aXRjaCBkcml2ZXJzIGFyZSBhdHRhY2hlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBwYXRoIHRvIGV4cGxvaXRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjQzLjE4MTgxNDg0NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mjg5MjQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrc3pfc3dpdGNoX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jPTEzMz1zdGF0aWMgaW50IGtzejg4NjNfc21pX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6ODg2M19zbWkuYy0xNjgtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jOjE2OTpcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4ODYzX3NtaS5jLTE3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3N19pMmMuYz0xNz1zdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jOjUxOlxcdHJldCA9IGtzel9zd2l0Y2hfcmVnaXN0ZXIoZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzdfaTJjLmMtNTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zOTQ3PXN0YXRpYyBpbnQga3N6ODQ2M19yZWxlYXNlX3N0cmFwc19zcGkoc3RydWN0IGtzel9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM5NTEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6Mzk1MjppbnQga3N6X3N3aXRjaF9yZWdpc3RlcihzdHJ1Y3Qga3N6X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM5NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtNDA5Ny19XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6NDA5ODpFWFBPUlRfU1lNQk9MKGtzel9zd2l0Y2hfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTQwOTktXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaD00Mjg9c3RydWN0IGtzel9kZXZpY2UgKmtzel9zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMC1cXHRcXHRcXHRcXHQgICAgdm9pZCAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDMxOmludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQzMi12b2lkIGtzel9zd2l0Y2hfcmVtb3ZlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmM9MTM3PXN0YXRpYyBpbnQga3N6X3NwaV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTk0LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X3NwaS5jOjE5NTpcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfc3BpLmMtMTk2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo0My4yNDQ3MTc5MzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTgyODQ4ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlYWNoaW5nIEtTWiBTd2l0Y2ggSGFyZHdhcmUgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlc2UgZHJpdmVycyDigJMgc3BlY2lmaWNhbGx5IGBrc3o5NDc3X2kyYy5jYCwgYGtzel9zcGkuY2AsIGFuZCBga3N6ODg2M19zbWkuY2AuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgSSBjYW4gZXZlbiAqcmVhY2gqIHRoaXMgaGFyZHdhcmUgd2l0aG91dCBuZWVkaW5nIHBoeXNpY2FsIGFjY2Vzcy4gQ2FuIEkgcHJvYmUsIGVtdWxhdGUsIG9yIHNvbWVob3cgYWNjZXNzIGl0IGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgb3IgdGhyb3VnaCB2aXJ0dWFsaXphdGlvbiBmb3IgZnV6emluZyBwdXJwb3Nlcz9cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIHdoZXRoZXIgdGhlc2UgSTJDL1NQSS9NRElPIERTQSBzd2l0Y2ggaGFyZHdhcmUgY29tcG9uZW50cyBhcmUgYWNjZXNzaWJsZSB2aXJ0dWFsbHkgb3IgaWYgSSdtIGdvaW5nIHRvIGJlIHN0dWNrIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS4gQWgsIHJpZ2h0LCBEU0Egc3dpdGNoZXMgYXJlIG9mdGVuIGhvb2tlZCB1cCB2aWEgSTJDIG9yIFNQSS4gTm93LCBpcyB0aGVyZSBzb21lIGtpbmQgb2YgbW9jayBvciBlbXVsYXRlZCBkZXZpY2UgaW4gUUVNVSB0aGF0IEkgY2FuIHRhcmdldCwgbGlrZSBmb3IgYSBNaWNyb2NoaXAgS1NaOTg5NyBmb3IgaW5zdGFuY2U/IEhvbGQgb24sIG5vLCBRRU1VICpkb2Vzbid0KiBhcHBlYXIgdG8gZW11bGF0ZSB0aGUgTWljcm9jaGlwIEtTWjk0Nzcgb3IgS1NaOTg5NyBzd2l0Y2hlcy4gVGhhdOKAmXMgYSBzbmFnLlxuXG5Pa2F5LCBzbyBpZiBRRU1VIGVtdWxhdGlvbiBpcyBvZmYgdGhlIHRhYmxlLCB3aGF0IGFib3V0IGluc3RhbnRpYXRpbmcgSTJDL1NQSSBkZXZpY2VzIGZyb20gdXNlcnNwYWNlPyBDYW4gSSwgZm9yIGV4YW1wbGUsIGxldmVyYWdlIGBzeXNmc2AgYW5kIGl0cyBgbmV3X2RldmljZWAgZW50cmllcyBmb3IgSTJDIG9yIFNQSSBkZXZpY2UgY3JlYXRpb24/IEkgbmVlZCB0byBjaGVjayBob3cgdGhhdCB3b3Jrcy4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUgYW5kIGV4YW1pbmUgYGtzejk0NzdfaTJjLmNgIGFuZCBga3N6X3NwaS5jYCB0byBzZWUgaWYgdGhlcmUncyBhbnkgcGF0aHdheSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYwMSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo0Ni40Mjc1NzI5MzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3X2kyYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8qXFxuICAgMzpcXHQgKiBNaWNyb2NoaXAgS1NaOTQ3NyBzZXJpZXMgcmVnaXN0ZXIgYWNjZXNzIHRocm91Z2ggSTJDXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjQgTWljcm9jaGlwIFRlY2hub2xvZ3kgSW5jLlxcbiAgIDY6XFx0ICovXFxuICAgNzpcXHRcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9pMmMuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9rZXJuZWwuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gIDEyOlxcdFxcbiAgMTM6XFx0I2luY2x1ZGUgXFxcImtzel9jb21tb24uaFxcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0S1NaX1JFR01BUF9UQUJMRShrc3o5NDc3LCBub3RfdXNlZCwgMTYsIDAsIDApO1xcbiAgMTY6XFx0XFxuICAxNzpcXHRzdGF0aWMgaW50IGtzejk0NzdfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICAxODpcXHR7XFxuICAxOTpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqY2hpcDtcXG4gIDIwOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRkZXYgPSBcXHUwMDI2aTJjLVxcdTAwM2VkZXY7XFxuICAyMTpcXHRcXHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYztcXG4gIDIyOlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXY7XFxuICAyMzpcXHRcXHRpbnQgaSwgcmV0O1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRjaGlwID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkZXYpO1xcbiAgMjY6XFx0XFx0aWYgKCFjaGlwKVxcbiAgMjc6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuICAyODpcXHRcXG4gIDI5OlxcdFxcdGRldiA9IGtzel9zd2l0Y2hfYWxsb2MoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBjaGlwLCBpMmMpO1xcbiAgMzA6XFx0XFx0aWYgKCFkZXYpXFxuICAzMTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gIDMyOlxcdFxcbiAgMzM6XFx0XFx0LyogU2F2ZSBjaGlwIGlkIHRvIGRvIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24gd2hlbiBwcm9iaW5nLiAqL1xcbiAgMzQ6XFx0XFx0ZGV2LVxcdTAwM2VjaGlwX2lkID0gY2hpcC1cXHUwMDNlY2hpcF9pZDtcXG4gIDM1OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBfX0tTWl9OVU1fUkVHTUFQUzsgaSsrKSB7XFxuICAzNjpcXHRcXHRcXHRyYyA9IGtzejk0NzdfcmVnbWFwX2NvbmZpZ1tpXTtcXG4gIDM3OlxcdFxcdFxcdHJjLmxvY2tfYXJnID0gXFx1MDAyNmRldi1cXHUwMDNlcmVnbWFwX211dGV4O1xcbiAgMzg6XFx0XFx0XFx0ZGV2LVxcdTAwM2VyZWdtYXBbaV0gPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhpMmMsIFxcdTAwMjZyYyk7XFxuICAzOTpcXHRcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSkge1xcbiAgNDA6XFx0XFx0XFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoXFx1MDAyNmkyYy1cXHUwMDNlZGV2LCBQVFJfRVJSKGRldi1cXHUwMDNlcmVnbWFwW2ldKSxcXG4gIDQxOlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIHJlZ21hcCVpXFxcXG5cXFwiLFxcbiAgNDI6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBrc3o5NDc3X3JlZ21hcF9jb25maWdbaV0udmFsX2JpdHMpO1xcbiAgNDM6XFx0XFx0XFx0fVxcbiAgNDQ6XFx0XFx0fVxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRpZiAoaTJjLVxcdTAwM2VkZXYucGxhdGZvcm1fZGF0YSlcXG4gIDQ3OlxcdFxcdFxcdGRldi1cXHUwMDNlcGRhdGEgPSBpMmMtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbiAgNDg6XFx0XFxuICA0OTpcXHRcXHRkZXYtXFx1MDAzZWlycSA9IGkyYy1cXHUwMDNlaXJxO1xcbiAgNTA6XFx0XFxuICA1MTpcXHRcXHRyZXQgPSBrc3pfc3dpdGNoX3JlZ2lzdGVyKGRldik7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdC8qIE1haW4gRFNBIGRyaXZlciBtYXkgbm90IGJlIHN0YXJ0ZWQgeWV0LiAqL1xcbiAgNTQ6XFx0XFx0aWYgKHJldClcXG4gIDU1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA1NjpcXHRcXG4gIDU3OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGRldik7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHJldHVybiAwO1xcbiAgNjA6XFx0fVxcbiAgNjE6XFx0XFxuICA2MjpcXHRzdGF0aWMgdm9pZCBrc3o5NDc3X2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4gIDYzOlxcdHtcXG4gIDY0OlxcdFxcdHN0cnVjdCBrc3pfZGV2aWNlICpkZXYgPSBpMmNfZ2V0X2NsaWVudGRhdGEoaTJjKTtcXG4gIDY1OlxcdFxcbiAgNjY6XFx0XFx0aWYgKGRldilcXG4gIDY3OlxcdFxcdFxcdGtzel9zd2l0Y2hfcmVtb3ZlKGRldik7XFxuICA2ODpcXHR9XFxuICA2OTpcXHRcXG4gIDcwOlxcdHN0YXRpYyB2b2lkIGtzejk0NzdfaTJjX3NodXRkb3duKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXFxuICA3MTpcXHR7XFxuICA3MjpcXHRcXHRzdHJ1Y3Qga3N6X2RldmljZSAqZGV2ID0gaTJjX2dldF9jbGllbnRkYXRhKGkyYyk7XFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdGlmICghZGV2KVxcbiAgNzU6XFx0XFx0XFx0cmV0dXJuO1xcbiAgNzY6XFx0XFxuICA3NzpcXHRcXHRrc3pfc3dpdGNoX3NodXRkb3duKGRldik7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdGkyY19zZXRfY2xpZW50ZGF0YShpMmMsIE5VTEwpO1xcbiAgODA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo0Ni40Mjc3Njc3MzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODMyNzE3Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgIGZ1bmN0aW9uIGluIGBrc3pfY29tbW9uLmNgLlxuXG4qKkRpdmluZyBpbnRvIGtzel9zd2l0Y2hfcmVnaXN0ZXIqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgd2VlZHMgb2YgYGtzel9zd2l0Y2hfcmVnaXN0ZXJgLiBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCBsaW5lIDM5NTIgYXMgYSBnb29kIGVudHJ5IHBvaW50LiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGR1cmluZyB0aGUgc3dpdGNoIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBJIHN1c3BlY3QgdGhpcyBpcyBhIGtleSBwYXJ0IG9mIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JhYmx5IGludm9sdmVzIHNldHRpbmcgdXAgdGhlIGRldmljZSBzdHJ1Y3R1cmUsIGFsbG9jYXRpbmcgcmVzb3VyY2VzLCBhbmQgZ2V0dGluZyB0aGUgaGFyZHdhcmUgcmVhZHkgZm9yIG9wZXJhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGtleSBvcGVyYXRpb25zIG9jY3VycmluZyBhdCB0aGlzIHBvaW50IHRvIGdldCB0aGUgaGlnaC1sZXZlbCBmbG93LiBJ4oCZbGwga2VlcCBhIG1lbnRhbCBub3RlIHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpbnRlZ3JhdGVzIHdpdGggdGhlIG92ZXJhbGwgZHJpdmVyIGFyY2hpdGVjdHVyZSwgc3BlY2lmaWNhbGx5IHdoYXQgb3RoZXIgbW9kdWxlcyBvciBmdW5jdGlvbnMgaXQgaW50ZXJhY3RzIHdpdGguIExldOKAmXMgc2VlIHdoYXQgZ29vZGllcyB0aGlzIHBpZWNlIG9mIGNvZGUgaG9sZHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDIsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjQ4LjI2MDQ5MTM5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzOTUyLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIzOTUyOlxcdGludCBrc3pfc3dpdGNoX3JlZ2lzdGVyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYpXFxuMzk1MzpcXHR7XFxuMzk1NDpcXHRcXHRjb25zdCBzdHJ1Y3Qga3N6X2NoaXBfZGF0YSAqaW5mbztcXG4zOTU1OlxcdFxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydHM7XFxuMzk1NjpcXHRcXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlO1xcbjM5NTc6XFx0XFx0dW5zaWduZWQgaW50IHBvcnRfbnVtO1xcbjM5NTg6XFx0XFx0aW50IHJldDtcXG4zOTU5OlxcdFxcdGludCBpO1xcbjM5NjA6XFx0XFxuMzk2MTpcXHRcXHRkZXYtXFx1MDAzZXJlc2V0X2dwaW8gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChkZXYtXFx1MDAzZWRldiwgXFxcInJlc2V0XFxcIixcXG4zOTYyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR1BJT0RfT1VUX0xPVyk7XFxuMzk2MzpcXHRcXHRpZiAoSVNfRVJSKGRldi1cXHUwMDNlcmVzZXRfZ3BpbykpXFxuMzk2NDpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihkZXYtXFx1MDAzZXJlc2V0X2dwaW8pO1xcbjM5NjU6XFx0XFxuMzk2NjpcXHRcXHRpZiAoZGV2LVxcdTAwM2VyZXNldF9ncGlvKSB7XFxuMzk2NzpcXHRcXHRcXHRpZiAob2ZfZGV2aWNlX2lzX2NvbXBhdGlibGUoZGV2LVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsIFxcXCJtaWNyb2NoaXAsa3N6ODQ2M1xcXCIpKSB7XFxuMzk2ODpcXHRcXHRcXHRcXHRyZXQgPSBrc3o4NDYzX2NvbmZpZ3VyZV9zdHJhcHNfc3BpKGRldik7XFxuMzk2OTpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjM5NzA6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zOTcxOlxcdFxcdFxcdH1cXG4zOTcyOlxcdFxcbjM5NzM6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKGRldi1cXHUwMDNlcmVzZXRfZ3BpbywgMSk7XFxuMzk3NDpcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMDAsIDEyMDAwKTtcXG4zOTc1OlxcdFxcdFxcdGdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChkZXYtXFx1MDAzZXJlc2V0X2dwaW8sIDApO1xcbjM5NzY6XFx0XFx0XFx0bXNsZWVwKDEwMCk7XFxuMzk3NzpcXHRcXG4zOTc4OlxcdFxcdFxcdGlmIChvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShkZXYtXFx1MDAzZWRldi1cXHUwMDNlb2Zfbm9kZSwgXFxcIm1pY3JvY2hpcCxrc3o4NDYzXFxcIikpIHtcXG4zOTc5OlxcdFxcdFxcdFxcdHJldCA9IGtzejg0NjNfcmVsZWFzZV9zdHJhcHNfc3BpKGRldik7XFxuMzk4MDpcXHRcXHRcXHRcXHRpZiAocmV0KVxcbjM5ODE6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zOTgyOlxcdFxcdFxcdH1cXG4zOTgzOlxcdFxcdH1cXG4zOTg0OlxcdFxcbjM5ODU6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VkZXZfbXV0ZXgpO1xcbjM5ODY6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VyZWdtYXBfbXV0ZXgpO1xcbjM5ODc6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2VhbHVfbXV0ZXgpO1xcbjM5ODg6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGV2LVxcdTAwM2V2bGFuX211dGV4KTtcXG4zOTg5OlxcdFxcbjM5OTA6XFx0XFx0cmV0ID0ga3N6X3N3aXRjaF9kZXRlY3QoZGV2KTtcXG4zOTkxOlxcdFxcdGlmIChyZXQpXFxuMzk5MjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjM5OTM6XFx0XFxuMzk5NDpcXHRcXHRpbmZvID0ga3N6X2xvb2t1cF9pbmZvKGRldi1cXHUwMDNlY2hpcF9pZCk7XFxuMzk5NTpcXHRcXHRpZiAoIWluZm8pXFxuMzk5NjpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4zOTk3OlxcdFxcbjM5OTg6XFx0XFx0LyogVXBkYXRlIHRoZSBjb21wYXRpYmxlIGluZm8gd2l0aCB0aGUgcHJvYmVkIG9uZSAqL1xcbjM5OTk6XFx0XFx0ZGV2LVxcdTAwM2VpbmZvID0gaW5mbztcXG40MDAwOlxcdFxcbjQwMDE6XFx0XFx0ZGV2X2luZm8oZGV2LVxcdTAwM2VkZXYsIFxcXCJmb3VuZCBzd2l0Y2g6ICVzLCByZXYgJWlcXFxcblxcXCIsXFxuNDAwMjpcXHRcXHRcXHQgZGV2LVxcdTAwM2VpbmZvLVxcdTAwM2VkZXZfbmFtZSwgZGV2LVxcdTAwM2VjaGlwX3Jldik7XFxuNDAwMzpcXHRcXG40MDA0OlxcdFxcdHJldCA9IGtzel9jaGVja19kZXZpY2VfaWQoZGV2KTtcXG40MDA1OlxcdFxcdGlmIChyZXQpXFxuNDAwNjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjQwMDc6XFx0XFxuNDAwODpcXHRcXHRkZXYtXFx1MDAzZWRldl9vcHMgPSBkZXYtXFx1MDAzZWluZm8tXFx1MDAzZW9wcztcXG40MDA5OlxcdFxcbjQwMTA6XFx0XFx0cmV0ID0gZGV2LVxcdTAwM2VkZXZfb3BzLVxcdTAwM2Vpbml0KGRldik7XFxuNDAxMTpcXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo0OC4yNjA3NDU0MDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTIxNDY1NjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtTWiBTd2l0Y2ggRGV0ZWN0aW9uIGFuZCBGdXp6aW5nIEZlYXNpYmlsaXR5KipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nLiBUaGUgYGtzel9zd2l0Y2hfZGV0ZWN0YCBmdW5jdGlvbiBpcyBhY2Nlc3NpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIHRocm91Z2ggU1BJLCBJMkMsIG9yIFNNSSB0byBpZGVudGlmeSB0aGUgc3BlY2lmaWMgY2hpcC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIGV2ZW4gcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudCwgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgUUVNVSwgKndpdGhvdXQqIHRoYXQgYWN0dWFsIEtTWiBzd2l0Y2ggYXR0YWNoZWQuIEl0IHNlZW1zIGxpa2UgaXQgd291bGQgbm90IGJlLlxuXG5IYW5nIG9u4oCmIGlzIHRoZXJlIGV2ZW4gYSB2aXJ0dWFsIERTQSBzd2l0Y2ggb3IgYW55IGtpbmQgb2YgbW9jayBJMkMgb3IgU1BJIGRldmljZSBidWlsdC1pbiB0byB0aGUgc3RhbmRhcmQgc3l6a2FsbGVyIG9yIFFFTVUgc2V0dXA/IE5vLCBub3QgdGhhdCBJJ20gYXdhcmUgb2YuIFN5emthbGxlciBpcyBkZXNpZ25lZCB0byBydW4gaW4geDg2XzY0IG9yIGFybTY0IFZNcywgd2hpY2ggaXMgaGVscGZ1bCwgYnV0IG5vdCBlbm91Z2ggaW4gdGhpcyBjYXNlLlxuXG5MZXQncyBzZWXigKYgcmVhZGluZyB0aGUgaW5zdHJ1Y3Rpb25zIGFib3V0IHBhdGNoIHdvcnRoaW5lc3MsIHRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IHNheSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIGNoYW5nZXMgYXJlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIFRoaXMgaXMgcmVsZXZhbnQsIGFuZCB0aGlzIGxpa2VseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuIFRoZSBpbnN0cnVjdGlvbnMgYWxzbyBzdGF0ZSB0aGF0IGNlcnRhaW4gZHJpdmVycyBhcmUgbm90IHdvcnRoIGZ1enppbmcsIHNwZWNpZmljYWxseTpcbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKSB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbkdpdmVuIHRoYXQgdGhlIERTQSBzd2l0Y2ggaXMgbGlrZWx5IGVtYmVkZGVkIGhhcmR3YXJlLCBpdCBtZWFucyBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGFueSB2aXJ0dWFsIGJ1cywgbW9jayBkZXZpY2UsIG9yIGV2ZW4gaWYgRFNBIG1pY3JvY2hpcCBzd2l0Y2ggZHJpdmVycyBhcmUgb25seSBmb3IgZW1iZWRkZWQgcGh5c2ljYWwgaGFyZHdhcmUuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgS2NvbmZpZyB0byBzZWUgaWYgSSBjYW4gY2xhcmlmeSBhbnkgb2YgdGhlc2UgZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODUxNywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjU0LjE4MjIxNjQwNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNjAxNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgS1NaOFhYWC9LU1o5WFhYL0xBTjkzN1ggc2VyaWVzIHN3aXRjaCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoxNzpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaOTQ3N19JMkNcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTIzLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZzoyNDpjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBTUEkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctMzAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjMxOmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfUFRQXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIHRoZSBQVFAgY2xvY2sgb24gdGhlIEtTWjk1NjMvTEFOOTM3eCBFdGhlcm5ldCBTd2l0Y2hcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL0tjb25maWctNDAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnOjQxOmNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o4ODYzX1NNSVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBTTUkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQzOjU0LjI4MzgzNjE5OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjcwNDE5NjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqRXhhbWluaW5nIHRoZSBEU0EgTWljcm9jaGlwIEtjb25maWcqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBzdGFydGVkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gTGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRoZSBsb3ctbGV2ZWwgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBNaWNyb2NoaXAgRFNBIGRyaXZlcnMgd2lsbCBiZSBkZWZpbmVkLiBJdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luLCBzbyBJIGNhbiBzZWUgd2hhdCBvcHRpb25zIGFyZSBhdmFpbGFibGUsIHdoYXQgZGVwZW5kZW5jaWVzIGV4aXN0LCBhbmQgaG93IHRoZSB2YXJpb3VzIGZlYXR1cmVzIGFyZSBjb250cm9sbGVkLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBsYXkgb2YgdGhlIGxhbmQsIGhlbHBpbmcgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyBldmVyeXRoaW5nIGZpdHMgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MTQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo1NS45NTQyNjI2NzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTYzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJNaWNyb2NoaXAgS1NaOFhYWC9LU1o5WFhYL0xBTjkzN1ggc2VyaWVzIHN3aXRjaCBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBXFxuICAgNTpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfS1NaXFxuICAgNjpcXHRcXHRzZWxlY3QgTkVUX0RTQV9UQUdfTk9ORVxcbiAgIDc6XFx0XFx0c2VsZWN0IE5FVF9JRUVFODAyMVFfSEVMUEVSU1xcbiAgIDg6XFx0XFx0c2VsZWN0IERDQlxcbiAgIDk6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFRoaXMgZHJpdmVyIGFkZHMgc3VwcG9ydCBmb3IgTWljcm9jaGlwIEtTWjgsIEtTWjkgYW5kXFxuICAxMjpcXHRcXHQgIExBTjkzN1ggc2VyaWVzIHN3aXRjaCBjaGlwcywgYmVpbmcgS1NaODg2My84ODczLFxcbiAgMTM6XFx0XFx0ICBLU1o4ODk1Lzg4NjQsIEtTWjg3OTQvODc5NS84NzY1LFxcbiAgMTQ6XFx0XFx0ICBLU1o5NDc3Lzk4OTcvOTg5Ni85NTY3Lzg1NjcsIEtTWjk4OTMvOTU2My84NTYzIGFuZFxcbiAgMTU6XFx0XFx0ICBMQU45MzcwLzkzNzEvOTM3Mi85MzczLzkzNzQuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBORVRfRFNBX01JQ1JPQ0hJUF9LU1o5NDc3X0kyQ1xcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgSTJDIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IEkyQ1xcbiAgMjA6XFx0XFx0c2VsZWN0IFJFR01BUF9JMkNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggSTJDLlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1NQSVxcbiAgMjU6XFx0XFx0dHJpc3RhdGUgXFxcIktTWiBzZXJpZXMgU1BJIGNvbm5lY3RlZCBzd2l0Y2ggZHJpdmVyXFxcIlxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OIFxcdTAwMjZcXHUwMDI2IFNQSVxcbiAgMjc6XFx0XFx0c2VsZWN0IFJFR01BUF9TUElcXG4gIDI4OlxcdFxcdGhlbHBcXG4gIDI5OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2ggU1BJLlxcbiAgMzA6XFx0XFxuICAzMTpcXHRjb25maWcgTkVUX0RTQV9NSUNST0NISVBfS1NaX1BUUFxcbiAgMzI6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgdGhlIFBUUCBjbG9jayBvbiB0aGUgS1NaOTU2My9MQU45Mzd4IEV0aGVybmV0IFN3aXRjaFxcXCJcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gTkVUX0RTQV9NSUNST0NISVBfS1NaX0NPTU1PTiBcXHUwMDI2XFx1MDAyNiBQVFBfMTU4OF9DTE9DS1xcbiAgMzQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRfRFNBX01JQ1JPQ0hJUF9LU1pfQ09NTU9OPW0gfHwgUFRQXzE1ODhfQ0xPQ0s9eVxcbiAgMzU6XFx0XFx0aGVscFxcbiAgMzY6XFx0XFx0ICBTZWxlY3QgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRpbWVzdGFtcGluZyBcXHUwMDI2IFBUUCBjbG9jayBtYW5pcHVsYXRpb24gaW5cXG4gIDM3OlxcdFxcdCAgS1NaODU2My9LU1o5NTYzL0xBTjkzN3ggc2VyaWVzIG9mIHN3aXRjaGVzLiBLU1o5NTYzL0tTWjg1NjMgc3VwcG9ydHNcXG4gIDM4OlxcdFxcdCAgb25seSBvbmUgc3RlcCB0aW1lc3RhbXBpbmcuIExBTjkzN3ggc3dpdGNoIHN1cHBvcnRzIGJvdGggb25lIHN0ZXAgYW5kXFxuICAzOTpcXHRcXHQgIHR3byBzdGVwIHRpbWVzdGFtcGluZy5cXG4gIDQwOlxcdFxcbiAgNDE6XFx0Y29uZmlnIE5FVF9EU0FfTUlDUk9DSElQX0tTWjg4NjNfU01JXFxuICA0MjpcXHRcXHR0cmlzdGF0ZSBcXFwiS1NaIHNlcmllcyBTTUkgY29ubmVjdGVkIHN3aXRjaCBkcml2ZXJcXFwiXFxuICA0MzpcXHRcXHRkZXBlbmRzIG9uIE5FVF9EU0FfTUlDUk9DSElQX0tTWl9DT01NT05cXG4gIDQ0OlxcdFxcdHNlbGVjdCBNRElPX0JJVEJBTkdcXG4gIDQ1OlxcdFxcdGhlbHBcXG4gIDQ2OlxcdFxcdCAgU2VsZWN0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciByZWdpc3RlcmluZyBzd2l0Y2hlcyBjb25maWd1cmVkIHRocm91Z2hcXG4gIDQ3OlxcdFxcdCAgTWljcm9jaGlwIFNNSS4gSXQgc3VwcG9ydHMgdGhlIEtTWjg4NjMgYW5kIEtTWjg4NzMgc3dpdGNoLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQwNTo0Mzo1NS45NTQzNjE4OTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDkyODA2Njg1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogS1NaOTg5N1MgU3VwcG9ydCBpbiBNaWNyb2NoaXAgRFNBIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBLU1o5ODk3UyB2YXJpYW50IG9mIHRoZSBNaWNyb2NoaXAgRXRoZXJuZXQgc3dpdGNoLiBNeSBtYWluIGNvbmNlcm4sIGFzIGFsd2F5cyB3aXRoIHRoZXNlIHRoaW5ncywgaXMgd2hldGhlciBpdCdzIGZ1enphYmxlLiBMZXQncyBzZWUuLi4gaXQncyBhIGRyaXZlciBmb3IgKmhhcmR3YXJlKiBFdGhlcm5ldCBzd2l0Y2hlcyBmcm9tIE1pY3JvY2hpcCDigJMgc3BlY2lmaWNhbGx5LCB0aGUgS1NaIHNlcmllcywgY29ubmVjdGVkIHRocm91Z2ggSTJDLCBTUEksIG9yIFNNSS4gIEl0ICpuZWVkcyogdGhlIGFjdHVhbCBzaWxpY29uIHRvIHByb2JlIGFuZCB0YWxrIHRvLiAgU3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gRm9yZ2V0IGl0LiBUaGV5IGRvbid0IGVtdWxhdGUgdGhvc2UgS1NaIGNoaXBzLiAgV2l0aG91dCB0aGUgcmVhbCBoYXJkd2FyZSwgYGtzel9zd2l0Y2hfZGV0ZWN0YCBqdXN0IHBsYWluIGZhaWxzLCBvciB0aGUgZGV2aWNlIGlzbid0IGV2ZW4gaW5zdGFudGlhdGVkLiBJdCdzIGEgbm8tZ28gZnJvbSB0aGUgZ2V0LWdvLiBBbmQgaXQncyBhbHNvIGEgRFNBIHN3aXRjaCwgc28gaXQncyBhbGwgcGh5c2ljYWwgRFNBIGhvc3QgZXRoZXJuZXQgZGV2aWNlcywgRFNBIHRhZ3MsIGFuZCBwb3J0cyBkZWZpbmVkIGJ5IHRoZSBkZXZpY2UgdHJlZS5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhZGRpbmcgY29kZSB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIEtTWjk4OTdTIGFuZCB0aGUgS1NaOTg5N1Ig4oCTIHNvbWV0aGluZyBiYXNlZCBvbiB0aGUgcG9ydCA3IFhNSUkgcmVnaXN0ZXIuICBUaGUgY2hhbmdlcyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jYCBmaWxlIGFuZCBoZWFkZXJzLlxuXG5UaGVyZWZvcmUsIGFjY29yZGluZyB0byB0aGUgZ3VpZGVsaW5lIFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucy4uLkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsXCIgdGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBcIm5vLlwiIEl0J3MgcGh5c2ljYWxseSBpbXBvc3NpYmxlIHRvIGhpdCB0aGlzIGNvZGUgaW4gYSBRRU1VIG9yIEdDRSBzZXR1cC4gIEknbSBjb25maWRlbnQgdGhpcyBpc24ndCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdXNlZnVsbHkgZnV6emVkLCBhcyBpdCByZXF1aXJlcyBzcGVjaWFsaXplZCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuU28sIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmcgPSBmYWxzZWAsIGBFbmFibGVDb25maWdzID0gW11gLCBhbmQgYEZvY3VzU3ltYm9scyA9IFtdYC4gVGhlIHJlYXNvbmluZyBJJ20gcHJvdmlkaW5nIHRvIHRoZSB0b29sIGlzOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRpc3Rpbmd1aXNoaW5nIHRoZSBLU1o5ODk3UyBFdGhlcm5ldCBzd2l0Y2ggdmFyaWFudCBpbiB0aGUgTWljcm9jaGlwIEtTWiBEU0Egc3dpdGNoIGRyaXZlci4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIE1pY3JvY2hpcCBLU1ogc3dpdGNoIGhhcmR3YXJlIChjb25uZWN0ZWQgb3ZlciBJMkMsIFNQSSwgb3IgU01JKSB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0dDRSksIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIiBUaGF0IHNob3VsZCBjb3ZlciBpdC4gVGltZSB0byBydW4gdGhlIHRvb2wgY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA5MjMsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMDU6NDQ6MDAuODgyNDMyMDA3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTWljcm9jaGlwIEtTWjk4OTdTIEV0aGVybmV0IHN3aXRjaCB2YXJpYW50IGluIHRoZSBNaWNyb2NoaXAgS1NaIERTQSBzd2l0Y2ggZHJpdmVyIChrc3pfY29tbW9uLmMpLiBUaGlzIGRyaXZlciBjb21tdW5pY2F0ZXMgd2l0aCBwaHlzaWNhbCBNaWNyb2NoaXAgc3dpdGNoIGhhcmR3YXJlIG92ZXIgU1BJLCBJMkMsIG9yIFNNSSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBNaWNyb2NoaXAgS1NaOTg5N1MgRXRoZXJuZXQgc3dpdGNoIHZhcmlhbnQgaW4gdGhlIE1pY3JvY2hpcCBLU1ogRFNBIHN3aXRjaCBkcml2ZXIgKGtzel9jb21tb24uYykuIFRoaXMgZHJpdmVyIGNvbW11bmljYXRlcyB3aXRoIHBoeXNpY2FsIE1pY3JvY2hpcCBzd2l0Y2ggaGFyZHdhcmUgb3ZlciBTUEksIEkyQywgb3IgU01JLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDA1OjQ0OjAwLjg4MjQ2OTgyN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow5nrhm[1] Phase: Running StartedAt: 2026-08-31 05:44:13 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5nrhm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 05:44:13 +0000 UTC FinishedAt: 2026-08-31 05:44:16 +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,}