Name: series-workflowccwcz Phase: Failed StartedAt: 2026-09-15 14:58:30 +0000 UTC FinishedAt: 2026-09-15 15:03:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccwcz[0] Phase: Succeeded StartedAt: 2026-09-15 14:58:31 +0000 UTC FinishedAt: 2026-09-15 15:03:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccwcz[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 14:58:31 +0000 UTC FinishedAt: 2026-09-15 15:03:05 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDVfY29yZSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvKSwgc3BlY2lmaWNhbGx5IGludGVybmFsIGxpbmsgYWdncmVnYXRpb24gKExBRykgYW5kIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIChkZXZjb20pIGxvZ2ljLiBUaGVzZSBjb2RlIHBhdGhzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggQVNJQy9QQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NTQ5ZGY0ZTAwZTUwMTZiMzc5MWUwMjJmY2ViYTRkYTAwNmExODBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNDo1OTo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xuaW5kZXggYzY1NWY2ZTMyZTliMC4uZGQxNGNkYzM3OGRlMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbkBAIC0xMjY2LDI1ICYjNDM7MTI2Niw0NSBAQCB2b2lkIG1seDVfbGFnX3JlbW92ZV9kZXZpY2VzKHN0cnVjdCBtbHg1X2xhZyAqbGRldilcbiBcdG1seDVfbGFnX3JlbW92ZV9kZXZpY2VzX2ZpbHRlcihsZGV2LCBNTFg1X0xBR19GSUxURVJfUE9SVFMpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgoc3RydWN0IG1seDVfbGFnICpsZGV2LCBpbnQgaWR4LFxuJiM0MztcdFx0XHRcdCAgICAgICB1MzIgZmxhZ3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbGFnX2Z1bmMgKnBmID0gbWx4NV9sYWdfcGYobGRldiwgaWR4KTtcbiYjNDM7XHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBmLVx1MDAzZWRldi1cdTAwM2Vwcml2LmZsYWdzIFx1MDAyNiBmbGFncylcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRlc3cgPSBwZi1cdTAwM2VkZXYtXHUwMDNlcHJpdi5lc3dpdGNoO1xuJiM0MztcdG1seDVfZXN3X3JlcHNfYmxvY2soZXN3KTtcbiYjNDM7XHRyZXQgPSBtbHg1X2Vzd2l0Y2hfcmVsb2FkX2liX3JlcHMoZXN3KTtcbiYjNDM7XHRtbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX3VubG9ja2VkKHN0cnVjdCBtbHg1X2xhZyAqbGRldiwgdTMyIGZsYWdzLFxuIFx0XHRcdFx0XHQgICAgdTMyIGZpbHRlciwgYm9vbCBjb250X29uX2ZhaWwpXG4ge1xuLVx0c3RydWN0IGxhZ19mdW5jICpwZjtcbiYjNDM7XHRpbnQgbWFzdGVyX2lkeCA9IG1seDVfbGFnX2dldF9kZXZfaW5kZXhfYnlfc2VxX2ZpbHRlcihsZGV2LCBNTFg1X0xBR19QMSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgIGZpbHRlcik7XG4gXHRpbnQgcmV0O1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0aWYgKG1hc3Rlcl9pZHggXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KGxkZXYsIG1hc3Rlcl9pZHgsIGZsYWdzKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAyNlx1MDAyNiAhY29udF9vbl9mYWlsKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4gXHRtbHg1X2xhZ19mb3JfZWFjaChpLCAwLCBsZGV2LCBmaWx0ZXIpIHtcbi1cdFx0cGYgPSBtbHg1X2xhZ19wZihsZGV2LCBpKTtcbi1cdFx0aWYgKCEocGYtXHUwMDNlZGV2LVx1MDAzZXByaXYuZmxhZ3MgXHUwMDI2IGZsYWdzKSkge1xuLVx0XHRcdHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdztcbi1cbi1cdFx0XHRlc3cgPSBwZi1cdTAwM2VkZXYtXHUwMDNlcHJpdi5lc3dpdGNoO1xuLVx0XHRcdG1seDVfZXN3X3JlcHNfYmxvY2soZXN3KTtcbi1cdFx0XHRyZXQgPSBtbHg1X2Vzd2l0Y2hfcmVsb2FkX2liX3JlcHMoZXN3KTtcbi1cdFx0XHRtbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTtcbi1cdFx0XHRpZiAocmV0IFx1MDAyNlx1MDAyNiAhY29udF9vbl9mYWlsKVxuLVx0XHRcdFx0cmV0dXJuIHJldDtcbi1cdFx0fVxuJiM0MztcdFx0aWYgKGkgPT0gbWFzdGVyX2lkeClcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRyZXQgPSBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgobGRldiwgaSwgZmxhZ3MpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwMjZcdTAwMjYgIWNvbnRfb25fZmFpbClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNcbmluZGV4IDZiNGFkM2M1M2YyZjMuLjQyNDA0MDkxOGZhMzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL3NoYXJlZF9mZGIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNcbkBAIC0yNzAsNiAmIzQzOzI3MCw3IEBAIGludCBtbHg1X2xhZ19zaGFyZWRfZmRiX2NyZWF0ZShzdHJ1Y3QgbWx4NV9sYWcgKmxkZXYsXG4gXHRcdFx0cGYtXHUwMDNlc2RfZmRiX2FjdGl2ZSA9IGZhbHNlO1xuIFx0XHR9XG4gXHRcdG1seDVfbGFnX2Rlc3Ryb3lfc2luZ2xlX2ZkYl9maWx0ZXIobGRldiwgZ3JvdXBfaWQpO1xuJiM0MztcdFx0bWx4NV9sYWdfdW5sb2FkX3JlcHNfZnJvbV9sb2NrZWQobGRldiwgZmlsdGVyKTtcbiBcdH1cbiBlcnJfYWRkX2RldmljZXM6XG4gXHRtbHg1X2xhZ19hZGRfZGV2aWNlc19maWx0ZXIobGRldiwgZmlsdGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9kZXZjb20uY1xuaW5kZXggNjRmOTI0Mjc2MDJkZS4uNzU4NTU0ODE1MjJiMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNcbkBAIC0zNyw2ICYjNDM7MzcsNyBAQCBzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcCB7XG4gXHRzdHJ1Y3QgbWx4NV9kZXZjb21fa2V5IGtleTtcbiBcdG1seDVfZGV2Y29tX2V2ZW50X2hhbmRsZXJfdCBoYW5kbGVyO1xuIFx0c3RydWN0IGtyZWYgcmVmO1xuJiM0MztcdGludCBucl9kZXZzO1xuIFx0Ym9vbCByZWFkeTtcbiBcdHN0cnVjdCByd19zZW1hcGhvcmUgc2VtO1xuIFx0c3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxvY2tfa2V5O1xuQEAgLTE3MCw2ICYjNDM7MTcxLDcgQEAgZGV2Y29tX2FsbG9jX2NvbXBfZGV2KHN0cnVjdCBtbHg1X2RldmNvbV9kZXYgKmRldmMsXG4gXG4gXHRkb3duX3dyaXRlKFx1MDAyNmNvbXAtXHUwMDNlc2VtKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2Y29tLVx1MDAzZWxpc3QsIFx1MDAyNmNvbXAtXHUwMDNlY29tcF9kZXZfbGlzdF9oZWFkKTtcbiYjNDM7XHRXUklURV9PTkNFKGNvbXAtXHUwMDNlbnJfZGV2cywgY29tcC1cdTAwM2Vucl9kZXZzICYjNDM7IDEpO1xuIFx0dXBfd3JpdGUoXHUwMDI2Y29tcC1cdTAwM2VzZW0pO1xuIFxuIFx0cmV0dXJuIGRldmNvbTtcbkBAIC0xODIsNiAmIzQzOzE4NCw3IEBAIGRldmNvbV9mcmVlX2NvbXBfZGV2KHN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqZGV2Y29tKVxuIFxuIFx0ZG93bl93cml0ZShcdTAwMjZjb21wLVx1MDAzZXNlbSk7XG4gXHRsaXN0X2RlbChcdTAwMjZkZXZjb20tXHUwMDNlbGlzdCk7XG4mIzQzO1x0V1JJVEVfT05DRShjb21wLVx1MDAzZW5yX2RldnMsIGNvbXAtXHUwMDNlbnJfZGV2cyAtIDEpO1xuIFx0dXBfd3JpdGUoXHUwMDI2Y29tcC1cdTAwM2VzZW0pO1xuIFxuIFx0a3JlZl9wdXQoXHUwMDI2ZGV2Y29tLVx1MDAzZWRldmMtXHUwMDNlcmVmLCBtbHg1X2RldmNvbV9kZXZfcmVsZWFzZSk7XG5AQCAtMjg0LDcgJiM0MzsyODcsNyBAQCBpbnQgbWx4NV9kZXZjb21fY29tcF9nZXRfc2l6ZShzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbSlcbiB7XG4gXHRzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcCAqY29tcCA9IGRldmNvbS1cdTAwM2Vjb21wO1xuIFxuLVx0cmV0dXJuIGtyZWZfcmVhZChcdTAwMjZjb21wLVx1MDAzZXJlZik7XG4mIzQzO1x0cmV0dXJuIFJFQURfT05DRShjb21wLVx1MDAzZW5yX2RldnMpO1xuIH1cbiBcbiBpbnQgbWx4NV9kZXZjb21fbG9ja2VkX3NlbmRfZXZlbnQoc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb20sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDVfY29yZSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvKSwgc3BlY2lmaWNhbGx5IGludGVybmFsIGxpbmsgYWdncmVnYXRpb24gKExBRykgYW5kIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIChkZXZjb20pIGxvZ2ljLiBUaGVzZSBjb2RlIHBhdGhzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggQVNJQy9QQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE2NTQ5ZGY0ZTAwZTUwMTZiMzc5MWUwMjJmY2ViYTRkYTAwNmExODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAxNDo1OTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jCmluZGV4IGM2NTVmNmUzMmU5YjAuLmRkMTRjZGMzNzhkZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYwpAQCAtMTI2NiwyNSAmIzQzOzEyNjYsNDUgQEAgdm9pZCBtbHg1X2xhZ19yZW1vdmVfZGV2aWNlcyhzdHJ1Y3QgbWx4NV9sYWcgKmxkZXYpCiAJbWx4NV9sYWdfcmVtb3ZlX2RldmljZXNfZmlsdGVyKGxkZXYsIE1MWDVfTEFHX0ZJTFRFUl9QT1JUUyk7CiB9CiAKJiM0MztzdGF0aWMgaW50IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX2lkeChzdHJ1Y3QgbWx4NV9sYWcgKmxkZXYsIGludCBpZHgsCiYjNDM7CQkJCSAgICAgICB1MzIgZmxhZ3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbGFnX2Z1bmMgKnBmID0gbWx4NV9sYWdfcGYobGRldiwgaWR4KTsKJiM0MzsJc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAocGYtJmd0O2Rldi0mZ3Q7cHJpdi5mbGFncyAmYW1wOyBmbGFncykKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwllc3cgPSBwZi0mZ3Q7ZGV2LSZndDtwcml2LmVzd2l0Y2g7CiYjNDM7CW1seDVfZXN3X3JlcHNfYmxvY2soZXN3KTsKJiM0MzsJcmV0ID0gbWx4NV9lc3dpdGNoX3JlbG9hZF9pYl9yZXBzKGVzdyk7CiYjNDM7CW1seDVfZXN3X3JlcHNfdW5ibG9jayhlc3cpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfdW5sb2NrZWQoc3RydWN0IG1seDVfbGFnICpsZGV2LCB1MzIgZmxhZ3MsCiAJCQkJCSAgICB1MzIgZmlsdGVyLCBib29sIGNvbnRfb25fZmFpbCkKIHsKLQlzdHJ1Y3QgbGFnX2Z1bmMgKnBmOwomIzQzOwlpbnQgbWFzdGVyX2lkeCA9IG1seDVfbGFnX2dldF9kZXZfaW5kZXhfYnlfc2VxX2ZpbHRlcihsZGV2LCBNTFg1X0xBR19QMSwKJiM0MzsJCQkJCQkJICAgICBmaWx0ZXIpOwogCWludCByZXQ7CiAJaW50IGk7CiAKJiM0MzsJaWYgKG1hc3Rlcl9pZHggJmx0OyAwKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldCA9IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX2lkeChsZGV2LCBtYXN0ZXJfaWR4LCBmbGFncyk7CiYjNDM7CWlmIChyZXQgJmFtcDsmYW1wOyAhY29udF9vbl9mYWlsKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKIAltbHg1X2xhZ19mb3JfZWFjaChpLCAwLCBsZGV2LCBmaWx0ZXIpIHsKLQkJcGYgPSBtbHg1X2xhZ19wZihsZGV2LCBpKTsKLQkJaWYgKCEocGYtJmd0O2Rldi0mZ3Q7cHJpdi5mbGFncyAmYW1wOyBmbGFncykpIHsKLQkJCXN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdzsKLQotCQkJZXN3ID0gcGYtJmd0O2Rldi0mZ3Q7cHJpdi5lc3dpdGNoOwotCQkJbWx4NV9lc3dfcmVwc19ibG9jayhlc3cpOwotCQkJcmV0ID0gbWx4NV9lc3dpdGNoX3JlbG9hZF9pYl9yZXBzKGVzdyk7Ci0JCQltbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTsKLQkJCWlmIChyZXQgJmFtcDsmYW1wOyAhY29udF9vbl9mYWlsKQotCQkJCXJldHVybiByZXQ7Ci0JCX0KJiM0MzsJCWlmIChpID09IG1hc3Rlcl9pZHgpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlyZXQgPSBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgobGRldiwgaSwgZmxhZ3MpOwomIzQzOwkJaWYgKHJldCAmYW1wOyZhbXA7ICFjb250X29uX2ZhaWwpCiYjNDM7CQkJcmV0dXJuIHJldDsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmMKaW5kZXggNmI0YWQzYzUzZjJmMy4uNDI0MDQwOTE4ZmEzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmMKQEAgLTI3MCw2ICYjNDM7MjcwLDcgQEAgaW50IG1seDVfbGFnX3NoYXJlZF9mZGJfY3JlYXRlKHN0cnVjdCBtbHg1X2xhZyAqbGRldiwKIAkJCXBmLSZndDtzZF9mZGJfYWN0aXZlID0gZmFsc2U7CiAJCX0KIAkJbWx4NV9sYWdfZGVzdHJveV9zaW5nbGVfZmRiX2ZpbHRlcihsZGV2LCBncm91cF9pZCk7CiYjNDM7CQltbHg1X2xhZ191bmxvYWRfcmVwc19mcm9tX2xvY2tlZChsZGV2LCBmaWx0ZXIpOwogCX0KIGVycl9hZGRfZGV2aWNlczoKIAltbHg1X2xhZ19hZGRfZGV2aWNlc19maWx0ZXIobGRldiwgZmlsdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jCmluZGV4IDY0ZjkyNDI3NjAyZGUuLjc1ODU1NDgxNTIyYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9kZXZjb20uYwpAQCAtMzcsNiAmIzQzOzM3LDcgQEAgc3RydWN0IG1seDVfZGV2Y29tX2NvbXAgewogCXN0cnVjdCBtbHg1X2RldmNvbV9rZXkga2V5OwogCW1seDVfZGV2Y29tX2V2ZW50X2hhbmRsZXJfdCBoYW5kbGVyOwogCXN0cnVjdCBrcmVmIHJlZjsKJiM0MzsJaW50IG5yX2RldnM7CiAJYm9vbCByZWFkeTsKIAlzdHJ1Y3Qgcndfc2VtYXBob3JlIHNlbTsKIAlzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbG9ja19rZXk7CkBAIC0xNzAsNiAmIzQzOzE3MSw3IEBAIGRldmNvbV9hbGxvY19jb21wX2RldihzdHJ1Y3QgbWx4NV9kZXZjb21fZGV2ICpkZXZjLAogCiAJZG93bl93cml0ZSgmYW1wO2NvbXAtJmd0O3NlbSk7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2RldmNvbS0mZ3Q7bGlzdCwgJmFtcDtjb21wLSZndDtjb21wX2Rldl9saXN0X2hlYWQpOwomIzQzOwlXUklURV9PTkNFKGNvbXAtJmd0O25yX2RldnMsIGNvbXAtJmd0O25yX2RldnMgJiM0MzsgMSk7CiAJdXBfd3JpdGUoJmFtcDtjb21wLSZndDtzZW0pOwogCiAJcmV0dXJuIGRldmNvbTsKQEAgLTE4Miw2ICYjNDM7MTg0LDcgQEAgZGV2Y29tX2ZyZWVfY29tcF9kZXYoc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb20pCiAKIAlkb3duX3dyaXRlKCZhbXA7Y29tcC0mZ3Q7c2VtKTsKIAlsaXN0X2RlbCgmYW1wO2RldmNvbS0mZ3Q7bGlzdCk7CiYjNDM7CVdSSVRFX09OQ0UoY29tcC0mZ3Q7bnJfZGV2cywgY29tcC0mZ3Q7bnJfZGV2cyAtIDEpOwogCXVwX3dyaXRlKCZhbXA7Y29tcC0mZ3Q7c2VtKTsKIAogCWtyZWZfcHV0KCZhbXA7ZGV2Y29tLSZndDtkZXZjLSZndDtyZWYsIG1seDVfZGV2Y29tX2Rldl9yZWxlYXNlKTsKQEAgLTI4NCw3ICYjNDM7Mjg3LDcgQEAgaW50IG1seDVfZGV2Y29tX2NvbXBfZ2V0X3NpemUoc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb20pCiB7CiAJc3RydWN0IG1seDVfZGV2Y29tX2NvbXAgKmNvbXAgPSBkZXZjb20tJmd0O2NvbXA7CiAKLQlyZXR1cm4ga3JlZl9yZWFkKCZhbXA7Y29tcC0mZ3Q7cmVmKTsKJiM0MzsJcmV0dXJuIFJFQURfT05DRShjb21wLSZndDtucl9kZXZzKTsKIH0KIAogaW50IG1seDVfZGV2Y29tX2xvY2tlZF9zZW5kX2V2ZW50KHN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqZGV2Y29tLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJIHNlZSBpdCYjMzk7cyB0b3VjaGluZyBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2AgZGlyZWN0b3J5OiBzcGVjaWZpY2FsbHksIGBsYWcuY2AsIGBzaGFyZWRfZmRiLmNgLCBhbmQgYGRldmNvbS5jYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBNZWxsYW5veCBDb25uZWN0WCBmYW1pbHksIGxpa2VseSBDb25uZWN0WC00LCAtNSwgb3IgLTYsIGdpdmVuIHRoZSBgbWx4NWAgbmFtaW5nIGNvbnZlbnRpb24uIFRoYXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgdGhlaXIgbmV0d29yayBhZGFwdGVycy4KCkhvbGQgb24gYSBzZWNvbmQsIGxldCBtZSBxdWlja2x5IHJlZmVyIHRvIFNlY3Rpb24gMiBvZiB0aGUgZ3VpZGVsaW5lcy4gJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuLi4mIzM0OyDigJMgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGZhbGwgdW5kZXIgdGhhdCBjYXRlZ29yeS4gVGhleSBsaXN0IHNwZWNpZmljIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcWVkYCwgZXRjLiBhcyBleGFtcGxlcyBvZiBoYXJkd2FyZSByZXF1aXJpbmcgYWN0dWFsIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuIElzIGBtbHg1YCBvbmUgb2YgdGhvc2U/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLgoKU28sIGlzIHRoZSBgbWx4NWAgZHJpdmVyIGl0c2VsZiByZWxpYW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlIGluIGEgd2F5IHRoYXQgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBmdWxseSB0ZXN0IGluIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIGNsYXJpZnkgaWYgaXQgY2FuIGJlIGVtdWxhdGVkIG9yIGlmIGl0JiMzOTtzIGNvbnNpZGVyZWQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2VhcmNoIGluIHRoZSBrZXJuZWwgc291cmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGtpbmQgb2YgZGV2aWNlIHRoZSBkcml2ZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiBJJiMzOTtsbCBhbHNvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSBzeXprYWxsZXIgc3VwcG9ydCBvciBpZiBpdCYjMzk7cyBzb2xlbHkgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIE5JQ3MuIE9rYXksIHRoZSBrZXJuZWwgZG9jdW1lbnRhdGlvbiB0ZWxscyBtZSB0aGUgZHJpdmVyIGlzIGZvciBNZWxsYW5veCBDb25uZWN0WCBldGhlcm5ldC9JbmZpbmlCYW5kIGFkYXB0ZXJzLgoKTm93LCBkb2VzIFFFTVUgZW11bGF0ZSB0aGVzZSBhZGFwdGVycz8gVGhhdCYjMzk7cyB0aGUgcmVhbCB0ZXN0LiBObywgUUVNVSBoYXMgbm8gbWx4NSBkZXZpY2UgZW11bGF0aW9uLgoKQWxyaWdodCwgaXMgdGhlcmUgKmFueSoga2luZCBvZiB2aXJ0dWFsIGRldmljZSwgbW9jaywgb3IgdGVzdCBkcml2ZXIgYXNzb2NpYXRlZCB3aXRoIGBtbHg1YD8gSSYjMzk7bGwgbmVlZCB0byB1c2UgYGdyZXBwZXJgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiB2aXJ0dWFsIG9yIHRlc3QgaW50ZXJmYWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUxYNV9DT1JFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0PTU9RW5hYmxpbmcgdGhlIGRyaXZlciBhbmQga2NvbmZpZyBvcHRpb25zXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMTItfCBCYXNpYyBmZWF0dXJlcywgZXRoZXJuZXQgbmV0IGRldmljZSByeC90eCBvZmZsb2FkcyBhbmQgWERQLCBhcmUgYXZhaWxhYmxlIHdpdGggdGhlIG1vc3QgYmFzaWMgZmxhZ3NcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjEzOnwgQ09ORklHX01MWDVfQ09SRT15L20gYW5kIENPTkZJR19NTFg1X0NPUkVfRU49eS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTE0LXwgRm9yIHRoZSBsaXN0IG9mIGFkdmFuY2VkIGZlYXR1cmVzLCBwbGVhc2Ugc2VlIGJlbG93LlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTIzLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MjQ6KipDT05GSUdfTUxYNV9DT1JFPSh5L20vbikqKiAobW9kdWxlIG1seDVfY29yZS5rbylcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTI1LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MjY6fCAgICBUaGUgZHJpdmVyIGNhbiBiZSBlbmFibGVkIGJ5IGNob29zaW5nIENPTkZJR19NTFg1X0NPUkU9eS9tIGluIGtlcm5lbCBjb25maWcuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0yNy18ICAgIFRoaXMgd2lsbCBwcm92aWRlIG1seDUgY29yZSBkcml2ZXIgZm9yIG1seDUgdWxwcyB0byBpbnRlcmZhY2Ugd2l0aCAobWx4NWUsIG1seDVfaWIpLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTI5LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MzA6KipDT05GSUdfTUxYNV9DT1JFX0VOPSh5L24pKipcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTMxLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTM2LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6Mzc6KipDT05GSUdfTUxYNV9DT1JFX0VOX0RDQj0oeS9uKSoqOlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMzgtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDEtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0MjoqKkNPTkZJR19NTFg1X0NPUkVfSVBPSUI9KHkvbikqKlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDMtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC00NC18ICAgIElQb0lCIG9mZmxvYWRzIFx1MDAyNiBhY2NlbGVyYXRpb24gc3VwcG9ydC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjQ1OnwgICAgUmVxdWlyZXMgQ09ORklHX01MWDVfQ09SRV9FTiB0byBwcm92aWRlIGFuIGFjY2VsZXJhdGVkIGludGVyZmFjZSBmb3IgdGhlIHJkbWFcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTQ2LXwgICAgSVBvSUIgdWxwIG5ldGRldmljZS5cbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTQxMT1DT05GSUdfTUxYNF9FTj1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjQxMjpDT05GSUdfTUxYNV9DT1JFPW1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDEzOkNPTkZJR19NTFg1X0NPUkVfRU49eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00MTQtIyBDT05GSUdfTkVUX1ZFTkRPUl9NRVRBIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz0xNzM9Q09ORklHX01MWDRfRU49bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc0OkNPTkZJR19NTFg1X0NPUkU9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMTc1LUNPTkZJR19NTFg1X0ZQR0E9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc2OkNPTkZJR19NTFg1X0NPUkVfRU49eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc3OkNPTkZJR19NTFg1X0NPUkVfSVBPSUI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMTc4LUNPTkZJR19NWVJJMTBHRT1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc9MTUyPUNPTkZJR19NTFg0X0VOPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTE1My0jIENPTkZJR19NTFg0X0NPUkVfR0VOMiBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZzoxNTQ6Q09ORklHX01MWDVfQ09SRT1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZzoxNTU6Q09ORklHX01MWDVfQ09SRV9FTj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZy0xNTYtIyBDT05GSUdfTUxYNV9FTl9SWE5GQyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTU1Nj1DT05GSUdfTUxYNF9FTj1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NTU3OkNPTkZJR19NTFg1X0NPUkU9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjU1ODpDT05GSUdfTUxYNV9DT1JFX0VOPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy01NTktQ09ORklHX01MWDVfU0Y9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz01NDY9Q09ORklHX01MWDRfRU49bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjU0NzpDT05GSUdfTUxYNV9DT1JFPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo1NDg6Q09ORklHX01MWDVfQ09SRV9FTj15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNTQ5LUNPTkZJR19NTFg1X1NGPXlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDc4Mz1zdGF0aWMgaW50IG1seDVfaWJfc3RhZ2VfY2Fwc19pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00Nzg4LVx0aWYgKE1MWDVfQ0FQX0dFTihtZGV2LCBpcG9pYl9lbmhhbmNlZF9vZmZsb2FkcykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDc4OTpcdCAgICBJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfSVBPSUIpKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ3OTAtXHRcdGliX3NldF9kZXZpY2Vfb3BzKFx1MDAyNmRldi1cdTAwM2VpYl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTUxYNF9DT1JFKSAmIzQzOz0gbWx4NC9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX01MWDVfQ09SRSkgJiM0Mzs9IG1seDUvY29yZS9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX01MWFNXX0NPUkUpICYjNDM7PSBtbHhzdy9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Nz1zdWJkaXItY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTUxYNV9DT1JFKSAmIzQzOz0gbWx4NV9jb3JlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9MTQ9bWx4NV9jb3JlLXkgOj1cdG1haW4ubyBjbWQubyBkZWJ1Z2ZzLm8gZncubyBlcS5vIHVhci5vIHBhZ2VhbGxvYy5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI1LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToyNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOKSAmIzQzOz0gZW4vcnF0Lm8gZW4vdGlyLm8gZW4vcnNzLm8gZW4vcnhfcmVzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNy1cdFx0ZW4vY2hhbm5lbHMubyBlbl9tYWluLm8gZW5fY29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Mzk9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fUlhORkMpICAgICYjNDM7PSBlbl9mc19ldGh0b29sLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0MDptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOX0RDQikgJiM0Mzs9IGVuX2RjYm5sLm8gZW4vcG9ydF9idWZmZXIub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQxLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgJiM0Mzs9IGVuL2h2X3ZoY2Ffc3RhdHMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT05Mz1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk3LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSAmIzQzOz0gaXBvaWIvaXBvaWIubyBpcG9pYi9ldGh0b29sLm8gaXBvaWIvaXBvaWJfdmxhbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jPTU3PWJvb2wgbWx4NV9ldGhfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jOjU5Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfRU4pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTYwLVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg9OTA1PXN0cnVjdCBtbHg1ZV9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5MTE6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTItXHRzdHJ1Y3QgbWx4NWVfZGNieF9kcCAgICAgICBkY2J4X2RwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1Ny1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU4OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU5LVx0c3RydWN0IG1seDVlX2RjYnggICAgICAgICAgZGNieDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC02LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmg6NzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xMzI9dm9pZCBtbHg1ZV9zZWxxX2NhbmNlbChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTEzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTQwOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNDEtc3RhdGljIGludCBtbHg1ZV9nZXRfZHNjcF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTE1ND1zdGF0aWMgaW50IG1seDVlX2dldF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTU2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTctXHRpZiAoUkVBRF9PTkNFKHByaXYtXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSkgPT0gTUxYNV9RUFRTX1RSVVNUX0RTQ1ApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM9MjQ4ND1pbnQgbWx4NWVfcG9sbF9yeF9jcShzdHJ1Y3QgbWx4NWVfY3EgKmNxLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNTE3OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI2NDE9Y29uc3Qgc3RydWN0IG1seDVlX3J4X2hhbmRsZXJzIG1seDVpX3J4X2hhbmRsZXJzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jOjI2NDU6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM9MTAwNz1zdGF0aWMgaW50IG1seDVlX2hhaXJwaW5fZ2V0X3ByaW8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jOjEwMTU6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE2LVx0aWYgKHByaXYtXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSAhPSBNTFg1X1FQVFNfVFJVU1RfUENQKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmM9ODcyPXZvaWQgbWx4NWVfZnJlZV90eHFzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jOjkxODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmMtOTE5LXN0YXRpYyBpbmxpbmUgdm9pZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg6MzY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oPTEzMD12b2lkIG1seDVpX3BhcmVudF9wdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDoxMzI6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTEzMy0jZW5kaWYgLyogX19NTFg1RV9JUE9CX0hfXyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0yND12b2lkIG1seDVfc2RfcHV0X2FkZXYoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFjdHVhbF9hZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDoyNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTI4LWJvb2wgbWx4NV9zZF9pc19zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oPTM3PXZvaWQgbWx4NV9zZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oOjM5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtNDAtc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICptbHg1X3NkX2dldF9kZXZjb20oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTM5Nj12b2lkIG1seDVfZndfdmVyc2lvbl9xdWVyeShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnJ1bm5pbmdfdmVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0zOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6Mzk5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDAwLWludCBtbHg1ZV9pbml0KHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4NDIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgdGhlIG1seDUgZGV2aWNlIHByb2JpbmcgYW5kIGluaXRpYWxpemF0aW9uOgoKKipEaXZpbmcgaW50byBtbHg1IEluaXRpYWxpemF0aW9uOiBQQ0kgRHJpdmVyIEZpcnN0KioKCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBmdW5kYW1lbnRhbCBtZWNoYW5pc20gb2YgaG93IG1seDUgZGV2aWNlcyBhcmUgaW5pdGlhbGx5IHJlY29nbml6ZWQgYW5kIGJyb3VnaHQgb25saW5lLiBTaW5jZSB0aGVzZSBhcmUgbmV0d29yayBkZXZpY2VzLCBteSBiZXN0IGd1ZXNzIGlzIHRoZXkmIzM5O3JlIGRyaXZlbiBieSB0aGUgUENJIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgUENJIGJ1cyBhbmQgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVycy4gU28sIEkgbmVlZCB0byBzdGFydCBieSBsb29raW5nIGZvciBob3cgdGhlIFBDSSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlc2UgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIFBDSSBkcml2ZXIga25vd3MgaXQgaXMgbG9va2luZyBhdCBhbiBtbHg1IGRldmljZS4KCkZyb20gdGhlcmUsIEkgd2FudCB0byBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIGRyaXZlci4gTGV0JiMzOTtzIHRyYWNlIGhvdyB0aGUgZGV2aWNlcyBhcmUgc2V0IHVwLiBUbyBkbyB0aGF0LCBJJiMzOTttIGdvaW5nIHN0cmFpZ2h0IHRvIHRoZSBjb3JlIG9mIHRoZSBtbHg1IGRyaXZlciBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIG1seDUgZHJpdmVyLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgcHJpbWFyeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmLCB3aGF0IHJlc291cmNlcyBpdCBhbGxvY2F0ZXMsIGFuZCBob3cgaXQgaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgUENJIGxheWVyIHRvIHVsdGltYXRlbHkgYnJpbmcgdGhlIGRldmljZXMgb25saW5lIGFuZCBtYWtlIHRoZW0gYWNjZXNzaWJsZSBmb3IgbmV0d29yayBvcGVyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8qXG4gICAyOlx0ICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUsIE1lbGxhbm94IFRlY2hub2xvZ2llcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIDM6XHQgKlxuICAgNDpcdCAqIFRoaXMgc29mdHdhcmUgaXMgYXZhaWxhYmxlIHRvIHlvdSB1bmRlciBhIGNob2ljZSBvZiBvbmUgb2YgdHdvXG4gICA1Olx0ICogbGljZW5zZXMuICBZb3UgbWF5IGNob29zZSB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVVxuICAgNjpcdCAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgVmVyc2lvbiAyLCBhdmFpbGFibGUgZnJvbSB0aGUgZmlsZVxuICAgNzpcdCAqIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUsIG9yIHRoZVxuICAgODpcdCAqIE9wZW5JQi5vcmcgQlNEIGxpY2Vuc2UgYmVsb3c6XG4gICA5Olx0ICpcbiAgMTA6XHQgKiAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvclxuICAxMTpcdCAqICAgICB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmdcbiAgMTI6XHQgKiAgICAgY29uZGl0aW9ucyBhcmUgbWV0OlxuICAxMzpcdCAqXG4gIDE0Olx0ICogICAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmVcbiAgMTU6XHQgKiAgICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAgMTY6XHQgKiAgICAgICAgZGlzY2xhaW1lci5cbiAgMTc6XHQgKlxuICAxODpcdCAqICAgICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gIDE5Olx0ICogICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gIDIwOlx0ICogICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFsc1xuICAyMTpcdCAqICAgICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gIDIyOlx0ICpcbiAgMjM6XHQgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCYjMzQ7QVMgSVNcJiMzNDssIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsXG4gIDI0Olx0ICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4gIDI1Olx0ICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkRcbiAgMjY6XHQgKiBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTXG4gIDI3Olx0ICogQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOXG4gIDI4Olx0ICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU5cbiAgMjk6XHQgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gIDMwOlx0ICogU09GVFdBUkUuXG4gIDMxOlx0ICovXG4gIDMyOlx0XG4gIDMzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvaGlnaG1lbS5oXHUwMDNlXG4gIDM0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMzU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAgMzY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gIDM3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGNpLmhcdTAwM2VcbiAgMzg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4gIDM5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gIDQwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAgNDE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gIDQyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbWx4NS9kcml2ZXIuaFx1MDAzZVxuICA0MzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvY3EuaFx1MDAzZVxuICA0NDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvcXAuaFx1MDAzZVxuICA0NTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlYnVnZnMuaFx1MDAzZVxuICA0NjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2ttb2QuaFx1MDAzZVxuICA0NzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvbWx4NV9pZmMuaFx1MDAzZVxuICA0ODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvdnBvcnQuaFx1MDAzZVxuICA0OTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZlcnNpb24uaFx1MDAzZVxuICA1MDpcdCNpbmNsdWRlIFx1MDAzY25ldC9kZXZsaW5rLmhcdTAwM2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAxNQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggYW5hbHl6aW5nIHRoZSBgbWx4NWAgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLCBiYXNlZCBvbiB0aGF0IHN0YXJ0aW5nIHBvaW50OgoKKipMb29raW5nIGF0IHRoZSBIZWFydCBvZiB0aGUgbWx4NSBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIGVuZCBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY2AgaXMgdGhlIGtleSBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyJiMzOTtzIHNldHVwLiBNeSBmb2N1cyBpcyBhbHdheXMgb24gaG93IHRoZSBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQgYW5kLCBjcnVjaWFsbHksIGhvdyB0aGUgUENJIGRyaXZlciBpcyByZWdpc3RlcmVkLiBUaGlzIGdpdmVzIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIGBtbHg1YCBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoIHRoZSBzeXN0ZW0uIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVudHJ5IHBvaW50cyDigJMgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhbmQgdGhlIG1lY2hhbmlzbSBieSB3aGljaCBpdCBpZGVudGlmaWVzIGFuZCBjbGFpbXMgTWVsbGFub3ggbmV0d29yayBkZXZpY2VzLiBVbmRlcnN0YW5kaW5nIHRoaXMgc2VjdGlvbiBoZWxwcyB0byBzZWUgaG93IHRoZSBrZXJuZWwgc2VlcyB0aGUgZGV2aWNlLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciBhdCBsZWFzdCB3aGVyZSBpdCYjMzk7cyBzdXBwb3NlZCB0byBoYXBwZW4hIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBgbW9kdWxlX2luaXRgIGNhbGwgd2hpY2ggcG9pbnRzIG1lIHRvIHRoZSBwcmltYXJ5IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGFuZCBJIHdpbGwgYmUgbG9va2luZyBhdCB0aGUgUENJIGRyaXZlciByZWdpc3RyYXRpb24uIEtub3dpbmcgdGhhdCB3aWxsIHRlbGwgbWUgaG93IHRoZSBkZXZpY2UgaXMgYm91bmQsIGFuZCB1bHRpbWF0ZWx5IGNvbnRyb2xsZWQgYnksIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXJ8cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM0Nj1zdGF0aWMgaW50IF9faW5pdCBtbHg1X2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzNjY6XHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzY3LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ5NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gbWx4NSBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgbWx4NWAgZHJpdmVyIGdldHMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtIHVzaW5nIGBwY2lfcmVnaXN0ZXJfZHJpdmVyKCZhbXA7bWx4NV9jb3JlX2RyaXZlcilgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCBub3RoaW5nIHBhcnRpY3VsYXJseSBzdXJwcmlzaW5nIHRoZXJlLiBOb3csIGFzIGEgbmV4dCBsb2dpY2FsIHN0ZXAsIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgUENJIElEIHRhYmxlIHdpdGhpbiBgbWx4NV9jb3JlX2RyaXZlcmAuIFVuZGVyc3RhbmRpbmcgd2hpY2ggaGFyZHdhcmUgZGV2aWNlcyB0aGlzIGRyaXZlciBpcyBkZXNpZ25lZCB0byBoYW5kbGUgaXMgZnVuZGFtZW50YWwuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByYW5nZSBvZiBzdXBwb3J0ZWQgZGV2aWNlcy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRyaXZlciBkaXN0aW5ndWlzaGVzIGJldHdlZW4gdmFyaW91cyBNZWxsYW5veCBoYXJkd2FyZSByZXZpc2lvbnMgYW5kIGNvbmZpZ3VyYXRpb25zLiBUaGF0IHdpbGwgdGVsbCBtZSBob3cgZ2VuZXJhbCBvciBzcGVjaWZpYyB0aGUgZHJpdmVyIGltcGxlbWVudGF0aW9uIHJlYWxseSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9jb3JlX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjI2OD1pbnQgbWx4NV9yZWNvdmVyX2RldmljZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjI3OTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI4MC1cdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjMwND1zdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWx4NV92Zl9nZXRfY29yZV9kZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzA4Olx0bWRldiA9IHBjaV9pb3ZfZ2V0X3BmX2RydmRhdGEocGRldiwgXHUwMDI2bWx4NV9jb3JlX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzMDktXHRpZiAoSVNfRVJSKG1kZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM0Nj1zdGF0aWMgaW50IF9faW5pdCBtbHg1X2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzNjY6XHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzY3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzODE9c3RhdGljIHZvaWQgX19leGl0IG1seDVfY2xlYW51cCh2b2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzgyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjM4MzpcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM4NC1cdG1seDVfc2ZfZHJpdmVyX3VucmVnaXN0ZXIoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMzcKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0cywgZ2VhcmVkIHRvd2FyZHMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgbWx4NV9jb3JlX2RyaXZlciBEZWZpbml0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbWx4NV9jb3JlX2RyaXZlcmAgaXMgZGVmaW5lZC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMjI3OSBpbiB0aGUgY29kZSDigJMgdGhhdCYjMzk7cyBvZnRlbiB3aGVyZSB0aGUgY29yZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgYmVnaW4sIG9yIGF0IGxlYXN0IGEgc2lnbmlmaWNhbnQgcG9pbnQgb2YgcmVmZXJlbmNlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZHJpdmVyJiMzOTtzIGZ1bmRhbWVudGFsIGNvbXBvbmVudHMgYXJlIHN0cnVjdHVyZWQsIGhvdyB0aGUgZGF0YSBpcyBsYWlkIG91dCwgYW5kIGhvdyB0aGUgY29yZSBlbGVtZW50cyBhcmUgaW5pdGlhbGl6ZWQuIEtub3dpbmcgdGhlIHN0cnVjdHVyZSB3aWxsIGFsbG93IG1lIHRvIHRyYWNrIHRoZSBleGVjdXRpb24gYW5kIGFuYWx5emUgd2hpY2ggcGFydHMgb2YgdGhlIGNvZGUgYXJlIHRoZSByb290IGNhdXNlLiBUaGlzIHNob3VsZCBoZWxwIG1lIGZvcm0gYSBtZW50YWwgbWFwIG9mIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjI3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMjc1Olx0XG4yMjc2Olx0XHRyZXR1cm4gbWx4NV9sb2FkX29uZV9kZXZsX2xvY2tlZChkZXYsIHRydWUpO1xuMjI3NzpcdH1cbjIyNzg6XHRcbjIyNzk6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcbjIyODA6XHRcdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxuMjI4MTpcdFx0LmlkX3RhYmxlICAgICAgID0gbWx4NV9jb3JlX3BjaV90YWJsZSxcbjIyODI6XHRcdC5wcm9iZSAgICAgICAgICA9IHByb2JlX29uZSxcbjIyODM6XHRcdC5yZW1vdmUgICAgICAgICA9IHJlbW92ZV9vbmUsXG4yMjg0Olx0XHQuc3VzcGVuZCAgICAgICAgPSBtbHg1X3N1c3BlbmQsXG4yMjg1Olx0XHQucmVzdW1lICAgICAgICAgPSBtbHg1X3Jlc3VtZSxcbjIyODY6XHRcdC5zaHV0ZG93blx0PSBzaHV0ZG93bixcbjIyODc6XHRcdC5lcnJfaGFuZGxlclx0PSBcdTAwMjZtbHg1X2Vycl9oYW5kbGVyLFxuMjI4ODpcdFx0LnNyaW92X2NvbmZpZ3VyZSAgID0gbWx4NV9jb3JlX3NyaW92X2NvbmZpZ3VyZSxcbjIyODk6XHRcdC5zcmlvdl9nZXRfdmZfdG90YWxfbXNpeCA9IG1seDVfc3Jpb3ZfZ2V0X3ZmX3RvdGFsX21zaXgsXG4yMjkwOlx0XHQuc3Jpb3Zfc2V0X21zaXhfdmVjX2NvdW50ID0gbWx4NV9jb3JlX3NyaW92X3NldF9tc2l4X3ZlY19jb3VudCxcbjIyOTE6XHR9O1xuMjI5MjpcdFxuMjI5MzpcdC8qKlxuMjI5NDpcdCAqIG1seDVfdmZfZ2V0X2NvcmVfZGV2IC0gR2V0IHRoZSBtbHg1IGNvcmUgZGV2aWNlIGZyb20gYSBnaXZlbiBWRiBQQ0kgZGV2aWNlIGlmXG4yMjk1Olx0ICogICAgICAgICAgICAgICAgICAgICBtbHg1X2NvcmUgaXMgaXRzIGRyaXZlci5cbjIyOTY6XHQgKiBAcGRldjogVGhlIGFzc29jaWF0ZWQgUENJIGRldmljZS5cbjIyOTc6XHQgKlxuMjI5ODpcdCAqIFVwb24gcmV0dXJuIHRoZSBpbnRlcmZhY2Ugc3RhdGUgbG9jayBzdGF5IGhlbGQgdG8gbGV0IGNhbGxlciB1c2VzIGl0IHNhZmVseS5cbjIyOTk6XHQgKiBDYWxsZXIgbXVzdCBlbnN1cmUgdG8gdXNlIHRoZSByZXR1cm5lZCBtbHg1IGRldmljZSBmb3IgYSBuYXJyb3cgd2luZG93XG4yMzAwOlx0ICogYW5kIHB1dCBpdCBiYWNrIHdpdGggbWx4NV92Zl9wdXRfY29yZV9kZXYoKSBpbW1lZGlhdGVseSBvbmNlIHVzYWdlIHdhcyBvdmVyLlxuMjMwMTpcdCAqXG4yMzAyOlx0ICogUmV0dXJuOiBQb2ludGVyIHRvIHRoZSBhc3NvY2lhdGVkIG1seDVfY29yZV9kZXYgb3IgTlVMTC5cbjIzMDM6XHQgKi9cbjIzMDQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWx4NV92Zl9nZXRfY29yZV9kZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTU2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqVmVyaWZ5aW5nIHRoZSBtbHg1IERyaXZlciBDb25uZWN0aW9uKioKClJpZ2h0LCBzbywgYG1seDVgIGlzIHRoZSBQQ0kgZHJpdmVyIGZvciB0aG9zZSBNZWxsYW5veCBDb25uZWN0WCBOSUNzLCBubyBxdWVzdGlvbi4gQnV0IEkgYWx3YXlzIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUuIEp1c3QgYSBxdWljayBwZWVrIGF0IHRoZSBgbWx4NV9jb3JlX3BjaV90YWJsZWAgaXMgYSBnb29kIHdheSB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCBteSBtZW50YWwgbW9kZWwgb2YgdGhpcyBkcml2ZXImIzM5O3Mgc2NvcGUgbWF0Y2hlcyB0aGUgcmVhbGl0eSBvZiB0aGUgY29kZS4gVGhpcyBraW5kIG9mIGNvbmZpcm1hdGlvbiBpcyBhbHdheXMgYSBnb29kIHRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2NvcmVfcGNpX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMjE2PXN0YXRpYyBpbnQgbWx4NV9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMjIzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtbHg1X2NvcmVfcGNpX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyMjQtXHR7IFBDSV9WREVWSUNFKE1FTExBTk9YLCBQQ0lfREVWSUNFX0lEX01FTExBTk9YX0NPTk5FQ1RJQikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIyNjA6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1seDVfY29yZV9wY2lfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjI3OT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI4MC1cdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMjgxOlx0LmlkX3RhYmxlICAgICAgID0gbWx4NV9jb3JlX3BjaV90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI4Mi1cdC5wcm9iZSAgICAgICAgICA9IHByb2JlX29uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4MDQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIG9uIFdvcnRoRnV6emluZyBmb3IgbWx4NSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IG91dGxpbmVzIHNwZWNpZmljIG5lZ2F0aXZlIGNyaXRlcmlhIOKAkyBzaXR1YXRpb25zIHdoZXJlIEkgKnNob3VsZG4mIzM5O3QqIG1hcmsgc29tZXRoaW5nIGFzICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuIFJpZ2h0IG5vdywgSSYjMzk7bSBzcGVjaWZpY2FsbHkgemVyb2luZyBpbiBvbiB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4gVGhlIHRleHQgaGlnaGxpZ2h0cyBhIGZldyBleGFtcGxlcywgYW5kIEkgc2VlICYjMzQ7bWx4c3cmIzM0OyBpbiB0aGF0IGxpc3QuCgpIbW0sICYjMzQ7bWx4NSYjMzQ7IGlzIE1lbGxhbm94IENvbm5lY3RYIGhhcmR3YXJlLiBJIGtub3cgdGhpcy4gV2UmIzM5O3JlIHRhbGtpbmcgU21hcnROSUNzL05JQ3MgaGVyZSDigJMgQ29ubmVjdC1JQiwgQ29ubmVjdFgtNCwgQ29ubmVjdFgtNSwgdGhlIHdob2xlIHJhbmdlLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSB2ZXJ5IGNsZWFyOiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyB0aGUga2V5LgoKU28sIGNhbiBRRU1VIGVtdWxhdGUgbWx4NT8gVGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgKm5vKi4gUUVNVSBzdGlja3MgdG8gZW11bGF0aW5nIHN0YW5kYXJkIHZpcnR1YWwgb3IgZW11bGF0ZWQgTklDcyDigJMgeW91ciBlMTAwMHMsIHZpcnRpby1uZXRzLCBldGMuIEl0ICpkb2VzbiYjMzk7dCogZG8gbWx4NS4gVGhhdCBwb2ludHMgZGlyZWN0bHkgdG93YXJkcyB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIEJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIExldCYjMzk7cyBhbHNvIGNoZWNrIGZvciBhIHNvZnR3YXJlIHNpbXVsYXRvciBvciBtb2NrIGRyaXZlciBmb3IgbWx4NSBpbiB0aGUga2VybmVsIHRyZWUuIEkgbmVlZCB0byBiZSBzdXJlLiBJJiMzOTtsbCBzZWFyY2ggZm9yICYjMzQ7bWx4NSYjMzQ7IGFjcm9zcyB0aGUga2VybmVsIHRyZWUsIGFuZCBpbiBwYXJ0aWN1bGFyLCBpbiB0aGUgYGRyaXZlcnMvbmV0L2AgYW5kIGB0b29scy90ZXN0aW5nL2AgZGlyZWN0b3JpZXMuIE1heWJlIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiBuZXRsaW5rIGludGVyZmFjZSBvciB2aXJ0dWFsIGRldmljZSBjcmVhdGlvbiB0aGF0IHdvdWxkIGNoYW5nZSB0aGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE1OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dG9vbHMvdGVzdGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDU4MgoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiA4MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIE1lbGxhbm94IENvbm5lY3RYIERyaXZlciBDb2RlIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciwgaXMgZXZlbiAqZnV6emFibGUqIGVmZmVjdGl2ZWx5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGV4aXN0aW5nIG1seDUgZGVzY3JpcHRpb25zIG9yIHRlc3RzIOKAkyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFdhaXQsIGEgd2FybmluZyBmbGFnIGdvZXMgdXAuIFRoZSB0b29sIEkmIzM5O20gdXNpbmcgaXNuJiMzOTt0IGZvciBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gSSBuZWVkIHRvIGJlIHVzaW5nIGByZWFkLXN5ei1zcGVjYCBvciBgc3l6LWdyZXBwZXJgLiBIbSwgYHN5ei1ncmVwcGVyYC4uLiBkb2VzIHRoYXQgZXZlbiAqZXhpc3QqPyBUaGUgYXZhaWxhYmxlIHRvb2xzIGRvbiYjMzk7dCBsaXN0IGl0OyBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGFuZCBzbyBvbiBhcmUgdGhlcmUsIGJ1dCBub3QgYHN5ei1ncmVwcGVyYC4gT2theSwgc28gdGhhdCBhdmVudWUgaXMgYmxvY2tlZC4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBhY3R1YWwgY29kZSBtb2RpZmljYXRpb25zLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGVzZSBmaWxlczogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNgLiBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KClgLCBgbWx4NV9sYWdfc2hhcmVkX2ZkYl9jcmVhdGUoKWAsIGBkZXZjb21fYWxsb2NfY29tcF9kZXYoKWAsIGV0Yy4gVGhlc2UgYXJlIGFsbCBpbnRlcm5hbCBmdW5jdGlvbnMgd2l0aGluIGBtbHg1X2NvcmVgLiBUaGlua2luZyBhYm91dCBpdCwgdGhlc2UgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUhIFNwZWNpZmljYWxseSwgd2UgaGF2ZSBMQUcgKExpbmsgQWdncmVnYXRpb24pIHN1cHBvcnQsIHNoYXJlZCBGREIgKGhhcmR3YXJlIGUtc3dpdGNoIGZvcndhcmRpbmcgZGF0YWJhc2UpLCBhbmQgRGV2Y29tIChkZXZpY2UgY29tbXVuaWNhdGlvbikg4oCTIGFsbCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LgoKSSBrbm93IHRoaXMgcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggUENJZSBjYXJkczsgaXQmIzM5O3MgYSBoYXJkd2FyZSBkZXBlbmRlbmN5LiBOZWl0aGVyIFFFTVUgbm9yIEdDRSBlbXVsYXRlcyB0aGF0IGtpbmQgb2YgaGFyZHdhcmUuIFNvLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5IGluIG15IGtub3dsZWRnZSBiYXNlLiBUaGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUNzIGFyZSBleHBsaWNpdGx5IGNhbGxlZCBvdXQgYXMgbm90IGJlaW5nIHJlYWxpc3RpY2FsbHkgZnV6emFibGUuCgpJIG5lZWQgdG8gY29uZmlybSB0aGlzIHJpZ29yb3VzbHkuIEFyZSB0aGVyZSAqYW55KiBjaGFuZ2VzIGluIGdlbmVyaWMgY29kZSBwYXRocz8gTm9wZSwgdGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgYG1seDVfY29yZWAgbmV0d29yayBkcml2ZXIgZGlyZWN0b3J5LiBOZXh0LCBjYW4gdGhpcyBtb2RpZmllZCBjb2RlIGJlIHJlYWNoZWQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPyBObyB3YXkuIFRoZSBDb25uZWN0WCBoYXJkd2FyZSBpcyBlc3NlbnRpYWwuIFRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgKmZhbHNlKi4KCk5vdywgdGhlIGBzZXQtcmVzdWx0c2AgcGFyYW1ldGVycy4gSSBuZWVkIHRvIHBvcHVsYXRlIHRob3NlIGNvcnJlY3RseS4gYFdvcnRoRnV6emluZ2A6IGRlZmluaXRlbHkgYGZhbHNlYC4gYFJlYXNvbmluZ2A6IEkgbmVlZCB0byBleHBsYWluIHRoZSBgbWx4NV9jb3JlYCBkZXBlbmRlbmN5IGNvbmNpc2VseSwgaGlnaGxpZ2h0aW5nIHRoZSBMQUcsIHNoYXJlZCBGREIsIGFuZCBkZXZjb20gY29tcG9uZW50cywgYW5kIGhvdyB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggUENJZSBoYXJkd2FyZSwgd2hpY2ggaXMgKm5vdCogZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UuIFRoaXMgbWFrZXMgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBgRW5hYmxlQ29uZmlnc2A6IEVtcHR5LiBgRm9jdXNTeW1ib2xzYDogRW1wdHkuCgpQZXJmZWN0LiBFdmVyeXRoaW5nIGFsaWducyB3aXRoIHRoZSBhc3Nlc3NtZW50LiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWx4NV9jb3JlIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8pLCBzcGVjaWZpY2FsbHkgaW50ZXJuYWwgbGluayBhZ2dyZWdhdGlvbiAoTEFHKSBhbmQgaW50ZXItZGV2aWNlIGNvbW11bmljYXRpb24gKGRldmNvbSkgbG9naWMuIFRoZXNlIGNvZGUgcGF0aHMgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWx4NV9jb3JlIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8pLCBzcGVjaWZpY2FsbHkgaW50ZXJuYWwgbGluayBhZ2dyZWdhdGlvbiAoTEFHKSBhbmQgaW50ZXItZGV2aWNlIGNvbW11bmljYXRpb24gKGRldmNvbSkgbG9naWMuIFRoZXNlIGNvZGUgcGF0aHMgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMjwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NTk6NDguMzgxNzkzNzc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0NTE3NTIyMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDVfY29yZSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvKSwgc3BlY2lmaWNhbGx5IGludGVybmFsIGxpbmsgYWdncmVnYXRpb24gKExBRykgYW5kIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIChkZXZjb20pIGxvZ2ljLiBUaGVzZSBjb2RlIHBhdGhzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggQVNJQy9QQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NTk6NDguMzgxNzk4ODk5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzUyMTg4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNjU0OWRmNGUwMGU1MDE2YjM3OTFlMDIyZmNlYmE0ZGEwMDZhMTgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDE1IDE0OjU5OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXFxuaW5kZXggYzY1NWY2ZTMyZTliMC4uZGQxNGNkYzM3OGRlMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xcbkBAIC0xMjY2LDI1ICsxMjY2LDQ1IEBAIHZvaWQgbWx4NV9sYWdfcmVtb3ZlX2RldmljZXMoc3RydWN0IG1seDVfbGFnICpsZGV2KVxcbiBcXHRtbHg1X2xhZ19yZW1vdmVfZGV2aWNlc19maWx0ZXIobGRldiwgTUxYNV9MQUdfRklMVEVSX1BPUlRTKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgoc3RydWN0IG1seDVfbGFnICpsZGV2LCBpbnQgaWR4LFxcbitcXHRcXHRcXHRcXHQgICAgICAgdTMyIGZsYWdzKVxcbit7XFxuK1xcdHN0cnVjdCBsYWdfZnVuYyAqcGYgPSBtbHg1X2xhZ19wZihsZGV2LCBpZHgpO1xcbitcXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAocGYtXFx1MDAzZWRldi1cXHUwMDNlcHJpdi5mbGFncyBcXHUwMDI2IGZsYWdzKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdGVzdyA9IHBmLVxcdTAwM2VkZXYtXFx1MDAzZXByaXYuZXN3aXRjaDtcXG4rXFx0bWx4NV9lc3dfcmVwc19ibG9jayhlc3cpO1xcbitcXHRyZXQgPSBtbHg1X2Vzd2l0Y2hfcmVsb2FkX2liX3JlcHMoZXN3KTtcXG4rXFx0bWx4NV9lc3dfcmVwc191bmJsb2NrKGVzdyk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX3VubG9ja2VkKHN0cnVjdCBtbHg1X2xhZyAqbGRldiwgdTMyIGZsYWdzLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgdTMyIGZpbHRlciwgYm9vbCBjb250X29uX2ZhaWwpXFxuIHtcXG4tXFx0c3RydWN0IGxhZ19mdW5jICpwZjtcXG4rXFx0aW50IG1hc3Rlcl9pZHggPSBtbHg1X2xhZ19nZXRfZGV2X2luZGV4X2J5X3NlcV9maWx0ZXIobGRldiwgTUxYNV9MQUdfUDEsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZmlsdGVyKTtcXG4gXFx0aW50IHJldDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRpZiAobWFzdGVyX2lkeCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cmV0ID0gbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KGxkZXYsIG1hc3Rlcl9pZHgsIGZsYWdzKTtcXG4rXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiAhY29udF9vbl9mYWlsKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4gXFx0bWx4NV9sYWdfZm9yX2VhY2goaSwgMCwgbGRldiwgZmlsdGVyKSB7XFxuLVxcdFxcdHBmID0gbWx4NV9sYWdfcGYobGRldiwgaSk7XFxuLVxcdFxcdGlmICghKHBmLVxcdTAwM2VkZXYtXFx1MDAzZXByaXYuZmxhZ3MgXFx1MDAyNiBmbGFncykpIHtcXG4tXFx0XFx0XFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xcbi1cXG4tXFx0XFx0XFx0ZXN3ID0gcGYtXFx1MDAzZWRldi1cXHUwMDNlcHJpdi5lc3dpdGNoO1xcbi1cXHRcXHRcXHRtbHg1X2Vzd19yZXBzX2Jsb2NrKGVzdyk7XFxuLVxcdFxcdFxcdHJldCA9IG1seDVfZXN3aXRjaF9yZWxvYWRfaWJfcmVwcyhlc3cpO1xcbi1cXHRcXHRcXHRtbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTtcXG4tXFx0XFx0XFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiAhY29udF9vbl9mYWlsKVxcbi1cXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmIChpID09IG1hc3Rlcl9pZHgpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRyZXQgPSBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgobGRldiwgaSwgZmxhZ3MpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2ICFjb250X29uX2ZhaWwpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL3NoYXJlZF9mZGIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jXFxuaW5kZXggNmI0YWQzYzUzZjJmMy4uNDI0MDQwOTE4ZmEzNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL3NoYXJlZF9mZGIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jXFxuQEAgLTI3MCw2ICsyNzAsNyBAQCBpbnQgbWx4NV9sYWdfc2hhcmVkX2ZkYl9jcmVhdGUoc3RydWN0IG1seDVfbGFnICpsZGV2LFxcbiBcXHRcXHRcXHRwZi1cXHUwMDNlc2RfZmRiX2FjdGl2ZSA9IGZhbHNlO1xcbiBcXHRcXHR9XFxuIFxcdFxcdG1seDVfbGFnX2Rlc3Ryb3lfc2luZ2xlX2ZkYl9maWx0ZXIobGRldiwgZ3JvdXBfaWQpO1xcbitcXHRcXHRtbHg1X2xhZ191bmxvYWRfcmVwc19mcm9tX2xvY2tlZChsZGV2LCBmaWx0ZXIpO1xcbiBcXHR9XFxuIGVycl9hZGRfZGV2aWNlczpcXG4gXFx0bWx4NV9sYWdfYWRkX2RldmljZXNfZmlsdGVyKGxkZXYsIGZpbHRlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jXFxuaW5kZXggNjRmOTI0Mjc2MDJkZS4uNzU4NTU0ODE1MjJiMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9kZXZjb20uY1xcbkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBtbHg1X2RldmNvbV9jb21wIHtcXG4gXFx0c3RydWN0IG1seDVfZGV2Y29tX2tleSBrZXk7XFxuIFxcdG1seDVfZGV2Y29tX2V2ZW50X2hhbmRsZXJfdCBoYW5kbGVyO1xcbiBcXHRzdHJ1Y3Qga3JlZiByZWY7XFxuK1xcdGludCBucl9kZXZzO1xcbiBcXHRib29sIHJlYWR5O1xcbiBcXHRzdHJ1Y3Qgcndfc2VtYXBob3JlIHNlbTtcXG4gXFx0c3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxvY2tfa2V5O1xcbkBAIC0xNzAsNiArMTcxLDcgQEAgZGV2Y29tX2FsbG9jX2NvbXBfZGV2KHN0cnVjdCBtbHg1X2RldmNvbV9kZXYgKmRldmMsXFxuIFxcbiBcXHRkb3duX3dyaXRlKFxcdTAwMjZjb21wLVxcdTAwM2VzZW0pO1xcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXZjb20tXFx1MDAzZWxpc3QsIFxcdTAwMjZjb21wLVxcdTAwM2Vjb21wX2Rldl9saXN0X2hlYWQpO1xcbitcXHRXUklURV9PTkNFKGNvbXAtXFx1MDAzZW5yX2RldnMsIGNvbXAtXFx1MDAzZW5yX2RldnMgKyAxKTtcXG4gXFx0dXBfd3JpdGUoXFx1MDAyNmNvbXAtXFx1MDAzZXNlbSk7XFxuIFxcbiBcXHRyZXR1cm4gZGV2Y29tO1xcbkBAIC0xODIsNiArMTg0LDcgQEAgZGV2Y29tX2ZyZWVfY29tcF9kZXYoc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb20pXFxuIFxcbiBcXHRkb3duX3dyaXRlKFxcdTAwMjZjb21wLVxcdTAwM2VzZW0pO1xcbiBcXHRsaXN0X2RlbChcXHUwMDI2ZGV2Y29tLVxcdTAwM2VsaXN0KTtcXG4rXFx0V1JJVEVfT05DRShjb21wLVxcdTAwM2Vucl9kZXZzLCBjb21wLVxcdTAwM2Vucl9kZXZzIC0gMSk7XFxuIFxcdHVwX3dyaXRlKFxcdTAwMjZjb21wLVxcdTAwM2VzZW0pO1xcbiBcXG4gXFx0a3JlZl9wdXQoXFx1MDAyNmRldmNvbS1cXHUwMDNlZGV2Yy1cXHUwMDNlcmVmLCBtbHg1X2RldmNvbV9kZXZfcmVsZWFzZSk7XFxuQEAgLTI4NCw3ICsyODcsNyBAQCBpbnQgbWx4NV9kZXZjb21fY29tcF9nZXRfc2l6ZShzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcCAqY29tcCA9IGRldmNvbS1cXHUwMDNlY29tcDtcXG4gXFxuLVxcdHJldHVybiBrcmVmX3JlYWQoXFx1MDAyNmNvbXAtXFx1MDAzZXJlZik7XFxuK1xcdHJldHVybiBSRUFEX09OQ0UoY29tcC1cXHUwMDNlbnJfZGV2cyk7XFxuIH1cXG4gXFxuIGludCBtbHg1X2RldmNvbV9sb2NrZWRfc2VuZF9ldmVudChzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NTk6NDguOTE3ODI3MjJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE4Mzk4MTQ3MzQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDVfY29yZSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvKSwgc3BlY2lmaWNhbGx5IGludGVybmFsIGxpbmsgYWdncmVnYXRpb24gKExBRykgYW5kIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIChkZXZjb20pIGxvZ2ljLiBUaGVzZSBjb2RlIHBhdGhzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggQVNJQy9QQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNjU0OWRmNGUwMGU1MDE2YjM3OTFlMDIyZmNlYmE0ZGEwMDZhMTgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTQ6NTk6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xuaW5kZXggYzY1NWY2ZTMyZTliMC4uZGQxNGNkYzM3OGRlMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbkBAIC0xMjY2LDI1ICsxMjY2LDQ1IEBAIHZvaWQgbWx4NV9sYWdfcmVtb3ZlX2RldmljZXMoc3RydWN0IG1seDVfbGFnICpsZGV2KVxuIFx0bWx4NV9sYWdfcmVtb3ZlX2RldmljZXNfZmlsdGVyKGxkZXYsIE1MWDVfTEFHX0ZJTFRFUl9QT1JUUyk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KHN0cnVjdCBtbHg1X2xhZyAqbGRldiwgaW50IGlkeCxcbitcdFx0XHRcdCAgICAgICB1MzIgZmxhZ3MpXG4re1xuK1x0c3RydWN0IGxhZ19mdW5jICpwZiA9IG1seDVfbGFnX3BmKGxkZXYsIGlkeCk7XG4rXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKHBmLVx1MDAzZWRldi1cdTAwM2Vwcml2LmZsYWdzIFx1MDAyNiBmbGFncylcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRlc3cgPSBwZi1cdTAwM2VkZXYtXHUwMDNlcHJpdi5lc3dpdGNoO1xuK1x0bWx4NV9lc3dfcmVwc19ibG9jayhlc3cpO1xuK1x0cmV0ID0gbWx4NV9lc3dpdGNoX3JlbG9hZF9pYl9yZXBzKGVzdyk7XG4rXHRtbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfdW5sb2NrZWQoc3RydWN0IG1seDVfbGFnICpsZGV2LCB1MzIgZmxhZ3MsXG4gXHRcdFx0XHRcdCAgICB1MzIgZmlsdGVyLCBib29sIGNvbnRfb25fZmFpbClcbiB7XG4tXHRzdHJ1Y3QgbGFnX2Z1bmMgKnBmO1xuK1x0aW50IG1hc3Rlcl9pZHggPSBtbHg1X2xhZ19nZXRfZGV2X2luZGV4X2J5X3NlcV9maWx0ZXIobGRldiwgTUxYNV9MQUdfUDEsXG4rXHRcdFx0XHRcdFx0XHQgICAgIGZpbHRlcik7XG4gXHRpbnQgcmV0O1xuIFx0aW50IGk7XG4gXG4rXHRpZiAobWFzdGVyX2lkeCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRyZXQgPSBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgobGRldiwgbWFzdGVyX2lkeCwgZmxhZ3MpO1xuK1x0aWYgKHJldCBcdTAwMjZcdTAwMjYgIWNvbnRfb25fZmFpbClcbitcdFx0cmV0dXJuIHJldDtcbitcbiBcdG1seDVfbGFnX2Zvcl9lYWNoKGksIDAsIGxkZXYsIGZpbHRlcikge1xuLVx0XHRwZiA9IG1seDVfbGFnX3BmKGxkZXYsIGkpO1xuLVx0XHRpZiAoIShwZi1cdTAwM2VkZXYtXHUwMDNlcHJpdi5mbGFncyBcdTAwMjYgZmxhZ3MpKSB7XG4tXHRcdFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xuLVxuLVx0XHRcdGVzdyA9IHBmLVx1MDAzZWRldi1cdTAwM2Vwcml2LmVzd2l0Y2g7XG4tXHRcdFx0bWx4NV9lc3dfcmVwc19ibG9jayhlc3cpO1xuLVx0XHRcdHJldCA9IG1seDVfZXN3aXRjaF9yZWxvYWRfaWJfcmVwcyhlc3cpO1xuLVx0XHRcdG1seDVfZXN3X3JlcHNfdW5ibG9jayhlc3cpO1xuLVx0XHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2ICFjb250X29uX2ZhaWwpXG4tXHRcdFx0XHRyZXR1cm4gcmV0O1xuLVx0XHR9XG4rXHRcdGlmIChpID09IG1hc3Rlcl9pZHgpXG4rXHRcdFx0Y29udGludWU7XG4rXHRcdHJldCA9IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX2lkeChsZGV2LCBpLCBmbGFncyk7XG4rXHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2ICFjb250X29uX2ZhaWwpXG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNcbmluZGV4IDZiNGFkM2M1M2YyZjMuLjQyNDA0MDkxOGZhMzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL3NoYXJlZF9mZGIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNcbkBAIC0yNzAsNiArMjcwLDcgQEAgaW50IG1seDVfbGFnX3NoYXJlZF9mZGJfY3JlYXRlKHN0cnVjdCBtbHg1X2xhZyAqbGRldixcbiBcdFx0XHRwZi1cdTAwM2VzZF9mZGJfYWN0aXZlID0gZmFsc2U7XG4gXHRcdH1cbiBcdFx0bWx4NV9sYWdfZGVzdHJveV9zaW5nbGVfZmRiX2ZpbHRlcihsZGV2LCBncm91cF9pZCk7XG4rXHRcdG1seDVfbGFnX3VubG9hZF9yZXBzX2Zyb21fbG9ja2VkKGxkZXYsIGZpbHRlcik7XG4gXHR9XG4gZXJyX2FkZF9kZXZpY2VzOlxuIFx0bWx4NV9sYWdfYWRkX2RldmljZXNfZmlsdGVyKGxkZXYsIGZpbHRlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9kZXZjb20uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNcbmluZGV4IDY0ZjkyNDI3NjAyZGUuLjc1ODU1NDgxNTIyYjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jXG5AQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcCB7XG4gXHRzdHJ1Y3QgbWx4NV9kZXZjb21fa2V5IGtleTtcbiBcdG1seDVfZGV2Y29tX2V2ZW50X2hhbmRsZXJfdCBoYW5kbGVyO1xuIFx0c3RydWN0IGtyZWYgcmVmO1xuK1x0aW50IG5yX2RldnM7XG4gXHRib29sIHJlYWR5O1xuIFx0c3RydWN0IHJ3X3NlbWFwaG9yZSBzZW07XG4gXHRzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbG9ja19rZXk7XG5AQCAtMTcwLDYgKzE3MSw3IEBAIGRldmNvbV9hbGxvY19jb21wX2RldihzdHJ1Y3QgbWx4NV9kZXZjb21fZGV2ICpkZXZjLFxuIFxuIFx0ZG93bl93cml0ZShcdTAwMjZjb21wLVx1MDAzZXNlbSk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmRldmNvbS1cdTAwM2VsaXN0LCBcdTAwMjZjb21wLVx1MDAzZWNvbXBfZGV2X2xpc3RfaGVhZCk7XG4rXHRXUklURV9PTkNFKGNvbXAtXHUwMDNlbnJfZGV2cywgY29tcC1cdTAwM2Vucl9kZXZzICsgMSk7XG4gXHR1cF93cml0ZShcdTAwMjZjb21wLVx1MDAzZXNlbSk7XG4gXG4gXHRyZXR1cm4gZGV2Y29tO1xuQEAgLTE4Miw2ICsxODQsNyBAQCBkZXZjb21fZnJlZV9jb21wX2RldihzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbSlcbiBcbiBcdGRvd25fd3JpdGUoXHUwMDI2Y29tcC1cdTAwM2VzZW0pO1xuIFx0bGlzdF9kZWwoXHUwMDI2ZGV2Y29tLVx1MDAzZWxpc3QpO1xuK1x0V1JJVEVfT05DRShjb21wLVx1MDAzZW5yX2RldnMsIGNvbXAtXHUwMDNlbnJfZGV2cyAtIDEpO1xuIFx0dXBfd3JpdGUoXHUwMDI2Y29tcC1cdTAwM2VzZW0pO1xuIFxuIFx0a3JlZl9wdXQoXHUwMDI2ZGV2Y29tLVx1MDAzZWRldmMtXHUwMDNlcmVmLCBtbHg1X2RldmNvbV9kZXZfcmVsZWFzZSk7XG5AQCAtMjg0LDcgKzI4Nyw3IEBAIGludCBtbHg1X2RldmNvbV9jb21wX2dldF9zaXplKHN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqZGV2Y29tKVxuIHtcbiBcdHN0cnVjdCBtbHg1X2RldmNvbV9jb21wICpjb21wID0gZGV2Y29tLVx1MDAzZWNvbXA7XG4gXG4tXHRyZXR1cm4ga3JlZl9yZWFkKFx1MDAyNmNvbXAtXHUwMDNlcmVmKTtcbitcdHJldHVybiBSRUFEX09OQ0UoY29tcC1cdTAwM2Vucl9kZXZzKTtcbiB9XG4gXG4gaW50IG1seDVfZGV2Y29tX2xvY2tlZF9zZW5kX2V2ZW50KHN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqZGV2Y29tLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NTk6NDguOTE3ODI4ODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMjIwMzM3MzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIGl0J3MgdG91Y2hpbmcgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9gIGRpcmVjdG9yeTogc3BlY2lmaWNhbGx5LCBgbGFnLmNgLCBgc2hhcmVkX2ZkYi5jYCwgYW5kIGBkZXZjb20uY2AuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBNZWxsYW5veCBDb25uZWN0WCBmYW1pbHksIGxpa2VseSBDb25uZWN0WC00LCAtNSwgb3IgLTYsIGdpdmVuIHRoZSBgbWx4NWAgbmFtaW5nIGNvbnZlbnRpb24uIFRoYXQncyB0aGUgZHJpdmVyIGZvciB0aGVpciBuZXR3b3JrIGFkYXB0ZXJzLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLCBsZXQgbWUgcXVpY2tseSByZWZlciB0byBTZWN0aW9uIDIgb2YgdGhlIGd1aWRlbGluZXMuIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLi4uXCIg4oCTIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGZhbGwgdW5kZXIgdGhhdCBjYXRlZ29yeS4gVGhleSBsaXN0IHNwZWNpZmljIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcWVkYCwgZXRjLiBhcyBleGFtcGxlcyBvZiBoYXJkd2FyZSByZXF1aXJpbmcgYWN0dWFsIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuIElzIGBtbHg1YCBvbmUgb2YgdGhvc2U/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uXG5cblNvLCBpcyB0aGUgYG1seDVgIGRyaXZlciBpdHNlbGYgcmVsaWFudCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBpbiBhIHdheSB0aGF0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gZnVsbHkgdGVzdCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byBjbGFyaWZ5IGlmIGl0IGNhbiBiZSBlbXVsYXRlZCBvciBpZiBpdCdzIGNvbnNpZGVyZWQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlxuXG5MZXQncyBkbyBhIHF1aWNrIHNlYXJjaCBpbiB0aGUga2VybmVsIHNvdXJjZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBraW5kIG9mIGRldmljZSB0aGUgZHJpdmVyIGlzIGFzc29jaWF0ZWQgd2l0aC4gSSdsbCBhbHNvIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHN5emthbGxlciBzdXBwb3J0IG9yIGlmIGl0J3Mgc29sZWx5IGEgZHJpdmVyIGZvciBwaHlzaWNhbCBOSUNzLiBPa2F5LCB0aGUga2VybmVsIGRvY3VtZW50YXRpb24gdGVsbHMgbWUgdGhlIGRyaXZlciBpcyBmb3IgTWVsbGFub3ggQ29ubmVjdFggZXRoZXJuZXQvSW5maW5pQmFuZCBhZGFwdGVycy5cblxuTm93LCBkb2VzIFFFTVUgZW11bGF0ZSB0aGVzZSBhZGFwdGVycz8gVGhhdCdzIHRoZSByZWFsIHRlc3QuIE5vLCBRRU1VIGhhcyBubyBtbHg1IGRldmljZSBlbXVsYXRpb24uXG5cbkFscmlnaHQsIGlzIHRoZXJlICphbnkqIGtpbmQgb2YgdmlydHVhbCBkZXZpY2UsIG1vY2ssIG9yIHRlc3QgZHJpdmVyIGFzc29jaWF0ZWQgd2l0aCBgbWx4NWA/IEknbGwgbmVlZCB0byB1c2UgYGdyZXBwZXJgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBtZW50aW9uIG9mIHZpcnR1YWwgb3IgdGVzdCBpbnRlcmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzk2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDA6MDEuMTIxMjA1OTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5MDcxOTQ5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUxYNV9DT1JFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0PTU9RW5hYmxpbmcgdGhlIGRyaXZlciBhbmQga2NvbmZpZyBvcHRpb25zXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0xMi18IEJhc2ljIGZlYXR1cmVzLCBldGhlcm5ldCBuZXQgZGV2aWNlIHJ4L3R4IG9mZmxvYWRzIGFuZCBYRFAsIGFyZSBhdmFpbGFibGUgd2l0aCB0aGUgbW9zdCBiYXNpYyBmbGFnc1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjEzOnwgQ09ORklHX01MWDVfQ09SRT15L20gYW5kIENPTkZJR19NTFg1X0NPUkVfRU49eS5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0xNC18IEZvciB0aGUgbGlzdCBvZiBhZHZhbmNlZCBmZWF0dXJlcywgcGxlYXNlIHNlZSBiZWxvdy5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTIzLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjI0OioqQ09ORklHX01MWDVfQ09SRT0oeS9tL24pKiogKG1vZHVsZSBtbHg1X2NvcmUua28pXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMjUtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MjY6fCAgICBUaGUgZHJpdmVyIGNhbiBiZSBlbmFibGVkIGJ5IGNob29zaW5nIENPTkZJR19NTFg1X0NPUkU9eS9tIGluIGtlcm5lbCBjb25maWcuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMjctfCAgICBUaGlzIHdpbGwgcHJvdmlkZSBtbHg1IGNvcmUgZHJpdmVyIGZvciBtbHg1IHVscHMgdG8gaW50ZXJmYWNlIHdpdGggKG1seDVlLCBtbHg1X2liKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTI5LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjMwOioqQ09ORklHX01MWDVfQ09SRV9FTj0oeS9uKSoqXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMzEtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0zNi1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDozNzoqKkNPTkZJR19NTFg1X0NPUkVfRU5fRENCPSh5L24pKio6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMzgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC00MS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0MjoqKkNPTkZJR19NTFg1X0NPUkVfSVBPSUI9KHkvbikqKlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTQzLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTQ0LXwgICAgSVBvSUIgb2ZmbG9hZHMgXFx1MDAyNiBhY2NlbGVyYXRpb24gc3VwcG9ydC5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0NTp8ICAgIFJlcXVpcmVzIENPTkZJR19NTFg1X0NPUkVfRU4gdG8gcHJvdmlkZSBhbiBhY2NlbGVyYXRlZCBpbnRlcmZhY2UgZm9yIHRoZSByZG1hXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDYtfCAgICBJUG9JQiB1bHAgbmV0ZGV2aWNlLlxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00MTE9Q09ORklHX01MWDRfRU49bVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDEyOkNPTkZJR19NTFg1X0NPUkU9bVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDEzOkNPTkZJR19NTFg1X0NPUkVfRU49eVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctNDE0LSMgQ09ORklHX05FVF9WRU5ET1JfTUVUQSBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz0xNzM9Q09ORklHX01MWDRfRU49bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjE3NDpDT05GSUdfTUxYNV9DT1JFPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy0xNzUtQ09ORklHX01MWDVfRlBHQT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc2OkNPTkZJR19NTFg1X0NPUkVfRU49eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjE3NzpDT05GSUdfTUxYNV9DT1JFX0lQT0lCPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy0xNzgtQ09ORklHX01ZUkkxMEdFPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnPTE1Mj1DT05GSUdfTUxYNF9FTj1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWctMTUzLSMgQ09ORklHX01MWDRfQ09SRV9HRU4yIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZzoxNTQ6Q09ORklHX01MWDVfQ09SRT1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc6MTU1OkNPTkZJR19NTFg1X0NPUkVfRU49eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTE1Ni0jIENPTkZJR19NTFg1X0VOX1JYTkZDIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz01NTY9Q09ORklHX01MWDRfRU49bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzo1NTc6Q09ORklHX01MWDVfQ09SRT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjU1ODpDT05GSUdfTUxYNV9DT1JFX0VOPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctNTU5LUNPTkZJR19NTFg1X1NGPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz01NDY9Q09ORklHX01MWDRfRU49bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo1NDc6Q09ORklHX01MWDVfQ09SRT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjU0ODpDT05GSUdfTUxYNV9DT1JFX0VOPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNTQ5LUNPTkZJR19NTFg1X1NGPXlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NzgzPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9jYXBzX2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDc4OC1cXHRpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIGlwb2liX2VuaGFuY2VkX29mZmxvYWRzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo0Nzg5OlxcdCAgICBJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfSVBPSUIpKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NzkwLVxcdFxcdGliX3NldF9kZXZpY2Vfb3BzKFxcdTAwMjZkZXYtXFx1MDAzZWliX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX01MWDRfQ09SRSkgKz0gbWx4NC9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICs9IG1seDUvY29yZS9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9NYWtlZmlsZS04LW9iai0kKENPTkZJR19NTFhTV19DT1JFKSArPSBtbHhzdy9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT03PXN1YmRpci1jY2ZsYWdzLXkgKz0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTUxYNV9DT1JFKSArPSBtbHg1X2NvcmUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT0xND1tbHg1X2NvcmUteSA6PVxcdG1haW4ubyBjbWQubyBkZWJ1Z2ZzLm8gZncubyBlcS5vIHVhci5vIHBhZ2VhbGxvYy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNS0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjI2Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU4pICs9IGVuL3JxdC5vIGVuL3Rpci5vIGVuL3Jzcy5vIGVuL3J4X3Jlcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjctXFx0XFx0ZW4vY2hhbm5lbHMubyBlbl9tYWluLm8gZW5fY29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTM5PW1seDVfY29yZS0kKENPTkZJR19NTFg1X0VOX1JYTkZDKSAgICArPSBlbl9mc19ldGh0b29sLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDA6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTl9EQ0IpICs9IGVuX2RjYm5sLm8gZW4vcG9ydF9idWZmZXIub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00MS1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICs9IGVuL2h2X3ZoY2Ffc3RhdHMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTkzPW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgKz0gbGliL2h2Lm8gbGliL2h2X3ZoY2Eub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk3LSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9JUE9JQikgKz0gaXBvaWIvaXBvaWIubyBpcG9pYi9ldGh0b29sLm8gaXBvaWIvaXBvaWJfdmxhbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jPTU3PWJvb2wgbWx4NV9ldGhfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTU4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM6NTk6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfRU4pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYy02MC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjkxMTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTItXFx0c3RydWN0IG1seDVlX2RjYnhfZHAgICAgICAgZGNieF9kcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1Ny1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5NTg6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU5LVxcdHN0cnVjdCBtbHg1ZV9kY2J4ICAgICAgICAgIGRjYng7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC02LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oOjc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9MTMyPXZvaWQgbWx4NWVfc2VscV9jYW5jZWwoc3RydWN0IG1seDVlX3NlbHEgKnNlbHEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTEzOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjE0MDojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE0MS1zdGF0aWMgaW50IG1seDVlX2dldF9kc2NwX3VwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xNTQ9c3RhdGljIGludCBtbHg1ZV9nZXRfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTU2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU3LVxcdGlmIChSRUFEX09OQ0UocHJpdi1cXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSkgPT0gTUxYNV9RUFRTX1RSVVNUX0RTQ1ApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYz0yNDg0PWludCBtbHg1ZV9wb2xsX3J4X2NxKHN0cnVjdCBtbHg1ZV9jcSAqY3EsIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jOjI1MTc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM9MjY0MT1jb25zdCBzdHJ1Y3QgbWx4NWVfcnhfaGFuZGxlcnMgbWx4NWlfcnhfaGFuZGxlcnMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNjQ0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM6MjY0NTojZW5kaWYgLyogQ09ORklHX01MWDVfQ09SRV9JUE9JQiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYz0xMDA3PXN0YXRpYyBpbnQgbWx4NWVfaGFpcnBpbl9nZXRfcHJpbyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM6MTAxNTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE2LVxcdGlmIChwcml2LVxcdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlICE9IE1MWDVfUVBUU19UUlVTVF9QQ1ApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jPTg3Mj12b2lkIG1seDVlX2ZyZWVfdHhxc3FfZGVzY3Moc3RydWN0IG1seDVlX3R4cXNxICpzcSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYzo5MTg6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYy05MTktc3RhdGljIGlubGluZSB2b2lkXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0zNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDozNjojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg9MTMwPXZvaWQgbWx4NWlfcGFyZW50X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg6MTMyOiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmgtMTMzLSNlbmRpZiAvKiBfX01MWDVFX0lQT0JfSF9fICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg9MjQ9dm9pZCBtbHg1X3NkX3B1dF9hZGV2KHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphY3R1YWxfYWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6Mjc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMjgtYm9vbCBtbHg1X3NkX2lzX3N1cHBvcnRlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0zNz12b2lkIG1seDVfc2RfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oOjM5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTQwLXN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqbWx4NV9zZF9nZXRfZGV2Y29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTM5Nj12b2lkIG1seDVfZndfdmVyc2lvbl9xdWVyeShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnJ1bm5pbmdfdmVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTM5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6Mzk5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQwMC1pbnQgbWx4NWVfaW5pdCh2b2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDA6MDMuMDExOTM2NTk3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTg5MTkxNjgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgdGhlIG1seDUgZGV2aWNlIHByb2JpbmcgYW5kIGluaXRpYWxpemF0aW9uOlxuXG4qKkRpdmluZyBpbnRvIG1seDUgSW5pdGlhbGl6YXRpb246IFBDSSBEcml2ZXIgRmlyc3QqKlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaXNtIG9mIGhvdyBtbHg1IGRldmljZXMgYXJlIGluaXRpYWxseSByZWNvZ25pemVkIGFuZCBicm91Z2h0IG9ubGluZS4gU2luY2UgdGhlc2UgYXJlIG5ldHdvcmsgZGV2aWNlcywgbXkgYmVzdCBndWVzcyBpcyB0aGV5J3JlIGRyaXZlbiBieSB0aGUgUENJIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgUENJIGJ1cyBhbmQgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVycy4gU28sIEkgbmVlZCB0byBzdGFydCBieSBsb29raW5nIGZvciBob3cgdGhlIFBDSSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlc2UgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGUgUENJIGRyaXZlciBrbm93cyBpdCBpcyBsb29raW5nIGF0IGFuIG1seDUgZGV2aWNlLlxuXG5Gcm9tIHRoZXJlLCBJIHdhbnQgdG8gZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXIuIExldCdzIHRyYWNlIGhvdyB0aGUgZGV2aWNlcyBhcmUgc2V0IHVwLiBUbyBkbyB0aGF0LCBJJ20gZ29pbmcgc3RyYWlnaHQgdG8gdGhlIGNvcmUgb2YgdGhlIG1seDUgZHJpdmVyIGNvZGUuIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBtbHg1IGRyaXZlci4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgcHJpbWFyeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmLCB3aGF0IHJlc291cmNlcyBpdCBhbGxvY2F0ZXMsIGFuZCBob3cgaXQgaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgUENJIGxheWVyIHRvIHVsdGltYXRlbHkgYnJpbmcgdGhlIGRldmljZXMgb25saW5lIGFuZCBtYWtlIHRoZW0gYWNjZXNzaWJsZSBmb3IgbmV0d29yayBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODQyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDA6MDguOTAzODU2NzA2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKlxcbiAgIDI6XFx0ICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUsIE1lbGxhbm94IFRlY2hub2xvZ2llcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cXG4gICAzOlxcdCAqXFxuICAgNDpcXHQgKiBUaGlzIHNvZnR3YXJlIGlzIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYSBjaG9pY2Ugb2Ygb25lIG9mIHR3b1xcbiAgIDU6XFx0ICogbGljZW5zZXMuICBZb3UgbWF5IGNob29zZSB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVVxcbiAgIDY6XFx0ICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBWZXJzaW9uIDIsIGF2YWlsYWJsZSBmcm9tIHRoZSBmaWxlXFxuICAgNzpcXHQgKiBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLCBvciB0aGVcXG4gICA4OlxcdCAqIE9wZW5JQi5vcmcgQlNEIGxpY2Vuc2UgYmVsb3c6XFxuICAgOTpcXHQgKlxcbiAgMTA6XFx0ICogICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3JcXG4gIDExOlxcdCAqICAgICB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmdcXG4gIDEyOlxcdCAqICAgICBjb25kaXRpb25zIGFyZSBtZXQ6XFxuICAxMzpcXHQgKlxcbiAgMTQ6XFx0ICogICAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmVcXG4gIDE1OlxcdCAqICAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xcbiAgMTY6XFx0ICogICAgICAgIGRpc2NsYWltZXIuXFxuICAxNzpcXHQgKlxcbiAgMTg6XFx0ICogICAgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcXG4gIDE5OlxcdCAqICAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xcbiAgMjA6XFx0ICogICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFsc1xcbiAgMjE6XFx0ICogICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cXG4gIDIyOlxcdCAqXFxuICAyMzpcXHQgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXFxcIkFTIElTXFxcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCxcXG4gIDI0OlxcdCAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxcbiAgMjU6XFx0ICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkRcXG4gIDI2OlxcdCAqIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlNcXG4gIDI3OlxcdCAqIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTlxcbiAgMjg6XFx0ICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU5cXG4gIDI5OlxcdCAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcXG4gIDMwOlxcdCAqIFNPRlRXQVJFLlxcbiAgMzE6XFx0ICovXFxuICAzMjpcXHRcXG4gIDMzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9oaWdobWVtLmhcXHUwMDNlXFxuICAzNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAzNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAgMzY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuICAzNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAzODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFxcdTAwM2VcXG4gIDM5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICA0MDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICA0MTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG4gIDQyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXFx1MDAzZVxcbiAgNDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21seDUvY3EuaFxcdTAwM2VcXG4gIDQ0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L3FwLmhcXHUwMDNlXFxuICA0NTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVidWdmcy5oXFx1MDAzZVxcbiAgNDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ttb2QuaFxcdTAwM2VcXG4gIDQ3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L21seDVfaWZjLmhcXHUwMDNlXFxuICA0ODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbWx4NS92cG9ydC5oXFx1MDAzZVxcbiAgNDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZlcnNpb24uaFxcdTAwM2VcXG4gIDUwOlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvZGV2bGluay5oXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNTowMDowOC45MDM5OTAzMjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNDIyOTY4MjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggYW5hbHl6aW5nIHRoZSBgbWx4NWAgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24sIGJhc2VkIG9uIHRoYXQgc3RhcnRpbmcgcG9pbnQ6XG5cbioqTG9va2luZyBhdCB0aGUgSGVhcnQgb2YgdGhlIG1seDUgRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIGVuZCBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY2AgaXMgdGhlIGtleSBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyJ3Mgc2V0dXAuIE15IGZvY3VzIGlzIGFsd2F5cyBvbiBob3cgdGhlIG1vZHVsZSBpcyBpbml0aWFsaXplZCBhbmQsIGNydWNpYWxseSwgaG93IHRoZSBQQ0kgZHJpdmVyIGlzIHJlZ2lzdGVyZWQuIFRoaXMgZ2l2ZXMgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGUgYG1seDVgIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGggdGhlIHN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBlbnRyeSBwb2ludHMg4oCTIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHdoZW4gdGhlIGRyaXZlciBpcyBsb2FkZWQgYW5kIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggaXQgaWRlbnRpZmllcyBhbmQgY2xhaW1zIE1lbGxhbm94IG5ldHdvcmsgZGV2aWNlcy4gVW5kZXJzdGFuZGluZyB0aGlzIHNlY3Rpb24gaGVscHMgdG8gc2VlIGhvdyB0aGUga2VybmVsIHNlZXMgdGhlIGRldmljZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgb3IgYXQgbGVhc3Qgd2hlcmUgaXQncyBzdXBwb3NlZCB0byBoYXBwZW4hIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIGBtb2R1bGVfaW5pdGAgY2FsbCB3aGljaCBwb2ludHMgbWUgdG8gdGhlIHByaW1hcnkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gYW5kIEkgd2lsbCBiZSBsb29raW5nIGF0IHRoZSBQQ0kgZHJpdmVyIHJlZ2lzdHJhdGlvbi4gS25vd2luZyB0aGF0IHdpbGwgdGVsbCBtZSBob3cgdGhlIGRldmljZSBpcyBib3VuZCwgYW5kIHVsdGltYXRlbHkgY29udHJvbGxlZCBieSwgdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAwOjExLjMyNjk2MDk4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAxMzYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM0Nj1zdGF0aWMgaW50IF9faW5pdCBtbHg1X2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzNjY6XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWx4NV9jb3JlX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzY3LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAwOjExLjM4Mjk4MTg3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE3ODQ3ODQxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBtbHg1IERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYG1seDVgIGRyaXZlciBnZXRzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgUENJIHN1YnN5c3RlbSB1c2luZyBgcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKWAuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgbm90aGluZyBwYXJ0aWN1bGFybHkgc3VycHJpc2luZyB0aGVyZS4gTm93LCBhcyBhIG5leHQgbG9naWNhbCBzdGVwLCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIFBDSSBJRCB0YWJsZSB3aXRoaW4gYG1seDVfY29yZV9kcml2ZXJgLiBVbmRlcnN0YW5kaW5nIHdoaWNoIGhhcmR3YXJlIGRldmljZXMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gaGFuZGxlIGlzIGZ1bmRhbWVudGFsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmFuZ2Ugb2Ygc3VwcG9ydGVkIGRldmljZXMuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHZhcmlvdXMgTWVsbGFub3ggaGFyZHdhcmUgcmV2aXNpb25zIGFuZCBjb25maWd1cmF0aW9ucy4gVGhhdCB3aWxsIHRlbGwgbWUgaG93IGdlbmVyYWwgb3Igc3BlY2lmaWMgdGhlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiByZWFsbHkgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDk0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDA6MTMuMTY3NzY5NDczWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDExNjY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2NvcmVfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjI2OD1pbnQgbWx4NV9yZWNvdmVyX2RldmljZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjI3OTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyODAtXFx0Lm5hbWUgICAgICAgICAgID0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzMDQ9c3RydWN0IG1seDVfY29yZV9kZXYgKm1seDVfdmZfZ2V0X2NvcmVfZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjMwODpcXHRtZGV2ID0gcGNpX2lvdl9nZXRfcGZfZHJ2ZGF0YShwZGV2LCBcXHUwMDI2bWx4NV9jb3JlX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzA5LVxcdGlmIChJU19FUlIobWRldikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzNDY9c3RhdGljIGludCBfX2luaXQgbWx4NV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzY2OlxcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzgxPXN0YXRpYyB2b2lkIF9fZXhpdCBtbHg1X2NsZWFudXAodm9pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzODIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjM4MzpcXHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM4NC1cXHRtbHg1X3NmX2RyaXZlcl91bnJlZ2lzdGVyKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAwOjEzLjIyMTg5MzgzMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2MzkwMjAwMTUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCBnZWFyZWQgdG93YXJkcyBhbiBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gdGhlIG1seDVfY29yZV9kcml2ZXIgRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbWx4NV9jb3JlX2RyaXZlcmAgaXMgZGVmaW5lZC4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gbGluZSAyMjc5IGluIHRoZSBjb2RlIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgc3RydWN0dXJlIGRlZmluaXRpb25zIGJlZ2luLCBvciBhdCBsZWFzdCBhIHNpZ25pZmljYW50IHBvaW50IG9mIHJlZmVyZW5jZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRyaXZlcidzIGZ1bmRhbWVudGFsIGNvbXBvbmVudHMgYXJlIHN0cnVjdHVyZWQsIGhvdyB0aGUgZGF0YSBpcyBsYWlkIG91dCwgYW5kIGhvdyB0aGUgY29yZSBlbGVtZW50cyBhcmUgaW5pdGlhbGl6ZWQuIEtub3dpbmcgdGhlIHN0cnVjdHVyZSB3aWxsIGFsbG93IG1lIHRvIHRyYWNrIHRoZSBleGVjdXRpb24gYW5kIGFuYWx5emUgd2hpY2ggcGFydHMgb2YgdGhlIGNvZGUgYXJlIHRoZSByb290IGNhdXNlLiBUaGlzIHNob3VsZCBoZWxwIG1lIGZvcm0gYSBtZW50YWwgbWFwIG9mIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzM3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDE6MTcuMTIzODk4Njg1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTk1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyNzUsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIyNzU6XFx0XFxuMjI3NjpcXHRcXHRyZXR1cm4gbWx4NV9sb2FkX29uZV9kZXZsX2xvY2tlZChkZXYsIHRydWUpO1xcbjIyNzc6XFx0fVxcbjIyNzg6XFx0XFxuMjI3OTpcXHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcXG4yMjgwOlxcdFxcdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxcbjIyODE6XFx0XFx0LmlkX3RhYmxlICAgICAgID0gbWx4NV9jb3JlX3BjaV90YWJsZSxcXG4yMjgyOlxcdFxcdC5wcm9iZSAgICAgICAgICA9IHByb2JlX29uZSxcXG4yMjgzOlxcdFxcdC5yZW1vdmUgICAgICAgICA9IHJlbW92ZV9vbmUsXFxuMjI4NDpcXHRcXHQuc3VzcGVuZCAgICAgICAgPSBtbHg1X3N1c3BlbmQsXFxuMjI4NTpcXHRcXHQucmVzdW1lICAgICAgICAgPSBtbHg1X3Jlc3VtZSxcXG4yMjg2OlxcdFxcdC5zaHV0ZG93blxcdD0gc2h1dGRvd24sXFxuMjI4NzpcXHRcXHQuZXJyX2hhbmRsZXJcXHQ9IFxcdTAwMjZtbHg1X2Vycl9oYW5kbGVyLFxcbjIyODg6XFx0XFx0LnNyaW92X2NvbmZpZ3VyZSAgID0gbWx4NV9jb3JlX3NyaW92X2NvbmZpZ3VyZSxcXG4yMjg5OlxcdFxcdC5zcmlvdl9nZXRfdmZfdG90YWxfbXNpeCA9IG1seDVfc3Jpb3ZfZ2V0X3ZmX3RvdGFsX21zaXgsXFxuMjI5MDpcXHRcXHQuc3Jpb3Zfc2V0X21zaXhfdmVjX2NvdW50ID0gbWx4NV9jb3JlX3NyaW92X3NldF9tc2l4X3ZlY19jb3VudCxcXG4yMjkxOlxcdH07XFxuMjI5MjpcXHRcXG4yMjkzOlxcdC8qKlxcbjIyOTQ6XFx0ICogbWx4NV92Zl9nZXRfY29yZV9kZXYgLSBHZXQgdGhlIG1seDUgY29yZSBkZXZpY2UgZnJvbSBhIGdpdmVuIFZGIFBDSSBkZXZpY2UgaWZcXG4yMjk1OlxcdCAqICAgICAgICAgICAgICAgICAgICAgbWx4NV9jb3JlIGlzIGl0cyBkcml2ZXIuXFxuMjI5NjpcXHQgKiBAcGRldjogVGhlIGFzc29jaWF0ZWQgUENJIGRldmljZS5cXG4yMjk3OlxcdCAqXFxuMjI5ODpcXHQgKiBVcG9uIHJldHVybiB0aGUgaW50ZXJmYWNlIHN0YXRlIGxvY2sgc3RheSBoZWxkIHRvIGxldCBjYWxsZXIgdXNlcyBpdCBzYWZlbHkuXFxuMjI5OTpcXHQgKiBDYWxsZXIgbXVzdCBlbnN1cmUgdG8gdXNlIHRoZSByZXR1cm5lZCBtbHg1IGRldmljZSBmb3IgYSBuYXJyb3cgd2luZG93XFxuMjMwMDpcXHQgKiBhbmQgcHV0IGl0IGJhY2sgd2l0aCBtbHg1X3ZmX3B1dF9jb3JlX2RldigpIGltbWVkaWF0ZWx5IG9uY2UgdXNhZ2Ugd2FzIG92ZXIuXFxuMjMwMTpcXHQgKlxcbjIzMDI6XFx0ICogUmV0dXJuOiBQb2ludGVyIHRvIHRoZSBhc3NvY2lhdGVkIG1seDVfY29yZV9kZXYgb3IgTlVMTC5cXG4yMzAzOlxcdCAqL1xcbjIzMDQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1seDVfdmZfZ2V0X2NvcmVfZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNTowMToxNy4xMjQwOTM0ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjkyNTYxMjUxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqVmVyaWZ5aW5nIHRoZSBtbHg1IERyaXZlciBDb25uZWN0aW9uKipcblxuUmlnaHQsIHNvLCBgbWx4NWAgaXMgdGhlIFBDSSBkcml2ZXIgZm9yIHRob3NlIE1lbGxhbm94IENvbm5lY3RYIE5JQ3MsIG5vIHF1ZXN0aW9uLiBCdXQgSSBhbHdheXMgZG91YmxlLWNoZWNrIHRoZXNlIHRoaW5ncywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS4gSnVzdCBhIHF1aWNrIHBlZWsgYXQgdGhlIGBtbHg1X2NvcmVfcGNpX3RhYmxlYCBpcyBhIGdvb2Qgd2F5IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IG15IG1lbnRhbCBtb2RlbCBvZiB0aGlzIGRyaXZlcidzIHNjb3BlIG1hdGNoZXMgdGhlIHJlYWxpdHkgb2YgdGhlIGNvZGUuIFRoaXMga2luZCBvZiBjb25maXJtYXRpb24gaXMgYWx3YXlzIGEgZ29vZCB0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxNTYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAxOjQ2LjM4MDIyMzIyNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3NTg4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9jb3JlX3BjaV90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIyMTY9c3RhdGljIGludCBtbHg1X3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjIyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIyMjM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1seDVfY29yZV9wY2lfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyMjQtXFx0eyBQQ0lfVkRFVklDRShNRUxMQU5PWCwgUENJX0RFVklDRV9JRF9NRUxMQU5PWF9DT05ORUNUSUIpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMjYwOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtbHg1X2NvcmVfcGNpX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIyNzk9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDVfY29yZV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjgwLVxcdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjI4MTpcXHQuaWRfdGFibGUgICAgICAgPSBtbHg1X2NvcmVfcGNpX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI4Mi1cXHQucHJvYmUgICAgICAgICAgPSBwcm9iZV9vbmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAxOjQ2LjQzMzk5MDQ3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozMzU1MzI0NzM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gV29ydGhGdXp6aW5nIGZvciBtbHg1KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IG91dGxpbmVzIHNwZWNpZmljIG5lZ2F0aXZlIGNyaXRlcmlhIOKAkyBzaXR1YXRpb25zIHdoZXJlIEkgKnNob3VsZG4ndCogbWFyayBzb21ldGhpbmcgYXMgXCJXb3J0aEZ1enppbmdcIi4gUmlnaHQgbm93LCBJJ20gc3BlY2lmaWNhbGx5IHplcm9pbmcgaW4gb24gdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY2F0ZWdvcnkuIFRoZSB0ZXh0IGhpZ2hsaWdodHMgYSBmZXcgZXhhbXBsZXMsIGFuZCBJIHNlZSBcIm1seHN3XCIgaW4gdGhhdCBsaXN0LlxuXG5IbW0sIFwibWx4NVwiIGlzIE1lbGxhbm94IENvbm5lY3RYIGhhcmR3YXJlLiBJIGtub3cgdGhpcy4gV2UncmUgdGFsa2luZyBTbWFydE5JQ3MvTklDcyBoZXJlIOKAkyBDb25uZWN0LUlCLCBDb25uZWN0WC00LCBDb25uZWN0WC01LCB0aGUgd2hvbGUgcmFuZ2UuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHZlcnkgY2xlYXI6IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgdGhlIGtleS5cblxuU28sIGNhbiBRRU1VIGVtdWxhdGUgbWx4NT8gVGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgKm5vKi4gUUVNVSBzdGlja3MgdG8gZW11bGF0aW5nIHN0YW5kYXJkIHZpcnR1YWwgb3IgZW11bGF0ZWQgTklDcyDigJMgeW91ciBlMTAwMHMsIHZpcnRpby1uZXRzLCBldGMuIEl0ICpkb2Vzbid0KiBkbyBtbHg1LiBUaGF0IHBvaW50cyBkaXJlY3RseSB0b3dhcmRzIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gTGV0J3MgYWxzbyBjaGVjayBmb3IgYSBzb2Z0d2FyZSBzaW11bGF0b3Igb3IgbW9jayBkcml2ZXIgZm9yIG1seDUgaW4gdGhlIGtlcm5lbCB0cmVlLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSdsbCBzZWFyY2ggZm9yIFwibWx4NVwiIGFjcm9zcyB0aGUga2VybmVsIHRyZWUsIGFuZCBpbiBwYXJ0aWN1bGFyLCBpbiB0aGUgYGRyaXZlcnMvbmV0L2AgYW5kIGB0b29scy90ZXN0aW5nL2AgZGlyZWN0b3JpZXMuIE1heWJlIHRoZXJlJ3Mgc29tZSBraW5kIG9mIG5ldGxpbmsgaW50ZXJmYWNlIG9yIHZpcnR1YWwgZGV2aWNlIGNyZWF0aW9uIHRoYXQgd291bGQgY2hhbmdlIHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4MDQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDI6MTkuOTg3MjM5OTI2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU1MTIzMDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ0b29scy90ZXN0aW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDI6MjAuMTAyNzYyMzA0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjMyNzk2NTA0Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBNZWxsYW5veCBDb25uZWN0WCBEcml2ZXIgQ29kZSBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyLCBpcyBldmVuICpmdXp6YWJsZSogZWZmZWN0aXZlbHkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIHN5emthbGxlciBoYXMgZXhpc3RpbmcgbWx4NSBkZXNjcmlwdGlvbnMgb3IgdGVzdHMg4oCTIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2FpdCwgYSB3YXJuaW5nIGZsYWcgZ29lcyB1cC4gVGhlIHRvb2wgSSdtIHVzaW5nIGlzbid0IGZvciBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gSSBuZWVkIHRvIGJlIHVzaW5nIGByZWFkLXN5ei1zcGVjYCBvciBgc3l6LWdyZXBwZXJgLiBIbSwgYHN5ei1ncmVwcGVyYC4uLiBkb2VzIHRoYXQgZXZlbiAqZXhpc3QqPyBUaGUgYXZhaWxhYmxlIHRvb2xzIGRvbid0IGxpc3QgaXQ7IGBncmVwcGVyYCwgYGNvZGVzZWFyY2gtZGlyLWluZGV4YCwgYW5kIHNvIG9uIGFyZSB0aGVyZSwgYnV0IG5vdCBgc3l6LWdyZXBwZXJgLiBPa2F5LCBzbyB0aGF0IGF2ZW51ZSBpcyBibG9ja2VkLlxuXG5MZXQncyBsb29rIGF0IHRoZSBhY3R1YWwgY29kZSBtb2RpZmljYXRpb25zLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGVzZSBmaWxlczogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNgLiBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KClgLCBgbWx4NV9sYWdfc2hhcmVkX2ZkYl9jcmVhdGUoKWAsIGBkZXZjb21fYWxsb2NfY29tcF9kZXYoKWAsIGV0Yy4gVGhlc2UgYXJlIGFsbCBpbnRlcm5hbCBmdW5jdGlvbnMgd2l0aGluIGBtbHg1X2NvcmVgLiBUaGlua2luZyBhYm91dCBpdCwgdGhlc2UgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUhIFNwZWNpZmljYWxseSwgd2UgaGF2ZSBMQUcgKExpbmsgQWdncmVnYXRpb24pIHN1cHBvcnQsIHNoYXJlZCBGREIgKGhhcmR3YXJlIGUtc3dpdGNoIGZvcndhcmRpbmcgZGF0YWJhc2UpLCBhbmQgRGV2Y29tIChkZXZpY2UgY29tbXVuaWNhdGlvbikg4oCTIGFsbCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LlxuXG5JIGtub3cgdGhpcyByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBQQ0llIGNhcmRzOyBpdCdzIGEgaGFyZHdhcmUgZGVwZW5kZW5jeS4gTmVpdGhlciBRRU1VIG5vciBHQ0UgZW11bGF0ZXMgdGhhdCBraW5kIG9mIGhhcmR3YXJlLiBTbywgdGhpcyBmYWxscyBzcXVhcmVseSB1bmRlciB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeSBpbiBteSBrbm93bGVkZ2UgYmFzZS4gVGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDcyBhcmUgZXhwbGljaXRseSBjYWxsZWQgb3V0IGFzIG5vdCBiZWluZyByZWFsaXN0aWNhbGx5IGZ1enphYmxlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzIHJpZ29yb3VzbHkuIEFyZSB0aGVyZSAqYW55KiBjaGFuZ2VzIGluIGdlbmVyaWMgY29kZSBwYXRocz8gTm9wZSwgdGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgYG1seDVfY29yZWAgbmV0d29yayBkcml2ZXIgZGlyZWN0b3J5LiBOZXh0LCBjYW4gdGhpcyBtb2RpZmllZCBjb2RlIGJlIHJlYWNoZWQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPyBObyB3YXkuIFRoZSBDb25uZWN0WCBoYXJkd2FyZSBpcyBlc3NlbnRpYWwuIFRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgKmZhbHNlKi5cblxuTm93LCB0aGUgYHNldC1yZXN1bHRzYCBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gcG9wdWxhdGUgdGhvc2UgY29ycmVjdGx5LiBgV29ydGhGdXp6aW5nYDogZGVmaW5pdGVseSBgZmFsc2VgLiBgUmVhc29uaW5nYDogSSBuZWVkIHRvIGV4cGxhaW4gdGhlIGBtbHg1X2NvcmVgIGRlcGVuZGVuY3kgY29uY2lzZWx5LCBoaWdobGlnaHRpbmcgdGhlIExBRywgc2hhcmVkIEZEQiwgYW5kIGRldmNvbSBjb21wb25lbnRzLCBhbmQgaG93IHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBQQ0llIGhhcmR3YXJlLCB3aGljaCBpcyAqbm90KiBlbXVsYXRlZCBpbiBRRU1VIG9yIEdDRS4gVGhpcyBtYWtlcyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIGBFbmFibGVDb25maWdzYDogRW1wdHkuIGBGb2N1c1N5bWJvbHNgOiBFbXB0eS5cblxuUGVyZmVjdC4gRXZlcnl0aGluZyBhbGlnbnMgd2l0aCB0aGUgYXNzZXNzbWVudC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTgyLCJPdXRwdXRUb2tlbnMiOjEyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNTowMjo1Mi44OTkyNjk4MTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWx4NV9jb3JlIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8pLCBzcGVjaWZpY2FsbHkgaW50ZXJuYWwgbGluayBhZ2dyZWdhdGlvbiAoTEFHKSBhbmQgaW50ZXItZGV2aWNlIGNvbW11bmljYXRpb24gKGRldmNvbSkgbG9naWMuIFRoZXNlIGNvZGUgcGF0aHMgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWx4NV9jb3JlIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8pLCBzcGVjaWZpY2FsbHkgaW50ZXJuYWwgbGluayBhZ2dyZWdhdGlvbiAoTEFHKSBhbmQgaW50ZXItZGV2aWNlIGNvbW11bmljYXRpb24gKGRldmNvbSkgbG9naWMuIFRoZXNlIGNvZGUgcGF0aHMgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNTowMjo1Mi44OTkzMDMyNzlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowccwcz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 14:58:31 +0000 UTC FinishedAt: 2026-09-15 15:02:55 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDE0OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDVfY29yZSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvKSwgc3BlY2lmaWNhbGx5IGludGVybmFsIGxpbmsgYWdncmVnYXRpb24gKExBRykgYW5kIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIChkZXZjb20pIGxvZ2ljLiBUaGVzZSBjb2RlIHBhdGhzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggQVNJQy9QQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo1OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NTQ5ZGY0ZTAwZTUwMTZiMzc5MWUwMjJmY2ViYTRkYTAwNmExODBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCAxNSAxNDo1OTo0NyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xuaW5kZXggYzY1NWY2ZTMyZTliMC4uZGQxNGNkYzM3OGRlMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbkBAIC0xMjY2LDI1ICYjNDM7MTI2Niw0NSBAQCB2b2lkIG1seDVfbGFnX3JlbW92ZV9kZXZpY2VzKHN0cnVjdCBtbHg1X2xhZyAqbGRldilcbiBcdG1seDVfbGFnX3JlbW92ZV9kZXZpY2VzX2ZpbHRlcihsZGV2LCBNTFg1X0xBR19GSUxURVJfUE9SVFMpO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgoc3RydWN0IG1seDVfbGFnICpsZGV2LCBpbnQgaWR4LFxuJiM0MztcdFx0XHRcdCAgICAgICB1MzIgZmxhZ3MpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbGFnX2Z1bmMgKnBmID0gbWx4NV9sYWdfcGYobGRldiwgaWR4KTtcbiYjNDM7XHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4mIzQzO1x0aW50IHJldDtcbiYjNDM7XG4mIzQzO1x0aWYgKHBmLVx1MDAzZWRldi1cdTAwM2Vwcml2LmZsYWdzIFx1MDAyNiBmbGFncylcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7XHRlc3cgPSBwZi1cdTAwM2VkZXYtXHUwMDNlcHJpdi5lc3dpdGNoO1xuJiM0MztcdG1seDVfZXN3X3JlcHNfYmxvY2soZXN3KTtcbiYjNDM7XHRyZXQgPSBtbHg1X2Vzd2l0Y2hfcmVsb2FkX2liX3JlcHMoZXN3KTtcbiYjNDM7XHRtbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX3VubG9ja2VkKHN0cnVjdCBtbHg1X2xhZyAqbGRldiwgdTMyIGZsYWdzLFxuIFx0XHRcdFx0XHQgICAgdTMyIGZpbHRlciwgYm9vbCBjb250X29uX2ZhaWwpXG4ge1xuLVx0c3RydWN0IGxhZ19mdW5jICpwZjtcbiYjNDM7XHRpbnQgbWFzdGVyX2lkeCA9IG1seDVfbGFnX2dldF9kZXZfaW5kZXhfYnlfc2VxX2ZpbHRlcihsZGV2LCBNTFg1X0xBR19QMSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgIGZpbHRlcik7XG4gXHRpbnQgcmV0O1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0aWYgKG1hc3Rlcl9pZHggXHUwMDNjIDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KGxkZXYsIG1hc3Rlcl9pZHgsIGZsYWdzKTtcbiYjNDM7XHRpZiAocmV0IFx1MDAyNlx1MDAyNiAhY29udF9vbl9mYWlsKVxuJiM0MztcdFx0cmV0dXJuIHJldDtcbiYjNDM7XG4gXHRtbHg1X2xhZ19mb3JfZWFjaChpLCAwLCBsZGV2LCBmaWx0ZXIpIHtcbi1cdFx0cGYgPSBtbHg1X2xhZ19wZihsZGV2LCBpKTtcbi1cdFx0aWYgKCEocGYtXHUwMDNlZGV2LVx1MDAzZXByaXYuZmxhZ3MgXHUwMDI2IGZsYWdzKSkge1xuLVx0XHRcdHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdztcbi1cbi1cdFx0XHRlc3cgPSBwZi1cdTAwM2VkZXYtXHUwMDNlcHJpdi5lc3dpdGNoO1xuLVx0XHRcdG1seDVfZXN3X3JlcHNfYmxvY2soZXN3KTtcbi1cdFx0XHRyZXQgPSBtbHg1X2Vzd2l0Y2hfcmVsb2FkX2liX3JlcHMoZXN3KTtcbi1cdFx0XHRtbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTtcbi1cdFx0XHRpZiAocmV0IFx1MDAyNlx1MDAyNiAhY29udF9vbl9mYWlsKVxuLVx0XHRcdFx0cmV0dXJuIHJldDtcbi1cdFx0fVxuJiM0MztcdFx0aWYgKGkgPT0gbWFzdGVyX2lkeClcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHRyZXQgPSBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgobGRldiwgaSwgZmxhZ3MpO1xuJiM0MztcdFx0aWYgKHJldCBcdTAwMjZcdTAwMjYgIWNvbnRfb25fZmFpbClcbiYjNDM7XHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNcbmluZGV4IDZiNGFkM2M1M2YyZjMuLjQyNDA0MDkxOGZhMzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL3NoYXJlZF9mZGIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNcbkBAIC0yNzAsNiAmIzQzOzI3MCw3IEBAIGludCBtbHg1X2xhZ19zaGFyZWRfZmRiX2NyZWF0ZShzdHJ1Y3QgbWx4NV9sYWcgKmxkZXYsXG4gXHRcdFx0cGYtXHUwMDNlc2RfZmRiX2FjdGl2ZSA9IGZhbHNlO1xuIFx0XHR9XG4gXHRcdG1seDVfbGFnX2Rlc3Ryb3lfc2luZ2xlX2ZkYl9maWx0ZXIobGRldiwgZ3JvdXBfaWQpO1xuJiM0MztcdFx0bWx4NV9sYWdfdW5sb2FkX3JlcHNfZnJvbV9sb2NrZWQobGRldiwgZmlsdGVyKTtcbiBcdH1cbiBlcnJfYWRkX2RldmljZXM6XG4gXHRtbHg1X2xhZ19hZGRfZGV2aWNlc19maWx0ZXIobGRldiwgZmlsdGVyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9kZXZjb20uY1xuaW5kZXggNjRmOTI0Mjc2MDJkZS4uNzU4NTU0ODE1MjJiMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNcbkBAIC0zNyw2ICYjNDM7MzcsNyBAQCBzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcCB7XG4gXHRzdHJ1Y3QgbWx4NV9kZXZjb21fa2V5IGtleTtcbiBcdG1seDVfZGV2Y29tX2V2ZW50X2hhbmRsZXJfdCBoYW5kbGVyO1xuIFx0c3RydWN0IGtyZWYgcmVmO1xuJiM0MztcdGludCBucl9kZXZzO1xuIFx0Ym9vbCByZWFkeTtcbiBcdHN0cnVjdCByd19zZW1hcGhvcmUgc2VtO1xuIFx0c3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxvY2tfa2V5O1xuQEAgLTE3MCw2ICYjNDM7MTcxLDcgQEAgZGV2Y29tX2FsbG9jX2NvbXBfZGV2KHN0cnVjdCBtbHg1X2RldmNvbV9kZXYgKmRldmMsXG4gXG4gXHRkb3duX3dyaXRlKFx1MDAyNmNvbXAtXHUwMDNlc2VtKTtcbiBcdGxpc3RfYWRkX3RhaWwoXHUwMDI2ZGV2Y29tLVx1MDAzZWxpc3QsIFx1MDAyNmNvbXAtXHUwMDNlY29tcF9kZXZfbGlzdF9oZWFkKTtcbiYjNDM7XHRXUklURV9PTkNFKGNvbXAtXHUwMDNlbnJfZGV2cywgY29tcC1cdTAwM2Vucl9kZXZzICYjNDM7IDEpO1xuIFx0dXBfd3JpdGUoXHUwMDI2Y29tcC1cdTAwM2VzZW0pO1xuIFxuIFx0cmV0dXJuIGRldmNvbTtcbkBAIC0xODIsNiAmIzQzOzE4NCw3IEBAIGRldmNvbV9mcmVlX2NvbXBfZGV2KHN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqZGV2Y29tKVxuIFxuIFx0ZG93bl93cml0ZShcdTAwMjZjb21wLVx1MDAzZXNlbSk7XG4gXHRsaXN0X2RlbChcdTAwMjZkZXZjb20tXHUwMDNlbGlzdCk7XG4mIzQzO1x0V1JJVEVfT05DRShjb21wLVx1MDAzZW5yX2RldnMsIGNvbXAtXHUwMDNlbnJfZGV2cyAtIDEpO1xuIFx0dXBfd3JpdGUoXHUwMDI2Y29tcC1cdTAwM2VzZW0pO1xuIFxuIFx0a3JlZl9wdXQoXHUwMDI2ZGV2Y29tLVx1MDAzZWRldmMtXHUwMDNlcmVmLCBtbHg1X2RldmNvbV9kZXZfcmVsZWFzZSk7XG5AQCAtMjg0LDcgJiM0MzsyODcsNyBAQCBpbnQgbWx4NV9kZXZjb21fY29tcF9nZXRfc2l6ZShzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbSlcbiB7XG4gXHRzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcCAqY29tcCA9IGRldmNvbS1cdTAwM2Vjb21wO1xuIFxuLVx0cmV0dXJuIGtyZWZfcmVhZChcdTAwMjZjb21wLVx1MDAzZXJlZik7XG4mIzQzO1x0cmV0dXJuIFJFQURfT05DRShjb21wLVx1MDAzZW5yX2RldnMpO1xuIH1cbiBcbiBpbnQgbWx4NV9kZXZjb21fbG9ja2VkX3NlbmRfZXZlbnQoc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb20sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTQ6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDVfY29yZSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvKSwgc3BlY2lmaWNhbGx5IGludGVybmFsIGxpbmsgYWdncmVnYXRpb24gKExBRykgYW5kIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIChkZXZjb20pIGxvZ2ljLiBUaGVzZSBjb2RlIHBhdGhzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggQVNJQy9QQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE2NTQ5ZGY0ZTAwZTUwMTZiMzc5MWUwMjJmY2ViYTRkYTAwNmExODAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxNSAxNDo1OTo0NyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jCmluZGV4IGM2NTVmNmUzMmU5YjAuLmRkMTRjZGMzNzhkZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuYwpAQCAtMTI2NiwyNSAmIzQzOzEyNjYsNDUgQEAgdm9pZCBtbHg1X2xhZ19yZW1vdmVfZGV2aWNlcyhzdHJ1Y3QgbWx4NV9sYWcgKmxkZXYpCiAJbWx4NV9sYWdfcmVtb3ZlX2RldmljZXNfZmlsdGVyKGxkZXYsIE1MWDVfTEFHX0ZJTFRFUl9QT1JUUyk7CiB9CiAKJiM0MztzdGF0aWMgaW50IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX2lkeChzdHJ1Y3QgbWx4NV9sYWcgKmxkZXYsIGludCBpZHgsCiYjNDM7CQkJCSAgICAgICB1MzIgZmxhZ3MpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgbGFnX2Z1bmMgKnBmID0gbWx4NV9sYWdfcGYobGRldiwgaWR4KTsKJiM0MzsJc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3OwomIzQzOwlpbnQgcmV0OwomIzQzOwomIzQzOwlpZiAocGYtJmd0O2Rldi0mZ3Q7cHJpdi5mbGFncyAmYW1wOyBmbGFncykKJiM0MzsJCXJldHVybiAwOwomIzQzOwomIzQzOwllc3cgPSBwZi0mZ3Q7ZGV2LSZndDtwcml2LmVzd2l0Y2g7CiYjNDM7CW1seDVfZXN3X3JlcHNfYmxvY2soZXN3KTsKJiM0MzsJcmV0ID0gbWx4NV9lc3dpdGNoX3JlbG9hZF9pYl9yZXBzKGVzdyk7CiYjNDM7CW1seDVfZXN3X3JlcHNfdW5ibG9jayhlc3cpOwomIzQzOwomIzQzOwlyZXR1cm4gcmV0OwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfdW5sb2NrZWQoc3RydWN0IG1seDVfbGFnICpsZGV2LCB1MzIgZmxhZ3MsCiAJCQkJCSAgICB1MzIgZmlsdGVyLCBib29sIGNvbnRfb25fZmFpbCkKIHsKLQlzdHJ1Y3QgbGFnX2Z1bmMgKnBmOwomIzQzOwlpbnQgbWFzdGVyX2lkeCA9IG1seDVfbGFnX2dldF9kZXZfaW5kZXhfYnlfc2VxX2ZpbHRlcihsZGV2LCBNTFg1X0xBR19QMSwKJiM0MzsJCQkJCQkJICAgICBmaWx0ZXIpOwogCWludCByZXQ7CiAJaW50IGk7CiAKJiM0MzsJaWYgKG1hc3Rlcl9pZHggJmx0OyAwKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldCA9IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX2lkeChsZGV2LCBtYXN0ZXJfaWR4LCBmbGFncyk7CiYjNDM7CWlmIChyZXQgJmFtcDsmYW1wOyAhY29udF9vbl9mYWlsKQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKIAltbHg1X2xhZ19mb3JfZWFjaChpLCAwLCBsZGV2LCBmaWx0ZXIpIHsKLQkJcGYgPSBtbHg1X2xhZ19wZihsZGV2LCBpKTsKLQkJaWYgKCEocGYtJmd0O2Rldi0mZ3Q7cHJpdi5mbGFncyAmYW1wOyBmbGFncykpIHsKLQkJCXN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdzsKLQotCQkJZXN3ID0gcGYtJmd0O2Rldi0mZ3Q7cHJpdi5lc3dpdGNoOwotCQkJbWx4NV9lc3dfcmVwc19ibG9jayhlc3cpOwotCQkJcmV0ID0gbWx4NV9lc3dpdGNoX3JlbG9hZF9pYl9yZXBzKGVzdyk7Ci0JCQltbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTsKLQkJCWlmIChyZXQgJmFtcDsmYW1wOyAhY29udF9vbl9mYWlsKQotCQkJCXJldHVybiByZXQ7Ci0JCX0KJiM0MzsJCWlmIChpID09IG1hc3Rlcl9pZHgpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CQlyZXQgPSBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgobGRldiwgaSwgZmxhZ3MpOwomIzQzOwkJaWYgKHJldCAmYW1wOyZhbXA7ICFjb250X29uX2ZhaWwpCiYjNDM7CQkJcmV0dXJuIHJldDsKIAl9CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmMKaW5kZXggNmI0YWQzYzUzZjJmMy4uNDI0MDQwOTE4ZmEzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmMKQEAgLTI3MCw2ICYjNDM7MjcwLDcgQEAgaW50IG1seDVfbGFnX3NoYXJlZF9mZGJfY3JlYXRlKHN0cnVjdCBtbHg1X2xhZyAqbGRldiwKIAkJCXBmLSZndDtzZF9mZGJfYWN0aXZlID0gZmFsc2U7CiAJCX0KIAkJbWx4NV9sYWdfZGVzdHJveV9zaW5nbGVfZmRiX2ZpbHRlcihsZGV2LCBncm91cF9pZCk7CiYjNDM7CQltbHg1X2xhZ191bmxvYWRfcmVwc19mcm9tX2xvY2tlZChsZGV2LCBmaWx0ZXIpOwogCX0KIGVycl9hZGRfZGV2aWNlczoKIAltbHg1X2xhZ19hZGRfZGV2aWNlc19maWx0ZXIobGRldiwgZmlsdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jCmluZGV4IDY0ZjkyNDI3NjAyZGUuLjc1ODU1NDgxNTIyYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9kZXZjb20uYwpAQCAtMzcsNiAmIzQzOzM3LDcgQEAgc3RydWN0IG1seDVfZGV2Y29tX2NvbXAgewogCXN0cnVjdCBtbHg1X2RldmNvbV9rZXkga2V5OwogCW1seDVfZGV2Y29tX2V2ZW50X2hhbmRsZXJfdCBoYW5kbGVyOwogCXN0cnVjdCBrcmVmIHJlZjsKJiM0MzsJaW50IG5yX2RldnM7CiAJYm9vbCByZWFkeTsKIAlzdHJ1Y3Qgcndfc2VtYXBob3JlIHNlbTsKIAlzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbG9ja19rZXk7CkBAIC0xNzAsNiAmIzQzOzE3MSw3IEBAIGRldmNvbV9hbGxvY19jb21wX2RldihzdHJ1Y3QgbWx4NV9kZXZjb21fZGV2ICpkZXZjLAogCiAJZG93bl93cml0ZSgmYW1wO2NvbXAtJmd0O3NlbSk7CiAJbGlzdF9hZGRfdGFpbCgmYW1wO2RldmNvbS0mZ3Q7bGlzdCwgJmFtcDtjb21wLSZndDtjb21wX2Rldl9saXN0X2hlYWQpOwomIzQzOwlXUklURV9PTkNFKGNvbXAtJmd0O25yX2RldnMsIGNvbXAtJmd0O25yX2RldnMgJiM0MzsgMSk7CiAJdXBfd3JpdGUoJmFtcDtjb21wLSZndDtzZW0pOwogCiAJcmV0dXJuIGRldmNvbTsKQEAgLTE4Miw2ICYjNDM7MTg0LDcgQEAgZGV2Y29tX2ZyZWVfY29tcF9kZXYoc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb20pCiAKIAlkb3duX3dyaXRlKCZhbXA7Y29tcC0mZ3Q7c2VtKTsKIAlsaXN0X2RlbCgmYW1wO2RldmNvbS0mZ3Q7bGlzdCk7CiYjNDM7CVdSSVRFX09OQ0UoY29tcC0mZ3Q7bnJfZGV2cywgY29tcC0mZ3Q7bnJfZGV2cyAtIDEpOwogCXVwX3dyaXRlKCZhbXA7Y29tcC0mZ3Q7c2VtKTsKIAogCWtyZWZfcHV0KCZhbXA7ZGV2Y29tLSZndDtkZXZjLSZndDtyZWYsIG1seDVfZGV2Y29tX2Rldl9yZWxlYXNlKTsKQEAgLTI4NCw3ICYjNDM7Mjg3LDcgQEAgaW50IG1seDVfZGV2Y29tX2NvbXBfZ2V0X3NpemUoc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb20pCiB7CiAJc3RydWN0IG1seDVfZGV2Y29tX2NvbXAgKmNvbXAgPSBkZXZjb20tJmd0O2NvbXA7CiAKLQlyZXR1cm4ga3JlZl9yZWFkKCZhbXA7Y29tcC0mZ3Q7cmVmKTsKJiM0MzsJcmV0dXJuIFJFQURfT05DRShjb21wLSZndDtucl9kZXZzKTsKIH0KIAogaW50IG1seDVfZGV2Y29tX2xvY2tlZF9zZW5kX2V2ZW50KHN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqZGV2Y29tLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzk2CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMzY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJIHNlZSBpdCYjMzk7cyB0b3VjaGluZyBmaWxlcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2AgZGlyZWN0b3J5OiBzcGVjaWZpY2FsbHksIGBsYWcuY2AsIGBzaGFyZWRfZmRiLmNgLCBhbmQgYGRldmNvbS5jYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBNZWxsYW5veCBDb25uZWN0WCBmYW1pbHksIGxpa2VseSBDb25uZWN0WC00LCAtNSwgb3IgLTYsIGdpdmVuIHRoZSBgbWx4NWAgbmFtaW5nIGNvbnZlbnRpb24uIFRoYXQmIzM5O3MgdGhlIGRyaXZlciBmb3IgdGhlaXIgbmV0d29yayBhZGFwdGVycy4KCkhvbGQgb24gYSBzZWNvbmQsIGxldCBtZSBxdWlja2x5IHJlZmVyIHRvIFNlY3Rpb24gMiBvZiB0aGUgZ3VpZGVsaW5lcy4gJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuLi4mIzM0OyDigJMgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJiMzOTt0IGZhbGwgdW5kZXIgdGhhdCBjYXRlZ29yeS4gVGhleSBsaXN0IHNwZWNpZmljIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcWVkYCwgZXRjLiBhcyBleGFtcGxlcyBvZiBoYXJkd2FyZSByZXF1aXJpbmcgYWN0dWFsIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuIElzIGBtbHg1YCBvbmUgb2YgdGhvc2U/IFRoYXQmIzM5O3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uLgoKU28sIGlzIHRoZSBgbWx4NWAgZHJpdmVyIGl0c2VsZiByZWxpYW50IG9uIHBoeXNpY2FsIGhhcmR3YXJlIGluIGEgd2F5IHRoYXQgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBmdWxseSB0ZXN0IGluIGEgdmlydHVhbCBlbnZpcm9ubWVudD8gSSBuZWVkIHRvIGNsYXJpZnkgaWYgaXQgY2FuIGJlIGVtdWxhdGVkIG9yIGlmIGl0JiMzOTtzIGNvbnNpZGVyZWQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLgoKTGV0JiMzOTtzIGRvIGEgcXVpY2sgc2VhcmNoIGluIHRoZSBrZXJuZWwgc291cmNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGtpbmQgb2YgZGV2aWNlIHRoZSBkcml2ZXIgaXMgYXNzb2NpYXRlZCB3aXRoLiBJJiMzOTtsbCBhbHNvIGNoZWNrIGlmIHRoZXJlJiMzOTtzIGFueSBzeXprYWxsZXIgc3VwcG9ydCBvciBpZiBpdCYjMzk7cyBzb2xlbHkgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIE5JQ3MuIE9rYXksIHRoZSBrZXJuZWwgZG9jdW1lbnRhdGlvbiB0ZWxscyBtZSB0aGUgZHJpdmVyIGlzIGZvciBNZWxsYW5veCBDb25uZWN0WCBldGhlcm5ldC9JbmZpbmlCYW5kIGFkYXB0ZXJzLgoKTm93LCBkb2VzIFFFTVUgZW11bGF0ZSB0aGVzZSBhZGFwdGVycz8gVGhhdCYjMzk7cyB0aGUgcmVhbCB0ZXN0LiBObywgUUVNVSBoYXMgbm8gbWx4NSBkZXZpY2UgZW11bGF0aW9uLgoKQWxyaWdodCwgaXMgdGhlcmUgKmFueSoga2luZCBvZiB2aXJ0dWFsIGRldmljZSwgbW9jaywgb3IgdGVzdCBkcml2ZXIgYXNzb2NpYXRlZCB3aXRoIGBtbHg1YD8gSSYjMzk7bGwgbmVlZCB0byB1c2UgYGdyZXBwZXJgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbWVudGlvbiBvZiB2aXJ0dWFsIG9yIHRlc3QgaW50ZXJmYWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUxYNV9DT1JFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0PTU9RW5hYmxpbmcgdGhlIGRyaXZlciBhbmQga2NvbmZpZyBvcHRpb25zXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMTItfCBCYXNpYyBmZWF0dXJlcywgZXRoZXJuZXQgbmV0IGRldmljZSByeC90eCBvZmZsb2FkcyBhbmQgWERQLCBhcmUgYXZhaWxhYmxlIHdpdGggdGhlIG1vc3QgYmFzaWMgZmxhZ3NcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjEzOnwgQ09ORklHX01MWDVfQ09SRT15L20gYW5kIENPTkZJR19NTFg1X0NPUkVfRU49eS5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTE0LXwgRm9yIHRoZSBsaXN0IG9mIGFkdmFuY2VkIGZlYXR1cmVzLCBwbGVhc2Ugc2VlIGJlbG93LlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTIzLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MjQ6KipDT05GSUdfTUxYNV9DT1JFPSh5L20vbikqKiAobW9kdWxlIG1seDVfY29yZS5rbylcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTI1LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MjY6fCAgICBUaGUgZHJpdmVyIGNhbiBiZSBlbmFibGVkIGJ5IGNob29zaW5nIENPTkZJR19NTFg1X0NPUkU9eS9tIGluIGtlcm5lbCBjb25maWcuXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0yNy18ICAgIFRoaXMgd2lsbCBwcm92aWRlIG1seDUgY29yZSBkcml2ZXIgZm9yIG1seDUgdWxwcyB0byBpbnRlcmZhY2Ugd2l0aCAobWx4NWUsIG1seDVfaWIpLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTI5LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MzA6KipDT05GSUdfTUxYNV9DT1JFX0VOPSh5L24pKipcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTMxLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTM2LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6Mzc6KipDT05GSUdfTUxYNV9DT1JFX0VOX0RDQj0oeS9uKSoqOlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMzgtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDEtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0MjoqKkNPTkZJR19NTFg1X0NPUkVfSVBPSUI9KHkvbikqKlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDMtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC00NC18ICAgIElQb0lCIG9mZmxvYWRzIFx1MDAyNiBhY2NlbGVyYXRpb24gc3VwcG9ydC5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjQ1OnwgICAgUmVxdWlyZXMgQ09ORklHX01MWDVfQ09SRV9FTiB0byBwcm92aWRlIGFuIGFjY2VsZXJhdGVkIGludGVyZmFjZSBmb3IgdGhlIHJkbWFcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTQ2LXwgICAgSVBvSUIgdWxwIG5ldGRldmljZS5cbi0tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTQxMT1DT05GSUdfTUxYNF9FTj1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjQxMjpDT05GSUdfTUxYNV9DT1JFPW1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDEzOkNPTkZJR19NTFg1X0NPUkVfRU49eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00MTQtIyBDT05GSUdfTkVUX1ZFTkRPUl9NRVRBIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz0xNzM9Q09ORklHX01MWDRfRU49bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc0OkNPTkZJR19NTFg1X0NPUkU9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMTc1LUNPTkZJR19NTFg1X0ZQR0E9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc2OkNPTkZJR19NTFg1X0NPUkVfRU49eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc3OkNPTkZJR19NTFg1X0NPUkVfSVBPSUI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctMTc4LUNPTkZJR19NWVJJMTBHRT1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc9MTUyPUNPTkZJR19NTFg0X0VOPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTE1My0jIENPTkZJR19NTFg0X0NPUkVfR0VOMiBpcyBub3Qgc2V0XG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZzoxNTQ6Q09ORklHX01MWDVfQ09SRT1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZzoxNTU6Q09ORklHX01MWDVfQ09SRV9FTj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZy0xNTYtIyBDT05GSUdfTUxYNV9FTl9SWE5GQyBpcyBub3Qgc2V0XG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTU1Nj1DT05GSUdfTUxYNF9FTj1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6NTU3OkNPTkZJR19NTFg1X0NPUkU9bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjU1ODpDT05GSUdfTUxYNV9DT1JFX0VOPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy01NTktQ09ORklHX01MWDVfU0Y9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz01NDY9Q09ORklHX01MWDRfRU49bVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjU0NzpDT05GSUdfTUxYNV9DT1JFPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo1NDg6Q09ORklHX01MWDVfQ09SRV9FTj15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNTQ5LUNPTkZJR19NTFg1X1NGPXlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM9NDc4Mz1zdGF0aWMgaW50IG1seDVfaWJfc3RhZ2VfY2Fwc19pbml0KHN0cnVjdCBtbHg1X2liX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00Nzg4LVx0aWYgKE1MWDVfQ0FQX0dFTihtZGV2LCBpcG9pYl9lbmhhbmNlZF9vZmZsb2FkcykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmM6NDc4OTpcdCAgICBJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfSVBPSUIpKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L21seDUvbWFpbi5jLTQ3OTAtXHRcdGliX3NldF9kZXZpY2Vfb3BzKFx1MDAyNmRldi1cdTAwM2VpYl9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvTWFrZWZpbGU9Nj1vYmotJChDT05GSUdfTUxYNF9DT1JFKSAmIzQzOz0gbWx4NC9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX01MWDVfQ09SRSkgJiM0Mzs9IG1seDUvY29yZS9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L01ha2VmaWxlLTgtb2JqLSQoQ09ORklHX01MWFNXX0NPUkUpICYjNDM7PSBtbHhzdy9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Nz1zdWJkaXItY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTUxYNV9DT1JFKSAmIzQzOz0gbWx4NV9jb3JlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9MTQ9bWx4NV9jb3JlLXkgOj1cdG1haW4ubyBjbWQubyBkZWJ1Z2ZzLm8gZncubyBlcS5vIHVhci5vIHBhZ2VhbGxvYy5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTI1LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZToyNjptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOKSAmIzQzOz0gZW4vcnF0Lm8gZW4vdGlyLm8gZW4vcnNzLm8gZW4vcnhfcmVzLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNy1cdFx0ZW4vY2hhbm5lbHMubyBlbl9tYWluLm8gZW5fY29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU9Mzk9bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfRU5fUlhORkMpICAgICYjNDM7PSBlbl9mc19ldGh0b29sLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo0MDptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0VOX0RDQikgJiM0Mzs9IGVuX2RjYm5sLm8gZW4vcG9ydF9idWZmZXIub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTQxLW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgJiM0Mzs9IGVuL2h2X3ZoY2Ffc3RhdHMub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT05Mz1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICYjNDM7PSBsaWIvaHYubyBsaWIvaHZfdmhjYS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk3LSNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZTo5ODptbHg1X2NvcmUtJChDT05GSUdfTUxYNV9DT1JFX0lQT0lCKSAmIzQzOz0gaXBvaWIvaXBvaWIubyBpcG9pYi9ldGh0b29sLm8gaXBvaWIvaXBvaWJfdmxhbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jPTU3PWJvb2wgbWx4NV9ldGhfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmMtNTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jOjU5Olx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfRU4pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTYwLVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg9OTA1PXN0cnVjdCBtbHg1ZV9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5MTE6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTItXHRzdHJ1Y3QgbWx4NWVfZGNieF9kcCAgICAgICBkY2J4X2RwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1Ny1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmg6OTU4OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU5LVx0c3RydWN0IG1seDVlX2RjYnggICAgICAgICAgZGNieDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC02LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmg6NzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oLTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xMzI9dm9pZCBtbHg1ZV9zZWxxX2NhbmNlbChzdHJ1Y3QgbWx4NWVfc2VscSAqc2VscSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTEzOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTQwOiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNDEtc3RhdGljIGludCBtbHg1ZV9nZXRfZHNjcF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jPTE1ND1zdGF0aWMgaW50IG1seDVlX2dldF91cChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTU2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTctXHRpZiAoUkVBRF9PTkNFKHByaXYtXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSkgPT0gTUxYNV9RUFRTX1RSVVNUX0RTQ1ApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM9MjQ4ND1pbnQgbWx4NWVfcG9sbF9yeF9jcShzdHJ1Y3QgbWx4NWVfY3EgKmNxLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI1MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYzoyNTE3OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jPTI2NDE9Y29uc3Qgc3RydWN0IG1seDVlX3J4X2hhbmRsZXJzIG1seDVpX3J4X2hhbmRsZXJzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jOjI2NDU6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM9MTAwNz1zdGF0aWMgaW50IG1seDVlX2hhaXJwaW5fZ2V0X3ByaW8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMtMTAxNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jOjEwMTU6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE2LVx0aWYgKHByaXYtXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSAhPSBNTFg1X1FQVFNfVFJVU1RfUENQKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmM9ODcyPXZvaWQgbWx4NWVfZnJlZV90eHFzcV9kZXNjcyhzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jOjkxODojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4LmMtOTE5LXN0YXRpYyBpbmxpbmUgdm9pZFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg6MzY6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oPTEzMD12b2lkIG1seDVpX3BhcmVudF9wdXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDoxMzI6I2VuZGlmIC8qIENPTkZJR19NTFg1X0NPUkVfSVBPSUIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTEzMy0jZW5kaWYgLyogX19NTFg1RV9JUE9CX0hfXyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0yND12b2lkIG1seDVfc2RfcHV0X2FkZXYoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFjdHVhbF9hZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaDoyNzojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTI4LWJvb2wgbWx4NV9zZF9pc19zdXBwb3J0ZWQoc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oPTM3PXZvaWQgbWx4NV9zZF9jbGVhbnVwKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oOjM5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtNDAtc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICptbHg1X3NkX2dldF9kZXZjb20oc3RydWN0IG1seDVfY29yZV9kZXYgKmRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTM5Nj12b2lkIG1seDVfZndfdmVyc2lvbl9xdWVyeShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnJ1bm5pbmdfdmVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tbHg1X2NvcmUuaC0zOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6Mzk5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmgtNDAwLWludCBtbHg1ZV9pbml0KHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4NDIKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgdGhlIG1seDUgZGV2aWNlIHByb2JpbmcgYW5kIGluaXRpYWxpemF0aW9uOgoKKipEaXZpbmcgaW50byBtbHg1IEluaXRpYWxpemF0aW9uOiBQQ0kgRHJpdmVyIEZpcnN0KioKCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBmdW5kYW1lbnRhbCBtZWNoYW5pc20gb2YgaG93IG1seDUgZGV2aWNlcyBhcmUgaW5pdGlhbGx5IHJlY29nbml6ZWQgYW5kIGJyb3VnaHQgb25saW5lLiBTaW5jZSB0aGVzZSBhcmUgbmV0d29yayBkZXZpY2VzLCBteSBiZXN0IGd1ZXNzIGlzIHRoZXkmIzM5O3JlIGRyaXZlbiBieSB0aGUgUENJIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgUENJIGJ1cyBhbmQgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVycy4gU28sIEkgbmVlZCB0byBzdGFydCBieSBsb29raW5nIGZvciBob3cgdGhlIFBDSSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlc2UgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIFBDSSBkcml2ZXIga25vd3MgaXQgaXMgbG9va2luZyBhdCBhbiBtbHg1IGRldmljZS4KCkZyb20gdGhlcmUsIEkgd2FudCB0byBnZXQgaW50byB0aGUgaGVhcnQgb2YgdGhlIGRyaXZlci4gTGV0JiMzOTtzIHRyYWNlIGhvdyB0aGUgZGV2aWNlcyBhcmUgc2V0IHVwLiBUbyBkbyB0aGF0LCBJJiMzOTttIGdvaW5nIHN0cmFpZ2h0IHRvIHRoZSBjb3JlIG9mIHRoZSBtbHg1IGRyaXZlciBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIG1seDUgZHJpdmVyLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgSSYjMzk7ZCBleHBlY3QgdG8gZmluZCB0aGUgcHJpbWFyeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmLCB3aGF0IHJlc291cmNlcyBpdCBhbGxvY2F0ZXMsIGFuZCBob3cgaXQgaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgUENJIGxheWVyIHRvIHVsdGltYXRlbHkgYnJpbmcgdGhlIGRldmljZXMgb25saW5lIGFuZCBtYWtlIHRoZW0gYWNjZXNzaWJsZSBmb3IgbmV0d29yayBvcGVyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8qXG4gICAyOlx0ICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUsIE1lbGxhbm94IFRlY2hub2xvZ2llcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAgIDM6XHQgKlxuICAgNDpcdCAqIFRoaXMgc29mdHdhcmUgaXMgYXZhaWxhYmxlIHRvIHlvdSB1bmRlciBhIGNob2ljZSBvZiBvbmUgb2YgdHdvXG4gICA1Olx0ICogbGljZW5zZXMuICBZb3UgbWF5IGNob29zZSB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVVxuICAgNjpcdCAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgVmVyc2lvbiAyLCBhdmFpbGFibGUgZnJvbSB0aGUgZmlsZVxuICAgNzpcdCAqIENPUFlJTkcgaW4gdGhlIG1haW4gZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUsIG9yIHRoZVxuICAgODpcdCAqIE9wZW5JQi5vcmcgQlNEIGxpY2Vuc2UgYmVsb3c6XG4gICA5Olx0ICpcbiAgMTA6XHQgKiAgICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvclxuICAxMTpcdCAqICAgICB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmdcbiAgMTI6XHQgKiAgICAgY29uZGl0aW9ucyBhcmUgbWV0OlxuICAxMzpcdCAqXG4gIDE0Olx0ICogICAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmVcbiAgMTU6XHQgKiAgICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmdcbiAgMTY6XHQgKiAgICAgICAgZGlzY2xhaW1lci5cbiAgMTc6XHQgKlxuICAxODpcdCAqICAgICAgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gIDE5Olx0ICogICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gIDIwOlx0ICogICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFsc1xuICAyMTpcdCAqICAgICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gIDIyOlx0ICpcbiAgMjM6XHQgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCYjMzQ7QVMgSVNcJiMzNDssIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsXG4gIDI0Olx0ICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4gIDI1Olx0ICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkRcbiAgMjY6XHQgKiBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTXG4gIDI3Olx0ICogQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOXG4gIDI4Olx0ICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU5cbiAgMjk6XHQgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gIDMwOlx0ICogU09GVFdBUkUuXG4gIDMxOlx0ICovXG4gIDMyOlx0XG4gIDMzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvaGlnaG1lbS5oXHUwMDNlXG4gIDM0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMzU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAgMzY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnJuby5oXHUwMDNlXG4gIDM3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvcGNpLmhcdTAwM2VcbiAgMzg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4gIDM5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gIDQwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiAgNDE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZWxheS5oXHUwMDNlXG4gIDQyOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbWx4NS9kcml2ZXIuaFx1MDAzZVxuICA0MzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvY3EuaFx1MDAzZVxuICA0NDpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvcXAuaFx1MDAzZVxuICA0NTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlYnVnZnMuaFx1MDAzZVxuICA0NjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2ttb2QuaFx1MDAzZVxuICA0NzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvbWx4NV9pZmMuaFx1MDAzZVxuICA0ODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21seDUvdnBvcnQuaFx1MDAzZVxuICA0OTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZlcnNpb24uaFx1MDAzZVxuICA1MDpcdCNpbmNsdWRlIFx1MDAzY25ldC9kZXZsaW5rLmhcdTAwM2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAxNQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O2QgYXBwcm9hY2ggYW5hbHl6aW5nIHRoZSBgbWx4NWAgZHJpdmVyJiMzOTtzIGluaXRpYWxpemF0aW9uLCBiYXNlZCBvbiB0aGF0IHN0YXJ0aW5nIHBvaW50OgoKKipMb29raW5nIGF0IHRoZSBIZWFydCBvZiB0aGUgbWx4NSBEcml2ZXIqKgoKQWxyaWdodCwgc28gdGhlIGVuZCBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY2AgaXMgdGhlIGtleSBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyJiMzOTtzIHNldHVwLiBNeSBmb2N1cyBpcyBhbHdheXMgb24gaG93IHRoZSBtb2R1bGUgaXMgaW5pdGlhbGl6ZWQgYW5kLCBjcnVjaWFsbHksIGhvdyB0aGUgUENJIGRyaXZlciBpcyByZWdpc3RlcmVkLiBUaGlzIGdpdmVzIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhlIGBtbHg1YCBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoIHRoZSBzeXN0ZW0uIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVudHJ5IHBvaW50cyDigJMgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgd2hlbiB0aGUgZHJpdmVyIGlzIGxvYWRlZCBhbmQgdGhlIG1lY2hhbmlzbSBieSB3aGljaCBpdCBpZGVudGlmaWVzIGFuZCBjbGFpbXMgTWVsbGFub3ggbmV0d29yayBkZXZpY2VzLiBVbmRlcnN0YW5kaW5nIHRoaXMgc2VjdGlvbiBoZWxwcyB0byBzZWUgaG93IHRoZSBrZXJuZWwgc2VlcyB0aGUgZGV2aWNlLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBvciBhdCBsZWFzdCB3aGVyZSBpdCYjMzk7cyBzdXBwb3NlZCB0byBoYXBwZW4hIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoZSBgbW9kdWxlX2luaXRgIGNhbGwgd2hpY2ggcG9pbnRzIG1lIHRvIHRoZSBwcmltYXJ5IGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGFuZCBJIHdpbGwgYmUgbG9va2luZyBhdCB0aGUgUENJIGRyaXZlciByZWdpc3RyYXRpb24uIEtub3dpbmcgdGhhdCB3aWxsIHRlbGwgbWUgaG93IHRoZSBkZXZpY2UgaXMgYm91bmQsIGFuZCB1bHRpbWF0ZWx5IGNvbnRyb2xsZWQgYnksIHRoZSBrZXJuZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXJ8cGNpX3JlZ2lzdGVyX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM0Nj1zdGF0aWMgaW50IF9faW5pdCBtbHg1X2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzNjY6XHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzY3LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ5NAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgVGhvdWdodHMgb24gbWx4NSBEcml2ZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIHRoZSBgbWx4NWAgZHJpdmVyIGdldHMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBQQ0kgc3Vic3lzdGVtIHVzaW5nIGBwY2lfcmVnaXN0ZXJfZHJpdmVyKCZhbXA7bWx4NV9jb3JlX2RyaXZlcilgLiBUaGF0JiMzOTtzIHN0YW5kYXJkIHByYWN0aWNlLCBub3RoaW5nIHBhcnRpY3VsYXJseSBzdXJwcmlzaW5nIHRoZXJlLiBOb3csIGFzIGEgbmV4dCBsb2dpY2FsIHN0ZXAsIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgUENJIElEIHRhYmxlIHdpdGhpbiBgbWx4NV9jb3JlX2RyaXZlcmAuIFVuZGVyc3RhbmRpbmcgd2hpY2ggaGFyZHdhcmUgZGV2aWNlcyB0aGlzIGRyaXZlciBpcyBkZXNpZ25lZCB0byBoYW5kbGUgaXMgZnVuZGFtZW50YWwuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByYW5nZSBvZiBzdXBwb3J0ZWQgZGV2aWNlcy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRyaXZlciBkaXN0aW5ndWlzaGVzIGJldHdlZW4gdmFyaW91cyBNZWxsYW5veCBoYXJkd2FyZSByZXZpc2lvbnMgYW5kIGNvbmZpZ3VyYXRpb25zLiBUaGF0IHdpbGwgdGVsbCBtZSBob3cgZ2VuZXJhbCBvciBzcGVjaWZpYyB0aGUgZHJpdmVyIGltcGxlbWVudGF0aW9uIHJlYWxseSBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9jb3JlX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjI2OD1pbnQgbWx4NV9yZWNvdmVyX2RldmljZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjI3OTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI4MC1cdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjMwND1zdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWx4NV92Zl9nZXRfY29yZV9kZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzA4Olx0bWRldiA9IHBjaV9pb3ZfZ2V0X3BmX2RydmRhdGEocGRldiwgXHUwMDI2bWx4NV9jb3JlX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzMDktXHRpZiAoSVNfRVJSKG1kZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM0Nj1zdGF0aWMgaW50IF9faW5pdCBtbHg1X2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzNjY6XHRlcnIgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzY3LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzODE9c3RhdGljIHZvaWQgX19leGl0IG1seDVfY2xlYW51cCh2b2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzgyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjM4MzpcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM4NC1cdG1seDVfc2ZfZHJpdmVyX3VucmVnaXN0ZXIoKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzMzcKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0cywgZ2VhcmVkIHRvd2FyZHMgYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgbWx4NV9jb3JlX2RyaXZlciBEZWZpbml0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbWx4NV9jb3JlX2RyaXZlcmAgaXMgZGVmaW5lZC4gSSYjMzk7bSBnb2luZyB0byBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMjI3OSBpbiB0aGUgY29kZSDigJMgdGhhdCYjMzk7cyBvZnRlbiB3aGVyZSB0aGUgY29yZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgYmVnaW4sIG9yIGF0IGxlYXN0IGEgc2lnbmlmaWNhbnQgcG9pbnQgb2YgcmVmZXJlbmNlLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZHJpdmVyJiMzOTtzIGZ1bmRhbWVudGFsIGNvbXBvbmVudHMgYXJlIHN0cnVjdHVyZWQsIGhvdyB0aGUgZGF0YSBpcyBsYWlkIG91dCwgYW5kIGhvdyB0aGUgY29yZSBlbGVtZW50cyBhcmUgaW5pdGlhbGl6ZWQuIEtub3dpbmcgdGhlIHN0cnVjdHVyZSB3aWxsIGFsbG93IG1lIHRvIHRyYWNrIHRoZSBleGVjdXRpb24gYW5kIGFuYWx5emUgd2hpY2ggcGFydHMgb2YgdGhlIGNvZGUgYXJlIHRoZSByb290IGNhdXNlLiBUaGlzIHNob3VsZCBoZWxwIG1lIGZvcm0gYSBtZW50YWwgbWFwIG9mIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjI3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMjc1Olx0XG4yMjc2Olx0XHRyZXR1cm4gbWx4NV9sb2FkX29uZV9kZXZsX2xvY2tlZChkZXYsIHRydWUpO1xuMjI3NzpcdH1cbjIyNzg6XHRcbjIyNzk6XHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcbjIyODA6XHRcdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxuMjI4MTpcdFx0LmlkX3RhYmxlICAgICAgID0gbWx4NV9jb3JlX3BjaV90YWJsZSxcbjIyODI6XHRcdC5wcm9iZSAgICAgICAgICA9IHByb2JlX29uZSxcbjIyODM6XHRcdC5yZW1vdmUgICAgICAgICA9IHJlbW92ZV9vbmUsXG4yMjg0Olx0XHQuc3VzcGVuZCAgICAgICAgPSBtbHg1X3N1c3BlbmQsXG4yMjg1Olx0XHQucmVzdW1lICAgICAgICAgPSBtbHg1X3Jlc3VtZSxcbjIyODY6XHRcdC5zaHV0ZG93blx0PSBzaHV0ZG93bixcbjIyODc6XHRcdC5lcnJfaGFuZGxlclx0PSBcdTAwMjZtbHg1X2Vycl9oYW5kbGVyLFxuMjI4ODpcdFx0LnNyaW92X2NvbmZpZ3VyZSAgID0gbWx4NV9jb3JlX3NyaW92X2NvbmZpZ3VyZSxcbjIyODk6XHRcdC5zcmlvdl9nZXRfdmZfdG90YWxfbXNpeCA9IG1seDVfc3Jpb3ZfZ2V0X3ZmX3RvdGFsX21zaXgsXG4yMjkwOlx0XHQuc3Jpb3Zfc2V0X21zaXhfdmVjX2NvdW50ID0gbWx4NV9jb3JlX3NyaW92X3NldF9tc2l4X3ZlY19jb3VudCxcbjIyOTE6XHR9O1xuMjI5MjpcdFxuMjI5MzpcdC8qKlxuMjI5NDpcdCAqIG1seDVfdmZfZ2V0X2NvcmVfZGV2IC0gR2V0IHRoZSBtbHg1IGNvcmUgZGV2aWNlIGZyb20gYSBnaXZlbiBWRiBQQ0kgZGV2aWNlIGlmXG4yMjk1Olx0ICogICAgICAgICAgICAgICAgICAgICBtbHg1X2NvcmUgaXMgaXRzIGRyaXZlci5cbjIyOTY6XHQgKiBAcGRldjogVGhlIGFzc29jaWF0ZWQgUENJIGRldmljZS5cbjIyOTc6XHQgKlxuMjI5ODpcdCAqIFVwb24gcmV0dXJuIHRoZSBpbnRlcmZhY2Ugc3RhdGUgbG9jayBzdGF5IGhlbGQgdG8gbGV0IGNhbGxlciB1c2VzIGl0IHNhZmVseS5cbjIyOTk6XHQgKiBDYWxsZXIgbXVzdCBlbnN1cmUgdG8gdXNlIHRoZSByZXR1cm5lZCBtbHg1IGRldmljZSBmb3IgYSBuYXJyb3cgd2luZG93XG4yMzAwOlx0ICogYW5kIHB1dCBpdCBiYWNrIHdpdGggbWx4NV92Zl9wdXRfY29yZV9kZXYoKSBpbW1lZGlhdGVseSBvbmNlIHVzYWdlIHdhcyBvdmVyLlxuMjMwMTpcdCAqXG4yMzAyOlx0ICogUmV0dXJuOiBQb2ludGVyIHRvIHRoZSBhc3NvY2lhdGVkIG1seDVfY29yZV9kZXYgb3IgTlVMTC5cbjIzMDM6XHQgKi9cbjIzMDQ6XHRzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWx4NV92Zl9nZXRfY29yZV9kZXYoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE1OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMTU2CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqVmVyaWZ5aW5nIHRoZSBtbHg1IERyaXZlciBDb25uZWN0aW9uKioKClJpZ2h0LCBzbywgYG1seDVgIGlzIHRoZSBQQ0kgZHJpdmVyIGZvciB0aG9zZSBNZWxsYW5veCBDb25uZWN0WCBOSUNzLCBubyBxdWVzdGlvbi4gQnV0IEkgYWx3YXlzIGRvdWJsZS1jaGVjayB0aGVzZSB0aGluZ3MsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGFyZHdhcmUuIEp1c3QgYSBxdWljayBwZWVrIGF0IHRoZSBgbWx4NV9jb3JlX3BjaV90YWJsZWAgaXMgYSBnb29kIHdheSB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCBteSBtZW50YWwgbW9kZWwgb2YgdGhpcyBkcml2ZXImIzM5O3Mgc2NvcGUgbWF0Y2hlcyB0aGUgcmVhbGl0eSBvZiB0aGUgY29kZS4gVGhpcyBraW5kIG9mIGNvbmZpcm1hdGlvbiBpcyBhbHdheXMgYSBnb29kIHRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttbHg1X2NvcmVfcGNpX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMjE2PXN0YXRpYyBpbnQgbWx4NV9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjIyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMjIzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtbHg1X2NvcmVfcGNpX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyMjQtXHR7IFBDSV9WREVWSUNFKE1FTExBTk9YLCBQQ0lfREVWSUNFX0lEX01FTExBTk9YX0NPTk5FQ1RJQikgfSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIyNjA6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIG1seDVfY29yZV9wY2lfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjI3OT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI4MC1cdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMjgxOlx0LmlkX3RhYmxlICAgICAgID0gbWx4NV9jb3JlX3BjaV90YWJsZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI4Mi1cdC5wcm9iZSAgICAgICAgICA9IHByb2JlX29uZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4MDQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIG9uIFdvcnRoRnV6emluZyBmb3IgbWx4NSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IG91dGxpbmVzIHNwZWNpZmljIG5lZ2F0aXZlIGNyaXRlcmlhIOKAkyBzaXR1YXRpb25zIHdoZXJlIEkgKnNob3VsZG4mIzM5O3QqIG1hcmsgc29tZXRoaW5nIGFzICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsuIFJpZ2h0IG5vdywgSSYjMzk7bSBzcGVjaWZpY2FsbHkgemVyb2luZyBpbiBvbiB0aGUgJiMzNDtTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyBjYXRlZ29yeS4gVGhlIHRleHQgaGlnaGxpZ2h0cyBhIGZldyBleGFtcGxlcywgYW5kIEkgc2VlICYjMzQ7bWx4c3cmIzM0OyBpbiB0aGF0IGxpc3QuCgpIbW0sICYjMzQ7bWx4NSYjMzQ7IGlzIE1lbGxhbm94IENvbm5lY3RYIGhhcmR3YXJlLiBJIGtub3cgdGhpcy4gV2UmIzM5O3JlIHRhbGtpbmcgU21hcnROSUNzL05JQ3MgaGVyZSDigJMgQ29ubmVjdC1JQiwgQ29ubmVjdFgtNCwgQ29ubmVjdFgtNSwgdGhlIHdob2xlIHJhbmdlLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSB2ZXJ5IGNsZWFyOiB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgKm5vdCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyB0aGUga2V5LgoKU28sIGNhbiBRRU1VIGVtdWxhdGUgbWx4NT8gVGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgKm5vKi4gUUVNVSBzdGlja3MgdG8gZW11bGF0aW5nIHN0YW5kYXJkIHZpcnR1YWwgb3IgZW11bGF0ZWQgTklDcyDigJMgeW91ciBlMTAwMHMsIHZpcnRpby1uZXRzLCBldGMuIEl0ICpkb2VzbiYjMzk7dCogZG8gbWx4NS4gVGhhdCBwb2ludHMgZGlyZWN0bHkgdG93YXJkcyB0aGUgbmVnYXRpdmUgY3JpdGVyaWEuIEJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIExldCYjMzk7cyBhbHNvIGNoZWNrIGZvciBhIHNvZnR3YXJlIHNpbXVsYXRvciBvciBtb2NrIGRyaXZlciBmb3IgbWx4NSBpbiB0aGUga2VybmVsIHRyZWUuIEkgbmVlZCB0byBiZSBzdXJlLiBJJiMzOTtsbCBzZWFyY2ggZm9yICYjMzQ7bWx4NSYjMzQ7IGFjcm9zcyB0aGUga2VybmVsIHRyZWUsIGFuZCBpbiBwYXJ0aWN1bGFyLCBpbiB0aGUgYGRyaXZlcnMvbmV0L2AgYW5kIGB0b29scy90ZXN0aW5nL2AgZGlyZWN0b3JpZXMuIE1heWJlIHRoZXJlJiMzOTtzIHNvbWUga2luZCBvZiBuZXRsaW5rIGludGVyZmFjZSBvciB2aXJ0dWFsIGRldmljZSBjcmVhdGlvbiB0aGF0IHdvdWxkIGNoYW5nZSB0aGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDE1OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWx4NV9jb3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dG9vbHMvdGVzdGluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDU4MgoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiA4MDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgdGhlIE1lbGxhbm94IENvbm5lY3RYIERyaXZlciBDb2RlIGZvciBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIHRoZSBNZWxsYW5veCBtbHg1IGRyaXZlciwgaXMgZXZlbiAqZnV6emFibGUqIGVmZmVjdGl2ZWx5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGV4aXN0aW5nIG1seDUgZGVzY3JpcHRpb25zIG9yIHRlc3RzIOKAkyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFdhaXQsIGEgd2FybmluZyBmbGFnIGdvZXMgdXAuIFRoZSB0b29sIEkmIzM5O20gdXNpbmcgaXNuJiMzOTt0IGZvciBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gSSBuZWVkIHRvIGJlIHVzaW5nIGByZWFkLXN5ei1zcGVjYCBvciBgc3l6LWdyZXBwZXJgLiBIbSwgYHN5ei1ncmVwcGVyYC4uLiBkb2VzIHRoYXQgZXZlbiAqZXhpc3QqPyBUaGUgYXZhaWxhYmxlIHRvb2xzIGRvbiYjMzk7dCBsaXN0IGl0OyBgZ3JlcHBlcmAsIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAsIGFuZCBzbyBvbiBhcmUgdGhlcmUsIGJ1dCBub3QgYHN5ei1ncmVwcGVyYC4gT2theSwgc28gdGhhdCBhdmVudWUgaXMgYmxvY2tlZC4KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBhY3R1YWwgY29kZSBtb2RpZmljYXRpb25zLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGVzZSBmaWxlczogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNgLiBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KClgLCBgbWx4NV9sYWdfc2hhcmVkX2ZkYl9jcmVhdGUoKWAsIGBkZXZjb21fYWxsb2NfY29tcF9kZXYoKWAsIGV0Yy4gVGhlc2UgYXJlIGFsbCBpbnRlcm5hbCBmdW5jdGlvbnMgd2l0aGluIGBtbHg1X2NvcmVgLiBUaGlua2luZyBhYm91dCBpdCwgdGhlc2UgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUhIFNwZWNpZmljYWxseSwgd2UgaGF2ZSBMQUcgKExpbmsgQWdncmVnYXRpb24pIHN1cHBvcnQsIHNoYXJlZCBGREIgKGhhcmR3YXJlIGUtc3dpdGNoIGZvcndhcmRpbmcgZGF0YWJhc2UpLCBhbmQgRGV2Y29tIChkZXZpY2UgY29tbXVuaWNhdGlvbikg4oCTIGFsbCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LgoKSSBrbm93IHRoaXMgcmVxdWlyZXMgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggUENJZSBjYXJkczsgaXQmIzM5O3MgYSBoYXJkd2FyZSBkZXBlbmRlbmN5LiBOZWl0aGVyIFFFTVUgbm9yIEdDRSBlbXVsYXRlcyB0aGF0IGtpbmQgb2YgaGFyZHdhcmUuIFNvLCB0aGlzIGZhbGxzIHNxdWFyZWx5IHVuZGVyIHRoZSAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdGVnb3J5IGluIG15IGtub3dsZWRnZSBiYXNlLiBUaGluZ3MgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgU21hcnROSUNzIGFyZSBleHBsaWNpdGx5IGNhbGxlZCBvdXQgYXMgbm90IGJlaW5nIHJlYWxpc3RpY2FsbHkgZnV6emFibGUuCgpJIG5lZWQgdG8gY29uZmlybSB0aGlzIHJpZ29yb3VzbHkuIEFyZSB0aGVyZSAqYW55KiBjaGFuZ2VzIGluIGdlbmVyaWMgY29kZSBwYXRocz8gTm9wZSwgdGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgYG1seDVfY29yZWAgbmV0d29yayBkcml2ZXIgZGlyZWN0b3J5LiBOZXh0LCBjYW4gdGhpcyBtb2RpZmllZCBjb2RlIGJlIHJlYWNoZWQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPyBObyB3YXkuIFRoZSBDb25uZWN0WCBoYXJkd2FyZSBpcyBlc3NlbnRpYWwuIFRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgKmZhbHNlKi4KCk5vdywgdGhlIGBzZXQtcmVzdWx0c2AgcGFyYW1ldGVycy4gSSBuZWVkIHRvIHBvcHVsYXRlIHRob3NlIGNvcnJlY3RseS4gYFdvcnRoRnV6emluZ2A6IGRlZmluaXRlbHkgYGZhbHNlYC4gYFJlYXNvbmluZ2A6IEkgbmVlZCB0byBleHBsYWluIHRoZSBgbWx4NV9jb3JlYCBkZXBlbmRlbmN5IGNvbmNpc2VseSwgaGlnaGxpZ2h0aW5nIHRoZSBMQUcsIHNoYXJlZCBGREIsIGFuZCBkZXZjb20gY29tcG9uZW50cywgYW5kIGhvdyB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggUENJZSBoYXJkd2FyZSwgd2hpY2ggaXMgKm5vdCogZW11bGF0ZWQgaW4gUUVNVSBvciBHQ0UuIFRoaXMgbWFrZXMgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBgRW5hYmxlQ29uZmlnc2A6IEVtcHR5LiBgRm9jdXNTeW1ib2xzYDogRW1wdHkuCgpQZXJmZWN0LiBFdmVyeXRoaW5nIGFsaWducyB3aXRoIHRoZSBhc3Nlc3NtZW50LiBUaW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTU6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWx4NV9jb3JlIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8pLCBzcGVjaWZpY2FsbHkgaW50ZXJuYWwgbGluayBhZ2dyZWdhdGlvbiAoTEFHKSBhbmQgaW50ZXItZGV2aWNlIGNvbW11bmljYXRpb24gKGRldmNvbSkgbG9naWMuIFRoZXNlIGNvZGUgcGF0aHMgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWx4NV9jb3JlIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8pLCBzcGVjaWZpY2FsbHkgaW50ZXJuYWwgbGluayBhZ2dyZWdhdGlvbiAoTEFHKSBhbmQgaW50ZXItZGV2aWNlIGNvbW11bmljYXRpb24gKGRldmNvbSkgbG9naWMuIFRoZXNlIGNvZGUgcGF0aHMgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxNTowMjwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NTk6NDguMzgxNzkzNzc5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0NTE3NTIyMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDVfY29yZSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvKSwgc3BlY2lmaWNhbGx5IGludGVybmFsIGxpbmsgYWdncmVnYXRpb24gKExBRykgYW5kIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIChkZXZjb20pIGxvZ2ljLiBUaGVzZSBjb2RlIHBhdGhzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggQVNJQy9QQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NTk6NDguMzgxNzk4ODk5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzUyMTg4MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNjU0OWRmNGUwMGU1MDE2YjM3OTFlMDIyZmNlYmE0ZGEwMDZhMTgwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgU2VwIDE1IDE0OjU5OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXFxuaW5kZXggYzY1NWY2ZTMyZTliMC4uZGQxNGNkYzM3OGRlMCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xcbkBAIC0xMjY2LDI1ICsxMjY2LDQ1IEBAIHZvaWQgbWx4NV9sYWdfcmVtb3ZlX2RldmljZXMoc3RydWN0IG1seDVfbGFnICpsZGV2KVxcbiBcXHRtbHg1X2xhZ19yZW1vdmVfZGV2aWNlc19maWx0ZXIobGRldiwgTUxYNV9MQUdfRklMVEVSX1BPUlRTKTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgoc3RydWN0IG1seDVfbGFnICpsZGV2LCBpbnQgaWR4LFxcbitcXHRcXHRcXHRcXHQgICAgICAgdTMyIGZsYWdzKVxcbit7XFxuK1xcdHN0cnVjdCBsYWdfZnVuYyAqcGYgPSBtbHg1X2xhZ19wZihsZGV2LCBpZHgpO1xcbitcXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XFxuK1xcdGludCByZXQ7XFxuK1xcbitcXHRpZiAocGYtXFx1MDAzZWRldi1cXHUwMDNlcHJpdi5mbGFncyBcXHUwMDI2IGZsYWdzKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdGVzdyA9IHBmLVxcdTAwM2VkZXYtXFx1MDAzZXByaXYuZXN3aXRjaDtcXG4rXFx0bWx4NV9lc3dfcmVwc19ibG9jayhlc3cpO1xcbitcXHRyZXQgPSBtbHg1X2Vzd2l0Y2hfcmVsb2FkX2liX3JlcHMoZXN3KTtcXG4rXFx0bWx4NV9lc3dfcmVwc191bmJsb2NrKGVzdyk7XFxuK1xcbitcXHRyZXR1cm4gcmV0O1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX3VubG9ja2VkKHN0cnVjdCBtbHg1X2xhZyAqbGRldiwgdTMyIGZsYWdzLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgdTMyIGZpbHRlciwgYm9vbCBjb250X29uX2ZhaWwpXFxuIHtcXG4tXFx0c3RydWN0IGxhZ19mdW5jICpwZjtcXG4rXFx0aW50IG1hc3Rlcl9pZHggPSBtbHg1X2xhZ19nZXRfZGV2X2luZGV4X2J5X3NlcV9maWx0ZXIobGRldiwgTUxYNV9MQUdfUDEsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgZmlsdGVyKTtcXG4gXFx0aW50IHJldDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRpZiAobWFzdGVyX2lkeCBcXHUwMDNjIDApXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4rXFx0cmV0ID0gbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KGxkZXYsIG1hc3Rlcl9pZHgsIGZsYWdzKTtcXG4rXFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiAhY29udF9vbl9mYWlsKVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4gXFx0bWx4NV9sYWdfZm9yX2VhY2goaSwgMCwgbGRldiwgZmlsdGVyKSB7XFxuLVxcdFxcdHBmID0gbWx4NV9sYWdfcGYobGRldiwgaSk7XFxuLVxcdFxcdGlmICghKHBmLVxcdTAwM2VkZXYtXFx1MDAzZXByaXYuZmxhZ3MgXFx1MDAyNiBmbGFncykpIHtcXG4tXFx0XFx0XFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xcbi1cXG4tXFx0XFx0XFx0ZXN3ID0gcGYtXFx1MDAzZWRldi1cXHUwMDNlcHJpdi5lc3dpdGNoO1xcbi1cXHRcXHRcXHRtbHg1X2Vzd19yZXBzX2Jsb2NrKGVzdyk7XFxuLVxcdFxcdFxcdHJldCA9IG1seDVfZXN3aXRjaF9yZWxvYWRfaWJfcmVwcyhlc3cpO1xcbi1cXHRcXHRcXHRtbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTtcXG4tXFx0XFx0XFx0aWYgKHJldCBcXHUwMDI2XFx1MDAyNiAhY29udF9vbl9mYWlsKVxcbi1cXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi1cXHRcXHR9XFxuK1xcdFxcdGlmIChpID09IG1hc3Rlcl9pZHgpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHRyZXQgPSBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgobGRldiwgaSwgZmxhZ3MpO1xcbitcXHRcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2ICFjb250X29uX2ZhaWwpXFxuK1xcdFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL3NoYXJlZF9mZGIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jXFxuaW5kZXggNmI0YWQzYzUzZjJmMy4uNDI0MDQwOTE4ZmEzNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL3NoYXJlZF9mZGIuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jXFxuQEAgLTI3MCw2ICsyNzAsNyBAQCBpbnQgbWx4NV9sYWdfc2hhcmVkX2ZkYl9jcmVhdGUoc3RydWN0IG1seDVfbGFnICpsZGV2LFxcbiBcXHRcXHRcXHRwZi1cXHUwMDNlc2RfZmRiX2FjdGl2ZSA9IGZhbHNlO1xcbiBcXHRcXHR9XFxuIFxcdFxcdG1seDVfbGFnX2Rlc3Ryb3lfc2luZ2xlX2ZkYl9maWx0ZXIobGRldiwgZ3JvdXBfaWQpO1xcbitcXHRcXHRtbHg1X2xhZ191bmxvYWRfcmVwc19mcm9tX2xvY2tlZChsZGV2LCBmaWx0ZXIpO1xcbiBcXHR9XFxuIGVycl9hZGRfZGV2aWNlczpcXG4gXFx0bWx4NV9sYWdfYWRkX2RldmljZXNfZmlsdGVyKGxkZXYsIGZpbHRlcik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jXFxuaW5kZXggNjRmOTI0Mjc2MDJkZS4uNzU4NTU0ODE1MjJiMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9kZXZjb20uY1xcbkBAIC0zNyw2ICszNyw3IEBAIHN0cnVjdCBtbHg1X2RldmNvbV9jb21wIHtcXG4gXFx0c3RydWN0IG1seDVfZGV2Y29tX2tleSBrZXk7XFxuIFxcdG1seDVfZGV2Y29tX2V2ZW50X2hhbmRsZXJfdCBoYW5kbGVyO1xcbiBcXHRzdHJ1Y3Qga3JlZiByZWY7XFxuK1xcdGludCBucl9kZXZzO1xcbiBcXHRib29sIHJlYWR5O1xcbiBcXHRzdHJ1Y3Qgcndfc2VtYXBob3JlIHNlbTtcXG4gXFx0c3RydWN0IGxvY2tfY2xhc3Nfa2V5IGxvY2tfa2V5O1xcbkBAIC0xNzAsNiArMTcxLDcgQEAgZGV2Y29tX2FsbG9jX2NvbXBfZGV2KHN0cnVjdCBtbHg1X2RldmNvbV9kZXYgKmRldmMsXFxuIFxcbiBcXHRkb3duX3dyaXRlKFxcdTAwMjZjb21wLVxcdTAwM2VzZW0pO1xcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZkZXZjb20tXFx1MDAzZWxpc3QsIFxcdTAwMjZjb21wLVxcdTAwM2Vjb21wX2Rldl9saXN0X2hlYWQpO1xcbitcXHRXUklURV9PTkNFKGNvbXAtXFx1MDAzZW5yX2RldnMsIGNvbXAtXFx1MDAzZW5yX2RldnMgKyAxKTtcXG4gXFx0dXBfd3JpdGUoXFx1MDAyNmNvbXAtXFx1MDAzZXNlbSk7XFxuIFxcbiBcXHRyZXR1cm4gZGV2Y29tO1xcbkBAIC0xODIsNiArMTg0LDcgQEAgZGV2Y29tX2ZyZWVfY29tcF9kZXYoc3RydWN0IG1seDVfZGV2Y29tX2NvbXBfZGV2ICpkZXZjb20pXFxuIFxcbiBcXHRkb3duX3dyaXRlKFxcdTAwMjZjb21wLVxcdTAwM2VzZW0pO1xcbiBcXHRsaXN0X2RlbChcXHUwMDI2ZGV2Y29tLVxcdTAwM2VsaXN0KTtcXG4rXFx0V1JJVEVfT05DRShjb21wLVxcdTAwM2Vucl9kZXZzLCBjb21wLVxcdTAwM2Vucl9kZXZzIC0gMSk7XFxuIFxcdHVwX3dyaXRlKFxcdTAwMjZjb21wLVxcdTAwM2VzZW0pO1xcbiBcXG4gXFx0a3JlZl9wdXQoXFx1MDAyNmRldmNvbS1cXHUwMDNlZGV2Yy1cXHUwMDNlcmVmLCBtbHg1X2RldmNvbV9kZXZfcmVsZWFzZSk7XFxuQEAgLTI4NCw3ICsyODcsNyBAQCBpbnQgbWx4NV9kZXZjb21fY29tcF9nZXRfc2l6ZShzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbSlcXG4ge1xcbiBcXHRzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcCAqY29tcCA9IGRldmNvbS1cXHUwMDNlY29tcDtcXG4gXFxuLVxcdHJldHVybiBrcmVmX3JlYWQoXFx1MDAyNmNvbXAtXFx1MDAzZXJlZik7XFxuK1xcdHJldHVybiBSRUFEX09OQ0UoY29tcC1cXHUwMDNlbnJfZGV2cyk7XFxuIH1cXG4gXFxuIGludCBtbHg1X2RldmNvbV9sb2NrZWRfc2VuZF9ldmVudChzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NTk6NDguOTE3ODI3MjJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE4Mzk4MTQ3MzQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG1seDVfY29yZSBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvKSwgc3BlY2lmaWNhbGx5IGludGVybmFsIGxpbmsgYWdncmVnYXRpb24gKExBRykgYW5kIGludGVyLWRldmljZSBjb21tdW5pY2F0aW9uIChkZXZjb20pIGxvZ2ljLiBUaGVzZSBjb2RlIHBhdGhzIHJlcXVpcmUgcGh5c2ljYWwgTWVsbGFub3ggQ29ubmVjdFggQVNJQy9QQ0llIG5ldHdvcmsgYWRhcHRlcnMsIHdoaWNoIGFyZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIHN5emthbGxlciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNjU0OWRmNGUwMGU1MDE2YjM3OTFlMDIyZmNlYmE0ZGEwMDZhMTgwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgMTUgMTQ6NTk6NDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL2xhZy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9sYWcuY1xuaW5kZXggYzY1NWY2ZTMyZTliMC4uZGQxNGNkYzM3OGRlMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNcbkBAIC0xMjY2LDI1ICsxMjY2LDQ1IEBAIHZvaWQgbWx4NV9sYWdfcmVtb3ZlX2RldmljZXMoc3RydWN0IG1seDVfbGFnICpsZGV2KVxuIFx0bWx4NV9sYWdfcmVtb3ZlX2RldmljZXNfZmlsdGVyKGxkZXYsIE1MWDVfTEFHX0ZJTFRFUl9QT1JUUyk7XG4gfVxuIFxuK3N0YXRpYyBpbnQgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KHN0cnVjdCBtbHg1X2xhZyAqbGRldiwgaW50IGlkeCxcbitcdFx0XHRcdCAgICAgICB1MzIgZmxhZ3MpXG4re1xuK1x0c3RydWN0IGxhZ19mdW5jICpwZiA9IG1seDVfbGFnX3BmKGxkZXYsIGlkeCk7XG4rXHRzdHJ1Y3QgbWx4NV9lc3dpdGNoICplc3c7XG4rXHRpbnQgcmV0O1xuK1xuK1x0aWYgKHBmLVx1MDAzZWRldi1cdTAwM2Vwcml2LmZsYWdzIFx1MDAyNiBmbGFncylcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRlc3cgPSBwZi1cdTAwM2VkZXYtXHUwMDNlcHJpdi5lc3dpdGNoO1xuK1x0bWx4NV9lc3dfcmVwc19ibG9jayhlc3cpO1xuK1x0cmV0ID0gbWx4NV9lc3dpdGNoX3JlbG9hZF9pYl9yZXBzKGVzdyk7XG4rXHRtbHg1X2Vzd19yZXBzX3VuYmxvY2soZXN3KTtcbitcbitcdHJldHVybiByZXQ7XG4rfVxuK1xuIHN0YXRpYyBpbnQgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfdW5sb2NrZWQoc3RydWN0IG1seDVfbGFnICpsZGV2LCB1MzIgZmxhZ3MsXG4gXHRcdFx0XHRcdCAgICB1MzIgZmlsdGVyLCBib29sIGNvbnRfb25fZmFpbClcbiB7XG4tXHRzdHJ1Y3QgbGFnX2Z1bmMgKnBmO1xuK1x0aW50IG1hc3Rlcl9pZHggPSBtbHg1X2xhZ19nZXRfZGV2X2luZGV4X2J5X3NlcV9maWx0ZXIobGRldiwgTUxYNV9MQUdfUDEsXG4rXHRcdFx0XHRcdFx0XHQgICAgIGZpbHRlcik7XG4gXHRpbnQgcmV0O1xuIFx0aW50IGk7XG4gXG4rXHRpZiAobWFzdGVyX2lkeCBcdTAwM2MgMClcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRyZXQgPSBtbHg1X2xhZ19yZWxvYWRfaWJfcmVwc19pZHgobGRldiwgbWFzdGVyX2lkeCwgZmxhZ3MpO1xuK1x0aWYgKHJldCBcdTAwMjZcdTAwMjYgIWNvbnRfb25fZmFpbClcbitcdFx0cmV0dXJuIHJldDtcbitcbiBcdG1seDVfbGFnX2Zvcl9lYWNoKGksIDAsIGxkZXYsIGZpbHRlcikge1xuLVx0XHRwZiA9IG1seDVfbGFnX3BmKGxkZXYsIGkpO1xuLVx0XHRpZiAoIShwZi1cdTAwM2VkZXYtXHUwMDNlcHJpdi5mbGFncyBcdTAwMjYgZmxhZ3MpKSB7XG4tXHRcdFx0c3RydWN0IG1seDVfZXN3aXRjaCAqZXN3O1xuLVxuLVx0XHRcdGVzdyA9IHBmLVx1MDAzZWRldi1cdTAwM2Vwcml2LmVzd2l0Y2g7XG4tXHRcdFx0bWx4NV9lc3dfcmVwc19ibG9jayhlc3cpO1xuLVx0XHRcdHJldCA9IG1seDVfZXN3aXRjaF9yZWxvYWRfaWJfcmVwcyhlc3cpO1xuLVx0XHRcdG1seDVfZXN3X3JlcHNfdW5ibG9jayhlc3cpO1xuLVx0XHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2ICFjb250X29uX2ZhaWwpXG4tXHRcdFx0XHRyZXR1cm4gcmV0O1xuLVx0XHR9XG4rXHRcdGlmIChpID09IG1hc3Rlcl9pZHgpXG4rXHRcdFx0Y29udGludWU7XG4rXHRcdHJldCA9IG1seDVfbGFnX3JlbG9hZF9pYl9yZXBzX2lkeChsZGV2LCBpLCBmbGFncyk7XG4rXHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2ICFjb250X29uX2ZhaWwpXG4rXHRcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvc2hhcmVkX2ZkYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNcbmluZGV4IDZiNGFkM2M1M2YyZjMuLjQyNDA0MDkxOGZhMzcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGFnL3NoYXJlZF9mZGIuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNcbkBAIC0yNzAsNiArMjcwLDcgQEAgaW50IG1seDVfbGFnX3NoYXJlZF9mZGJfY3JlYXRlKHN0cnVjdCBtbHg1X2xhZyAqbGRldixcbiBcdFx0XHRwZi1cdTAwM2VzZF9mZGJfYWN0aXZlID0gZmFsc2U7XG4gXHRcdH1cbiBcdFx0bWx4NV9sYWdfZGVzdHJveV9zaW5nbGVfZmRiX2ZpbHRlcihsZGV2LCBncm91cF9pZCk7XG4rXHRcdG1seDVfbGFnX3VubG9hZF9yZXBzX2Zyb21fbG9ja2VkKGxkZXYsIGZpbHRlcik7XG4gXHR9XG4gZXJyX2FkZF9kZXZpY2VzOlxuIFx0bWx4NV9sYWdfYWRkX2RldmljZXNfZmlsdGVyKGxkZXYsIGZpbHRlcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9kZXZjb20uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNcbmluZGV4IDY0ZjkyNDI3NjAyZGUuLjc1ODU1NDgxNTIyYjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL2RldmNvbS5jXG5AQCAtMzcsNiArMzcsNyBAQCBzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcCB7XG4gXHRzdHJ1Y3QgbWx4NV9kZXZjb21fa2V5IGtleTtcbiBcdG1seDVfZGV2Y29tX2V2ZW50X2hhbmRsZXJfdCBoYW5kbGVyO1xuIFx0c3RydWN0IGtyZWYgcmVmO1xuK1x0aW50IG5yX2RldnM7XG4gXHRib29sIHJlYWR5O1xuIFx0c3RydWN0IHJ3X3NlbWFwaG9yZSBzZW07XG4gXHRzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbG9ja19rZXk7XG5AQCAtMTcwLDYgKzE3MSw3IEBAIGRldmNvbV9hbGxvY19jb21wX2RldihzdHJ1Y3QgbWx4NV9kZXZjb21fZGV2ICpkZXZjLFxuIFxuIFx0ZG93bl93cml0ZShcdTAwMjZjb21wLVx1MDAzZXNlbSk7XG4gXHRsaXN0X2FkZF90YWlsKFx1MDAyNmRldmNvbS1cdTAwM2VsaXN0LCBcdTAwMjZjb21wLVx1MDAzZWNvbXBfZGV2X2xpc3RfaGVhZCk7XG4rXHRXUklURV9PTkNFKGNvbXAtXHUwMDNlbnJfZGV2cywgY29tcC1cdTAwM2Vucl9kZXZzICsgMSk7XG4gXHR1cF93cml0ZShcdTAwMjZjb21wLVx1MDAzZXNlbSk7XG4gXG4gXHRyZXR1cm4gZGV2Y29tO1xuQEAgLTE4Miw2ICsxODQsNyBAQCBkZXZjb21fZnJlZV9jb21wX2RldihzdHJ1Y3QgbWx4NV9kZXZjb21fY29tcF9kZXYgKmRldmNvbSlcbiBcbiBcdGRvd25fd3JpdGUoXHUwMDI2Y29tcC1cdTAwM2VzZW0pO1xuIFx0bGlzdF9kZWwoXHUwMDI2ZGV2Y29tLVx1MDAzZWxpc3QpO1xuK1x0V1JJVEVfT05DRShjb21wLVx1MDAzZW5yX2RldnMsIGNvbXAtXHUwMDNlbnJfZGV2cyAtIDEpO1xuIFx0dXBfd3JpdGUoXHUwMDI2Y29tcC1cdTAwM2VzZW0pO1xuIFxuIFx0a3JlZl9wdXQoXHUwMDI2ZGV2Y29tLVx1MDAzZWRldmMtXHUwMDNlcmVmLCBtbHg1X2RldmNvbV9kZXZfcmVsZWFzZSk7XG5AQCAtMjg0LDcgKzI4Nyw3IEBAIGludCBtbHg1X2RldmNvbV9jb21wX2dldF9zaXplKHN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqZGV2Y29tKVxuIHtcbiBcdHN0cnVjdCBtbHg1X2RldmNvbV9jb21wICpjb21wID0gZGV2Y29tLVx1MDAzZWNvbXA7XG4gXG4tXHRyZXR1cm4ga3JlZl9yZWFkKFx1MDAyNmNvbXAtXHUwMDNlcmVmKTtcbitcdHJldHVybiBSRUFEX09OQ0UoY29tcC1cdTAwM2Vucl9kZXZzKTtcbiB9XG4gXG4gaW50IG1seDVfZGV2Y29tX2xvY2tlZF9zZW5kX2V2ZW50KHN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqZGV2Y29tLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTQ6NTk6NDguOTE3ODI4ODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMjIwMzM3MzY0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIGl0J3MgdG91Y2hpbmcgZmlsZXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9gIGRpcmVjdG9yeTogc3BlY2lmaWNhbGx5LCBgbGFnLmNgLCBgc2hhcmVkX2ZkYi5jYCwgYW5kIGBkZXZjb20uY2AuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBNZWxsYW5veCBDb25uZWN0WCBmYW1pbHksIGxpa2VseSBDb25uZWN0WC00LCAtNSwgb3IgLTYsIGdpdmVuIHRoZSBgbWx4NWAgbmFtaW5nIGNvbnZlbnRpb24uIFRoYXQncyB0aGUgZHJpdmVyIGZvciB0aGVpciBuZXR3b3JrIGFkYXB0ZXJzLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLCBsZXQgbWUgcXVpY2tseSByZWZlciB0byBTZWN0aW9uIDIgb2YgdGhlIGd1aWRlbGluZXMuIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLi4uXCIg4oCTIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IGZhbGwgdW5kZXIgdGhhdCBjYXRlZ29yeS4gVGhleSBsaXN0IHNwZWNpZmljIGRyaXZlcnMgbGlrZSBgbWx4c3dgLCBgcWVkYCwgZXRjLiBhcyBleGFtcGxlcyBvZiBoYXJkd2FyZSByZXF1aXJpbmcgYWN0dWFsIHBoeXNpY2FsIEFTSUNzIG9yIFBDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGJ5IHN0YW5kYXJkIFFFTVUuIElzIGBtbHg1YCBvbmUgb2YgdGhvc2U/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uXG5cblNvLCBpcyB0aGUgYG1seDVgIGRyaXZlciBpdHNlbGYgcmVsaWFudCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBpbiBhIHdheSB0aGF0IG1ha2VzIGl0IGltcG9zc2libGUgdG8gZnVsbHkgdGVzdCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IEkgbmVlZCB0byBjbGFyaWZ5IGlmIGl0IGNhbiBiZSBlbXVsYXRlZCBvciBpZiBpdCdzIGNvbnNpZGVyZWQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLlxuXG5MZXQncyBkbyBhIHF1aWNrIHNlYXJjaCBpbiB0aGUga2VybmVsIHNvdXJjZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBraW5kIG9mIGRldmljZSB0aGUgZHJpdmVyIGlzIGFzc29jaWF0ZWQgd2l0aC4gSSdsbCBhbHNvIGNoZWNrIGlmIHRoZXJlJ3MgYW55IHN5emthbGxlciBzdXBwb3J0IG9yIGlmIGl0J3Mgc29sZWx5IGEgZHJpdmVyIGZvciBwaHlzaWNhbCBOSUNzLiBPa2F5LCB0aGUga2VybmVsIGRvY3VtZW50YXRpb24gdGVsbHMgbWUgdGhlIGRyaXZlciBpcyBmb3IgTWVsbGFub3ggQ29ubmVjdFggZXRoZXJuZXQvSW5maW5pQmFuZCBhZGFwdGVycy5cblxuTm93LCBkb2VzIFFFTVUgZW11bGF0ZSB0aGVzZSBhZGFwdGVycz8gVGhhdCdzIHRoZSByZWFsIHRlc3QuIE5vLCBRRU1VIGhhcyBubyBtbHg1IGRldmljZSBlbXVsYXRpb24uXG5cbkFscmlnaHQsIGlzIHRoZXJlICphbnkqIGtpbmQgb2YgdmlydHVhbCBkZXZpY2UsIG1vY2ssIG9yIHRlc3QgZHJpdmVyIGFzc29jaWF0ZWQgd2l0aCBgbWx4NWA/IEknbGwgbmVlZCB0byB1c2UgYGdyZXBwZXJgIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBtZW50aW9uIG9mIHZpcnR1YWwgb3IgdGVzdCBpbnRlcmZhY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mzk2LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDA6MDEuMTIxMjA1OTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5MDcxOTQ5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfTUxYNV9DT1JFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0PTU9RW5hYmxpbmcgdGhlIGRyaXZlciBhbmQga2NvbmZpZyBvcHRpb25zXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0xMi18IEJhc2ljIGZlYXR1cmVzLCBldGhlcm5ldCBuZXQgZGV2aWNlIHJ4L3R4IG9mZmxvYWRzIGFuZCBYRFAsIGFyZSBhdmFpbGFibGUgd2l0aCB0aGUgbW9zdCBiYXNpYyBmbGFnc1xcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjEzOnwgQ09ORklHX01MWDVfQ09SRT15L20gYW5kIENPTkZJR19NTFg1X0NPUkVfRU49eS5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0xNC18IEZvciB0aGUgbGlzdCBvZiBhZHZhbmNlZCBmZWF0dXJlcywgcGxlYXNlIHNlZSBiZWxvdy5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTIzLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjI0OioqQ09ORklHX01MWDVfQ09SRT0oeS9tL24pKiogKG1vZHVsZSBtbHg1X2NvcmUua28pXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMjUtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3Q6MjY6fCAgICBUaGUgZHJpdmVyIGNhbiBiZSBlbmFibGVkIGJ5IGNob29zaW5nIENPTkZJR19NTFg1X0NPUkU9eS9tIGluIGtlcm5lbCBjb25maWcuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMjctfCAgICBUaGlzIHdpbGwgcHJvdmlkZSBtbHg1IGNvcmUgZHJpdmVyIGZvciBtbHg1IHVscHMgdG8gaW50ZXJmYWNlIHdpdGggKG1seDVlLCBtbHg1X2liKS5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTI5LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0OjMwOioqQ09ORklHX01MWDVfQ09SRV9FTj0oeS9uKSoqXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMzEtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC0zNi1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDozNzoqKkNPTkZJR19NTFg1X0NPUkVfRU5fRENCPSh5L24pKio6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtMzgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdC00MS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0MjoqKkNPTkZJR19NTFg1X0NPUkVfSVBPSUI9KHkvbikqKlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTQzLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2tjb25maWcucnN0LTQ0LXwgICAgSVBvSUIgb2ZmbG9hZHMgXFx1MDAyNiBhY2NlbGVyYXRpb24gc3VwcG9ydC5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9rY29uZmlnLnJzdDo0NTp8ICAgIFJlcXVpcmVzIENPTkZJR19NTFg1X0NPUkVfRU4gdG8gcHJvdmlkZSBhbiBhY2NlbGVyYXRlZCBpbnRlcmZhY2UgZm9yIHRoZSByZG1hXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L21lbGxhbm94L21seDUva2NvbmZpZy5yc3QtNDYtfCAgICBJUG9JQiB1bHAgbmV0ZGV2aWNlLlxcbi0tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00MTE9Q09ORklHX01MWDRfRU49bVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDEyOkNPTkZJR19NTFg1X0NPUkU9bVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDEzOkNPTkZJR19NTFg1X0NPUkVfRU49eVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctNDE0LSMgQ09ORklHX05FVF9WRU5ET1JfTUVUQSBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz0xNzM9Q09ORklHX01MWDRfRU49bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjE3NDpDT05GSUdfTUxYNV9DT1JFPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy0xNzUtQ09ORklHX01MWDVfRlBHQT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6MTc2OkNPTkZJR19NTFg1X0NPUkVfRU49eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjE3NzpDT05GSUdfTUxYNV9DT1JFX0lQT0lCPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy0xNzgtQ09ORklHX01ZUkkxMEdFPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnPTE1Mj1DT05GSUdfTUxYNF9FTj1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWctMTUzLSMgQ09ORklHX01MWDRfQ09SRV9HRU4yIGlzIG5vdCBzZXRcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9za2lyb290X2RlZmNvbmZpZzoxNTQ6Q09ORklHX01MWDVfQ09SRT1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3Mvc2tpcm9vdF9kZWZjb25maWc6MTU1OkNPTkZJR19NTFg1X0NPUkVfRU49eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3NraXJvb3RfZGVmY29uZmlnLTE1Ni0jIENPTkZJR19NTFg1X0VOX1JYTkZDIGlzIG5vdCBzZXRcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz01NTY9Q09ORklHX01MWDRfRU49bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzo1NTc6Q09ORklHX01MWDVfQ09SRT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjU1ODpDT05GSUdfTUxYNV9DT1JFX0VOPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctNTU5LUNPTkZJR19NTFg1X1NGPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz01NDY9Q09ORklHX01MWDRfRU49bVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo1NDc6Q09ORklHX01MWDVfQ09SRT1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjU0ODpDT05GSUdfTUxYNV9DT1JFX0VOPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctNTQ5LUNPTkZJR19NTFg1X1NGPXlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYz00NzgzPXN0YXRpYyBpbnQgbWx4NV9pYl9zdGFnZV9jYXBzX2luaXQoc3RydWN0IG1seDVfaWJfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS9tYWluLmMtNDc4OC1cXHRpZiAoTUxYNV9DQVBfR0VOKG1kZXYsIGlwb2liX2VuaGFuY2VkX29mZmxvYWRzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYzo0Nzg5OlxcdCAgICBJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfSVBPSUIpKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9tbHg1L21haW4uYy00NzkwLVxcdFxcdGliX3NldF9kZXZpY2Vfb3BzKFxcdTAwMjZkZXYtXFx1MDAzZWliX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L01ha2VmaWxlPTY9b2JqLSQoQ09ORklHX01MWDRfQ09SRSkgKz0gbWx4NC9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19NTFg1X0NPUkUpICs9IG1seDUvY29yZS9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9NYWtlZmlsZS04LW9iai0kKENPTkZJR19NTFhTV19DT1JFKSArPSBtbHhzdy9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT03PXN1YmRpci1jY2ZsYWdzLXkgKz0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTUxYNV9DT1JFKSArPSBtbHg1X2NvcmUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0xMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZT0xND1tbHg1X2NvcmUteSA6PVxcdG1haW4ubyBjbWQubyBkZWJ1Z2ZzLm8gZncubyBlcS5vIHVhci5vIHBhZ2VhbGxvYy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS0yNS0jXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlOjI2Om1seDVfY29yZS0kKENPTkZJR19NTFg1X0NPUkVfRU4pICs9IGVuL3JxdC5vIGVuL3Rpci5vIGVuL3Jzcy5vIGVuL3J4X3Jlcy5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGUtMjctXFx0XFx0ZW4vY2hhbm5lbHMubyBlbl9tYWluLm8gZW5fY29tbW9uLm8gZW5fZnMubyBlbl9ldGh0b29sLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTM5PW1seDVfY29yZS0kKENPTkZJR19NTFg1X0VOX1JYTkZDKSAgICArPSBlbl9mc19ldGh0b29sLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6NDA6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9FTl9EQ0IpICs9IGVuX2RjYm5sLm8gZW4vcG9ydF9idWZmZXIub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9NYWtlZmlsZS00MS1tbHg1X2NvcmUtJChDT05GSUdfUENJX0hZUEVSVl9JTlRFUkZBQ0UpICs9IGVuL2h2X3ZoY2Ffc3RhdHMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlPTkzPW1seDVfY29yZS0kKENPTkZJR19QQ0lfSFlQRVJWX0lOVEVSRkFDRSkgKz0gbGliL2h2Lm8gbGliL2h2X3ZoY2Eub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk3LSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvTWFrZWZpbGU6OTg6bWx4NV9jb3JlLSQoQ09ORklHX01MWDVfQ09SRV9JUE9JQikgKz0gaXBvaWIvaXBvaWIubyBpcG9pYi9ldGh0b29sLm8gaXBvaWIvaXBvaWJfdmxhbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL01ha2VmaWxlLTk5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jPTU3PWJvb2wgbWx4NV9ldGhfc3VwcG9ydGVkKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Rldi5jLTU4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZGV2LmM6NTk6XFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19NTFg1X0NPUkVfRU4pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9kZXYuYy02MC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjkxMTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05MTItXFx0c3RydWN0IG1seDVlX2RjYnhfZHAgICAgICAgZGNieF9kcDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1Ny1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaDo5NTg6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU5LVxcdHN0cnVjdCBtbHg1ZV9kY2J4ICAgICAgICAgIGRjYng7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vZGNibmwuaC02LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9kY2JubC5oOjc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL2RjYm5sLmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM9MTMyPXZvaWQgbWx4NWVfc2VscV9jYW5jZWwoc3RydWN0IG1seDVlX3NlbHEgKnNlbHEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTEzOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jOjE0MDojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vc2VscS5jLTE0MS1zdGF0aWMgaW50IG1seDVlX2dldF9kc2NwX3VwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYz0xNTQ9c3RhdGljIGludCBtbHg1ZV9nZXRfdXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3NlbHEuYy0xNTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmM6MTU2OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9zZWxxLmMtMTU3LVxcdGlmIChSRUFEX09OQ0UocHJpdi1cXHUwMDNlZGNieF9kcC50cnVzdF9zdGF0ZSkgPT0gTUxYNV9RUFRTX1RSVVNUX0RTQ1ApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYz0yNDg0PWludCBtbHg1ZV9wb2xsX3J4X2NxKHN0cnVjdCBtbHg1ZV9jcSAqY3EsIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jOjI1MTc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNTE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM9MjY0MT1jb25zdCBzdHJ1Y3QgbWx4NWVfcnhfaGFuZGxlcnMgbWx4NWlfcnhfaGFuZGxlcnMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYy0yNjQ0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmM6MjY0NTojZW5kaWYgLyogQ09ORklHX01MWDVfQ09SRV9JUE9JQiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jLTI2NDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYz0xMDA3PXN0YXRpYyBpbnQgbWx4NWVfaGFpcnBpbl9nZXRfcHJpbyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jLTEwMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmM6MTAxNTojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9FTl9EQ0JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYy0xMDE2LVxcdGlmIChwcml2LVxcdTAwM2VkY2J4X2RwLnRydXN0X3N0YXRlICE9IE1MWDVfUVBUU19UUlVTVF9QQ1ApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jPTg3Mj12b2lkIG1seDVlX2ZyZWVfdHhxc3FfZGVzY3Moc3RydWN0IG1seDVlX3R4cXNxICpzcSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90eC5jLTkxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYzo5MTg6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfSVBPSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYy05MTktc3RhdGljIGlubGluZSB2b2lkXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0zNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaDozNjojaWZkZWYgQ09ORklHX01MWDVfQ09SRV9JUE9JQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9pcG9pYi9pcG9pYi5oLTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg9MTMwPXZvaWQgbWx4NWlfcGFyZW50X3B1dChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvaXBvaWIvaXBvaWIuaC0xMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmg6MTMyOiNlbmRpZiAvKiBDT05GSUdfTUxYNV9DT1JFX0lQT0lCICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2lwb2liL2lwb2liLmgtMTMzLSNlbmRpZiAvKiBfX01MWDVFX0lQT0JfSF9fICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg9MjQ9dm9pZCBtbHg1X3NkX3B1dF9hZGV2KHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphY3R1YWxfYWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaC0yNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmg6Mjc6I2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMjgtYm9vbCBtbHg1X3NkX2lzX3N1cHBvcnRlZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvc2QuaD0zNz12b2lkIG1seDVfc2RfY2xlYW51cChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbGliL3NkLmgtMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oOjM5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xpYi9zZC5oLTQwLXN0cnVjdCBtbHg1X2RldmNvbV9jb21wX2RldiAqbWx4NV9zZF9nZXRfZGV2Y29tKHN0cnVjdCBtbHg1X2NvcmVfZGV2ICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oPTM5Nj12b2lkIG1seDVfZndfdmVyc2lvbl9xdWVyeShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MzIgKnJ1bm5pbmdfdmVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTM5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWx4NV9jb3JlLmg6Mzk5OiNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21seDVfY29yZS5oLTQwMC1pbnQgbWx4NWVfaW5pdCh2b2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDA6MDMuMDExOTM2NTk3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTg5MTkxNjgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHVuZGVyc3RhbmRpbmcgdGhlIG1seDUgZGV2aWNlIHByb2JpbmcgYW5kIGluaXRpYWxpemF0aW9uOlxuXG4qKkRpdmluZyBpbnRvIG1seDUgSW5pdGlhbGl6YXRpb246IFBDSSBEcml2ZXIgRmlyc3QqKlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaXNtIG9mIGhvdyBtbHg1IGRldmljZXMgYXJlIGluaXRpYWxseSByZWNvZ25pemVkIGFuZCBicm91Z2h0IG9ubGluZS4gU2luY2UgdGhlc2UgYXJlIG5ldHdvcmsgZGV2aWNlcywgbXkgYmVzdCBndWVzcyBpcyB0aGV5J3JlIGRyaXZlbiBieSB0aGUgUENJIGZyYW1ld29yay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgUENJIGJ1cyBhbmQgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVycy4gU28sIEkgbmVlZCB0byBzdGFydCBieSBsb29raW5nIGZvciBob3cgdGhlIFBDSSBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlc2UgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGUgUENJIGRyaXZlciBrbm93cyBpdCBpcyBsb29raW5nIGF0IGFuIG1seDUgZGV2aWNlLlxuXG5Gcm9tIHRoZXJlLCBJIHdhbnQgdG8gZ2V0IGludG8gdGhlIGhlYXJ0IG9mIHRoZSBkcml2ZXIuIExldCdzIHRyYWNlIGhvdyB0aGUgZGV2aWNlcyBhcmUgc2V0IHVwLiBUbyBkbyB0aGF0LCBJJ20gZ29pbmcgc3RyYWlnaHQgdG8gdGhlIGNvcmUgb2YgdGhlIG1seDUgZHJpdmVyIGNvZGUuIEknbGwgbmVlZCB0byBsb2NhdGUgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBtbHg1IGRyaXZlci4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUgcHJpbWFyeSBpbml0aWFsaXphdGlvbiBsb2dpYy4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRyaXZlciByZWdpc3RlcnMgaXRzZWxmLCB3aGF0IHJlc291cmNlcyBpdCBhbGxvY2F0ZXMsIGFuZCBob3cgaXQgaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgUENJIGxheWVyIHRvIHVsdGltYXRlbHkgYnJpbmcgdGhlIGRldmljZXMgb25saW5lIGFuZCBtYWtlIHRoZW0gYWNjZXNzaWJsZSBmb3IgbmV0d29yayBvcGVyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODQyLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDA6MDguOTAzODU2NzA2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMwODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvKlxcbiAgIDI6XFx0ICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUsIE1lbGxhbm94IFRlY2hub2xvZ2llcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cXG4gICAzOlxcdCAqXFxuICAgNDpcXHQgKiBUaGlzIHNvZnR3YXJlIGlzIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYSBjaG9pY2Ugb2Ygb25lIG9mIHR3b1xcbiAgIDU6XFx0ICogbGljZW5zZXMuICBZb3UgbWF5IGNob29zZSB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVVxcbiAgIDY6XFx0ICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBWZXJzaW9uIDIsIGF2YWlsYWJsZSBmcm9tIHRoZSBmaWxlXFxuICAgNzpcXHQgKiBDT1BZSU5HIGluIHRoZSBtYWluIGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLCBvciB0aGVcXG4gICA4OlxcdCAqIE9wZW5JQi5vcmcgQlNEIGxpY2Vuc2UgYmVsb3c6XFxuICAgOTpcXHQgKlxcbiAgMTA6XFx0ICogICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3JcXG4gIDExOlxcdCAqICAgICB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmdcXG4gIDEyOlxcdCAqICAgICBjb25kaXRpb25zIGFyZSBtZXQ6XFxuICAxMzpcXHQgKlxcbiAgMTQ6XFx0ICogICAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmVcXG4gIDE1OlxcdCAqICAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xcbiAgMTY6XFx0ICogICAgICAgIGRpc2NsYWltZXIuXFxuICAxNzpcXHQgKlxcbiAgMTg6XFx0ICogICAgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcXG4gIDE5OlxcdCAqICAgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xcbiAgMjA6XFx0ICogICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFsc1xcbiAgMjE6XFx0ICogICAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cXG4gIDIyOlxcdCAqXFxuICAyMzpcXHQgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXFxcIkFTIElTXFxcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCxcXG4gIDI0OlxcdCAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxcbiAgMjU6XFx0ICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkRcXG4gIDI2OlxcdCAqIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlNcXG4gIDI3OlxcdCAqIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTlxcbiAgMjg6XFx0ICogQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU5cXG4gIDI5OlxcdCAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcXG4gIDMwOlxcdCAqIFNPRlRXQVJFLlxcbiAgMzE6XFx0ICovXFxuICAzMjpcXHRcXG4gIDMzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9oaWdobWVtLmhcXHUwMDNlXFxuICAzNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuICAzNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAgMzY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vycm5vLmhcXHUwMDNlXFxuICAzNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAzODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1hLW1hcHBpbmcuaFxcdTAwM2VcXG4gIDM5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICA0MDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICA0MTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVsYXkuaFxcdTAwM2VcXG4gIDQyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L2RyaXZlci5oXFx1MDAzZVxcbiAgNDM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21seDUvY3EuaFxcdTAwM2VcXG4gIDQ0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L3FwLmhcXHUwMDNlXFxuICA0NTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGVidWdmcy5oXFx1MDAzZVxcbiAgNDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ttb2QuaFxcdTAwM2VcXG4gIDQ3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbHg1L21seDVfaWZjLmhcXHUwMDNlXFxuICA0ODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvbWx4NS92cG9ydC5oXFx1MDAzZVxcbiAgNDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZlcnNpb24uaFxcdTAwM2VcXG4gIDUwOlxcdCNpbmNsdWRlIFxcdTAwM2NuZXQvZGV2bGluay5oXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNTowMDowOC45MDM5OTAzMjZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNDIyOTY4MjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggYW5hbHl6aW5nIHRoZSBgbWx4NWAgZHJpdmVyJ3MgaW5pdGlhbGl6YXRpb24sIGJhc2VkIG9uIHRoYXQgc3RhcnRpbmcgcG9pbnQ6XG5cbioqTG9va2luZyBhdCB0aGUgSGVhcnQgb2YgdGhlIG1seDUgRHJpdmVyKipcblxuQWxyaWdodCwgc28gdGhlIGVuZCBvZiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uY2AgaXMgdGhlIGtleSBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyJ3Mgc2V0dXAuIE15IGZvY3VzIGlzIGFsd2F5cyBvbiBob3cgdGhlIG1vZHVsZSBpcyBpbml0aWFsaXplZCBhbmQsIGNydWNpYWxseSwgaG93IHRoZSBQQ0kgZHJpdmVyIGlzIHJlZ2lzdGVyZWQuIFRoaXMgZ2l2ZXMgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGUgYG1seDVgIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGggdGhlIHN5c3RlbS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBlbnRyeSBwb2ludHMg4oCTIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHdoZW4gdGhlIGRyaXZlciBpcyBsb2FkZWQgYW5kIHRoZSBtZWNoYW5pc20gYnkgd2hpY2ggaXQgaWRlbnRpZmllcyBhbmQgY2xhaW1zIE1lbGxhbm94IG5ldHdvcmsgZGV2aWNlcy4gVW5kZXJzdGFuZGluZyB0aGlzIHNlY3Rpb24gaGVscHMgdG8gc2VlIGhvdyB0aGUga2VybmVsIHNlZXMgdGhlIGRldmljZS4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgb3IgYXQgbGVhc3Qgd2hlcmUgaXQncyBzdXBwb3NlZCB0byBoYXBwZW4hIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIGBtb2R1bGVfaW5pdGAgY2FsbCB3aGljaCBwb2ludHMgbWUgdG8gdGhlIHByaW1hcnkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gYW5kIEkgd2lsbCBiZSBsb29raW5nIGF0IHRoZSBQQ0kgZHJpdmVyIHJlZ2lzdHJhdGlvbi4gS25vd2luZyB0aGF0IHdpbGwgdGVsbCBtZSBob3cgdGhlIGRldmljZSBpcyBib3VuZCwgYW5kIHVsdGltYXRlbHkgY29udHJvbGxlZCBieSwgdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMTUsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAwOjExLjMyNjk2MDk4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjAxMzYwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjM0Nj1zdGF0aWMgaW50IF9faW5pdCBtbHg1X2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIzNjY6XFx0ZXJyID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWx4NV9jb3JlX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzY3LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAwOjExLjM4Mjk4MTg3M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE3ODQ3ODQxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBUaG91Z2h0cyBvbiBtbHg1IERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgYG1seDVgIGRyaXZlciBnZXRzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgUENJIHN1YnN5c3RlbSB1c2luZyBgcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZtbHg1X2NvcmVfZHJpdmVyKWAuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgbm90aGluZyBwYXJ0aWN1bGFybHkgc3VycHJpc2luZyB0aGVyZS4gTm93LCBhcyBhIG5leHQgbG9naWNhbCBzdGVwLCBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIFBDSSBJRCB0YWJsZSB3aXRoaW4gYG1seDVfY29yZV9kcml2ZXJgLiBVbmRlcnN0YW5kaW5nIHdoaWNoIGhhcmR3YXJlIGRldmljZXMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gaGFuZGxlIGlzIGZ1bmRhbWVudGFsLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmFuZ2Ugb2Ygc3VwcG9ydGVkIGRldmljZXMuIEkgd2FudCB0byBzZWUgaG93IHRoZSBkcml2ZXIgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIHZhcmlvdXMgTWVsbGFub3ggaGFyZHdhcmUgcmV2aXNpb25zIGFuZCBjb25maWd1cmF0aW9ucy4gVGhhdCB3aWxsIHRlbGwgbWUgaG93IGdlbmVyYWwgb3Igc3BlY2lmaWMgdGhlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiByZWFsbHkgaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDk0LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDA6MTMuMTY3NzY5NDczWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDExNjY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtbHg1X2NvcmVfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM9MjI2OD1pbnQgbWx4NV9yZWNvdmVyX2RldmljZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjI3OTpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyODAtXFx0Lm5hbWUgICAgICAgICAgID0gS0JVSUxEX01PRE5BTUUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzMDQ9c3RydWN0IG1seDVfY29yZV9kZXYgKm1seDVfdmZfZ2V0X2NvcmVfZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjMwODpcXHRtZGV2ID0gcGNpX2lvdl9nZXRfcGZfZHJ2ZGF0YShwZGV2LCBcXHUwMDI2bWx4NV9jb3JlX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMzA5LVxcdGlmIChJU19FUlIobWRldikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIzNDY9c3RhdGljIGludCBfX2luaXQgbWx4NV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMzY2OlxcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM2Ny1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYz0yMzgxPXN0YXRpYyB2b2lkIF9fZXhpdCBtbHg1X2NsZWFudXAodm9pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIzODIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjM4MzpcXHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm1seDVfY29yZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjM4NC1cXHRtbHg1X3NmX2RyaXZlcl91bnJlZ2lzdGVyKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAwOjEzLjIyMTg5MzgzMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2MzkwMjAwMTUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzLCBnZWFyZWQgdG93YXJkcyBhbiBleHBlcnQ6XG5cbioqRGl2aW5nIGludG8gdGhlIG1seDVfY29yZV9kcml2ZXIgRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbWx4NV9jb3JlX2RyaXZlcmAgaXMgZGVmaW5lZC4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgdG8gbGluZSAyMjc5IGluIHRoZSBjb2RlIOKAkyB0aGF0J3Mgb2Z0ZW4gd2hlcmUgdGhlIGNvcmUgc3RydWN0dXJlIGRlZmluaXRpb25zIGJlZ2luLCBvciBhdCBsZWFzdCBhIHNpZ25pZmljYW50IHBvaW50IG9mIHJlZmVyZW5jZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlIGRyaXZlcidzIGZ1bmRhbWVudGFsIGNvbXBvbmVudHMgYXJlIHN0cnVjdHVyZWQsIGhvdyB0aGUgZGF0YSBpcyBsYWlkIG91dCwgYW5kIGhvdyB0aGUgY29yZSBlbGVtZW50cyBhcmUgaW5pdGlhbGl6ZWQuIEtub3dpbmcgdGhlIHN0cnVjdHVyZSB3aWxsIGFsbG93IG1lIHRvIHRyYWNrIHRoZSBleGVjdXRpb24gYW5kIGFuYWx5emUgd2hpY2ggcGFydHMgb2YgdGhlIGNvZGUgYXJlIHRoZSByb290IGNhdXNlLiBUaGlzIHNob3VsZCBoZWxwIG1lIGZvcm0gYSBtZW50YWwgbWFwIG9mIHRoaXMgcGFydCBvZiB0aGUgZHJpdmVyLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzM3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDE6MTcuMTIzODk4Njg1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTk1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyNzUsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIyNzU6XFx0XFxuMjI3NjpcXHRcXHRyZXR1cm4gbWx4NV9sb2FkX29uZV9kZXZsX2xvY2tlZChkZXYsIHRydWUpO1xcbjIyNzc6XFx0fVxcbjIyNzg6XFx0XFxuMjI3OTpcXHRzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWx4NV9jb3JlX2RyaXZlciA9IHtcXG4yMjgwOlxcdFxcdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxcbjIyODE6XFx0XFx0LmlkX3RhYmxlICAgICAgID0gbWx4NV9jb3JlX3BjaV90YWJsZSxcXG4yMjgyOlxcdFxcdC5wcm9iZSAgICAgICAgICA9IHByb2JlX29uZSxcXG4yMjgzOlxcdFxcdC5yZW1vdmUgICAgICAgICA9IHJlbW92ZV9vbmUsXFxuMjI4NDpcXHRcXHQuc3VzcGVuZCAgICAgICAgPSBtbHg1X3N1c3BlbmQsXFxuMjI4NTpcXHRcXHQucmVzdW1lICAgICAgICAgPSBtbHg1X3Jlc3VtZSxcXG4yMjg2OlxcdFxcdC5zaHV0ZG93blxcdD0gc2h1dGRvd24sXFxuMjI4NzpcXHRcXHQuZXJyX2hhbmRsZXJcXHQ9IFxcdTAwMjZtbHg1X2Vycl9oYW5kbGVyLFxcbjIyODg6XFx0XFx0LnNyaW92X2NvbmZpZ3VyZSAgID0gbWx4NV9jb3JlX3NyaW92X2NvbmZpZ3VyZSxcXG4yMjg5OlxcdFxcdC5zcmlvdl9nZXRfdmZfdG90YWxfbXNpeCA9IG1seDVfc3Jpb3ZfZ2V0X3ZmX3RvdGFsX21zaXgsXFxuMjI5MDpcXHRcXHQuc3Jpb3Zfc2V0X21zaXhfdmVjX2NvdW50ID0gbWx4NV9jb3JlX3NyaW92X3NldF9tc2l4X3ZlY19jb3VudCxcXG4yMjkxOlxcdH07XFxuMjI5MjpcXHRcXG4yMjkzOlxcdC8qKlxcbjIyOTQ6XFx0ICogbWx4NV92Zl9nZXRfY29yZV9kZXYgLSBHZXQgdGhlIG1seDUgY29yZSBkZXZpY2UgZnJvbSBhIGdpdmVuIFZGIFBDSSBkZXZpY2UgaWZcXG4yMjk1OlxcdCAqICAgICAgICAgICAgICAgICAgICAgbWx4NV9jb3JlIGlzIGl0cyBkcml2ZXIuXFxuMjI5NjpcXHQgKiBAcGRldjogVGhlIGFzc29jaWF0ZWQgUENJIGRldmljZS5cXG4yMjk3OlxcdCAqXFxuMjI5ODpcXHQgKiBVcG9uIHJldHVybiB0aGUgaW50ZXJmYWNlIHN0YXRlIGxvY2sgc3RheSBoZWxkIHRvIGxldCBjYWxsZXIgdXNlcyBpdCBzYWZlbHkuXFxuMjI5OTpcXHQgKiBDYWxsZXIgbXVzdCBlbnN1cmUgdG8gdXNlIHRoZSByZXR1cm5lZCBtbHg1IGRldmljZSBmb3IgYSBuYXJyb3cgd2luZG93XFxuMjMwMDpcXHQgKiBhbmQgcHV0IGl0IGJhY2sgd2l0aCBtbHg1X3ZmX3B1dF9jb3JlX2RldigpIGltbWVkaWF0ZWx5IG9uY2UgdXNhZ2Ugd2FzIG92ZXIuXFxuMjMwMTpcXHQgKlxcbjIzMDI6XFx0ICogUmV0dXJuOiBQb2ludGVyIHRvIHRoZSBhc3NvY2lhdGVkIG1seDVfY29yZV9kZXYgb3IgTlVMTC5cXG4yMzAzOlxcdCAqL1xcbjIzMDQ6XFx0c3RydWN0IG1seDVfY29yZV9kZXYgKm1seDVfdmZfZ2V0X2NvcmVfZGV2KHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNTowMToxNy4xMjQwOTM0ODVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjkyNTYxMjUxMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqVmVyaWZ5aW5nIHRoZSBtbHg1IERyaXZlciBDb25uZWN0aW9uKipcblxuUmlnaHQsIHNvLCBgbWx4NWAgaXMgdGhlIFBDSSBkcml2ZXIgZm9yIHRob3NlIE1lbGxhbm94IENvbm5lY3RYIE5JQ3MsIG5vIHF1ZXN0aW9uLiBCdXQgSSBhbHdheXMgZG91YmxlLWNoZWNrIHRoZXNlIHRoaW5ncywgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBoYXJkd2FyZS4gSnVzdCBhIHF1aWNrIHBlZWsgYXQgdGhlIGBtbHg1X2NvcmVfcGNpX3RhYmxlYCBpcyBhIGdvb2Qgd2F5IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGF0IG15IG1lbnRhbCBtb2RlbCBvZiB0aGlzIGRyaXZlcidzIHNjb3BlIG1hdGNoZXMgdGhlIHJlYWxpdHkgb2YgdGhlIGNvZGUuIFRoaXMga2luZCBvZiBjb25maXJtYXRpb24gaXMgYWx3YXlzIGEgZ29vZCB0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMxNTYsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAxOjQ2LjM4MDIyMzIyNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM3NTg4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWx4NV9jb3JlX3BjaV90YWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIyMTY9c3RhdGljIGludCBtbHg1X3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjIyMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jOjIyMjM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1seDVfY29yZV9wY2lfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyMjQtXFx0eyBQQ0lfVkRFVklDRShNRUxMQU5PWCwgUENJX0RFVklDRV9JRF9NRUxMQU5PWF9DT05ORUNUSUIpIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYzoyMjYwOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBtbHg1X2NvcmVfcGNpX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jLTIyNjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jPTIyNzk9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1seDVfY29yZV9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYy0yMjgwLVxcdC5uYW1lICAgICAgICAgICA9IEtCVUlMRF9NT0ROQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmM6MjI4MTpcXHQuaWRfdGFibGUgICAgICAgPSBtbHg1X2NvcmVfcGNpX3RhYmxlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMtMjI4Mi1cXHQucHJvYmUgICAgICAgICAgPSBwcm9iZV9vbmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDE1OjAxOjQ2LjQzMzk5MDQ3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozMzU1MzI0NzM1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gV29ydGhGdXp6aW5nIGZvciBtbHg1KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgcHJvbXB0IG91dGxpbmVzIHNwZWNpZmljIG5lZ2F0aXZlIGNyaXRlcmlhIOKAkyBzaXR1YXRpb25zIHdoZXJlIEkgKnNob3VsZG4ndCogbWFyayBzb21ldGhpbmcgYXMgXCJXb3J0aEZ1enppbmdcIi4gUmlnaHQgbm93LCBJJ20gc3BlY2lmaWNhbGx5IHplcm9pbmcgaW4gb24gdGhlIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgY2F0ZWdvcnkuIFRoZSB0ZXh0IGhpZ2hsaWdodHMgYSBmZXcgZXhhbXBsZXMsIGFuZCBJIHNlZSBcIm1seHN3XCIgaW4gdGhhdCBsaXN0LlxuXG5IbW0sIFwibWx4NVwiIGlzIE1lbGxhbm94IENvbm5lY3RYIGhhcmR3YXJlLiBJIGtub3cgdGhpcy4gV2UncmUgdGFsa2luZyBTbWFydE5JQ3MvTklDcyBoZXJlIOKAkyBDb25uZWN0LUlCLCBDb25uZWN0WC00LCBDb25uZWN0WC01LCB0aGUgd2hvbGUgcmFuZ2UuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHZlcnkgY2xlYXI6IHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyAqbm90KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgdGhlIGtleS5cblxuU28sIGNhbiBRRU1VIGVtdWxhdGUgbWx4NT8gVGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgKm5vKi4gUUVNVSBzdGlja3MgdG8gZW11bGF0aW5nIHN0YW5kYXJkIHZpcnR1YWwgb3IgZW11bGF0ZWQgTklDcyDigJMgeW91ciBlMTAwMHMsIHZpcnRpby1uZXRzLCBldGMuIEl0ICpkb2Vzbid0KiBkbyBtbHg1LiBUaGF0IHBvaW50cyBkaXJlY3RseSB0b3dhcmRzIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYS4gQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gTGV0J3MgYWxzbyBjaGVjayBmb3IgYSBzb2Z0d2FyZSBzaW11bGF0b3Igb3IgbW9jayBkcml2ZXIgZm9yIG1seDUgaW4gdGhlIGtlcm5lbCB0cmVlLiBJIG5lZWQgdG8gYmUgc3VyZS4gSSdsbCBzZWFyY2ggZm9yIFwibWx4NVwiIGFjcm9zcyB0aGUga2VybmVsIHRyZWUsIGFuZCBpbiBwYXJ0aWN1bGFyLCBpbiB0aGUgYGRyaXZlcnMvbmV0L2AgYW5kIGB0b29scy90ZXN0aW5nL2AgZGlyZWN0b3JpZXMuIE1heWJlIHRoZXJlJ3Mgc29tZSBraW5kIG9mIG5ldGxpbmsgaW50ZXJmYWNlIG9yIHZpcnR1YWwgZGV2aWNlIGNyZWF0aW9uIHRoYXQgd291bGQgY2hhbmdlIHRoaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM4MDQsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDI6MTkuOTg3MjM5OTI2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU1MTIzMDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1seDVfY29yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ0b29scy90ZXN0aW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTU6MDI6MjAuMTAyNzYyMzA0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjMyNzk2NTA0Mjk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBNZWxsYW5veCBDb25uZWN0WCBEcml2ZXIgQ29kZSBmb3IgRnV6emluZyBTdWl0YWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIE1lbGxhbm94IG1seDUgZHJpdmVyLCBpcyBldmVuICpmdXp6YWJsZSogZWZmZWN0aXZlbHkuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGNoZWNrIGlmIHN5emthbGxlciBoYXMgZXhpc3RpbmcgbWx4NSBkZXNjcmlwdGlvbnMgb3IgdGVzdHMg4oCTIGEgZ29vZCBzdGFydGluZyBwb2ludC4gV2FpdCwgYSB3YXJuaW5nIGZsYWcgZ29lcyB1cC4gVGhlIHRvb2wgSSdtIHVzaW5nIGlzbid0IGZvciBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gSSBuZWVkIHRvIGJlIHVzaW5nIGByZWFkLXN5ei1zcGVjYCBvciBgc3l6LWdyZXBwZXJgLiBIbSwgYHN5ei1ncmVwcGVyYC4uLiBkb2VzIHRoYXQgZXZlbiAqZXhpc3QqPyBUaGUgYXZhaWxhYmxlIHRvb2xzIGRvbid0IGxpc3QgaXQ7IGBncmVwcGVyYCwgYGNvZGVzZWFyY2gtZGlyLWluZGV4YCwgYW5kIHNvIG9uIGFyZSB0aGVyZSwgYnV0IG5vdCBgc3l6LWdyZXBwZXJgLiBPa2F5LCBzbyB0aGF0IGF2ZW51ZSBpcyBibG9ja2VkLlxuXG5MZXQncyBsb29rIGF0IHRoZSBhY3R1YWwgY29kZSBtb2RpZmljYXRpb25zLiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGVzZSBmaWxlczogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9sYWcvbGFnLmNgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2xhZy9zaGFyZWRfZmRiLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9saWIvZGV2Y29tLmNgLiBJIHNlZSBmdW5jdGlvbnMgbGlrZSBgbWx4NV9sYWdfcmVsb2FkX2liX3JlcHNfaWR4KClgLCBgbWx4NV9sYWdfc2hhcmVkX2ZkYl9jcmVhdGUoKWAsIGBkZXZjb21fYWxsb2NfY29tcF9kZXYoKWAsIGV0Yy4gVGhlc2UgYXJlIGFsbCBpbnRlcm5hbCBmdW5jdGlvbnMgd2l0aGluIGBtbHg1X2NvcmVgLiBUaGlua2luZyBhYm91dCBpdCwgdGhlc2UgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IHJlbGF0ZWQgdG8gTWVsbGFub3ggQ29ubmVjdFggaGFyZHdhcmUhIFNwZWNpZmljYWxseSwgd2UgaGF2ZSBMQUcgKExpbmsgQWdncmVnYXRpb24pIHN1cHBvcnQsIHNoYXJlZCBGREIgKGhhcmR3YXJlIGUtc3dpdGNoIGZvcndhcmRpbmcgZGF0YWJhc2UpLCBhbmQgRGV2Y29tIChkZXZpY2UgY29tbXVuaWNhdGlvbikg4oCTIGFsbCBoYXJkd2FyZS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5LlxuXG5JIGtub3cgdGhpcyByZXF1aXJlcyBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBQQ0llIGNhcmRzOyBpdCdzIGEgaGFyZHdhcmUgZGVwZW5kZW5jeS4gTmVpdGhlciBRRU1VIG5vciBHQ0UgZW11bGF0ZXMgdGhhdCBraW5kIG9mIGhhcmR3YXJlLiBTbywgdGhpcyBmYWxscyBzcXVhcmVseSB1bmRlciB0aGUgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiBjYXRlZ29yeSBpbiBteSBrbm93bGVkZ2UgYmFzZS4gVGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFNtYXJ0TklDcyBhcmUgZXhwbGljaXRseSBjYWxsZWQgb3V0IGFzIG5vdCBiZWluZyByZWFsaXN0aWNhbGx5IGZ1enphYmxlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzIHJpZ29yb3VzbHkuIEFyZSB0aGVyZSAqYW55KiBjaGFuZ2VzIGluIGdlbmVyaWMgY29kZSBwYXRocz8gTm9wZSwgdGhlIGNoYW5nZXMgYXJlIHN0cmljdGx5IHdpdGhpbiB0aGUgYG1seDVfY29yZWAgbmV0d29yayBkcml2ZXIgZGlyZWN0b3J5LiBOZXh0LCBjYW4gdGhpcyBtb2RpZmllZCBjb2RlIGJlIHJlYWNoZWQgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPyBObyB3YXkuIFRoZSBDb25uZWN0WCBoYXJkd2FyZSBpcyBlc3NlbnRpYWwuIFRoZXJlZm9yZSwgYFdvcnRoRnV6emluZ2AgaXMgKmZhbHNlKi5cblxuTm93LCB0aGUgYHNldC1yZXN1bHRzYCBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gcG9wdWxhdGUgdGhvc2UgY29ycmVjdGx5LiBgV29ydGhGdXp6aW5nYDogZGVmaW5pdGVseSBgZmFsc2VgLiBgUmVhc29uaW5nYDogSSBuZWVkIHRvIGV4cGxhaW4gdGhlIGBtbHg1X2NvcmVgIGRlcGVuZGVuY3kgY29uY2lzZWx5LCBoaWdobGlnaHRpbmcgdGhlIExBRywgc2hhcmVkIEZEQiwgYW5kIGRldmNvbSBjb21wb25lbnRzLCBhbmQgaG93IHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBQQ0llIGhhcmR3YXJlLCB3aGljaCBpcyAqbm90KiBlbXVsYXRlZCBpbiBRRU1VIG9yIEdDRS4gVGhpcyBtYWtlcyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIGBFbmFibGVDb25maWdzYDogRW1wdHkuIGBGb2N1c1N5bWJvbHNgOiBFbXB0eS5cblxuUGVyZmVjdC4gRXZlcnl0aGluZyBhbGlnbnMgd2l0aCB0aGUgYXNzZXNzbWVudC4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTgyLCJPdXRwdXRUb2tlbnMiOjEyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNTowMjo1Mi44OTkyNjk4MTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODI3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWx4NV9jb3JlIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8pLCBzcGVjaWZpY2FsbHkgaW50ZXJuYWwgbGluayBhZ2dyZWdhdGlvbiAoTEFHKSBhbmQgaW50ZXItZGV2aWNlIGNvbW11bmljYXRpb24gKGRldmNvbSkgbG9naWMuIFRoZXNlIGNvZGUgcGF0aHMgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbWx4NV9jb3JlIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS8pLCBzcGVjaWZpY2FsbHkgaW50ZXJuYWwgbGluayBhZ2dyZWdhdGlvbiAoTEFHKSBhbmQgaW50ZXItZGV2aWNlIGNvbW11bmljYXRpb24gKGRldmNvbSkgbG9naWMuIFRoZXNlIGNvZGUgcGF0aHMgcmVxdWlyZSBwaHlzaWNhbCBNZWxsYW5veCBDb25uZWN0WCBBU0lDL1BDSWUgbmV0d29yayBhZGFwdGVycywgd2hpY2ggYXJlIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxNTowMjo1Mi44OTkzMDMyNzlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowccwcz[1] Phase: Running StartedAt: 2026-09-15 15:03:05 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowccwcz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 15:03:05 +0000 UTC FinishedAt: 2026-09-15 15:03:14 +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,}