Name: series-workflowgc92v Phase: Failed StartedAt: 2026-08-17 16:26:12 +0000 UTC FinishedAt: 2026-08-17 16:28:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc92v[0] Phase: Succeeded StartedAt: 2026-08-17 16:26:12 +0000 UTC FinishedAt: 2026-08-17 16:28:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc92v[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 16:26:12 +0000 UTC FinishedAt: 2026-08-17 16:28:35 +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+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBTb0Mgc3dpdGNoIGRyaXZlciBhbmQgaXRzIGFzc29jaWF0ZWQgVkNBUCBkZWJ1Z2ZzIGNvZGUuIFRoaXMgaXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTRhMWUzYmM3NmZmNTZlOWJiMTBjODUyMTI2Y2U4ZGI2ZjNmYjEzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDE2OjI4OjA3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcbmluZGV4IDFkMzRhZjc4MTY2YTMuLjRkZWRmNWQ5MjY0MTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcbkBAIC0xNjIsMTMgJiM0MzsxNjIsMTggQEAgc3RhdGljIGludCBzcGFyeDVfcG9ydF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHNwYXJ4NV9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiM0MztzdGF0aWMgaW50IHNwYXJ4NV9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcbiB7XG4gXHRzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IHNwYXJ4NSAqc3Bhcng1ID0gcG9ydC1cdTAwM2VzcGFyeDU7XG4gXG4gXHRpZiAoIXRlc3RfYml0KHBvcnQtXHUwMDNlcG9ydG5vLCBzcGFyeDUtXHUwMDNlYnJpZGdlX21hc2spKVxuLVx0XHRfX2Rldl9tY19zeW5jKGRldiwgc3Bhcng1X21jX3N5bmMsIHNwYXJ4NV9tY191bnN5bmMpO1xuJiM0MztcdFx0cmV0dXJuIF9faHdfYWRkcl9zeW5jX2RldihtYywgZGV2LCBzcGFyeDVfbWNfc3luYyxcbiYjNDM7XHRcdFx0XHRcdCAgc3Bhcng1X21jX3Vuc3luYyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X2dldF9waHlzX3BvcnRfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTI0OSw3ICYjNDM7MjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb19vcGVuICAgICAgICAgICAgICAgPSBzcGFyeDVfcG9ydF9vcGVuLFxuIFx0Lm5kb19zdG9wICAgICAgICAgICAgICAgPSBzcGFyeDVfcG9ydF9zdG9wLFxuIFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSBzcGFyeDVfcG9ydF94bWl0X2ltcGwsXG4tXHQubmRvX3NldF9yeF9tb2RlICAgICAgICA9IHNwYXJ4NV9zZXRfcnhfbW9kZSxcbiYjNDM7XHQubmRvX3NldF9yeF9tb2RlX2FzeW5jICA9IHNwYXJ4NV9zZXRfcnhfbW9kZSxcbiBcdC5uZG9fZ2V0X3BoeXNfcG9ydF9uYW1lID0gc3Bhcng1X3BvcnRfZ2V0X3BoeXNfcG9ydF9uYW1lLFxuIFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSBzcGFyeDVfc2V0X21hY19hZGRyZXNzLFxuIFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXG5pbmRleCBjZjMzMmRlNmJmNzM2Li4yZGVlMmNlMTlmY2U3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXG5AQCAtMjA3Nyw4ICYjNDM7MjA3Nyw5IEBAIGludCBzcGFyeDVfdmNhcF9pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSlcbiBcdGRpciA9IHZjYXBfZGVidWdmcyhzcGFyeDUtXHUwMDNlZGV2LCBzcGFyeDUtXHUwMDNlZGVidWdmc19yb290LCBjdHJsKTtcbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBjb25zdHMtXHUwMDNlbl9wb3J0czsgJiM0MzsmIzQzO2lkeClcbiBcdFx0aWYgKHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdKVxuLVx0XHRcdHZjYXBfcG9ydF9kZWJ1Z2ZzKHNwYXJ4NS1cdTAwM2VkZXYsIGRpciwgY3RybCxcbi1cdFx0XHRcdFx0ICBzcGFyeDUtXHUwMDNlcG9ydHNbaWR4XS1cdTAwM2VuZGV2KTtcbiYjNDM7XHRcdFx0dmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHNwYXJ4NS1cdTAwM2VkZXYsIGRpciwgY3RybCxcbiYjNDM7XHRcdFx0XHRcdFx0IHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdLVx1MDAzZW5kZXYsXG4mIzQzO1x0XHRcdFx0XHRcdCBzcGFyeDUtXHUwMDNlcG9ydHNbaWR4XS1cdTAwM2Vwb3J0bm8pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXG5pbmRleCBlMGM2NWM3YWIyM2UxLi40NzZmNzQ5NmE5ZDQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbkBAIC00MDAsNiAmIzQzOzQwMCwyNyBAQCB2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmcyk7XG4gXG4mIzQzO3ZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldixcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzQzO1x0XHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0bm8pXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdmNhcF9wb3J0X2RlYnVnZnNfaW5mbyAqaW5mbztcbiYjNDM7XHRjaGFyIG5hbWVbMTZdO1xuJiM0MztcbiYjNDM7XHRpbmZvID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCppbmZvKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFpbmZvKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpbmZvLVx1MDAzZXZjdHJsID0gdmN0cmw7XG4mIzQzO1x0aW5mby1cdTAwM2VuZGV2ID0gbmRldjtcbiYjNDM7XG4mIzQzO1x0c25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCBcJiMzNDtwJXVcJiMzNDssIHBvcnRubyk7XG4mIzQzO1x0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDQ0LCBwYXJlbnQsIGluZm8sIFx1MDAyNnZjYXBfcG9ydF9kZWJ1Z2ZzX2ZvcHMpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyk7XG4mIzQzO1xuIC8qIFNob3cgdGhlIGZ1bGwgVkNBUCBpbnN0YW5jZSBkYXRhIChydWxlcyB3aXRoIGFsbCBmaWVsZHMpICovXG4gc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oXG5pbmRleCA5ZjJjNTliNWY2ZjUzLi43ZGM2ZTM0MTFhNGQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmhcbkBAIC0xOCw2ICYjNDM7MTgsMTIgQEAgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBcdFx0ICAgICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuIFxuJiM0Mzt2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuJiM0MztcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydG5vKTtcbiYjNDM7XG4gLyogQ3JlYXRlIGEgZGVidWdGUyBlbnRyeSBmb3IgYSB2Y2FwIGluc3RhbmNlICovXG4gc3RydWN0IGRlbnRyeSAqdmNhcF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIFx0XHRcdCAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCk7XG5AQCAtMzAsNiAmIzQzOzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiB7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldixcbiYjNDM7XHRcdFx0XHRcdCAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4mIzQzO1x0XHRcdFx0XHQgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4mIzQzO1x0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzQzO1x0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHBvcnRubylcbiYjNDM7e1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqdmNhcF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRcdFx0ICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4gXHRcdFx0XHRcdCAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTY6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgU29DIHN3aXRjaCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIFZDQVAgZGVidWdmcyBjb2RlLiBUaGlzIGlzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE0YTFlM2JjNzZmZjU2ZTliYjEwYzg1MjEyNmNlOGRiNmYzZmIxMzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAxNjoyODowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmMKaW5kZXggMWQzNGFmNzgxNjZhMy4uNGRlZGY1ZDkyNjQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmMKQEAgLTE2MiwxMyAmIzQzOzE2MiwxOCBAQCBzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHNwYXJ4NV9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQomIzQzO3N0YXRpYyBpbnQgc3Bhcng1X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiYjNDM7CQkJICAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYykKIHsKIAlzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihkZXYpOwogCXN0cnVjdCBzcGFyeDUgKnNwYXJ4NSA9IHBvcnQtJmd0O3NwYXJ4NTsKIAogCWlmICghdGVzdF9iaXQocG9ydC0mZ3Q7cG9ydG5vLCBzcGFyeDUtJmd0O2JyaWRnZV9tYXNrKSkKLQkJX19kZXZfbWNfc3luYyhkZXYsIHNwYXJ4NV9tY19zeW5jLCBzcGFyeDVfbWNfdW5zeW5jKTsKJiM0MzsJCXJldHVybiBfX2h3X2FkZHJfc3luY19kZXYobWMsIGRldiwgc3Bhcng1X21jX3N5bmMsCiYjNDM7CQkJCQkgIHNwYXJ4NV9tY191bnN5bmMpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBzcGFyeDVfcG9ydF9nZXRfcGh5c19wb3J0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTI0OSw3ICYjNDM7MjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0gewogCS5uZG9fb3BlbiAgICAgICAgICAgICAgID0gc3Bhcng1X3BvcnRfb3BlbiwKIAkubmRvX3N0b3AgICAgICAgICAgICAgICA9IHNwYXJ4NV9wb3J0X3N0b3AsCiAJLm5kb19zdGFydF94bWl0ICAgICAgICAgPSBzcGFyeDVfcG9ydF94bWl0X2ltcGwsCi0JLm5kb19zZXRfcnhfbW9kZSAgICAgICAgPSBzcGFyeDVfc2V0X3J4X21vZGUsCiYjNDM7CS5uZG9fc2V0X3J4X21vZGVfYXN5bmMgID0gc3Bhcng1X3NldF9yeF9tb2RlLAogCS5uZG9fZ2V0X3BoeXNfcG9ydF9uYW1lID0gc3Bhcng1X3BvcnRfZ2V0X3BoeXNfcG9ydF9uYW1lLAogCS5uZG9fc2V0X21hY19hZGRyZXNzICAgID0gc3Bhcng1X3NldF9tYWNfYWRkcmVzcywKIAkubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYwppbmRleCBjZjMzMmRlNmJmNzM2Li4yZGVlMmNlMTlmY2U3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYwpAQCAtMjA3Nyw4ICYjNDM7MjA3Nyw5IEBAIGludCBzcGFyeDVfdmNhcF9pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSkKIAlkaXIgPSB2Y2FwX2RlYnVnZnMoc3Bhcng1LSZndDtkZXYsIHNwYXJ4NS0mZ3Q7ZGVidWdmc19yb290LCBjdHJsKTsKIAlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IGNvbnN0cy0mZ3Q7bl9wb3J0czsgJiM0MzsmIzQzO2lkeCkKIAkJaWYgKHNwYXJ4NS0mZ3Q7cG9ydHNbaWR4XSkKLQkJCXZjYXBfcG9ydF9kZWJ1Z2ZzKHNwYXJ4NS0mZ3Q7ZGV2LCBkaXIsIGN0cmwsCi0JCQkJCSAgc3Bhcng1LSZndDtwb3J0c1tpZHhdLSZndDtuZGV2KTsKJiM0MzsJCQl2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm8oc3Bhcng1LSZndDtkZXYsIGRpciwgY3RybCwKJiM0MzsJCQkJCQkgc3Bhcng1LSZndDtwb3J0c1tpZHhdLSZndDtuZGV2LAomIzQzOwkJCQkJCSBzcGFyeDUtJmd0O3BvcnRzW2lkeF0tJmd0O3BvcnRubyk7CiAKIAlyZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jCmluZGV4IGUwYzY1YzdhYjIzZTEuLjQ3NmY3NDk2YTlkNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMKQEAgLTQwMCw2ICYjNDM7NDAwLDI3IEBAIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmcyk7CiAKJiM0Mzt2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiYjNDM7CQkJICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LAomIzQzOwkJCSAgICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAomIzQzOwkJCSAgICAgIHVuc2lnbmVkIGludCBwb3J0bm8pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdmNhcF9wb3J0X2RlYnVnZnNfaW5mbyAqaW5mbzsKJiM0MzsJY2hhciBuYW1lWzE2XTsKJiM0MzsKJiM0MzsJaW5mbyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWluZm8pCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWluZm8tJmd0O3ZjdHJsID0gdmN0cmw7CiYjNDM7CWluZm8tJmd0O25kZXYgPSBuZGV2OwomIzQzOwomIzQzOwlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICYjMzQ7cCV1JiMzNDssIHBvcnRubyk7CiYjNDM7CWRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQ0NCwgcGFyZW50LCBpbmZvLCAmYW1wO3ZjYXBfcG9ydF9kZWJ1Z2ZzX2ZvcHMpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm8pOwomIzQzOwogLyogU2hvdyB0aGUgZnVsbCBWQ0FQIGluc3RhbmNlIGRhdGEgKHJ1bGVzIHdpdGggYWxsIGZpZWxkcykgKi8KIHN0YXRpYyBpbnQgdmNhcF9kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmgKaW5kZXggOWYyYzU5YjVmNmY1My4uN2RjNmUzNDExYTRkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuaApAQCAtMTgsNiAmIzQzOzE4LDEyIEBAIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCSAgICAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwKIAkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTsKIAomIzQzO3ZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldiwKJiM0MzsJCQkgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiYjNDM7CQkJICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsCiYjNDM7CQkJICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiYjNDM7CQkJICAgICAgdW5zaWduZWQgaW50IHBvcnRubyk7CiYjNDM7CiAvKiBDcmVhdGUgYSBkZWJ1Z0ZTIGVudHJ5IGZvciBhIHZjYXAgaW5zdGFuY2UgKi8KIHN0cnVjdCBkZW50cnkgKnZjYXBfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKIAkJCSAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCk7CkBAIC0zMCw2ICYjNDM7MzYsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRlbnRyeSAqcGFyZW50LAogewogfQogCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiYjNDM7CQkJCQkgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LAomIzQzOwkJCQkJICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAomIzQzOwkJCQkJICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAomIzQzOwkJCQkJICAgIHVuc2lnbmVkIGludCBwb3J0bm8pCiYjNDM7ewomIzQzO30KJiM0MzsKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqdmNhcF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCQkJICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCQkJCSAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2ODEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTcGFyeDUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBTcGFyeDUgZHJpdmVyLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBtb2RpZmljYXRpb25zIHRvIGBzcGFyeDVfbmV0ZGV2LmNgLCBgc3Bhcng1X3ZjYXBfaW1wbC5jYCwgYW5kIHRoZSBkZWJ1Z2ZzIEFQSSBmaWxlcyB3aXRoaW4gdGhlIHZjYXAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIHRoZXNlIGZpbGVzIGFyZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oYC4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHNlZW0gdG8gcmV2b2x2ZSBhcm91bmQgdGhlIFJYIG1vZGUgc2V0dGluZyBhbmQgdGhlIGRlYnVnIGludGVyZmFjZS4gSSBzZWUgdGhhdCBgc3Bhcng1X3NldF9yeF9tb2RlYCBpcyBiZWluZyB1cGRhdGVkIHRvIGFjY2VwdCBsaXN0cyBvZiB1bmljYXN0IGFuZCBtdWx0aWNhc3QgaGFyZHdhcmUgYWRkcmVzc2VzLCBhbmQgbm93IHJldHVybnMgYW4gaW50ZWdlci4gSXQgYWxzbyBlbXBsb3lzIGBfX2h3X2FkZHJfc3luY19kZXZgLCB3aGljaCBJIHJlY29nbml6ZSBhcyBhIGhlbHBlciBmb3Igc3luY2luZyBoYXJkd2FyZSBhZGRyZXNzZXMgd2l0aCB0aGUgZGV2aWNlJiMzOTtzIG11bHRpY2FzdCBmaWx0ZXIuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlIGRyaXZlciBpcyBsaWtlbHkgbWFuYWdpbmcgdGhlIGhhcmR3YXJlJiMzOTtzIE1BQyBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzLiBUaGUgb3RoZXIgbm90YWJsZSBjaGFuZ2UgaXMgdXBkYXRpbmcgdGhlIGBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzYCBzdHJ1Y3R1cmUsIGNoYW5naW5nIHRoZSBgbmRvX3NldF9yeF9tb2RlYCBmdW5jdGlvbiB0byBhbiBhc3luY2hyb25vdXMgdmVyc2lvbi4KClRoZSBhZGRpdGlvbiBvZiBgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vYCBhbmQgaXRzIHVzZSBpbiBgc3Bhcng1X3ZjYXBfaW5pdGAgc3VnZ2VzdHMgYSBuZXcgZGVidWcgaW50ZXJmYWNlIGVsZW1lbnQgZm9yIHRoZSB2Y2FwIGNvbXBvbmVudC4gVGhpcyBjb3VsZCBiZSB1c2VmdWwgZm9yIHBvcnQtc3BlY2lmaWMgZGVidWdnaW5nIGFuZCBtb25pdG9yaW5nLgoKTm93LCBhcyBhbiBleHBlcnQgaW4gbmV0d29yayBkcml2ZXIgZGV2ZWxvcG1lbnQsIEkgYW0gaW1tZWRpYXRlbHkgYXNraW5nIG15c2VsZiwgaXMgdGhlIFNwYXJ4NSBkcml2ZXIgcmVhY2hhYmxlIGluIGEgUUVNVSBlbnZpcm9ubWVudD8gR2l2ZW4gdGhhdCB0aGUgZHJpdmVyIGlzIGZvciBNaWNyb2NoaXAgU3Bhcng1LCBJIHN1c3BlY3QgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHRoZSBTcGFyeDUgU29DIHN3aXRjaC4gU2luY2UgdGhlIFNwYXJ4NSBpcyBhIGRlZGljYXRlZCBoYXJkd2FyZSBzd2l0Y2ggU29DLCBpdCBpcyB1bmxpa2VseSB0byBiZSBwcmVzZW50IGluIGdlbmVyaWMgUUVNVSBjb25maWd1cmF0aW9ucy4gVG8gY29uZmlybSB0aGlzLCBJIHdpbGwgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIGFuZCB2ZXJpZnkgaWYgdGhlcmUgaXMgYW55IGVtdWxhdGlvbiBzdXBwb3J0IGF2YWlsYWJsZS4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2AgZGlyZWN0b3J5IHNob3VsZCByZXZlYWwgd2hldGhlciBpdCYjMzk7cyB0aWVkIHRvIFBDSSBJRHMgb3IgcGxhdGZvcm0gZGV2aWNlIGJpbmRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MTEwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtY2hwX3NwYXJ4NV9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0xMTA5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6MTExMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtY2hwX3NwYXJ4NV9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMTExMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzc4CgkJCQkJCQlvdXRwdXQ6IDc4CgkJCQkJCQl0aG91Z2h0czogNDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQSBEZWVwIERpdmUqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhpcyBwYXRjaCB0YXJnZXRzIGFuIE9GIChPcGVuIEZpcm13YXJlL0RldmljZSBUcmVlKSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IHNldHMgb2ZmIGEgZmxhZy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZXZlbiBlbXVsYXRlIHRoaXMgaW4gUUVNVT8gVHlwaWNhbGx5LCBTb0Mtc3BlY2lmaWMgc3dpdGNoZXMgbGlrZSB0aGlzIGFyZW4mIzM5O3Qgd2VsbC1zdXBwb3J0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGBuZG9fc2V0X3J4X21vZGVfYXN5bmNgLiBJcyB0aGlzIGEgYnJhbmQtbmV3IG5ldGRldiBvcGVyYXRpb24sIG9yIGp1c3QgYSByZW5hbWU/IEFoLCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgZGlyZWN0IHN3YXAgZnJvbSBgLm5kb19zZXRfcnhfbW9kZWAgdG8gYC5uZG9fc2V0X3J4X21vZGVfYXN5bmNgIHdpdGhpbiBgc3Bhcng1X3BvcnRfbmV0ZGV2X29wc2AuIE5vIGNvcmUga2VybmVsIGxvZ2ljIGlzIHRvdWNoZWQ7IGl0JiMzOTtzIGFsbCB3aXRoaW4gdGhlIGBzcGFyeDVgIGRyaXZlciBhbmQgYHZjYXBgICh3aGljaCBJIGtub3cgaXMgTWljcm9jaGlwIHNwZWNpZmljKS4KCkdpdmVuIHRoYXQgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgKE1pY3JvY2hpcCBTcGFyeDUpLCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IGl0IHJlcXVpcmVzIGVpdGhlciBhY3R1YWwgaGFyZHdhcmUgb3IgYSB2ZXJ5IHNwZWNpZmljIFNvQyBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIGh1Z2UgaHVyZGxlIGZvciBmdXp6aW5nLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyBjaXJjbGUgYmFjay4gQ2FuIHdlIGV2ZW4gaW5zdGFudGlhdGUgYHNwYXJ4NWAgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gUGxhdGZvcm0gZGV2aWNlcyAqY2FuKiBzb21ldGltZXMgYmUgYnJvdWdodCB1cCB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHN5emthbGxlciYjMzk7cyBwc2V1ZG8tZGV2aWNlcyBpZiB0aGV5IGRvbiYjMzk7dCBkZXBlbmQgb24gaGFyZHdhcmUgcmVzcG9uc2VzIGR1cmluZyBwcm9iaW5nLiBCdXQgZXZlbiBpZiB0aGV5IHByb2JlZCwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyB3b24mIzM5O3QgYmVoYXZlIHdpdGhvdXQgcHJvcGVyIGVtdWxhdGlvbi4KClRoZSBjcml0ZXJpYSBzdGF0ZTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgVGhpcyBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeTsgaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgU29DIHN3aXRjaCBkcml2ZXIuCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBvdGhlciBjaGFuZ2VzLiBUaGVyZSYjMzk7cyBhbHNvIGB2Y2FwX2FwaV9kZWJ1Z2ZzLmNgLCB3aGljaCBpcyBqdXN0IGRlYnVnZnMgc3R1ZmYsIGFuZCBgc3Bhcng1X3ZjYXBfaW1wbC5jYCwgdXNpbmcgdGhlIG5ldyBkZWJ1Z2ZzLiBGaW5hbGx5LCBgc3Bhcng1X25ldGRldi5jYCBzd2FwcyBgLm5kb19zZXRfcnhfbW9kZWAgdG8gYC5uZG9fc2V0X3J4X21vZGVfYXN5bmNgLgoKU28sIGl0JiMzOTtzIGFsbCBNaWNyb2NoaXAgU3Bhcng1IC8gVkNBUCBkcml2ZXIgY29kZS4KCkdpdmVuIHRoaXMgdGhvcm91Z2ggYW5hbHlzaXMsIEkmIzM5O20gY29tZm9ydGFibGUgcmV0dXJuaW5nIFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgU29DIHN3aXRjaCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIFZDQVAgZGVidWdmcyBjb2RlLiBUaGlzIGlzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBTb0Mgc3dpdGNoIGRyaXZlciBhbmQgaXRzIGFzc29jaWF0ZWQgVkNBUCBkZWJ1Z2ZzIGNvZGUuIFRoaXMgaXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxNjoyODowOC4xMzM2ODA3MDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTkwMDkyMjcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgU29DIHN3aXRjaCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIFZDQVAgZGVidWdmcyBjb2RlLiBUaGlzIGlzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTY6Mjg6MDguMTMzNjg2NzcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQyOTg3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNGExZTNiYzc2ZmY1NmU5YmIxMGM4NTIxMjZjZThkYjZmM2ZiMTM5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDE3IDE2OjI4OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcXG5pbmRleCAxZDM0YWY3ODE2NmEzLi40ZGVkZjVkOTI2NDE2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcXG5AQCAtMTYyLDEzICsxNjIsMTggQEAgc3RhdGljIGludCBzcGFyeDVfcG9ydF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgc3Bhcng1X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuK3N0YXRpYyBpbnQgc3Bhcng1X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxcbiB7XFxuIFxcdHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KGRldik7XFxuIFxcdHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSA9IHBvcnQtXFx1MDAzZXNwYXJ4NTtcXG4gXFxuIFxcdGlmICghdGVzdF9iaXQocG9ydC1cXHUwMDNlcG9ydG5vLCBzcGFyeDUtXFx1MDAzZWJyaWRnZV9tYXNrKSlcXG4tXFx0XFx0X19kZXZfbWNfc3luYyhkZXYsIHNwYXJ4NV9tY19zeW5jLCBzcGFyeDVfbWNfdW5zeW5jKTtcXG4rXFx0XFx0cmV0dXJuIF9faHdfYWRkcl9zeW5jX2RldihtYywgZGV2LCBzcGFyeDVfbWNfc3luYyxcXG4rXFx0XFx0XFx0XFx0XFx0ICBzcGFyeDVfbWNfdW5zeW5jKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X2dldF9waHlzX3BvcnRfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0yNDksNyArMjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0ge1xcbiBcXHQubmRvX29wZW4gICAgICAgICAgICAgICA9IHNwYXJ4NV9wb3J0X29wZW4sXFxuIFxcdC5uZG9fc3RvcCAgICAgICAgICAgICAgID0gc3Bhcng1X3BvcnRfc3RvcCxcXG4gXFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSBzcGFyeDVfcG9ydF94bWl0X2ltcGwsXFxuLVxcdC5uZG9fc2V0X3J4X21vZGUgICAgICAgID0gc3Bhcng1X3NldF9yeF9tb2RlLFxcbitcXHQubmRvX3NldF9yeF9tb2RlX2FzeW5jICA9IHNwYXJ4NV9zZXRfcnhfbW9kZSxcXG4gXFx0Lm5kb19nZXRfcGh5c19wb3J0X25hbWUgPSBzcGFyeDVfcG9ydF9nZXRfcGh5c19wb3J0X25hbWUsXFxuIFxcdC5uZG9fc2V0X21hY19hZGRyZXNzICAgID0gc3Bhcng1X3NldF9tYWNfYWRkcmVzcyxcXG4gXFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xcbmluZGV4IGNmMzMyZGU2YmY3MzYuLjJkZWUyY2UxOWZjZTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xcbkBAIC0yMDc3LDggKzIwNzcsOSBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXFxuIFxcdGRpciA9IHZjYXBfZGVidWdmcyhzcGFyeDUtXFx1MDAzZWRldiwgc3Bhcng1LVxcdTAwM2VkZWJ1Z2ZzX3Jvb3QsIGN0cmwpO1xcbiBcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIGNvbnN0cy1cXHUwMDNlbl9wb3J0czsgKytpZHgpXFxuIFxcdFxcdGlmIChzcGFyeDUtXFx1MDAzZXBvcnRzW2lkeF0pXFxuLVxcdFxcdFxcdHZjYXBfcG9ydF9kZWJ1Z2ZzKHNwYXJ4NS1cXHUwMDNlZGV2LCBkaXIsIGN0cmwsXFxuLVxcdFxcdFxcdFxcdFxcdCAgc3Bhcng1LVxcdTAwM2Vwb3J0c1tpZHhdLVxcdTAwM2VuZGV2KTtcXG4rXFx0XFx0XFx0dmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHNwYXJ4NS1cXHUwMDNlZGV2LCBkaXIsIGN0cmwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzcGFyeDUtXFx1MDAzZXBvcnRzW2lkeF0tXFx1MDAzZW5kZXYsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzcGFyeDUtXFx1MDAzZXBvcnRzW2lkeF0tXFx1MDAzZXBvcnRubyk7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xcbmluZGV4IGUwYzY1YzdhYjIzZTEuLjQ3NmY3NDk2YTlkNDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXFxuQEAgLTQwMCw2ICs0MDAsMjcgQEAgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmcyk7XFxuIFxcbit2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbitcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydG5vKVxcbit7XFxuK1xcdHN0cnVjdCB2Y2FwX3BvcnRfZGVidWdmc19pbmZvICppbmZvO1xcbitcXHRjaGFyIG5hbWVbMTZdO1xcbitcXG4rXFx0aW5mbyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIWluZm8pXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGluZm8tXFx1MDAzZXZjdHJsID0gdmN0cmw7XFxuK1xcdGluZm8tXFx1MDAzZW5kZXYgPSBuZGV2O1xcbitcXG4rXFx0c25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCBcXFwicCV1XFxcIiwgcG9ydG5vKTtcXG4rXFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDQ0LCBwYXJlbnQsIGluZm8sIFxcdTAwMjZ2Y2FwX3BvcnRfZGVidWdmc19mb3BzKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm8pO1xcbitcXG4gLyogU2hvdyB0aGUgZnVsbCBWQ0FQIGluc3RhbmNlIGRhdGEgKHJ1bGVzIHdpdGggYWxsIGZpZWxkcykgKi9cXG4gc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcXG4ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmhcXG5pbmRleCA5ZjJjNTliNWY2ZjUzLi43ZGM2ZTM0MTFhNGQ5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuaFxcbkBAIC0xOCw2ICsxOCwxMiBAQCB2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxcbiBcXHRcXHQgICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuIFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuIFxcbit2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbitcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydG5vKTtcXG4rXFxuIC8qIENyZWF0ZSBhIGRlYnVnRlMgZW50cnkgZm9yIGEgdmNhcCBpbnN0YW5jZSAqL1xcbiBzdHJ1Y3QgZGVudHJ5ICp2Y2FwX2RlYnVnZnMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCk7XFxuQEAgLTMwLDYgKzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4ge1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgcG9ydG5vKVxcbit7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqdmNhcF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXFxuIFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDE2OjI4OjA4LjU5ODY4OTg0NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1NDM1ODk5OTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IFNvQyBzd2l0Y2ggZHJpdmVyIGFuZCBpdHMgYXNzb2NpYXRlZCBWQ0FQIGRlYnVnZnMgY29kZS4gVGhpcyBpcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE0YTFlM2JjNzZmZjU2ZTliYjEwYzg1MjEyNmNlOGRiNmYzZmIxMzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAxNjoyODowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcbmluZGV4IDFkMzRhZjc4MTY2YTMuLjRkZWRmNWQ5MjY0MTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcbkBAIC0xNjIsMTMgKzE2MiwxOCBAQCBzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3Bhcng1X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4rc3RhdGljIGludCBzcGFyeDVfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbitcdFx0XHQgICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4rXHRcdFx0ICAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxuIHtcbiBcdHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KGRldik7XG4gXHRzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUgPSBwb3J0LVx1MDAzZXNwYXJ4NTtcbiBcbiBcdGlmICghdGVzdF9iaXQocG9ydC1cdTAwM2Vwb3J0bm8sIHNwYXJ4NS1cdTAwM2VicmlkZ2VfbWFzaykpXG4tXHRcdF9fZGV2X21jX3N5bmMoZGV2LCBzcGFyeDVfbWNfc3luYywgc3Bhcng1X21jX3Vuc3luYyk7XG4rXHRcdHJldHVybiBfX2h3X2FkZHJfc3luY19kZXYobWMsIGRldiwgc3Bhcng1X21jX3N5bmMsXG4rXHRcdFx0XHRcdCAgc3Bhcng1X21jX3Vuc3luYyk7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBzcGFyeDVfcG9ydF9nZXRfcGh5c19wb3J0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC0yNDksNyArMjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb19vcGVuICAgICAgICAgICAgICAgPSBzcGFyeDVfcG9ydF9vcGVuLFxuIFx0Lm5kb19zdG9wICAgICAgICAgICAgICAgPSBzcGFyeDVfcG9ydF9zdG9wLFxuIFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSBzcGFyeDVfcG9ydF94bWl0X2ltcGwsXG4tXHQubmRvX3NldF9yeF9tb2RlICAgICAgICA9IHNwYXJ4NV9zZXRfcnhfbW9kZSxcbitcdC5uZG9fc2V0X3J4X21vZGVfYXN5bmMgID0gc3Bhcng1X3NldF9yeF9tb2RlLFxuIFx0Lm5kb19nZXRfcGh5c19wb3J0X25hbWUgPSBzcGFyeDVfcG9ydF9nZXRfcGh5c19wb3J0X25hbWUsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHNwYXJ4NV9zZXRfbWFjX2FkZHJlc3MsXG4gXHQubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbmluZGV4IGNmMzMyZGU2YmY3MzYuLjJkZWUyY2UxOWZjZTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbkBAIC0yMDc3LDggKzIwNzcsOSBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXG4gXHRkaXIgPSB2Y2FwX2RlYnVnZnMoc3Bhcng1LVx1MDAzZWRldiwgc3Bhcng1LVx1MDAzZWRlYnVnZnNfcm9vdCwgY3RybCk7XG4gXHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgY29uc3RzLVx1MDAzZW5fcG9ydHM7ICsraWR4KVxuIFx0XHRpZiAoc3Bhcng1LVx1MDAzZXBvcnRzW2lkeF0pXG4tXHRcdFx0dmNhcF9wb3J0X2RlYnVnZnMoc3Bhcng1LVx1MDAzZWRldiwgZGlyLCBjdHJsLFxuLVx0XHRcdFx0XHQgIHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdLVx1MDAzZW5kZXYpO1xuK1x0XHRcdHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzcGFyeDUtXHUwMDNlZGV2LCBkaXIsIGN0cmwsXG4rXHRcdFx0XHRcdFx0IHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdLVx1MDAzZW5kZXYsXG4rXHRcdFx0XHRcdFx0IHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdLVx1MDAzZXBvcnRubyk7XG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbmluZGV4IGUwYzY1YzdhYjIzZTEuLjQ3NmY3NDk2YTlkNDQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xuQEAgLTQwMCw2ICs0MDAsMjcgQEAgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9wb3J0X2RlYnVnZnMpO1xuIFxuK3ZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldixcbitcdFx0XHQgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4rXHRcdFx0ICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4rXHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4rXHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnRubylcbit7XG4rXHRzdHJ1Y3QgdmNhcF9wb3J0X2RlYnVnZnNfaW5mbyAqaW5mbztcbitcdGNoYXIgbmFtZVsxNl07XG4rXG4rXHRpbmZvID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCppbmZvKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIWluZm8pXG4rXHRcdHJldHVybjtcbitcbitcdGluZm8tXHUwMDNldmN0cmwgPSB2Y3RybDtcbitcdGluZm8tXHUwMDNlbmRldiA9IG5kZXY7XG4rXG4rXHRzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksIFwicCV1XCIsIHBvcnRubyk7XG4rXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0NDQsIHBhcmVudCwgaW5mbywgXHUwMDI2dmNhcF9wb3J0X2RlYnVnZnNfZm9wcyk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyk7XG4rXG4gLyogU2hvdyB0aGUgZnVsbCBWQ0FQIGluc3RhbmNlIGRhdGEgKHJ1bGVzIHdpdGggYWxsIGZpZWxkcykgKi9cbiBzdGF0aWMgaW50IHZjYXBfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmhcbmluZGV4IDlmMmM1OWI1ZjZmNTMuLjdkYzZlMzQxMWE0ZDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuaFxuQEAgLTE4LDYgKzE4LDEyIEBAIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4gXHRcdCAgICAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcbiBcbit2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4rXHRcdFx0ICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuK1x0XHRcdCAgICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuK1x0XHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0bm8pO1xuK1xuIC8qIENyZWF0ZSBhIGRlYnVnRlMgZW50cnkgZm9yIGEgdmNhcCBpbnN0YW5jZSAqL1xuIHN0cnVjdCBkZW50cnkgKnZjYXBfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBcdFx0XHQgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwpO1xuQEAgLTMwLDYgKzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiB7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgdm9pZCB2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm8oc3RydWN0IGRldmljZSAqZGV2LFxuK1x0XHRcdFx0XHQgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuK1x0XHRcdFx0XHQgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4rXHRcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbitcdFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBwb3J0bm8pXG4re1xuK31cbitcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKnZjYXBfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRcdCAgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTY6Mjg6MDguNTk4NjkxMzY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI5MzAwMDQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNwYXJ4NSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBTcGFyeDUgZHJpdmVyLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBtb2RpZmljYXRpb25zIHRvIGBzcGFyeDVfbmV0ZGV2LmNgLCBgc3Bhcng1X3ZjYXBfaW1wbC5jYCwgYW5kIHRoZSBkZWJ1Z2ZzIEFQSSBmaWxlcyB3aXRoaW4gdGhlIHZjYXAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIHRoZXNlIGZpbGVzIGFyZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oYC5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgc2VlbSB0byByZXZvbHZlIGFyb3VuZCB0aGUgUlggbW9kZSBzZXR0aW5nIGFuZCB0aGUgZGVidWcgaW50ZXJmYWNlLiBJIHNlZSB0aGF0IGBzcGFyeDVfc2V0X3J4X21vZGVgIGlzIGJlaW5nIHVwZGF0ZWQgdG8gYWNjZXB0IGxpc3RzIG9mIHVuaWNhc3QgYW5kIG11bHRpY2FzdCBoYXJkd2FyZSBhZGRyZXNzZXMsIGFuZCBub3cgcmV0dXJucyBhbiBpbnRlZ2VyLiBJdCBhbHNvIGVtcGxveXMgYF9faHdfYWRkcl9zeW5jX2RldmAsIHdoaWNoIEkgcmVjb2duaXplIGFzIGEgaGVscGVyIGZvciBzeW5jaW5nIGhhcmR3YXJlIGFkZHJlc3NlcyB3aXRoIHRoZSBkZXZpY2UncyBtdWx0aWNhc3QgZmlsdGVyLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSBkcml2ZXIgaXMgbGlrZWx5IG1hbmFnaW5nIHRoZSBoYXJkd2FyZSdzIE1BQyBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzLiBUaGUgb3RoZXIgbm90YWJsZSBjaGFuZ2UgaXMgdXBkYXRpbmcgdGhlIGBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzYCBzdHJ1Y3R1cmUsIGNoYW5naW5nIHRoZSBgbmRvX3NldF9yeF9tb2RlYCBmdW5jdGlvbiB0byBhbiBhc3luY2hyb25vdXMgdmVyc2lvbi5cblxuVGhlIGFkZGl0aW9uIG9mIGB2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm9gIGFuZCBpdHMgdXNlIGluIGBzcGFyeDVfdmNhcF9pbml0YCBzdWdnZXN0cyBhIG5ldyBkZWJ1ZyBpbnRlcmZhY2UgZWxlbWVudCBmb3IgdGhlIHZjYXAgY29tcG9uZW50LiBUaGlzIGNvdWxkIGJlIHVzZWZ1bCBmb3IgcG9ydC1zcGVjaWZpYyBkZWJ1Z2dpbmcgYW5kIG1vbml0b3JpbmcuXG5cbk5vdywgYXMgYW4gZXhwZXJ0IGluIG5ldHdvcmsgZHJpdmVyIGRldmVsb3BtZW50LCBJIGFtIGltbWVkaWF0ZWx5IGFza2luZyBteXNlbGYsIGlzIHRoZSBTcGFyeDUgZHJpdmVyIHJlYWNoYWJsZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEdpdmVuIHRoYXQgdGhlIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIFNwYXJ4NSwgSSBzdXNwZWN0IGl0J3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHRoZSBTcGFyeDUgU29DIHN3aXRjaC4gU2luY2UgdGhlIFNwYXJ4NSBpcyBhIGRlZGljYXRlZCBoYXJkd2FyZSBzd2l0Y2ggU29DLCBpdCBpcyB1bmxpa2VseSB0byBiZSBwcmVzZW50IGluIGdlbmVyaWMgUUVNVSBjb25maWd1cmF0aW9ucy4gVG8gY29uZmlybSB0aGlzLCBJIHdpbGwgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIGFuZCB2ZXJpZnkgaWYgdGhlcmUgaXMgYW55IGVtdWxhdGlvbiBzdXBwb3J0IGF2YWlsYWJsZS4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2AgZGlyZWN0b3J5IHNob3VsZCByZXZlYWwgd2hldGhlciBpdCdzIHRpZWQgdG8gUENJIElEcyBvciBwbGF0Zm9ybSBkZXZpY2UgYmluZGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2ODEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxNjoyODoxNC44OTE2OTQyNDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM2MzM5MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTU9EVUxFX0RFVklDRV9UQUJMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MTEwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtY2hwX3NwYXJ4NV9tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTExMDktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6MTExMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtY2hwX3NwYXJ4NV9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTExMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDE2OjI4OjE0Ljk0NTMzMzc2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwODkyMjkyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290LiBUaGlzIHBhdGNoIHRhcmdldHMgYW4gT0YgKE9wZW4gRmlybXdhcmUvRGV2aWNlIFRyZWUpIGRldmljZSwgd2hpY2ggaW1tZWRpYXRlbHkgc2V0cyBvZmYgYSBmbGFnLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBldmVuIGVtdWxhdGUgdGhpcyBpbiBRRU1VPyBUeXBpY2FsbHksIFNvQy1zcGVjaWZpYyBzd2l0Y2hlcyBsaWtlIHRoaXMgYXJlbid0IHdlbGwtc3VwcG9ydGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGBuZG9fc2V0X3J4X21vZGVfYXN5bmNgLiBJcyB0aGlzIGEgYnJhbmQtbmV3IG5ldGRldiBvcGVyYXRpb24sIG9yIGp1c3QgYSByZW5hbWU/IEFoLCBsb29rcyBsaWtlIGl0J3MgYSBkaXJlY3Qgc3dhcCBmcm9tIGAubmRvX3NldF9yeF9tb2RlYCB0byBgLm5kb19zZXRfcnhfbW9kZV9hc3luY2Agd2l0aGluIGBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzYC4gTm8gY29yZSBrZXJuZWwgbG9naWMgaXMgdG91Y2hlZDsgaXQncyBhbGwgd2l0aGluIHRoZSBgc3Bhcng1YCBkcml2ZXIgYW5kIGB2Y2FwYCAod2hpY2ggSSBrbm93IGlzIE1pY3JvY2hpcCBzcGVjaWZpYykuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgKE1pY3JvY2hpcCBTcGFyeDUpLCBpdCdzIGhpZ2hseSBsaWtlbHkgaXQgcmVxdWlyZXMgZWl0aGVyIGFjdHVhbCBoYXJkd2FyZSBvciBhIHZlcnkgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBodWdlIGh1cmRsZSBmb3IgZnV6emluZy5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIGNpcmNsZSBiYWNrLiBDYW4gd2UgZXZlbiBpbnN0YW50aWF0ZSBgc3Bhcng1YCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBQbGF0Zm9ybSBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBicm91Z2h0IHVwIHRocm91Z2ggZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3Igc3l6a2FsbGVyJ3MgcHNldWRvLWRldmljZXMgaWYgdGhleSBkb24ndCBkZXBlbmQgb24gaGFyZHdhcmUgcmVzcG9uc2VzIGR1cmluZyBwcm9iaW5nLiBCdXQgZXZlbiBpZiB0aGV5IHByb2JlZCwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyB3b24ndCBiZWhhdmUgd2l0aG91dCBwcm9wZXIgZW11bGF0aW9uLlxuXG5UaGUgY3JpdGVyaWEgc3RhdGU6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIFRoaXMgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnk7IGl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgU29DIHN3aXRjaCBkcml2ZXIuXG5cbk9rYXksIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgb3RoZXIgY2hhbmdlcy4gVGhlcmUncyBhbHNvIGB2Y2FwX2FwaV9kZWJ1Z2ZzLmNgLCB3aGljaCBpcyBqdXN0IGRlYnVnZnMgc3R1ZmYsIGFuZCBgc3Bhcng1X3ZjYXBfaW1wbC5jYCwgdXNpbmcgdGhlIG5ldyBkZWJ1Z2ZzLiBGaW5hbGx5LCBgc3Bhcng1X25ldGRldi5jYCBzd2FwcyBgLm5kb19zZXRfcnhfbW9kZWAgdG8gYC5uZG9fc2V0X3J4X21vZGVfYXN5bmNgLlxuXG5TbywgaXQncyBhbGwgTWljcm9jaGlwIFNwYXJ4NSAvIFZDQVAgZHJpdmVyIGNvZGUuXG5cbkdpdmVuIHRoaXMgdGhvcm91Z2ggYW5hbHlzaXMsIEknbSBjb21mb3J0YWJsZSByZXR1cm5pbmcgV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzc4LCJPdXRwdXRUb2tlbnMiOjc4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDE2OjI4OjI0LjAzNDU2NTExNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBTb0Mgc3dpdGNoIGRyaXZlciBhbmQgaXRzIGFzc29jaWF0ZWQgVkNBUCBkZWJ1Z2ZzIGNvZGUuIFRoaXMgaXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IFNvQyBzd2l0Y2ggZHJpdmVyIGFuZCBpdHMgYXNzb2NpYXRlZCBWQ0FQIGRlYnVnZnMgY29kZS4gVGhpcyBpcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDE2OjI4OjI0LjAzNDU5MjE0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc92v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 16:26:12 +0000 UTC FinishedAt: 2026-08-17 16:28:25 +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+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBTb0Mgc3dpdGNoIGRyaXZlciBhbmQgaXRzIGFzc29jaWF0ZWQgVkNBUCBkZWJ1Z2ZzIGNvZGUuIFRoaXMgaXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTRhMWUzYmM3NmZmNTZlOWJiMTBjODUyMTI2Y2U4ZGI2ZjNmYjEzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDE2OjI4OjA3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcbmluZGV4IDFkMzRhZjc4MTY2YTMuLjRkZWRmNWQ5MjY0MTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcbkBAIC0xNjIsMTMgJiM0MzsxNjIsMTggQEAgc3RhdGljIGludCBzcGFyeDVfcG9ydF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIHNwYXJ4NV9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiM0MztzdGF0aWMgaW50IHNwYXJ4NV9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYylcbiB7XG4gXHRzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IHNwYXJ4NSAqc3Bhcng1ID0gcG9ydC1cdTAwM2VzcGFyeDU7XG4gXG4gXHRpZiAoIXRlc3RfYml0KHBvcnQtXHUwMDNlcG9ydG5vLCBzcGFyeDUtXHUwMDNlYnJpZGdlX21hc2spKVxuLVx0XHRfX2Rldl9tY19zeW5jKGRldiwgc3Bhcng1X21jX3N5bmMsIHNwYXJ4NV9tY191bnN5bmMpO1xuJiM0MztcdFx0cmV0dXJuIF9faHdfYWRkcl9zeW5jX2RldihtYywgZGV2LCBzcGFyeDVfbWNfc3luYyxcbiYjNDM7XHRcdFx0XHRcdCAgc3Bhcng1X21jX3Vuc3luYyk7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X2dldF9waHlzX3BvcnRfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTI0OSw3ICYjNDM7MjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb19vcGVuICAgICAgICAgICAgICAgPSBzcGFyeDVfcG9ydF9vcGVuLFxuIFx0Lm5kb19zdG9wICAgICAgICAgICAgICAgPSBzcGFyeDVfcG9ydF9zdG9wLFxuIFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSBzcGFyeDVfcG9ydF94bWl0X2ltcGwsXG4tXHQubmRvX3NldF9yeF9tb2RlICAgICAgICA9IHNwYXJ4NV9zZXRfcnhfbW9kZSxcbiYjNDM7XHQubmRvX3NldF9yeF9tb2RlX2FzeW5jICA9IHNwYXJ4NV9zZXRfcnhfbW9kZSxcbiBcdC5uZG9fZ2V0X3BoeXNfcG9ydF9uYW1lID0gc3Bhcng1X3BvcnRfZ2V0X3BoeXNfcG9ydF9uYW1lLFxuIFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgICAgPSBzcGFyeDVfc2V0X21hY19hZGRyZXNzLFxuIFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXG5pbmRleCBjZjMzMmRlNmJmNzM2Li4yZGVlMmNlMTlmY2U3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jXG5AQCAtMjA3Nyw4ICYjNDM7MjA3Nyw5IEBAIGludCBzcGFyeDVfdmNhcF9pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSlcbiBcdGRpciA9IHZjYXBfZGVidWdmcyhzcGFyeDUtXHUwMDNlZGV2LCBzcGFyeDUtXHUwMDNlZGVidWdmc19yb290LCBjdHJsKTtcbiBcdGZvciAoaWR4ID0gMDsgaWR4IFx1MDAzYyBjb25zdHMtXHUwMDNlbl9wb3J0czsgJiM0MzsmIzQzO2lkeClcbiBcdFx0aWYgKHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdKVxuLVx0XHRcdHZjYXBfcG9ydF9kZWJ1Z2ZzKHNwYXJ4NS1cdTAwM2VkZXYsIGRpciwgY3RybCxcbi1cdFx0XHRcdFx0ICBzcGFyeDUtXHUwMDNlcG9ydHNbaWR4XS1cdTAwM2VuZGV2KTtcbiYjNDM7XHRcdFx0dmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHNwYXJ4NS1cdTAwM2VkZXYsIGRpciwgY3RybCxcbiYjNDM7XHRcdFx0XHRcdFx0IHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdLVx1MDAzZW5kZXYsXG4mIzQzO1x0XHRcdFx0XHRcdCBzcGFyeDUtXHUwMDNlcG9ydHNbaWR4XS1cdTAwM2Vwb3J0bm8pO1xuIFxuIFx0cmV0dXJuIGVycjtcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXG5pbmRleCBlMGM2NWM3YWIyM2UxLi40NzZmNzQ5NmE5ZDQ0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbkBAIC00MDAsNiAmIzQzOzQwMCwyNyBAQCB2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmcyk7XG4gXG4mIzQzO3ZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldixcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuJiM0MztcdFx0XHQgICAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzQzO1x0XHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0bm8pXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdmNhcF9wb3J0X2RlYnVnZnNfaW5mbyAqaW5mbztcbiYjNDM7XHRjaGFyIG5hbWVbMTZdO1xuJiM0MztcbiYjNDM7XHRpbmZvID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCppbmZvKSwgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0aWYgKCFpbmZvKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRpbmZvLVx1MDAzZXZjdHJsID0gdmN0cmw7XG4mIzQzO1x0aW5mby1cdTAwM2VuZGV2ID0gbmRldjtcbiYjNDM7XG4mIzQzO1x0c25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCBcJiMzNDtwJXVcJiMzNDssIHBvcnRubyk7XG4mIzQzO1x0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDQ0LCBwYXJlbnQsIGluZm8sIFx1MDAyNnZjYXBfcG9ydF9kZWJ1Z2ZzX2ZvcHMpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyk7XG4mIzQzO1xuIC8qIFNob3cgdGhlIGZ1bGwgVkNBUCBpbnN0YW5jZSBkYXRhIChydWxlcyB3aXRoIGFsbCBmaWVsZHMpICovXG4gc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcbiB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oXG5pbmRleCA5ZjJjNTliNWY2ZjUzLi43ZGM2ZTM0MTFhNGQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmhcbkBAIC0xOCw2ICYjNDM7MTgsMTIgQEAgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBcdFx0ICAgICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuIFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuIFxuJiM0Mzt2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiYjNDM7XHRcdFx0ICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4mIzQzO1x0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuJiM0MztcdFx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydG5vKTtcbiYjNDM7XG4gLyogQ3JlYXRlIGEgZGVidWdGUyBlbnRyeSBmb3IgYSB2Y2FwIGluc3RhbmNlICovXG4gc3RydWN0IGRlbnRyeSAqdmNhcF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIFx0XHRcdCAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCk7XG5AQCAtMzAsNiAmIzQzOzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiB7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldixcbiYjNDM7XHRcdFx0XHRcdCAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4mIzQzO1x0XHRcdFx0XHQgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4mIzQzO1x0XHRcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzQzO1x0XHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHBvcnRubylcbiYjNDM7e1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqdmNhcF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRcdFx0ICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4gXHRcdFx0XHRcdCAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMTY6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgU29DIHN3aXRjaCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIFZDQVAgZGVidWdmcyBjb2RlLiBUaGlzIGlzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE0YTFlM2JjNzZmZjU2ZTliYjEwYzg1MjEyNmNlOGRiNmYzZmIxMzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAxNyAxNjoyODowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmMKaW5kZXggMWQzNGFmNzgxNjZhMy4uNGRlZGY1ZDkyNjQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmMKQEAgLTE2MiwxMyAmIzQzOzE2MiwxOCBAQCBzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHNwYXJ4NV9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQomIzQzO3N0YXRpYyBpbnQgc3Bhcng1X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiYjNDM7CQkJICAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICptYykKIHsKIAlzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihkZXYpOwogCXN0cnVjdCBzcGFyeDUgKnNwYXJ4NSA9IHBvcnQtJmd0O3NwYXJ4NTsKIAogCWlmICghdGVzdF9iaXQocG9ydC0mZ3Q7cG9ydG5vLCBzcGFyeDUtJmd0O2JyaWRnZV9tYXNrKSkKLQkJX19kZXZfbWNfc3luYyhkZXYsIHNwYXJ4NV9tY19zeW5jLCBzcGFyeDVfbWNfdW5zeW5jKTsKJiM0MzsJCXJldHVybiBfX2h3X2FkZHJfc3luY19kZXYobWMsIGRldiwgc3Bhcng1X21jX3N5bmMsCiYjNDM7CQkJCQkgIHNwYXJ4NV9tY191bnN5bmMpOwomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBzcGFyeDVfcG9ydF9nZXRfcGh5c19wb3J0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTI0OSw3ICYjNDM7MjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0gewogCS5uZG9fb3BlbiAgICAgICAgICAgICAgID0gc3Bhcng1X3BvcnRfb3BlbiwKIAkubmRvX3N0b3AgICAgICAgICAgICAgICA9IHNwYXJ4NV9wb3J0X3N0b3AsCiAJLm5kb19zdGFydF94bWl0ICAgICAgICAgPSBzcGFyeDVfcG9ydF94bWl0X2ltcGwsCi0JLm5kb19zZXRfcnhfbW9kZSAgICAgICAgPSBzcGFyeDVfc2V0X3J4X21vZGUsCiYjNDM7CS5uZG9fc2V0X3J4X21vZGVfYXN5bmMgID0gc3Bhcng1X3NldF9yeF9tb2RlLAogCS5uZG9fZ2V0X3BoeXNfcG9ydF9uYW1lID0gc3Bhcng1X3BvcnRfZ2V0X3BoeXNfcG9ydF9uYW1lLAogCS5uZG9fc2V0X21hY19hZGRyZXNzICAgID0gc3Bhcng1X3NldF9tYWNfYWRkcmVzcywKIAkubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYwppbmRleCBjZjMzMmRlNmJmNzM2Li4yZGVlMmNlMTlmY2U3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuYwpAQCAtMjA3Nyw4ICYjNDM7MjA3Nyw5IEBAIGludCBzcGFyeDVfdmNhcF9pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSkKIAlkaXIgPSB2Y2FwX2RlYnVnZnMoc3Bhcng1LSZndDtkZXYsIHNwYXJ4NS0mZ3Q7ZGVidWdmc19yb290LCBjdHJsKTsKIAlmb3IgKGlkeCA9IDA7IGlkeCAmbHQ7IGNvbnN0cy0mZ3Q7bl9wb3J0czsgJiM0MzsmIzQzO2lkeCkKIAkJaWYgKHNwYXJ4NS0mZ3Q7cG9ydHNbaWR4XSkKLQkJCXZjYXBfcG9ydF9kZWJ1Z2ZzKHNwYXJ4NS0mZ3Q7ZGV2LCBkaXIsIGN0cmwsCi0JCQkJCSAgc3Bhcng1LSZndDtwb3J0c1tpZHhdLSZndDtuZGV2KTsKJiM0MzsJCQl2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm8oc3Bhcng1LSZndDtkZXYsIGRpciwgY3RybCwKJiM0MzsJCQkJCQkgc3Bhcng1LSZndDtwb3J0c1tpZHhdLSZndDtuZGV2LAomIzQzOwkJCQkJCSBzcGFyeDUtJmd0O3BvcnRzW2lkeF0tJmd0O3BvcnRubyk7CiAKIAlyZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jCmluZGV4IGUwYzY1YzdhYjIzZTEuLjQ3NmY3NDk2YTlkNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMKQEAgLTQwMCw2ICYjNDM7NDAwLDI3IEBAIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmcyk7CiAKJiM0Mzt2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiYjNDM7CQkJICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LAomIzQzOwkJCSAgICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAomIzQzOwkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAomIzQzOwkJCSAgICAgIHVuc2lnbmVkIGludCBwb3J0bm8pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdmNhcF9wb3J0X2RlYnVnZnNfaW5mbyAqaW5mbzsKJiM0MzsJY2hhciBuYW1lWzE2XTsKJiM0MzsKJiM0MzsJaW5mbyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpOwomIzQzOwlpZiAoIWluZm8pCiYjNDM7CQlyZXR1cm47CiYjNDM7CiYjNDM7CWluZm8tJmd0O3ZjdHJsID0gdmN0cmw7CiYjNDM7CWluZm8tJmd0O25kZXYgPSBuZGV2OwomIzQzOwomIzQzOwlzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksICYjMzQ7cCV1JiMzNDssIHBvcnRubyk7CiYjNDM7CWRlYnVnZnNfY3JlYXRlX2ZpbGUobmFtZSwgMDQ0NCwgcGFyZW50LCBpbmZvLCAmYW1wO3ZjYXBfcG9ydF9kZWJ1Z2ZzX2ZvcHMpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm8pOwomIzQzOwogLyogU2hvdyB0aGUgZnVsbCBWQ0FQIGluc3RhbmNlIGRhdGEgKHJ1bGVzIHdpdGggYWxsIGZpZWxkcykgKi8KIHN0YXRpYyBpbnQgdmNhcF9kZWJ1Z2ZzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmgKaW5kZXggOWYyYzU5YjVmNmY1My4uN2RjNmUzNDExYTRkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuaApAQCAtMTgsNiAmIzQzOzE4LDEyIEBAIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCSAgICAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwKIAkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTsKIAomIzQzO3ZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldiwKJiM0MzsJCQkgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiYjNDM7CQkJICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsCiYjNDM7CQkJICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiYjNDM7CQkJICAgICAgdW5zaWduZWQgaW50IHBvcnRubyk7CiYjNDM7CiAvKiBDcmVhdGUgYSBkZWJ1Z0ZTIGVudHJ5IGZvciBhIHZjYXAgaW5zdGFuY2UgKi8KIHN0cnVjdCBkZW50cnkgKnZjYXBfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCwKIAkJCSAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCk7CkBAIC0zMCw2ICYjNDM7MzYsMTQgQEAgc3RhdGljIGlubGluZSB2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRlbnRyeSAqcGFyZW50LAogewogfQogCiYjNDM7c3RhdGljIGlubGluZSB2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsCiYjNDM7CQkJCQkgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LAomIzQzOwkJCQkJICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLAomIzQzOwkJCQkJICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAomIzQzOwkJCQkJICAgIHVuc2lnbmVkIGludCBwb3J0bm8pCiYjNDM7ewomIzQzO30KJiM0MzsKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqdmNhcF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwKIAkJCQkJICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCQkJCSAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2ODEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTcGFyeDUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBTcGFyeDUgZHJpdmVyLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBtb2RpZmljYXRpb25zIHRvIGBzcGFyeDVfbmV0ZGV2LmNgLCBgc3Bhcng1X3ZjYXBfaW1wbC5jYCwgYW5kIHRoZSBkZWJ1Z2ZzIEFQSSBmaWxlcyB3aXRoaW4gdGhlIHZjYXAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIHRoZXNlIGZpbGVzIGFyZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oYC4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzIHNlZW0gdG8gcmV2b2x2ZSBhcm91bmQgdGhlIFJYIG1vZGUgc2V0dGluZyBhbmQgdGhlIGRlYnVnIGludGVyZmFjZS4gSSBzZWUgdGhhdCBgc3Bhcng1X3NldF9yeF9tb2RlYCBpcyBiZWluZyB1cGRhdGVkIHRvIGFjY2VwdCBsaXN0cyBvZiB1bmljYXN0IGFuZCBtdWx0aWNhc3QgaGFyZHdhcmUgYWRkcmVzc2VzLCBhbmQgbm93IHJldHVybnMgYW4gaW50ZWdlci4gSXQgYWxzbyBlbXBsb3lzIGBfX2h3X2FkZHJfc3luY19kZXZgLCB3aGljaCBJIHJlY29nbml6ZSBhcyBhIGhlbHBlciBmb3Igc3luY2luZyBoYXJkd2FyZSBhZGRyZXNzZXMgd2l0aCB0aGUgZGV2aWNlJiMzOTtzIG11bHRpY2FzdCBmaWx0ZXIuIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlIGRyaXZlciBpcyBsaWtlbHkgbWFuYWdpbmcgdGhlIGhhcmR3YXJlJiMzOTtzIE1BQyBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzLiBUaGUgb3RoZXIgbm90YWJsZSBjaGFuZ2UgaXMgdXBkYXRpbmcgdGhlIGBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzYCBzdHJ1Y3R1cmUsIGNoYW5naW5nIHRoZSBgbmRvX3NldF9yeF9tb2RlYCBmdW5jdGlvbiB0byBhbiBhc3luY2hyb25vdXMgdmVyc2lvbi4KClRoZSBhZGRpdGlvbiBvZiBgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vYCBhbmQgaXRzIHVzZSBpbiBgc3Bhcng1X3ZjYXBfaW5pdGAgc3VnZ2VzdHMgYSBuZXcgZGVidWcgaW50ZXJmYWNlIGVsZW1lbnQgZm9yIHRoZSB2Y2FwIGNvbXBvbmVudC4gVGhpcyBjb3VsZCBiZSB1c2VmdWwgZm9yIHBvcnQtc3BlY2lmaWMgZGVidWdnaW5nIGFuZCBtb25pdG9yaW5nLgoKTm93LCBhcyBhbiBleHBlcnQgaW4gbmV0d29yayBkcml2ZXIgZGV2ZWxvcG1lbnQsIEkgYW0gaW1tZWRpYXRlbHkgYXNraW5nIG15c2VsZiwgaXMgdGhlIFNwYXJ4NSBkcml2ZXIgcmVhY2hhYmxlIGluIGEgUUVNVSBlbnZpcm9ubWVudD8gR2l2ZW4gdGhhdCB0aGUgZHJpdmVyIGlzIGZvciBNaWNyb2NoaXAgU3Bhcng1LCBJIHN1c3BlY3QgaXQmIzM5O3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHRoZSBTcGFyeDUgU29DIHN3aXRjaC4gU2luY2UgdGhlIFNwYXJ4NSBpcyBhIGRlZGljYXRlZCBoYXJkd2FyZSBzd2l0Y2ggU29DLCBpdCBpcyB1bmxpa2VseSB0byBiZSBwcmVzZW50IGluIGdlbmVyaWMgUUVNVSBjb25maWd1cmF0aW9ucy4gVG8gY29uZmlybSB0aGlzLCBJIHdpbGwgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIGFuZCB2ZXJpZnkgaWYgdGhlcmUgaXMgYW55IGVtdWxhdGlvbiBzdXBwb3J0IGF2YWlsYWJsZS4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2AgZGlyZWN0b3J5IHNob3VsZCByZXZlYWwgd2hldGhlciBpdCYjMzk7cyB0aWVkIHRvIFBDSSBJRHMgb3IgcGxhdGZvcm0gZGV2aWNlIGJpbmRpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O01PRFVMRV9ERVZJQ0VfVEFCTEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MTEwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtY2hwX3NwYXJ4NV9tYXRjaFtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0xMTA5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6MTExMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtY2hwX3NwYXJ4NV9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMTExMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxNjoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzc4CgkJCQkJCQlvdXRwdXQ6IDc4CgkJCQkJCQl0aG91Z2h0czogNDg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1mYWxzZTogQSBEZWVwIERpdmUqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdC4gVGhpcyBwYXRjaCB0YXJnZXRzIGFuIE9GIChPcGVuIEZpcm13YXJlL0RldmljZSBUcmVlKSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IHNldHMgb2ZmIGEgZmxhZy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZXZlbiBlbXVsYXRlIHRoaXMgaW4gUUVNVT8gVHlwaWNhbGx5LCBTb0Mtc3BlY2lmaWMgc3dpdGNoZXMgbGlrZSB0aGlzIGFyZW4mIzM5O3Qgd2VsbC1zdXBwb3J0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGBuZG9fc2V0X3J4X21vZGVfYXN5bmNgLiBJcyB0aGlzIGEgYnJhbmQtbmV3IG5ldGRldiBvcGVyYXRpb24sIG9yIGp1c3QgYSByZW5hbWU/IEFoLCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgZGlyZWN0IHN3YXAgZnJvbSBgLm5kb19zZXRfcnhfbW9kZWAgdG8gYC5uZG9fc2V0X3J4X21vZGVfYXN5bmNgIHdpdGhpbiBgc3Bhcng1X3BvcnRfbmV0ZGV2X29wc2AuIE5vIGNvcmUga2VybmVsIGxvZ2ljIGlzIHRvdWNoZWQ7IGl0JiMzOTtzIGFsbCB3aXRoaW4gdGhlIGBzcGFyeDVgIGRyaXZlciBhbmQgYHZjYXBgICh3aGljaCBJIGtub3cgaXMgTWljcm9jaGlwIHNwZWNpZmljKS4KCkdpdmVuIHRoYXQgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgKE1pY3JvY2hpcCBTcGFyeDUpLCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IGl0IHJlcXVpcmVzIGVpdGhlciBhY3R1YWwgaGFyZHdhcmUgb3IgYSB2ZXJ5IHNwZWNpZmljIFNvQyBlbXVsYXRpb24gbm90IHByZXNlbnQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIGh1Z2UgaHVyZGxlIGZvciBmdXp6aW5nLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCYjMzk7cyBjaXJjbGUgYmFjay4gQ2FuIHdlIGV2ZW4gaW5zdGFudGlhdGUgYHNwYXJ4NWAgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZT8gUGxhdGZvcm0gZGV2aWNlcyAqY2FuKiBzb21ldGltZXMgYmUgYnJvdWdodCB1cCB0aHJvdWdoIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHN5emthbGxlciYjMzk7cyBwc2V1ZG8tZGV2aWNlcyBpZiB0aGV5IGRvbiYjMzk7dCBkZXBlbmQgb24gaGFyZHdhcmUgcmVzcG9uc2VzIGR1cmluZyBwcm9iaW5nLiBCdXQgZXZlbiBpZiB0aGV5IHByb2JlZCwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyB3b24mIzM5O3QgYmVoYXZlIHdpdGhvdXQgcHJvcGVyIGVtdWxhdGlvbi4KClRoZSBjcml0ZXJpYSBzdGF0ZTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuLi4gdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsgVGhpcyBkZWZpbml0ZWx5IGZhbGxzIGludG8gdGhhdCBjYXRlZ29yeTsgaXQmIzM5O3MgYSB2ZW5kb3Itc3BlY2lmaWMgU29DIHN3aXRjaCBkcml2ZXIuCgpPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBvdGhlciBjaGFuZ2VzLiBUaGVyZSYjMzk7cyBhbHNvIGB2Y2FwX2FwaV9kZWJ1Z2ZzLmNgLCB3aGljaCBpcyBqdXN0IGRlYnVnZnMgc3R1ZmYsIGFuZCBgc3Bhcng1X3ZjYXBfaW1wbC5jYCwgdXNpbmcgdGhlIG5ldyBkZWJ1Z2ZzLiBGaW5hbGx5LCBgc3Bhcng1X25ldGRldi5jYCBzd2FwcyBgLm5kb19zZXRfcnhfbW9kZWAgdG8gYC5uZG9fc2V0X3J4X21vZGVfYXN5bmNgLgoKU28sIGl0JiMzOTtzIGFsbCBNaWNyb2NoaXAgU3Bhcng1IC8gVkNBUCBkcml2ZXIgY29kZS4KCkdpdmVuIHRoaXMgdGhvcm91Z2ggYW5hbHlzaXMsIEkmIzM5O20gY29tZm9ydGFibGUgcmV0dXJuaW5nIFdvcnRoRnV6emluZz1mYWxzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgU29DIHN3aXRjaCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIFZDQVAgZGVidWdmcyBjb2RlLiBUaGlzIGlzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBTb0Mgc3dpdGNoIGRyaXZlciBhbmQgaXRzIGFzc29jaWF0ZWQgVkNBUCBkZWJ1Z2ZzIGNvZGUuIFRoaXMgaXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDE2OjI4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxNjoyODowOC4xMzM2ODA3MDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTkwMDkyMjcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlIE1pY3JvY2hpcCBTcGFyeDUgU29DIHN3aXRjaCBkcml2ZXIgYW5kIGl0cyBhc3NvY2lhdGVkIFZDQVAgZGVidWdmcyBjb2RlLiBUaGlzIGlzIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50cywgbWFraW5nIGl0IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTY6Mjg6MDguMTMzNjg2NzcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQyOTg3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNGExZTNiYzc2ZmY1NmU5YmIxMGM4NTIxMjZjZThkYjZmM2ZiMTM5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDE3IDE2OjI4OjA3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcXG5pbmRleCAxZDM0YWY3ODE2NmEzLi40ZGVkZjVkOTI2NDE2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcXG5AQCAtMTYyLDEzICsxNjIsMTggQEAgc3RhdGljIGludCBzcGFyeDVfcG9ydF9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4tc3RhdGljIHZvaWQgc3Bhcng1X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuK3N0YXRpYyBpbnQgc3Bhcng1X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxcbiB7XFxuIFxcdHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KGRldik7XFxuIFxcdHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSA9IHBvcnQtXFx1MDAzZXNwYXJ4NTtcXG4gXFxuIFxcdGlmICghdGVzdF9iaXQocG9ydC1cXHUwMDNlcG9ydG5vLCBzcGFyeDUtXFx1MDAzZWJyaWRnZV9tYXNrKSlcXG4tXFx0XFx0X19kZXZfbWNfc3luYyhkZXYsIHNwYXJ4NV9tY19zeW5jLCBzcGFyeDVfbWNfdW5zeW5jKTtcXG4rXFx0XFx0cmV0dXJuIF9faHdfYWRkcl9zeW5jX2RldihtYywgZGV2LCBzcGFyeDVfbWNfc3luYyxcXG4rXFx0XFx0XFx0XFx0XFx0ICBzcGFyeDVfbWNfdW5zeW5jKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X2dldF9waHlzX3BvcnRfbmFtZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbkBAIC0yNDksNyArMjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0ge1xcbiBcXHQubmRvX29wZW4gICAgICAgICAgICAgICA9IHNwYXJ4NV9wb3J0X29wZW4sXFxuIFxcdC5uZG9fc3RvcCAgICAgICAgICAgICAgID0gc3Bhcng1X3BvcnRfc3RvcCxcXG4gXFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSBzcGFyeDVfcG9ydF94bWl0X2ltcGwsXFxuLVxcdC5uZG9fc2V0X3J4X21vZGUgICAgICAgID0gc3Bhcng1X3NldF9yeF9tb2RlLFxcbitcXHQubmRvX3NldF9yeF9tb2RlX2FzeW5jICA9IHNwYXJ4NV9zZXRfcnhfbW9kZSxcXG4gXFx0Lm5kb19nZXRfcGh5c19wb3J0X25hbWUgPSBzcGFyeDVfcG9ydF9nZXRfcGh5c19wb3J0X25hbWUsXFxuIFxcdC5uZG9fc2V0X21hY19hZGRyZXNzICAgID0gc3Bhcng1X3NldF9tYWNfYWRkcmVzcyxcXG4gXFx0Lm5kb192YWxpZGF0ZV9hZGRyICAgICAgPSBldGhfdmFsaWRhdGVfYWRkcixcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xcbmluZGV4IGNmMzMyZGU2YmY3MzYuLjJkZWUyY2UxOWZjZTcgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xcbkBAIC0yMDc3LDggKzIwNzcsOSBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXFxuIFxcdGRpciA9IHZjYXBfZGVidWdmcyhzcGFyeDUtXFx1MDAzZWRldiwgc3Bhcng1LVxcdTAwM2VkZWJ1Z2ZzX3Jvb3QsIGN0cmwpO1xcbiBcXHRmb3IgKGlkeCA9IDA7IGlkeCBcXHUwMDNjIGNvbnN0cy1cXHUwMDNlbl9wb3J0czsgKytpZHgpXFxuIFxcdFxcdGlmIChzcGFyeDUtXFx1MDAzZXBvcnRzW2lkeF0pXFxuLVxcdFxcdFxcdHZjYXBfcG9ydF9kZWJ1Z2ZzKHNwYXJ4NS1cXHUwMDNlZGV2LCBkaXIsIGN0cmwsXFxuLVxcdFxcdFxcdFxcdFxcdCAgc3Bhcng1LVxcdTAwM2Vwb3J0c1tpZHhdLVxcdTAwM2VuZGV2KTtcXG4rXFx0XFx0XFx0dmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHNwYXJ4NS1cXHUwMDNlZGV2LCBkaXIsIGN0cmwsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzcGFyeDUtXFx1MDAzZXBvcnRzW2lkeF0tXFx1MDAzZW5kZXYsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCBzcGFyeDUtXFx1MDAzZXBvcnRzW2lkeF0tXFx1MDAzZXBvcnRubyk7XFxuIFxcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xcbmluZGV4IGUwYzY1YzdhYjIzZTEuLjQ3NmY3NDk2YTlkNDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5jXFxuQEAgLTQwMCw2ICs0MDAsMjcgQEAgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmcyk7XFxuIFxcbit2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbitcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydG5vKVxcbit7XFxuK1xcdHN0cnVjdCB2Y2FwX3BvcnRfZGVidWdmc19pbmZvICppbmZvO1xcbitcXHRjaGFyIG5hbWVbMTZdO1xcbitcXG4rXFx0aW5mbyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaW5mbyksIEdGUF9LRVJORUwpO1xcbitcXHRpZiAoIWluZm8pXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuK1xcdGluZm8tXFx1MDAzZXZjdHJsID0gdmN0cmw7XFxuK1xcdGluZm8tXFx1MDAzZW5kZXYgPSBuZGV2O1xcbitcXG4rXFx0c25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCBcXFwicCV1XFxcIiwgcG9ydG5vKTtcXG4rXFx0ZGVidWdmc19jcmVhdGVfZmlsZShuYW1lLCAwNDQ0LCBwYXJlbnQsIGluZm8sIFxcdTAwMjZ2Y2FwX3BvcnRfZGVidWdmc19mb3BzKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm8pO1xcbitcXG4gLyogU2hvdyB0aGUgZnVsbCBWQ0FQIGluc3RhbmNlIGRhdGEgKHJ1bGVzIHdpdGggYWxsIGZpZWxkcykgKi9cXG4gc3RhdGljIGludCB2Y2FwX2RlYnVnZnNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZClcXG4ge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmhcXG5pbmRleCA5ZjJjNTliNWY2ZjUzLi43ZGM2ZTM0MTFhNGQ5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuaFxcbkBAIC0xOCw2ICsxOCwxMiBAQCB2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxcbiBcXHRcXHQgICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuIFxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XFxuIFxcbit2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4rXFx0XFx0XFx0ICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXFxuK1xcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbitcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydG5vKTtcXG4rXFxuIC8qIENyZWF0ZSBhIGRlYnVnRlMgZW50cnkgZm9yIGEgdmNhcCBpbnN0YW5jZSAqL1xcbiBzdHJ1Y3QgZGVudHJ5ICp2Y2FwX2RlYnVnZnMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCk7XFxuQEAgLTMwLDYgKzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4ge1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgcG9ydG5vKVxcbit7XFxuK31cXG4rXFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRlbnRyeSAqdmNhcF9kZWJ1Z2ZzKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXFxuIFxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDE2OjI4OjA4LjU5ODY4OTg0NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1NDM1ODk5OTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IFNvQyBzd2l0Y2ggZHJpdmVyIGFuZCBpdHMgYXNzb2NpYXRlZCBWQ0FQIGRlYnVnZnMgY29kZS4gVGhpcyBpcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE0YTFlM2JjNzZmZjU2ZTliYjEwYzg1MjEyNmNlOGRiNmYzZmIxMzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAxNjoyODowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcbmluZGV4IDFkMzRhZjc4MTY2YTMuLjRkZWRmNWQ5MjY0MTYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9uZXRkZXYuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbmV0ZGV2LmNcbkBAIC0xNjIsMTMgKzE2MiwxOCBAQCBzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4tc3RhdGljIHZvaWQgc3Bhcng1X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4rc3RhdGljIGludCBzcGFyeDVfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbitcdFx0XHQgICAgICBzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHJfbGlzdCAqdWMsXG4rXHRcdFx0ICAgICAgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKm1jKVxuIHtcbiBcdHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KGRldik7XG4gXHRzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUgPSBwb3J0LVx1MDAzZXNwYXJ4NTtcbiBcbiBcdGlmICghdGVzdF9iaXQocG9ydC1cdTAwM2Vwb3J0bm8sIHNwYXJ4NS1cdTAwM2VicmlkZ2VfbWFzaykpXG4tXHRcdF9fZGV2X21jX3N5bmMoZGV2LCBzcGFyeDVfbWNfc3luYywgc3Bhcng1X21jX3Vuc3luYyk7XG4rXHRcdHJldHVybiBfX2h3X2FkZHJfc3luY19kZXYobWMsIGRldiwgc3Bhcng1X21jX3N5bmMsXG4rXHRcdFx0XHRcdCAgc3Bhcng1X21jX3Vuc3luYyk7XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBzcGFyeDVfcG9ydF9nZXRfcGh5c19wb3J0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC0yNDksNyArMjU0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzID0ge1xuIFx0Lm5kb19vcGVuICAgICAgICAgICAgICAgPSBzcGFyeDVfcG9ydF9vcGVuLFxuIFx0Lm5kb19zdG9wICAgICAgICAgICAgICAgPSBzcGFyeDVfcG9ydF9zdG9wLFxuIFx0Lm5kb19zdGFydF94bWl0ICAgICAgICAgPSBzcGFyeDVfcG9ydF94bWl0X2ltcGwsXG4tXHQubmRvX3NldF9yeF9tb2RlICAgICAgICA9IHNwYXJ4NV9zZXRfcnhfbW9kZSxcbitcdC5uZG9fc2V0X3J4X21vZGVfYXN5bmMgID0gc3Bhcng1X3NldF9yeF9tb2RlLFxuIFx0Lm5kb19nZXRfcGh5c19wb3J0X25hbWUgPSBzcGFyeDVfcG9ydF9nZXRfcGh5c19wb3J0X25hbWUsXG4gXHQubmRvX3NldF9tYWNfYWRkcmVzcyAgICA9IHNwYXJ4NV9zZXRfbWFjX2FkZHJlc3MsXG4gXHQubmRvX3ZhbGlkYXRlX2FkZHIgICAgICA9IGV0aF92YWxpZGF0ZV9hZGRyLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbmluZGV4IGNmMzMyZGU2YmY3MzYuLjJkZWUyY2UxOWZjZTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV92Y2FwX2ltcGwuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfdmNhcF9pbXBsLmNcbkBAIC0yMDc3LDggKzIwNzcsOSBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpXG4gXHRkaXIgPSB2Y2FwX2RlYnVnZnMoc3Bhcng1LVx1MDAzZWRldiwgc3Bhcng1LVx1MDAzZWRlYnVnZnNfcm9vdCwgY3RybCk7XG4gXHRmb3IgKGlkeCA9IDA7IGlkeCBcdTAwM2MgY29uc3RzLVx1MDAzZW5fcG9ydHM7ICsraWR4KVxuIFx0XHRpZiAoc3Bhcng1LVx1MDAzZXBvcnRzW2lkeF0pXG4tXHRcdFx0dmNhcF9wb3J0X2RlYnVnZnMoc3Bhcng1LVx1MDAzZWRldiwgZGlyLCBjdHJsLFxuLVx0XHRcdFx0XHQgIHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdLVx1MDAzZW5kZXYpO1xuK1x0XHRcdHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzcGFyeDUtXHUwMDNlZGV2LCBkaXIsIGN0cmwsXG4rXHRcdFx0XHRcdFx0IHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdLVx1MDAzZW5kZXYsXG4rXHRcdFx0XHRcdFx0IHNwYXJ4NS1cdTAwM2Vwb3J0c1tpZHhdLVx1MDAzZXBvcnRubyk7XG4gXG4gXHRyZXR1cm4gZXJyO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbmluZGV4IGUwYzY1YzdhYjIzZTEuLjQ3NmY3NDk2YTlkNDQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY1xuQEAgLTQwMCw2ICs0MDAsMjcgQEAgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9wb3J0X2RlYnVnZnMpO1xuIFxuK3ZvaWQgdmNhcF9wb3J0X2RlYnVnZnNfcG9ydG5vKHN0cnVjdCBkZXZpY2UgKmRldixcbitcdFx0XHQgICAgICBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4rXHRcdFx0ICAgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4rXHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4rXHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnRubylcbit7XG4rXHRzdHJ1Y3QgdmNhcF9wb3J0X2RlYnVnZnNfaW5mbyAqaW5mbztcbitcdGNoYXIgbmFtZVsxNl07XG4rXG4rXHRpbmZvID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCppbmZvKSwgR0ZQX0tFUk5FTCk7XG4rXHRpZiAoIWluZm8pXG4rXHRcdHJldHVybjtcbitcbitcdGluZm8tXHUwMDNldmN0cmwgPSB2Y3RybDtcbitcdGluZm8tXHUwMDNlbmRldiA9IG5kZXY7XG4rXG4rXHRzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksIFwicCV1XCIsIHBvcnRubyk7XG4rXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKG5hbWUsIDA0NDQsIHBhcmVudCwgaW5mbywgXHUwMDI2dmNhcF9wb3J0X2RlYnVnZnNfZm9wcyk7XG4rfVxuK0VYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyk7XG4rXG4gLyogU2hvdyB0aGUgZnVsbCBWQ0FQIGluc3RhbmNlIGRhdGEgKHJ1bGVzIHdpdGggYWxsIGZpZWxkcykgKi9cbiBzdGF0aWMgaW50IHZjYXBfZGVidWdmc19zaG93KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmhcbmluZGV4IDlmMmM1OWI1ZjZmNTMuLjdkYzZlMzQxMWE0ZDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9kZWJ1Z2ZzLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuaFxuQEAgLTE4LDYgKzE4LDEyIEBAIHZvaWQgdmNhcF9wb3J0X2RlYnVnZnMoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsXG4gXHRcdCAgICAgICBzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCxcbiBcdFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcbiBcbit2b2lkIHZjYXBfcG9ydF9kZWJ1Z2ZzX3BvcnRubyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4rXHRcdFx0ICAgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuK1x0XHRcdCAgICAgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsLFxuK1x0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuK1x0XHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0bm8pO1xuK1xuIC8qIENyZWF0ZSBhIGRlYnVnRlMgZW50cnkgZm9yIGEgdmNhcCBpbnN0YW5jZSAqL1xuIHN0cnVjdCBkZW50cnkgKnZjYXBfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiBcdFx0XHQgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwpO1xuQEAgLTMwLDYgKzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2Y2FwX3BvcnRfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZW50cnkgKnBhcmVudCxcbiB7XG4gfVxuIFxuK3N0YXRpYyBpbmxpbmUgdm9pZCB2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm8oc3RydWN0IGRldmljZSAqZGV2LFxuK1x0XHRcdFx0XHQgICAgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuK1x0XHRcdFx0XHQgICAgc3RydWN0IHZjYXBfY29udHJvbCAqdmN0cmwsXG4rXHRcdFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbitcdFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBwb3J0bm8pXG4re1xuK31cbitcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBkZW50cnkgKnZjYXBfZGVidWdmcyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRcdCAgc3RydWN0IGRlbnRyeSAqcGFyZW50LFxuIFx0XHRcdFx0XHQgIHN0cnVjdCB2Y2FwX2NvbnRyb2wgKnZjdHJsKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMTY6Mjg6MDguNTk4NjkxMzY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI5MzAwMDQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNwYXJ4NSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBTcGFyeDUgZHJpdmVyLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBtb2RpZmljYXRpb25zIHRvIGBzcGFyeDVfbmV0ZGV2LmNgLCBgc3Bhcng1X3ZjYXBfaW1wbC5jYCwgYW5kIHRoZSBkZWJ1Z2ZzIEFQSSBmaWxlcyB3aXRoaW4gdGhlIHZjYXAgZGlyZWN0b3J5LiBTcGVjaWZpY2FsbHksIHRoZXNlIGZpbGVzIGFyZTogYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X25ldGRldi5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jYCwgYGRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2RlYnVnZnMuY2AsIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGlfZGVidWdmcy5oYC5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZXMgc2VlbSB0byByZXZvbHZlIGFyb3VuZCB0aGUgUlggbW9kZSBzZXR0aW5nIGFuZCB0aGUgZGVidWcgaW50ZXJmYWNlLiBJIHNlZSB0aGF0IGBzcGFyeDVfc2V0X3J4X21vZGVgIGlzIGJlaW5nIHVwZGF0ZWQgdG8gYWNjZXB0IGxpc3RzIG9mIHVuaWNhc3QgYW5kIG11bHRpY2FzdCBoYXJkd2FyZSBhZGRyZXNzZXMsIGFuZCBub3cgcmV0dXJucyBhbiBpbnRlZ2VyLiBJdCBhbHNvIGVtcGxveXMgYF9faHdfYWRkcl9zeW5jX2RldmAsIHdoaWNoIEkgcmVjb2duaXplIGFzIGEgaGVscGVyIGZvciBzeW5jaW5nIGhhcmR3YXJlIGFkZHJlc3NlcyB3aXRoIHRoZSBkZXZpY2UncyBtdWx0aWNhc3QgZmlsdGVyLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSBkcml2ZXIgaXMgbGlrZWx5IG1hbmFnaW5nIHRoZSBoYXJkd2FyZSdzIE1BQyBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzLiBUaGUgb3RoZXIgbm90YWJsZSBjaGFuZ2UgaXMgdXBkYXRpbmcgdGhlIGBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzYCBzdHJ1Y3R1cmUsIGNoYW5naW5nIHRoZSBgbmRvX3NldF9yeF9tb2RlYCBmdW5jdGlvbiB0byBhbiBhc3luY2hyb25vdXMgdmVyc2lvbi5cblxuVGhlIGFkZGl0aW9uIG9mIGB2Y2FwX3BvcnRfZGVidWdmc19wb3J0bm9gIGFuZCBpdHMgdXNlIGluIGBzcGFyeDVfdmNhcF9pbml0YCBzdWdnZXN0cyBhIG5ldyBkZWJ1ZyBpbnRlcmZhY2UgZWxlbWVudCBmb3IgdGhlIHZjYXAgY29tcG9uZW50LiBUaGlzIGNvdWxkIGJlIHVzZWZ1bCBmb3IgcG9ydC1zcGVjaWZpYyBkZWJ1Z2dpbmcgYW5kIG1vbml0b3JpbmcuXG5cbk5vdywgYXMgYW4gZXhwZXJ0IGluIG5ldHdvcmsgZHJpdmVyIGRldmVsb3BtZW50LCBJIGFtIGltbWVkaWF0ZWx5IGFza2luZyBteXNlbGYsIGlzIHRoZSBTcGFyeDUgZHJpdmVyIHJlYWNoYWJsZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IEdpdmVuIHRoYXQgdGhlIGRyaXZlciBpcyBmb3IgTWljcm9jaGlwIFNwYXJ4NSwgSSBzdXNwZWN0IGl0J3MgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIHRoZSBTcGFyeDUgU29DIHN3aXRjaC4gU2luY2UgdGhlIFNwYXJ4NSBpcyBhIGRlZGljYXRlZCBoYXJkd2FyZSBzd2l0Y2ggU29DLCBpdCBpcyB1bmxpa2VseSB0byBiZSBwcmVzZW50IGluIGdlbmVyaWMgUUVNVSBjb25maWd1cmF0aW9ucy4gVG8gY29uZmlybSB0aGlzLCBJIHdpbGwgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlIGFuZCB2ZXJpZnkgaWYgdGhlcmUgaXMgYW55IGVtdWxhdGlvbiBzdXBwb3J0IGF2YWlsYWJsZS4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L2AgZGlyZWN0b3J5IHNob3VsZCByZXZlYWwgd2hldGhlciBpdCdzIHRpZWQgdG8gUENJIElEcyBvciBwbGF0Zm9ybSBkZXZpY2UgYmluZGluZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2ODEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNjIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QxNjoyODoxNC44OTE2OTQyNDlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM2MzM5MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTU9EVUxFX0RFVklDRV9UQUJMRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MTEwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtY2hwX3NwYXJ4NV9tYXRjaFtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTExMDktfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6MTExMDpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtY2hwX3NwYXJ4NV9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTExMTEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDE2OjI4OjE0Ljk0NTMzMzc2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwODkyMjkyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGhlcmUncyB3aGF0IEkndmUgZ290LiBUaGlzIHBhdGNoIHRhcmdldHMgYW4gT0YgKE9wZW4gRmlybXdhcmUvRGV2aWNlIFRyZWUpIGRldmljZSwgd2hpY2ggaW1tZWRpYXRlbHkgc2V0cyBvZmYgYSBmbGFnLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBldmVuIGVtdWxhdGUgdGhpcyBpbiBRRU1VPyBUeXBpY2FsbHksIFNvQy1zcGVjaWZpYyBzd2l0Y2hlcyBsaWtlIHRoaXMgYXJlbid0IHdlbGwtc3VwcG9ydGVkIGluIHN0YW5kYXJkIFFFTVUuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGBuZG9fc2V0X3J4X21vZGVfYXN5bmNgLiBJcyB0aGlzIGEgYnJhbmQtbmV3IG5ldGRldiBvcGVyYXRpb24sIG9yIGp1c3QgYSByZW5hbWU/IEFoLCBsb29rcyBsaWtlIGl0J3MgYSBkaXJlY3Qgc3dhcCBmcm9tIGAubmRvX3NldF9yeF9tb2RlYCB0byBgLm5kb19zZXRfcnhfbW9kZV9hc3luY2Agd2l0aGluIGBzcGFyeDVfcG9ydF9uZXRkZXZfb3BzYC4gTm8gY29yZSBrZXJuZWwgbG9naWMgaXMgdG91Y2hlZDsgaXQncyBhbGwgd2l0aGluIHRoZSBgc3Bhcng1YCBkcml2ZXIgYW5kIGB2Y2FwYCAod2hpY2ggSSBrbm93IGlzIE1pY3JvY2hpcCBzcGVjaWZpYykuXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgKE1pY3JvY2hpcCBTcGFyeDUpLCBpdCdzIGhpZ2hseSBsaWtlbHkgaXQgcmVxdWlyZXMgZWl0aGVyIGFjdHVhbCBoYXJkd2FyZSBvciBhIHZlcnkgc3BlY2lmaWMgU29DIGVtdWxhdGlvbiBub3QgcHJlc2VudCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBodWdlIGh1cmRsZSBmb3IgZnV6emluZy5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCdzIGNpcmNsZSBiYWNrLiBDYW4gd2UgZXZlbiBpbnN0YW50aWF0ZSBgc3Bhcng1YCB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlPyBQbGF0Zm9ybSBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBicm91Z2h0IHVwIHRocm91Z2ggZGV2aWNlIHRyZWUgb3ZlcmxheXMgb3Igc3l6a2FsbGVyJ3MgcHNldWRvLWRldmljZXMgaWYgdGhleSBkb24ndCBkZXBlbmQgb24gaGFyZHdhcmUgcmVzcG9uc2VzIGR1cmluZyBwcm9iaW5nLiBCdXQgZXZlbiBpZiB0aGV5IHByb2JlZCwgdGhlIGhhcmR3YXJlIHJlZ2lzdGVycyB3b24ndCBiZWhhdmUgd2l0aG91dCBwcm9wZXIgZW11bGF0aW9uLlxuXG5UaGUgY3JpdGVyaWEgc3RhdGU6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLi4uIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIFRoaXMgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnk7IGl0J3MgYSB2ZW5kb3Itc3BlY2lmaWMgU29DIHN3aXRjaCBkcml2ZXIuXG5cbk9rYXksIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgb3RoZXIgY2hhbmdlcy4gVGhlcmUncyBhbHNvIGB2Y2FwX2FwaV9kZWJ1Z2ZzLmNgLCB3aGljaCBpcyBqdXN0IGRlYnVnZnMgc3R1ZmYsIGFuZCBgc3Bhcng1X3ZjYXBfaW1wbC5jYCwgdXNpbmcgdGhlIG5ldyBkZWJ1Z2ZzLiBGaW5hbGx5LCBgc3Bhcng1X25ldGRldi5jYCBzd2FwcyBgLm5kb19zZXRfcnhfbW9kZWAgdG8gYC5uZG9fc2V0X3J4X21vZGVfYXN5bmNgLlxuXG5TbywgaXQncyBhbGwgTWljcm9jaGlwIFNwYXJ4NSAvIFZDQVAgZHJpdmVyIGNvZGUuXG5cbkdpdmVuIHRoaXMgdGhvcm91Z2ggYW5hbHlzaXMsIEknbSBjb21mb3J0YWJsZSByZXR1cm5pbmcgV29ydGhGdXp6aW5nPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzc4LCJPdXRwdXRUb2tlbnMiOjc4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDE2OjI4OjI0LjAzNDU2NTExNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB0aGUgTWljcm9jaGlwIFNwYXJ4NSBTb0Mgc3dpdGNoIGRyaXZlciBhbmQgaXRzIGFzc29jaWF0ZWQgVkNBUCBkZWJ1Z2ZzIGNvZGUuIFRoaXMgaXMgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnRzLCBtYWtpbmcgaXQgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZSBNaWNyb2NoaXAgU3Bhcng1IFNvQyBzd2l0Y2ggZHJpdmVyIGFuZCBpdHMgYXNzb2NpYXRlZCBWQ0FQIGRlYnVnZnMgY29kZS4gVGhpcyBpcyB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudHMsIG1ha2luZyBpdCB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDE2OjI4OjI0LjAzNDU5MjE0NVoiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgc92v[1] Phase: Running StartedAt: 2026-08-17 16:28:35 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgc92v[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-17 16:28:35 +0000 UTC FinishedAt: 2026-08-17 16:28:40 +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,}