Name: series-workflows7gpv Phase: Failed StartedAt: 2026-09-04 14:19:51 +0000 UTC FinishedAt: 2026-09-04 14:23:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflows7gpv[0] Phase: Succeeded StartedAt: 2026-09-04 14:19:51 +0000 UTC FinishedAt: 2026-09-04 14:23:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflows7gpv[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 14:19:51 +0000 UTC FinishedAt: 2026-09-04 14:23:19 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwYzcxZjZmYjJjNmE2YTA1ZTYyYzdkZDRkYmJhNGI4NWNhZWYxZTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxNDoyMToyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG5pbmRleCBiMzFlZDRiZTdiZGMxLi41M2Q5MTZjZmNiOGU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG5AQCAtMjU0LDEwICYjNDM7MjU0LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24gcmVnaW9uLFxuIFx0aWYgKGJhc2UgJiM0Mzsgc2l6ZSBcdTAwM2UgcmVnaW9uLnNpemUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0dm1hLVx1MDAzZXZtX3Bnb2ZmID0gKHJlZ2lvbi5hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKSAmIzQzOyBwZ29mZjtcbiBcdHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGV2aWNlKHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QpO1xuIFxuLVx0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cdTAwM2V2bV9zdGFydCwgdm1hLVx1MDAzZXZtX3Bnb2ZmLFxuJiM0MztcdHJldHVybiBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtXHUwMDNldm1fc3RhcnQsXG4mIzQzO1x0XHRcdFx0ICAocmVnaW9uLmFkZHIgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpICYjNDM7IHBnb2ZmLFxuIFx0XHRcdFx0ICBzaXplLCB2bWEtXHUwMDNldm1fcGFnZV9wcm90KTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYzcxZjZmYjJjNmE2YTA1ZTYyYzdkZDRkYmJhNGI4NWNhZWYxZTYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAxNDoyMToyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jIGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMKaW5kZXggYjMxZWQ0YmU3YmRjMS4uNTNkOTE2Y2ZjYjhlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMKQEAgLTI1NCwxMCAmIzQzOzI1NCwxMCBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbiwKIAlpZiAoYmFzZSAmIzQzOyBzaXplICZndDsgcmVnaW9uLnNpemUpCiAJCXJldHVybiAtRUlOVkFMOwogCi0Jdm1hLSZndDt2bV9wZ29mZiA9IChyZWdpb24uYWRkciAmZ3Q7Jmd0OyBQQUdFX1NISUZUKSAmIzQzOyBwZ29mZjsKIAl2bWEtJmd0O3ZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLSZndDt2bV9wYWdlX3Byb3QpOwogCi0JcmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS0mZ3Q7dm1fc3RhcnQsIHZtYS0mZ3Q7dm1fcGdvZmYsCiYjNDM7CXJldHVybiBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtJmd0O3ZtX3N0YXJ0LAomIzQzOwkJCQkgIChyZWdpb24uYWRkciAmZ3Q7Jmd0OyBQQUdFX1NISUZUKSAmIzQzOyBwZ29mZiwKIAkJCQkgIHNpemUsIHZtYS0mZ3Q7dm1fcGFnZV9wcm90KTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgYSBQb3RlbnRpYWwgU3l6a2FsbGVyIFBhdGNoIGZvciBWRklPL0NEWCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIHRoZSBnb2FsIGlzIHRvIGV2YWx1YXRlIGl0cyBzdWl0YWJpbGl0eSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgKmlzKiBDRFgsIGFuZCBpcyBpdCBldmVuIGZ1enphYmxlPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQmIzM5O3MgcmVhY2hhYmxlIGluIGEgdHlwaWNhbCBzeXN0ZW0gb3IgaWYgaXQmIzM5O3MgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcC4KCk15IHBsYW4gaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSB1c2luZyBteSBzdGFuZGFyZCB0b29scywgcHJvYmFibHkgYGdpdCBncmVwYCBhbmQgc29tZSBmaWxlIHJlYWRpbmcsIHRvIHF1aWNrbHkgZ2V0IGEgbGF5IG9mIHRoZSBsYW5kLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSBDRFggZHJpdmVyIGFjdHVhbGx5ICpkb2VzKiBhbmQgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkIGFuZCB1c2VkLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaXMgYW4gaW1wb3J0YW50IGJ1cyBhbmQgcGFydCBvZiB0aGUgbWFpbiBrZXJuZWwuCgpOb3csIGxvb2tpbmcgYXQgdGhlIGFjdHVhbCBwYXRjaDogaXQmIzM5O3Mgd2l0aGluIGB2ZmlvX2NkeF9tbWFwX21taW9gLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgc21hbGwgY2hhbmdlIHRvIGhvdyBhIG1lbW9yeSByZWdpb24gaXMgbWFwcGVkLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGNhbGN1bGF0aW5nIHRoZSBwYWdlIG9mZnNldCBhbmQgYGlvX3JlbWFwX3Bmbl9yYW5nZWAuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG9yaWdpbmFsIGNvZGUgd29ya3MgYW5kIGhvdyB0aGUgbW9kaWZpY2F0aW9uIGNoYW5nZXMgdGhlIGJlaGF2aW91ci4gTXkgZmlyc3QgcHJpb3JpdHkgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgc28gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBidXMgaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkZJT19DRFgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IGZzbC1tYy9cbmRyaXZlcnMvdmZpby9NYWtlZmlsZToxODpvYmotJChDT05GSUdfVkZJT19DRFgpICYjNDM7PSBjZHgvXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTctXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6ODpjb25maWcgVkZJT19DRFhcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlLTUtXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSAmIzQzOz0gdmZpby1jZHgub1xuZHJpdmVycy92ZmlvL2NkeC9NYWtlZmlsZS03LVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI0ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNTAtXHRwZ29mZiA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwMjZcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI1MTpcdFx0KCgxVSBcdTAwM2NcdTAwM2MgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjUyLVx0YmFzZSA9IHBnb2ZmIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI2ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjcxLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjcyOlx0aW5kZXggPSB2bWEtXHUwMDNldm1fcGdvZmYgXHUwMDNlXHUwMDNlIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3My1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01LVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjojaWZuZGVmIFZGSU9fQ0RYX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NzojZGVmaW5lIFZGSU9fQ0RYX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtOC1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMC1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19DRFhfT0ZGU0VUX1NISUZUICAgIDQwXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMi1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTEzPXN0YXRpYyBpbmxpbmUgdTY0IHZmaW9fY2R4X2luZGV4X3RvX29mZnNldCh1MzIgaW5kZXgpXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xNC17XG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDoxNTpcdHJldHVybiAoKHU2NCkoaW5kZXgpIFx1MDAzY1x1MDAzYyBWRklPX0NEWF9PRkZTRVRfU0hJRlQpO1xuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTYtfVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTU5PXN0YXRpYyB2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTYzLVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjQ6I2VuZGlmIC8qIFZGSU9fQ0RYX1BSSVZBVEVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgaGFyZHdhcmU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENEWCBCdXMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGludG8gdGhpcyBmdXJ0aGVyLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgJiMzNDtDRFgmIzM0OyBidXMgYWN0dWFsbHkgKmlzKi4gVGhlIG5hbWVzIHN1Z2dlc3QgYSBjb25uZWN0aW9uLCBidXQgSSBjYW4mIzM5O3QgYXNzdW1lLiBNeSBmaXJzdCBzdG9wIHNob3VsZCBiZSB0aGUgS2NvbmZpZyBmaWxlcyByZWxhdGVkIHRvIGl0IOKAkyBgZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvY2R4L0tjb25maWdgLiBUaGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhleSYjMzk7bGwgdGVsbCBtZSBpZiBpdOKAmXMgYSBWRklPLXNwZWNpZmljIGJ1cywgYSBtb3JlIGdlbmVyYWwgQ0RYIGJ1cywgYW5kIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhbmQgaW50ZW5kZWQgdXNlcyBhcmUuIFRoYXQmIzM5O3MgdGhlIGJlc3Qgd2F5IHRvIGdyYXNwIGl0cyBwdXJwb3NlIGFuZCBiZWhhdmlvciB3aXRoaW4gdGhlIGtlcm5lbCBlY29zeXN0ZW0uIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIHNldCBtZSB1cCB0byBsb29rIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIFZGSU8gQ0RYIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgVkZJT19DRFhcbiAgIDk6XHRcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIENEWF9CVVNcbiAgMTE6XHRcdHNlbGVjdCBFVkVOVEZEXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIERyaXZlciB0byBlbmFibGUgVkZJTyBzdXBwb3J0IGZvciB0aGUgZGV2aWNlcyBvbiBDRFggYnVzLlxuICAxNDpcdFx0ICBUaGlzIGlzIHJlcXVpcmVkIHRvIG1ha2UgdXNlIG9mIENEWCBkZXZpY2VzIHByZXNlbnQgaW5cbiAgMTU6XHRcdCAgdGhlIHN5c3RlbSB1c2luZyB0aGUgVkZJTyBmcmFtZXdvcmsuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NDYKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgS2NvbmZpZyBvZiB0aGUgQ0RYIERyaXZlcnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBzdGFydGVkIG9uIHRoaXMuLi4gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9jZHgvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIENEWCBkcml2ZXJzLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gc3RhcnQsIHJpZ2h0PyBJJiMzOTtsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGdsZWFuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb2R1bGVzLCBhbnkgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyBmcm9tIHRoZXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHdoaWNoIGRyaXZlcnMgYXJlIGJ1aWx0IGlzIGxhaWQgb3V0LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIGhvdyB0aGV5IGFyZSBjb250cm9sbGVkLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDRFhfQlVTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvTWFrZWZpbGU9MTk0PW9iai0kKENPTkZJR19EUk1fQUNDRUwpXHRcdCYjNDM7PSBhY2NlbC9cbmRyaXZlcnMvTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19DRFhfQlVTKVx0XHQmIzQzOz0gY2R4L1xuZHJpdmVycy9NYWtlZmlsZS0xOTYtb2JqLSQoQ09ORklHX0RQTEwpXHRcdCYjNDM7PSBkcGxsL1xuLS1cbmRyaXZlcnMvY2R4L0tjb25maWctNy1cbmRyaXZlcnMvY2R4L0tjb25maWc6ODpjb25maWcgQ0RYX0JVU1xuZHJpdmVycy9jZHgvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtDRFggQnVzIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlLTctXG5kcml2ZXJzL2NkeC9NYWtlZmlsZTo4OmNjZmxhZ3MteSAmIzQzOz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9JiMzOTtcJiMzNDtDRFhfQlVTXCYjMzQ7JiMzOTtcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTktXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQ0RYX0JVUykgJiM0Mzs9IGNkeC5vIGNvbnRyb2xsZXIvXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19DRFhfQlVTKSAmIzQzOz0gY2R4X21zaS5vXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xNC1lbmRpZlxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTc1Nj1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTc5NS1cdGRldl9zZXRfbmFtZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y2R4LSUwMng6JTAyeFwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jOjc5NjpcdFx0ICAgICAoKGNkeC1cdTAwM2VpZCBcdTAwM2NcdTAwM2MgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQpIHwgKGNkeF9kZXYtXHUwMDNlYnVzX251bSBcdTAwMjYgQ0RYX0JVU19OVU1fTUFTSykpLFxuZHJpdmVycy9jZHgvY2R4LmMtNzk3LVx0XHQgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODQxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjg0MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cbmRyaXZlcnMvY2R4L2NkeC5jPTg0ND1zdHJ1Y3QgZGV2aWNlICpjZHhfYnVzX2FkZChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04NjItXHRkZXZfc2V0X25hbWUoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYsIFwmIzM0O2NkeC0lMDJ4XCYjMzQ7LFxuZHJpdmVycy9jZHgvY2R4LmM6ODYzOlx0XHQgICAgICgoY2R4LVx1MDAzZWlkIFx1MDAzY1x1MDAzYyBDRFhfQ09OVFJPTExFUl9JRF9TSElGVCkgfCAoYnVzX251bSBcdTAwMjYgQ0RYX0JVU19OVU1fTUFTSykpKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg2NC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04ODgtfVxuZHJpdmVycy9jZHgvY2R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9idXNfYWRkLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtODkwLVxuZHJpdmVycy9jZHgvY2R4LmM9ODkxPWludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05MTMtfVxuZHJpdmVycy9jZHgvY2R4LmM6OTE0OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxuZHJpdmVycy9jZHgvY2R4LmM9OTE2PXZvaWQgY2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05MjgtfVxuZHJpdmVycy9jZHgvY2R4LmM6OTI5OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy05MzAtXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTE2MD1zdHJ1Y3QgaXJxX2RvbWFpbiAqY2R4X21zaV9kb21haW5faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTE5Mi19XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MTkzOkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9tc2lfZG9tYWluX2luaXQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnLTctXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWc6ODppZiBDRFhfQlVTXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWctOS1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9MjU2PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MjU3Ok1PRFVMRV9JTVBPUlRfTlMoXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjQ3LS8qXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjQ4OiAqIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNDktICogQ0RYIGJ1cyBob3N0cyBkZXZpY2VzIChmdW5jdGlvbnMpIHRoYXQgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZSBDb21wb3NhYmxlXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI1Ni0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNTc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTXHRcdFx0XHQweDFcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNTg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX01TR1NFVFx0XHRcdDB4MVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI1OS0jdW5kZWYgTUNfQ01EXzB4MV9QUklWSUxFR0VfQ1RHXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI2Mi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNjM6LyogTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19JTiBtc2dyZXF1ZXN0ICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19JTl9MRU5cdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjY1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NjovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVCBtc2dyZXNwb25zZSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNjgtLypcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjcxLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI3MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0JVU19DT1VOVF9PRlNUXHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlRfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNzQtXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3Ni0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI3NzogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNzgtICogRW51bWVyYXRlIENEWCBidXMgZGV2aWNlcyBvbiBhIGdpdmVuIGJ1c1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyODA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNcdFx0XHRcdDB4MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19NU0dTRVRcdFx0XHQweDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODItI3VuZGVmIE1DX0NNRF8weDJfUFJJVklMRUdFX0NUR1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mjg2Oi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTiBtc2dyZXF1ZXN0ICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mjg3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODgtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODktICogQnVzIG51bWJlciB0byBlbnVtZXJhdGUsIGluIHJhbmdlIDAgdG8gQlVTX0NPVU5ULTEsIGFzIHJldHVybmVkIGJ5XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjkwOiAqIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjkxLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVNfT0ZTVFx0XHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fQlVTX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTQtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mjk1Oi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVQgbXNncmVzcG9uc2UgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTctLypcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzAxLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX09GU1RcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0RFVklDRV9DT1VOVF9MRU5cdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDQtXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwNi0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwNzogKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwOC0gKiBSZXR1cm5zIGRldmljZSBpZGVudGlmaWNhdGlvbiBhbmQgTU1JTy9NU0kgcmVzb3VyY2UgZGF0YSBmb3IgYSBDRFggZGV2aWNlLlxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMTgtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzE5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdcdFx0XHRcdFx0MHgzXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzIwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfTVNHU0VUXHRcdFx0XHRcdDB4M1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMyMS0jdW5kZWYgTUNfQ01EXzB4M19QUklWSUxFR0VfQ1RHXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMyNC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjU6LyogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0xFTlx0XHRcdFx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzI3LS8qIERldmljZSBidXMgbnVtYmVyLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzI4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fQlVTX09GU1RcdFx0XHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVNfTEVOXHRcdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzMwLS8qIERldmljZSBudW1iZXIgcmVsYXRpdmUgdG8gdGhlIGJ1cywgaW4gcmFuZ2UgMCB0byBERVZJQ0VfQ09VTlQtMSBmb3IgdGhhdCBidXMgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0VfT0ZTVFx0XHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0RFVklDRV9MRU5cdFx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzM0Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVCBtc2dyZXNwb25zZSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9MRU5cdFx0XHRcdDg4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzM2LS8qIDE2LWJpdCBWZW5kb3IgaWRlbnRpZmllciwgY29tcGxpYW50IHdpdGggUENJLVNJRyBWZW5kb3JJRCBhc3NpZ25tZW50LiAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WRU5ET1JfSURfT0ZTVFx0XHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEX0xFTlx0XHRcdDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzktLyogMTYtYml0IERldmljZSBJRCBhc3NpZ25lZCBieSB0aGUgdmVuZG9yICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRF9PRlNUXHRcdFx0MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM0MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfSURfTEVOXHRcdFx0MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM0Mi0vKlxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNDUtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQ2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSURfT0ZTVFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQ3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSURfTEVOXHRcdDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNDgtLypcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzUxLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEX09GU1RcdFx0NlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEX0xFTlx0XHQyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzU0LS8qIDI0LWJpdCBEZXZpY2UgQ2xhc3MgY29kZSwgY29tcGxpYW50IHdpdGggUENJLVNJRyBEZXZpY2UgQ2xhc3MgY29kZXMgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTX09GU1RcdFx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzU2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9DTEFTU19MRU5cdFx0XHQzXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzU3LS8qIDgtYml0IHZlbmRvci1hc3NpZ25lZCByZXZpc2lvbiAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fT0ZTVFx0XHQxMVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fTEVOXHRcdDFcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjAtLyogUmVzZXJ2ZWQgKGFsaWdubWVudCkgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfUkVTRVJWRURfT0ZTVFx0XHRcdDEyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzYyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFU0VSVkVEX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjMtLyogTU1JTyByZWdpb24gMCBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfT0ZTVFx0XHQxNlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19PRlNUXHRcdDE2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX0xCTlx0XHQxMjhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfT0ZTVFx0XHQyMFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9MQk5cdFx0MTYwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzczOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzc0LS8qIE1NSU8gcmVnaW9uIDAgc2l6ZSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfT0ZTVFx0XHQyNFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19PRlNUXHRcdDI0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX0xCTlx0XHQxOTJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfT0ZTVFx0XHQyOFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9MQk5cdFx0MjI0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzg1LS8qIE1NSU8gcmVnaW9uIDEgYmFzZSBhZGRyZXNzIChidXMgYWRkcmVzcyksIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX09GU1RcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fT0ZTVFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MQk5cdFx0MjU2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX09GU1RcdFx0MzZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEJOXHRcdDI4OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM5Ni0vKiBNTUlPIHJlZ2lvbiAxIHNpemUsIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX09GU1RcdFx0NDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fT0ZTVFx0XHQ0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19MQk5cdFx0MzIwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDAyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDAzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX09GU1RcdFx0NDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfTEJOXHRcdDM1MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQwNy0vKiBNTUlPIHJlZ2lvbiAyIGJhc2UgYWRkcmVzcyAoYnVzIGFkZHJlc3MpLCAwIGlmIHVudXNlZCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9PRlNUXHRcdDQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xFTlx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDEwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX09GU1RcdFx0NDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fTEJOXHRcdDM4NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9PRlNUXHRcdDUyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX0xCTlx0XHQ0MTZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MTgtLyogTU1JTyByZWdpb24gMiBzaXplLCAwIGlmIHVudXNlZCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9PRlNUXHRcdDU2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xFTlx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX09GU1RcdFx0NTZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEJOXHRcdDQ0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MT19XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9PRlNUXHRcdDYwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xCTlx0XHQ0ODBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mjg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfSElfV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MjktLyogTU1JTyByZWdpb24gMyBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfT0ZTVFx0XHQ2NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19PRlNUXHRcdDY0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDMzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX0xCTlx0XHQ1MTJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfT0ZTVFx0XHQ2OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9MQk5cdFx0NTQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDQwLS8qIE1NSU8gcmVnaW9uIDMgc2l6ZSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfT0ZTVFx0XHQ3MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19PRlNUXHRcdDcyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX0xCTlx0XHQ1NzZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfT0ZTVFx0XHQ3NlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9MQk5cdFx0NjA4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDUwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDUxLS8qIE1TSSB2ZWN0b3IgY291bnQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX09GU1RcdFx0XHQ4MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NU0lfQ09VTlRfTEVOXHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ1NC0vKiBSZXF1ZXN0ZXIgSUQgdXNlZCBieSBkZXZpY2UgKFNNTVUgU3RyZWFtSUQsIEdJQyBJVFMgRGV2aWNlSUQpICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9PRlNUXHRcdFx0ODRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfUkVRVUVTVEVSX0lEX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NTctXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU4Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMiBtc2dyZXNwb25zZSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9MRU5cdFx0XHRcdDkyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDYwLS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSBmb3IgR0lDIElUUyBEZXZpY2VJRCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEX09GU1RcdDg4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDYyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX1JFUVVFU1RFUl9ERVZJQ0VfSURfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NjMtXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2NS0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2NjogKiBNQ19DTURfQ0RYX0JVU19ET1dOXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDY3LSAqIEFzc2VydGluZyByZXNldCBvbiB0aGUgQ0RYIGJ1cyBjYXVzZXMgYWxsIGRldmljZXMgb24gdGhlIGJ1cyB0byBiZSBxdWllc2NlZC5cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDc3LSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ3ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05cdFx0XHRcdFx0MHg0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDc5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRE9XTl9NU0dTRVRcdFx0XHQweDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODAtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDgxOi8qIE1DX0NNRF9DRFhfQlVTX0RPV05fSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fTEVOXHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4My0vKiBCdXMgbnVtYmVyIHRvIHB1dCBpbiByZXNldCwgaW4gcmFuZ2UgMCB0byBCVVNfQ09VTlQtMSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX09GU1RcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDg2LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4Ny0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4ODogKiBNQ19DTURfQ0RYX0JVU19ET1dOX09VVCBtc2dyZXNwb25zZTogVGhlIGJ1cyBpcyBxdWllc2NlZCwgbm8gZnVydGhlclxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4OS0gKiB1cHN0cmVhbSB0cmFmZmljIGZvciBkZXZpY2VzIG9uIHRoaXMgYnVzLlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ5MC0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0OTE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX09VVF9MRU5cdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDkyLVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTQtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0OTU6ICogTUNfQ01EX0NEWF9CVVNfVVBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTYtICogQWZ0ZXIgYnVzIHJlc2V0IGlzIGRlLWFzc2VydGVkLCBkZXZpY2VzIGFyZSBpbiBhIHN0YXRlIHdoaWNoIGlzIGZ1bmN0aW9uYWxseVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDUtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTA2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBcdFx0XHRcdFx0MHg1XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTA3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfTVNHU0VUXHRcdFx0MHg1XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNTA4LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwOTovKiBNQ19DTURfQ0RYX0JVU19VUF9JTiBtc2dyZXF1ZXN0ICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTEwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfSU5fTEVOXHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxMS0vKiBCdXMgbnVtYmVyIHRvIHRha2Ugb3V0IG9mIHJlc2V0LCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTEyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfSU5fQlVTX09GU1RcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0JVU19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo1MTU6LyogTUNfQ01EX0NEWF9CVVNfVVBfT1VUIG1zZ3Jlc3BvbnNlOiBUaGUgYnVzIGNhbiBub3cgYmUgZW51bWVyYXRlZC4gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo1MTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19VUF9PVVRfTEVOXHRcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNy1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9MTA9aW50IGNkeF9tY2RpX2dldF9udW1fYnVzZXMoc3RydWN0IGNkeF9tY2RpICpjZHgpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyOlx0TUNESV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTMtXHRzaXplX3Qgb3V0bGVuO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNjpcdHJldCA9IGNkeF9tY2RpX3JwYyhjZHgsIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVMsIE5VTEwsIDAsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTctXHRcdFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXHUwMDI2b3V0bGVuKTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjAtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MjE6XHRpZiAob3V0bGVuICE9IE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yMi1cdFx0cmV0dXJuIC1FSU87XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MjQ6XHRyZXR1cm4gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfRU5VTV9CVVNFU19PVVRfQlVTX0NPVU5UKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yNS19XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTI3PWludCBjZHhfbWNkaV9nZXRfbnVtX2RldnMoc3RydWN0IGNkeF9tY2RpICpjZHgsIGludCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTI4LXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoyOTpcdE1DRElfREVDTEFSRV9CVUYob3V0YnVmLCBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzA6XHRNQ0RJX0RFQ0xBUkVfQlVGKGluYnVmLCBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fTEVOKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zMS1cdHNpemVfdCBvdXRsZW47XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTMzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjM0Olx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0JVUywgYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzY6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVMsIGluYnVmLCBzaXplb2YoaW5idWYpLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTM3LVx0XHRcdCAgIG91dGJ1Ziwgc2l6ZW9mKG91dGJ1ZiksIFx1MDAyNm91dGxlbik7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjQxOlx0aWYgKG91dGxlbiAhPSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0xFTilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00Mi1cdFx0cmV0dXJuIC1FSU87XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NDQ6XHRyZXR1cm4gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9ERVZJQ0VfQ09VTlQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQ1LX1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9NDc9aW50IGNkeF9tY2RpX2dldF9kZXZfY29uZmlnKHN0cnVjdCBjZHhfbWNkaSAqY2R4LFxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy01MC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTE6XHRNQ0RJX0RFQ0xBUkVfQlVGKG91dGJ1ZiwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTI6XHRNQ0RJX0RFQ0xBUkVfQlVGKGluYnVmLCBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTUzLVx0c3RydWN0IHJlc291cmNlICpyZXMgPSBcdTAwMjZkZXZfcGFyYW1zLVx1MDAzZXJlc1swXTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNTctXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTg6XHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVMsIGJ1c19udW0pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjU5Olx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fREVWSUNFLCBkZXZfbnVtKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02MC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo2MTpcdHJldCA9IGNkeF9tY2RpX3JwYyhjZHgsIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Mi1cdFx0XHQgICBvdXRidWYsIHNpemVvZihvdXRidWYpLCBcdTAwMjZvdXRsZW4pO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02NS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo2NjpcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX0xFTilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Ny1cdFx0cmV0dXJuIC1FSU87XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTcxLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjcyOlx0cmVxX2lkID0gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNzMtXHRkZXZfcGFyYW1zLVx1MDAzZXJlcV9pZCA9IHJlcV9pZDtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNzUtXHRkZXZfcGFyYW1zLVx1MDAzZW1zaV9kZXZfaWQgPSBNQ0RJX0RXT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo3NjpcdFx0XHRcdFx0ICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX1JFUVVFU1RFUl9ERVZJQ0VfSUQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc3LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc4LVx0ZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnQgPSAwO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc5Olx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRSkgIT0gMCkge1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTgwLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLnN0YXJ0ID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MTpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTgyLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmVuZCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6ODM6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFKSAmIzQzO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg0LVx0XHRcdFx0ICAgTUNESV9RV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6ODU6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFKSAtIDE7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODYtXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODktXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6OTA6XHRpZiAoTUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFKSAhPSAwKSB7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTEtXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjkyOlx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTMtXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZW5kID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5NDpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpICYjNDM7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTUtXHRcdFx0XHQgICBNQ0RJX1FXT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5NjpcdFx0XHRcdFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkUpIC0gMTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy05Ny1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDAtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTAxOlx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRSkgIT0gMCkge1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEwMi1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5zdGFydCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTAzOlx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA0LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmVuZCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTA1Olx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRSkgJiM0MztcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDYtXHRcdFx0XHQgICBNQ0RJX1FXT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDc6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFKSAtIDE7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA4LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExMS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTI6XHRpZiAoTUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFKSAhPSAwKSB7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEzLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLnN0YXJ0ID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTQ6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTUtXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZW5kID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTY6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFKSAmIzQzO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExNy1cdFx0XHRcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjExODpcdFx0XHRcdFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkUpIC0gMTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTktXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTIyLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyMzpcdGRldl9wYXJhbXMtXHUwMDNldmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjQ6XHRkZXZfcGFyYW1zLVx1MDAzZWRldmljZSA9IE1DRElfV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTI1LVx0ZGV2X3BhcmFtcy1cdTAwM2VzdWJzeXNfdmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjY6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSUQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyNy1cdGRldl9wYXJhbXMtXHUwMDNlc3Vic3lzX2RldmljZSA9IE1DRElfV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI4Olx0XHRcdFx0XHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMjktXHRkZXZfcGFyYW1zLVx1MDAzZWNsYXNzID0gTUNESV9EV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTMwOlx0XHRcdFx0ICAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9DTEFTUykgXHUwMDI2IDB4RkZGRkZGO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMTpcdGRldl9wYXJhbXMtXHUwMDNlcmV2aXNpb24gPSBNQ0RJX0JZVEUob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT04pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMjpcdGRldl9wYXJhbXMtXHUwMDNlbnVtX21zaSA9IE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NU0lfQ09VTlQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEzMy1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9MTM3PWludCBjZHhfbWNkaV9idXNfZW5hYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEzOC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTM5Olx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfVVBfSU5fTEVOKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNDAtXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0MS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNDI6XHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19VUF9JTl9CVVMsIGJ1c19udW0pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE0MzpcdHJldCA9IGNkeF9tY2RpX3JwYyhjZHgsIE1DX0NNRF9DRFhfQlVTX1VQLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNDQtXHRcdFx0ICAgTlVMTCwgMCwgTlVMTCk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTE0OT1pbnQgY2R4X21jZGlfYnVzX2Rpc2FibGUoc3RydWN0IGNkeF9tY2RpICpjZHgsIHU4IGJ1c19udW0pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUwLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTE6XHRNQ0RJX0RFQ0xBUkVfQlVGKGluYnVmLCBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUyLVx0aW50IHJldDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTU0Olx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfRE9XTl9JTl9CVVMsIGJ1c19udW0pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE1NTpcdHJldCA9IGNkeF9tY2RpX3JwYyhjZHgsIE1DX0NNRF9DRFhfQlVTX0RPV04sIGluYnVmLCBzaXplb2YoaW5idWYpLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1Ni1cdFx0XHQgICBOVUxMLCAwLCBOVUxMKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYz0xNjE1PXUzMiByNjAwX2dwdV9jaGVja19zb2Z0X3Jlc2V0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jLTE2NjctXHRpZiAoR18wMDBFNTBfTUNCX0JVU1kodG1wKSB8IEdfMDAwRTUwX01DRFpfQlVTWSh0bXApIHxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jOjE2Njg6XHQgICAgR18wMDBFNTBfTUNEWV9CVVNZKHRtcCkgfCBHXzAwMEU1MF9NQ0RYX0JVU1kodG1wKSB8XG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYy0xNjY5LVx0ICAgIEdfMDAwRTUwX01DRFdfQlVTWSh0bXApKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMGQuaC0xODMzLSNkZWZpbmVcdFx0R18wMDBFNTBfTUNEWV9CVVNZKHgpXHRcdFx0KCgoeCkgXHUwMDNlXHUwMDNlIDExKSBcdTAwMjYgMSlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMGQuaDoxODM0OiNkZWZpbmVcdFx0R18wMDBFNTBfTUNEWF9CVVNZKHgpXHRcdFx0KCgoeCkgXHUwMDNlXHUwMDNlIDEyKSBcdTAwMjYgMSlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMGQuaC0xODM1LSNkZWZpbmVcdFx0R18wMDBFNTBfTUNEV19CVVNZKHgpXHRcdFx0KCgoeCkgXHUwMDNlXHUwMDNlIDEzKSBcdTAwMjYgMSlcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11LmM9MTg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKiBjb25zdCBpb21tdV9idXNlc1tdID0ge1xuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0xOTktI2VuZGlmXG5kcml2ZXJzL2lvbW11L2lvbW11LmM6MjAwOiNpZmRlZiBDT05GSUdfQ0RYX0JVU1xuZHJpdmVycy9pb21tdS9pb21tdS5jLTIwMS1cdFx1MDAyNmNkeF9idXNfdHlwZSxcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc9OD1jb25maWcgVkZJT19DRFhcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZzoxMDpcdGRlcGVuZHMgb24gQ0RYX0JVU1xuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTExLVx0c2VsZWN0IEVWRU5URkRcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0zNjE9TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1ZGSU8gZm9yIENEWCBkZXZpY2VzIC0gVXNlciBMZXZlbCBtZXRhLWRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozNjI6TU9EVUxFX0lNUE9SVF9OUyhcJiMzNDtDRFhfQlVTXCYjMzQ7KTtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtOC1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDo5OiNpZm5kZWYgX0NEWF9CVVNfSF9cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxMDojZGVmaW5lIF9DRFhfQlVTX0hfXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTEtXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE4LSNkZWZpbmUgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQgNFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE5OiNkZWZpbmUgQ0RYX0JVU19OVU1fTUFTSyAweEZcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMC1cbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MjgxPXN0YXRpYyBpbmxpbmUgdm9pZCBjZHhfZGlzYWJsZV9tc2koc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTI4Ni1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyODc6I2VuZGlmIC8qIF9DRFhfQlVTX0hfICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MDMKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgQ0RYIENvbnRyb2xsZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcnMgYXJlIHJlZ2lzdGVyaW5nIHRoZW1zZWx2ZXMgYXMgYGNkeF9jb250cm9sbGVyYCBpbnN0YW5jZXMuIFRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCBpcyB0byBsZXZlcmFnZSBteSBvbGQgZnJpZW5kLCBgZ3JlcGAuIEkmIzM5O2xsIHJ1biBhIHNlYXJjaCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgYGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIGxpc3Qgb2YgYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGViYXNlIHdoZXJlIHRoaXMgcmVnaXN0cmF0aW9uIGlzIGhhcHBlbmluZy4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCB3aGljaCBzcGVjaWZpYyBkcml2ZXJzIGFyZSBtYW5hZ2luZyB0aGVzZSBjb250cm9sbGVycyBhbmQgd2hhdCB0aGVpciByZXNwZWN0aXZlIHJvbGVzIGFyZS4gVGhpcyBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaWYgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHhfcmVnaXN0ZXJfY29udHJvbGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jZHguYz04ODk9RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2J1c19hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04OTAtXG5kcml2ZXJzL2NkeC9jZHguYzo4OTE6aW50IGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuZHJpdmVycy9jZHgvY2R4LmMtODkyLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05MTMtfVxuZHJpdmVycy9jZHgvY2R4LmM6OTE0OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5oPTMxPXN0cnVjdCBjZHhfZGV2X3BhcmFtcyB7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmgtNDktLyoqXG5kcml2ZXJzL2NkeC9jZHguaDo1MDogKiBjZHhfcmVnaXN0ZXJfY29udHJvbGxlciAtIFJlZ2lzdGVyIGEgQ0RYIGNvbnRyb2xsZXIgYW5kIGl0cyBwb3J0c1xuZHJpdmVycy9jZHgvY2R4LmgtNTEtICpcdFx0b24gdGhlIENEWCBidXMuXG4tLVxuZHJpdmVycy9jZHgvY2R4LmgtNTUtICovXG5kcml2ZXJzL2NkeC9jZHguaDo1NjppbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xuZHJpdmVycy9jZHgvY2R4LmgtNTctXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTQ2PXZvaWQgY2R4X3JwbXNnX3Bvc3RfcHJvYmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQ4LVx0LyogUmVnaXN0ZXIgQ0RYIGNvbnRyb2xsZXIgd2l0aCBDRFggYnVzIGRyaXZlciAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ5Olx0aWYgKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKGNkeCkpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTAtXHRcdGRldl9lcnIoY2R4LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBjb250cm9sbGVyXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0NjIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhlIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgIGZpbGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25hbGl0eSB0aGF0IGZpbGUgaXMgcmVzcG9uc2libGUgZm9yIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIHdoYXQgdGhlIGBjZHhgIGNvbnRyb2xsZXIgaXMgZG9pbmcuIEEgZ29vZCBmaXJzdCBzdGVwIHdvdWxkIGJlIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24gYW5kIHVzYWdlLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSB3aGVyZSB0aGlzIGZpbGUgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIFRpbWUgdG8gZmlyZSB1cCBgZ3JlcGAgd2l0aGluIHRoZSBgZHJpdmVycy9jZHgvY29udHJvbGxlci9gIGRpcmVjdG9yeSBhbmQgc2VlIHdoYXQgcG9wcyB1cCwgc2VhcmNoaW5nIGZvciBtZW50aW9ucyBvZiB0aGUgYGNkeF9jb250cm9sbGVyLmNgIGZpbGUuIEhvcGVmdWxseSwgdGhpcyB3aWxsIGxlYWQgbWUgdG8gdGhlIHJlbGV2YW50IGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIG9yIG1vZHVsZSByZWdpc3RyYXRpb24gcG9pbnRzIGFuZCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW50ZWdyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkeF9jb250cm9sbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xuZHJpdmVycy9jZHgvY2R4LmMtODAtLyogTG9jayB0byBwcm90ZWN0IGNvbnRyb2xsZXIgb3BzICovXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmMtODItLyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz05NT1pbnQgY2R4X2Rldl9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTctXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjk4Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTk5LVx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MTQ2PXN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNDktXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTEtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MjIzPWludCBjZHhfc2V0X21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XG5kcml2ZXJzL2NkeC9jZHguYzoyMjU6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMjI2LVx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MjM5PWludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjQwLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0yNDItXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0zMDI9c3RhdGljIGludCBjZHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMwNS1cdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzA2Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cdGludCBlcnJvcjtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0zMzc9c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zNDAtXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0zNDItXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzQ5PXN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTM1Mi1cdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzUzOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM1NC1cdHUzMiBpbnB1dF9pZCA9IGNkeF9kZXYtXHUwMDNlcmVxX2lkO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NTktXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz01NzU9c3RhdGljIHNzaXplX3QgcmVzY2FuX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU3Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo1Nzg6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTU3OS1cdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU4Ny1cbmRyaXZlcnMvY2R4L2NkeC5jOjU4ODpcdGd1YXJkKG11dGV4KShcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU4OS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz03NTY9aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo3NTg6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGRldl9wYXJhbXMtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtNzU5LVx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9ODQyPUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9kZXZpY2VfYWRkLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtODQzLVxuZHJpdmVycy9jZHgvY2R4LmM6ODQ0OnN0cnVjdCBkZXZpY2UgKmNkeF9idXNfYWRkKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY2R4LmMtODQ1LXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz04ODk9RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2J1c19hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04OTAtXG5kcml2ZXJzL2NkeC9jZHguYzo4OTE6aW50IGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuZHJpdmVycy9jZHgvY2R4LmMtODkyLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04OTQtXG5kcml2ZXJzL2NkeC9jZHguYzo4OTU6XHRyZXQgPSBpZGFfYWxsb2NfcmFuZ2UoXHUwMDI2Y2R4X2NvbnRyb2xsZXJfaWRhLCAwLCAgTUFYX0NEWF9DT05UUk9MTEVSUyAtIDEsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9jZHgvY2R4LmMtODk2LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTkwMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjkwMzpcdG11dGV4X2xvY2soXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYy05MDQtXHRjZHgtXHUwMDNlaWQgPSByZXQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTA5LVx0Y2R4LVx1MDAzZWNvbnRyb2xsZXJfcmVnaXN0ZXJlZCA9IHRydWU7XG5kcml2ZXJzL2NkeC9jZHguYzo5MTA6XHRtdXRleF91bmxvY2soXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYy05MTEtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9OTE0PUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxuZHJpdmVycy9jZHgvY2R4LmM6OTE2OnZvaWQgY2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbmRyaXZlcnMvY2R4L2NkeC5jLTkxNy17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTIwLVxuZHJpdmVycy9jZHgvY2R4LmM6OTIxOlx0bXV0ZXhfbG9jayhcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTkyMi1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05MjQtXHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoY2R4LVx1MDAzZWRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjkyNTpcdGlkYV9mcmVlKFx1MDAyNmNkeF9jb250cm9sbGVyX2lkYSwgY2R4LVx1MDAzZWlkKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTkyNi1cbmRyaXZlcnMvY2R4L2NkeC5jOjkyNzpcdG11dGV4X3VubG9jayhcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTkyOC19XG4tLVxuZHJpdmVycy9jZHgvY2R4Lmg9MzE9c3RydWN0IGNkeF9kZXZfcGFyYW1zIHtcbmRyaXZlcnMvY2R4L2NkeC5oOjMyOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XG5kcml2ZXJzL2NkeC9jZHguaC0zMy1cdHN0cnVjdCBkZXZpY2UgKnBhcmVudDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC01NS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jZHguaC01Ny1cbi0tXG5kcml2ZXJzL2NkeC9jZHguaC02MS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5oOjYyOnZvaWQgY2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jZHguaC02My1cbi0tXG5kcml2ZXJzL2NkeC9jZHguaD03Mz1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC04My0gKi9cbmRyaXZlcnMvY2R4L2NkeC5oOjg0OnN0cnVjdCBkZXZpY2UgKmNkeF9idXNfYWRkKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5oLTg1LVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0zOT1zdGF0aWMgdm9pZCBjZHhfbXNpX3dyaXRlX2lycV91bmxvY2soc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSlcbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNDItXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UobXNpX2Rlc2MtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo0MzpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNDQtXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9Njg9aW50IGNkeF9lbmFibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTY5LXtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo3MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNzEtXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9ODQ9dm9pZCBjZHhfZGlzYWJsZV9tc2koc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtODUte1xuZHJpdmVycy9jZHgvY2R4X21zaS5jOjg2Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy04Ny1cdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfQ0RYX0NPTlRST0xMRVIpICYjNDM7PSBjZHgtY29udHJvbGxlci5vXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL01ha2VmaWxlOjk6Y2R4LWNvbnRyb2xsZXItb2JqcyA6PSBjZHhfY29udHJvbGxlci5vIGNkeF9ycG1zZy5vIG1jZGkubyBtY2RpX2Z1bmN0aW9ucy5vXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTEyLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjEzOiNpbmNsdWRlIFwmIzM0O2NkeF9jb250cm9sbGVyLmhcJiMzNDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNC0jaW5jbHVkZSBcJiMzNDsuLi9jZHguaFwmIzM0O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0zMT1zdGF0aWMgY29uc3Qgc3RydWN0IGNkeF9tY2RpX29wcyBtY2RpX29wcyA9IHtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMzUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MzY6c3RhdGljIGludCBjZHhfYnVzX2VuYWJsZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0zNy17XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQxOnN0YXRpYyBpbnQgY2R4X2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQyLXtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NDY6dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00Ny17XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTUyLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjUzOnZvaWQgY2R4X3JwbXNnX3ByZV9yZW1vdmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTQte1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01OC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo1OTpzdGF0aWMgaW50IGNkeF9jb25maWd1cmVfZGV2aWNlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTYwLVx0XHRcdFx0dTggYnVzX251bSwgdTggZGV2X251bSxcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtOTItXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6OTM6c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk0LXtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9MTY0PXN0YXRpYyBpbnQgeGxueF9jZHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNjUte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE2NjpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE2Ny1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTIyMj1zdGF0aWMgdm9pZCB4bG54X2NkeF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0yMjMte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjIyNDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMjI1LVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaSA9IGNkeC1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xMy1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaDoxNDp2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xNS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaDoxNjp2b2lkIGNkeF9ycG1zZ19wcmVfcmVtb3ZlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xNy1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE1LSNpbmNsdWRlIFwmIzM0Oy4uL2NkeC5oXCYjMzQ7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjE2OiNpbmNsdWRlIFwmIzM0O2NkeF9jb250cm9sbGVyLmhcJiMzNDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTctI2luY2x1ZGUgXCYjMzQ7bWNkaV9mdW5jdGlvbnMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9NDY9c3RhdGljIGludCBjZHhfYXR0YWNoX3RvX3Jwcm9jKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy00OC1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcjVfY29yZV9ub2RlO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzo0OTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTUwLVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTg1PXN0YXRpYyB2b2lkIGNkeF9kZXRhY2hfdG9fcjUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtODYte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzo4NzpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTg4LVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTk3PXN0YXRpYyBpbnQgY2R4X3JwbXNnX2NiKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtOTkte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxMDA6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNnJwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEwMS1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTExPXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMTIte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxMTM6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMTQtXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTIxPXN0YXRpYyBpbnQgY2R4X3JwbXNnX3Byb2JlKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTIzLVx0c3RydWN0IHJwbXNnX2NoYW5uZWxfaW5mbyBjaGluZm8gPSB7MH07XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjEyNDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyNS1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyNi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTI3Olx0Y2R4X2MgPSAoc3RydWN0IGNkeF9jb250cm9sbGVyICopY2R4X3JwbXNnX2lkX3RhYmxlWzBdLmRyaXZlcl9kYXRhO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjgtXHRjZHhfbWNkaSA9IGNkeF9jLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz0xNDk9c3RhdGljIHZvaWQgY2R4X3JwbXNnX3JlbW92ZShzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUwLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTUxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZycGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNTItXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpID0gY2R4X2MtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTE2OT1pbnQgY2R4X3NldHVwX3JwbXNnKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3MC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjE3MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3Mi1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNEWCBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGhlcmUuIENEWC4uLiByaWdodC4gQ29tcG9zYWJsZSBETUEgc3Vic3lzdGVtIGJ1cy4gVGhhdCByaW5ncyBhIGJlbGwg4oCTIGRlZmluaXRlbHkgaW4gdGhlIEFNRC9YaWxpbnggRlBHQS9Tb0MgZWNvc3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIHRoYXQgY3J1Y2lhbCBsaW5rIGJldHdlZW4gVmVyc2FsIEFDQVAvRlBHQSBkZXZpY2VzIGFuZCB0aGUgUjUgY29yZSwgcmVseWluZyBvbiBtZWNoYW5pc21zIGxpa2UgcnBtc2cvcmVtb3RlcHJvYy4gSSYjMzk7bSB0aGlua2luZyBvZiBjb21tdW5pY2F0aW9uIHZpYSBwbGF0Zm9ybSBkZXZpY2VzIGxpa2UgYHhsbngsdmVyc2FsLW5ldC1jZHhgIG9yIHJlbGF0ZWQgZGV2aWNlcy4KClRpbWUgdG8gY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBub3cuIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhvc2UgYEtjb25maWdgIGZpbGVzIOKAkyBgZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnYCBhbmQgYGRyaXZlcnMvY2R4L0tjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGEgY2xlYXJlciBwaWN0dXJlIG9mIGV4YWN0bHkgd2hhdCBjb21wb25lbnRzIGFyZSBpbnZvbHZlZCBhbmQgaG93IHRoaXMgc3lzdGVtIGlzIGFyY2hpdGVjdGVkLiBUaGF0IGlzIHdoZXJlIHRoZSBrZXkgbGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIENEWCBidXMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBDRFhfQlVTXG4gICA5Olx0XHRib29sIFwmIzM0O0NEWCBCdXMgZHJpdmVyXCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBBUk02NCB8fCBDT01QSUxFX1RFU1RcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgRHJpdmVyIHRvIGVuYWJsZSBDb21wb3NhYmxlIERNQSBUcmFuc2ZlcihDRFgpIEJ1cy4gQ0RYIGJ1c1xuICAxMzpcdFx0ICBleHBvc2VzIEZhYnJpYyBkZXZpY2VzIHdoaWNoIHVzZXMgY29tcG9zYWJsZSBETUEgSVAgdG8gdGhlXG4gIDE0Olx0XHQgIEFQVS4gQ0RYIGJ1cyBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3Igc2Nhbm5pbmcgYW5kIHByb2JpbmdcbiAgMTU6XHRcdCAgb2YgQ0RYIGRldmljZXMuIENEWCBkZXZpY2VzIGFyZSBtZW1vcnkgbWFwcGVkIG9uIHN5c3RlbSBidXNcbiAgMTY6XHRcdCAgZm9yIGVtYmVkZGVkIENQVXMuIENEWCBidXMgdXNlcyBDRFggY29udHJvbGxlciBhbmQgZmlybXdhcmVcbiAgMTc6XHRcdCAgdG8gc2NhbiB0aGVzZSBDRFggZGV2aWNlcy5cbiAgMTg6XHRcbiAgMTk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzE0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENEWF9CVVMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYENEWF9CVVNgIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXMgdGhhdCBgZGVwZW5kcyBvbiBPRiAmYW1wOyZhbXA7IEFSTTY0IHx8IENPTVBJTEVfVEVTVGAgZGlyZWN0aXZlLiBUaGF0JiMzOTtzIGNydWNpYWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXQgcmVxdWlyaW5nIGVpdGhlciB0aGUgcHJlc2VuY2Ugb2YgdGhlIERldmljZSBUcmVlLCBiZWluZyBvbiBhbiBBUk02NCBhcmNoaXRlY3R1cmUsIG9yIHRoZSBgQ09NUElMRV9URVNUYCBvcHRpb24gYmVpbmcgYWN0aXZlLiBFYWNoIG9mIHRoZXNlIGNvbmRpdGlvbnMgY2hhbmdlcyB0aGUgY29udGV4dC4gCgpUaGVuLCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBgQ0RYX0JVU2AsIEkgc2hvdWxkIHJlYWxseSBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2AuIEl0IGlzIGxpa2VseSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFybHkgbGFpZCBvdXQgdGhlcmUsIHdoaWNoIEkgY2FuIHVzZSB0byBpbmZlciB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgQ0RYIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGlmIENEWF9CVVNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQ0RYX0NPTlRST0xMRVJcbiAgMTE6XHRcdHRyaXN0YXRlIFwmIzM0O0NEWCBidXMgY29udHJvbGxlclwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBIQVNfRE1BXG4gIDEzOlx0XHRzZWxlY3QgUkVNT1RFUFJPQ1xuICAxNDpcdFx0c2VsZWN0IFJQTVNHXG4gIDE1Olx0XHRoZWxwXG4gIDE2Olx0XHQgIENEWCBjb250cm9sbGVyIGRyaXZlcyB0aGUgQ0RYIGJ1cy4gSXQgaW50ZXJhY3RzIHdpdGhcbiAgMTc6XHRcdCAgZmlybXdhcmUgdG8gZ2V0IHRoZSBoYXJkd2FyZSBkZXZpY2VzIGFuZCByZWdpc3RlcnMgd2l0aFxuICAxODpcdFx0ICB0aGUgQ0RYIGJ1cy4gU2F5IFkgdG8gZW5hYmxlIHRoZSBDRFggaGFyZHdhcmUgZHJpdmVyLlxuICAxOTpcdFxuICAyMDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAyMTpcdFxuICAyMjpcdGVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODA4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ0RYIERldmljZSBJbnRlZ3JhdGlvbioqCgpPa2F5LCBzbyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBkZWZpbml0ZWx5IGBhbWQ2NGAsIG9yIHg4Nl82NCwgd2hpY2ggaXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGlzIGBDRFhfQlVTYCBkZXBlbmRlbmN5LiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHRpZWQgdG8gYE9GICZhbXA7JmFtcDsgQVJNNjQgfHwgQ09NUElMRV9URVNUYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gYSBDRFggZGV2aWNlICpldmVyKiByZWFsaXN0aWNhbGx5IGJlIHJlZ2lzdGVyZWQgb3IgZXZlbiBjcmVhdGVkIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9uIGBhbWQ2NGAsIG9yIGFueSBjb21tb24gVk0sIGV2ZW4gaWYgYENPTkZJR19DT01QSUxFX1RFU1RgIGlzIGVuYWJsZWQ/IFRoYXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24gaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByYWN0aWNhbGl0aWVzLgoKTXkgbWFpbiBwb2ludCBvZiBjb25mdXNpb24gc3RlbXMgZnJvbSBub3Qga25vd2luZyAqaG93KiBhIENEWCBkZXZpY2UgaXMgY3JlYXRlZCB0byBiZWdpbiB3aXRoLiBXaGF0JiMzOTtzIHRoZSB0cmlnZ2VyaW5nIG1lY2hhbmlzbT8gTGV0IG1lIGRyaWxsIGRvd24gYW5kIGV4YW1pbmUgdGhlIGBjZHhfZGV2aWNlX2FkZGAgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgc2l0ZXMgYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSB3YXlzIGRldmljZXMgYXJlIGFjdHVhbGx5IGFkZGVkIHRvIHRoZSBDRFggYnVzLiBUaGF0IHdpbGwgaWxsdW1pbmF0ZSB0aGUgd2hvbGUgcHJvY2Vzcy4gSSYjMzk7bGwgZm9jdXMgb24gYGNkeF9kZXZpY2VfYWRkYCBhbmQgZXZlcnkgc2luZ2xlIGNhbGxlciBvZiB0aGF0IGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHdoZXJlIEkgbmVlZCB0byBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2RldmljZV9hZGQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY2R4LmM9NzI3PXN0YXRpYyBpbnQgY2R4X2NyZWF0ZV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03NTUtXG5kcml2ZXJzL2NkeC9jZHguYzo3NTY6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODQxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjg0MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cbi0tXG5kcml2ZXJzL2NkeC9jZHguaD02Mj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5oLTY0LS8qKlxuZHJpdmVycy9jZHgvY2R4Lmg6NjU6ICogY2R4X2RldmljZV9hZGQgLSBBZGQgYSBDRFggZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguaC02Ni0gKlx0XHRvbiB0aGUgQ0RYIGJ1cyBhcyBwZXIgdGhlIGRldmljZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXG4tLVxuZHJpdmVycy9jZHgvY2R4LmgtNzItICovXG5kcml2ZXJzL2NkeC9jZHguaDo3MzppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcbmRyaXZlcnMvY2R4L2NkeC5oLTc0LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0MS1cdFx0XHQvKiBBZGQgdGhlIGRldmljZSB0byB0aGUgY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE0MjpcdFx0XHRyZXQgPSBjZHhfZGV2aWNlX2FkZChcdTAwMjZkZXZfcGFyYW1zKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDMtXHRcdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODcxMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBjZHhfZGV2aWNlX2FkZCoqCgpPa2F5LCBzbyBgY2R4X2RldmljZV9hZGRgIOKAkyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCYjMzk7cyAqb25seSogY2FsbGVkIGJ5IGBjZHhfc2Nhbl9kZXZpY2VzYCwgYW5kIHRoYXQmIzM5O3MgZm91bmQgd2l0aGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgcmlnaHQ/IFRvIHJlYWxseSBncmFzcCB3aGF0JiMzOTtzIGhhcHBlbmluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgY2R4X2NvbnRyb2xsZXJgIGlzIHByb2JlZCBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IGZvciB3aGVuIGFuZCB3aHkgYGNkeF9kZXZpY2VfYWRkYCBnZXRzIGNhbGxlZC4gU28sIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AgYW5kIHNlZSB3aGF0IHRoZSBwcm9iaW5nIHNldHVwIGxvb2tzIGxpa2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYwOlx0XHQuc2Nhblx0XHQ9IGNkeF9zY2FuX2RldmljZXMsXG4gMTYxOlx0XHQuZGV2X2NvbmZpZ3VyZVx0PSBjZHhfY29uZmlndXJlX2RldmljZSxcbiAxNjI6XHR9O1xuIDE2MzpcdFxuIDE2NDpcdHN0YXRpYyBpbnQgeGxueF9jZHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiAxNjU6XHR7XG4gMTY2Olx0XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcbiAxNjc6XHRcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4gMTY4Olx0XHRpbnQgcmV0O1xuIDE2OTpcdFxuIDE3MDpcdFx0Y2R4X21jZGkgPSBremFsbG9jX29iaigqY2R4X21jZGkpO1xuIDE3MTpcdFx0aWYgKCFjZHhfbWNkaSlcbiAxNzI6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTczOlx0XG4gMTc0Olx0XHQvKiBTdG9yZSB0aGUgTUNESSBvcHMgKi9cbiAxNzU6XHRcdGNkeF9tY2RpLVx1MDAzZW1jZGlfb3BzID0gXHUwMDI2bWNkaV9vcHM7XG4gMTc2Olx0XHQvKiBNQ0RJIEZXOiBJbml0aWFsaXplIHRoZSBGVyBwYXRoICovXG4gMTc3Olx0XHRyZXQgPSBjZHhfbWNkaV9pbml0KGNkeF9tY2RpKTtcbiAxNzg6XHRcdGlmIChyZXQpIHtcbiAxNzk6XHRcdFx0ZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcmV0LCBcJiMzNDtNQ0RJIEluaXRpYWxpemF0aW9uIGZhaWxlZFxcblwmIzM0Oyk7XG4gMTgwOlx0XHRcdGdvdG8gbWNkaV9pbml0X2ZhaWw7XG4gMTgxOlx0XHR9XG4gMTgyOlx0XG4gMTgzOlx0XHRjZHggPSBremFsbG9jX29iaigqY2R4KTtcbiAxODQ6XHRcdGlmICghY2R4KSB7XG4gMTg1Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gMTg2Olx0XHRcdGdvdG8gY2R4X2FsbG9jX2ZhaWw7XG4gMTg3Olx0XHR9XG4gMTg4Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjZHgpO1xuIDE4OTpcdFxuIDE5MDpcdFx0Y2R4LVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIDE5MTpcdFx0Y2R4LVx1MDAzZXByaXYgPSBjZHhfbWNkaTtcbiAxOTI6XHRcdGNkeC1cdTAwM2VvcHMgPSBcdTAwMjZjZHhfb3BzO1xuIDE5MzpcdFxuIDE5NDpcdFx0LyogQ3JlYXRlIE1TSSBkb21haW4gKi9cbiAxOTU6XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpKVxuIDE5NjpcdFx0XHRjZHgtXHUwMDNlbXNpX2RvbWFpbiA9IGNkeF9tc2lfZG9tYWluX2luaXQoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDE5NzpcdFx0aWYgKCFjZHgtXHUwMDNlbXNpX2RvbWFpbikge1xuIDE5ODpcdFx0XHRyZXQgPSBkZXZfZXJyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCAtRU5PREVWLCBcJiMzNDtjZHhfbXNpX2RvbWFpbl9pbml0KCkgZmFpbGVkXCYjMzQ7KTtcbiAxOTk6XHRcdFx0Z290byBjZHhfbXNpX2ZhaWw7XG4gMjAwOlx0XHR9XG4gMjAxOlx0XG4gMjAyOlx0XHRyZXQgPSBjZHhfc2V0dXBfcnBtc2cocGRldik7XG4gMjAzOlx0XHRpZiAocmV0KSB7XG4gMjA0Olx0XHRcdGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJldCwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBSUE1zZyB0cmFuc3BvcnRcXG5cJiMzNDspO1xuIDIwNTpcdFx0XHRnb3RvIGNkeF9ycG1zZ19mYWlsO1xuIDIwNjpcdFx0fVxuIDIwNzpcdFxuIDIwODpcdFx0cmV0dXJuIDA7XG4gMjA5Olx0XG4gMjEwOlx0Y2R4X3JwbXNnX2ZhaWw6XG4gMjExOlx0XHRpcnFfZG9tYWluX3JlbW92ZShjZHgtXHUwMDNlbXNpX2RvbWFpbik7XG4gMjEyOlx0Y2R4X21zaV9mYWlsOlxuIDIxMzpcdFx0a2ZyZWUoY2R4KTtcbiAyMTQ6XHRjZHhfYWxsb2NfZmFpbDpcbiAyMTU6XHRcdGNkeF9tY2RpX2ZpbmlzaChjZHhfbWNkaSk7XG4gMjE2Olx0bWNkaV9pbml0X2ZhaWw6XG4gMjE3Olx0XHRrZnJlZShjZHhfbWNkaSk7XG4gMjE4Olx0XG4gMjE5Olx0XHRyZXR1cm4gcmV0O1xuIDIyMDpcdH1cbiAyMjE6XHRcbiAyMjI6XHRzdGF0aWMgdm9pZCB4bG54X2NkeF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiAyMjM6XHR7XG4gMjI0Olx0XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuIDIyNTpcdFx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaSA9IGNkeC1cdTAwM2Vwcml2O1xuIDIyNjpcdFxuIDIyNzpcdFx0Y2R4X2Rlc3Ryb3lfcnBtc2cocGRldik7XG4gMjI4Olx0XG4gMjI5Olx0XHRpcnFfZG9tYWluX3JlbW92ZShjZHgtXHUwMDNlbXNpX2RvbWFpbik7XG4gMjMwOlx0XHRrZnJlZShjZHgpO1xuIDIzMTpcdFxuIDIzMjpcdFx0Y2R4X21jZGlfZmluaXNoKGNkeF9tY2RpKTtcbiAyMzM6XHRcdGtmcmVlKGNkeF9tY2RpKTtcbiAyMzQ6XHR9XG4gMjM1Olx0XG4gMjM2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2R4X21hdGNoX3RhYmxlW10gPSB7XG4gMjM3Olx0XHR7LmNvbXBhdGlibGUgPSBcJiMzNDt4bG54LHZlcnNhbC1uZXQtY2R4XCYjMzQ7LH0sXG4gMjM4Olx0XHR7IH0sXG4gMjM5Olx0fTtcbiAyNDA6XHRcbiAyNDE6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBjZHhfbWF0Y2hfdGFibGUpO1xuIDI0MjpcdFxuIDI0MzpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkeF9wZHJpdmVyID0ge1xuIDI0NDpcdFx0LmRyaXZlciA9IHtcbiAyNDU6XHRcdFx0ICAgLm5hbWUgPSBcJiMzNDtjZHgtY29udHJvbGxlclwmIzM0OyxcbiAyNDY6XHRcdFx0ICAgLm9mX21hdGNoX3RhYmxlID0gY2R4X21hdGNoX3RhYmxlLFxuIDI0NzpcdFx0XHQgICB9LFxuIDI0ODpcdFx0LnByb2JlID0geGxueF9jZHhfcHJvYmUsXG4gMjQ5Olx0XHQucmVtb3ZlID0geGxueF9jZHhfcmVtb3ZlLFxuIDI1MDpcdH07XG4gMjUxOlx0XG4gMjUyOlx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjZHhfcGRyaXZlcik7XG4gMjUzOlx0XG4gMjU0Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtBTUQgSW5jLlwmIzM0Oyk7XG4gMjU1Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0NEWCBjb250cm9sbGVyIGZvciBBTUQgZGV2aWNlc1wmIzM0Oyk7XG4gMjU2Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiAyNTc6XHRNT0RVTEVfSU1QT1JUX05TKFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDg5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipWRklPIENEWCBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgVkZJTyBkcml2ZXIgZm9yIENEWCBidXMgZGV2aWNlcyDigJMgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoZSBmaWxlIGluIHF1ZXN0aW9uIGlzIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZy4gYG1haW4uY2AgaXMgdXN1YWxseSB0aGUgY29yZSwgc28gaXQmIzM5O2xsIHByb2JhYmx5IGNvbnRhaW4gdGhlIGVzc2VudGlhbCBpbml0aWFsaXphdGlvbiwgZGV2aWNlIGhhbmRsaW5nLCBhbmQgZW50cnkgcG9pbnRzIGZvciB0aGlzIFZGSU8gZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQ0RYIGJ1cyBzcGVjaWZpY2FsbHksIGFuZCBob3cgaXQmIzM5O3MgZXhwb3NpbmcgdGhhdCB0byB0aGUgVkZJTyBmcmFtZXdvcmsuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBob3cgaXQgaGFuZGxlcyBkZXZpY2UgZGlzY292ZXJ5LCBob3cgaXQgc2V0cyB1cCBETUEgbWFwcGluZ3MsIGFuZCBob3cgaXQgaGFuZGxlcyBpbnRlcnJ1cHRzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGlzIGRyaXZlciBmYWNpbGl0YXRlcyB2aXJ0dWFsaXplZCBhY2Nlc3MgdG8gQ0RYIGRldmljZXMuIExldCYjMzk7cyBnZXQgcmVhZGluZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNDpcdCAqL1xuICAgNTpcdFxuICAgNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZmaW8uaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcdTAwM2VcbiAgIDg6XHRcbiAgIDk6XHQjaW5jbHVkZSBcJiMzNDtwcml2YXRlLmhcJiMzNDtcbiAgMTA6XHRcbiAgMTE6XHRzdGF0aWMgaW50IHZmaW9fY2R4X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuICAxMjpcdHtcbiAgMTM6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuICAxNDpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAgMTU6XHRcbiAgMTY6XHRcdG11dGV4X2luaXQoXHUwMDI2dmRldi1cdTAwM2VjZHhfaXJxc19sb2NrKTtcbiAgMTc6XHRcdHJldHVybiAwO1xuICAxODpcdH1cbiAgMTk6XHRcbiAgMjA6XHRzdGF0aWMgdm9pZCB2ZmlvX2NkeF9yZWxlYXNlX2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbiAgMjE6XHR7XG4gIDIyOlx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbiAgMjM6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG4gIDI0Olx0XG4gIDI1Olx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnZkZXYtXHUwMDNlY2R4X2lycXNfbG9jayk7XG4gIDI2Olx0fVxuICAyNzpcdFxuICAyODpcdHN0YXRpYyBpbnQgdmZpb19jZHhfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gIDI5Olx0e1xuICAzMDpcdFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG4gIDMxOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xuICAzMjpcdFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuICAzMzpcdFx0aW50IGNvdW50ID0gY2R4X2Rldi1cdTAwM2VyZXNfY291bnQ7XG4gIDM0Olx0XHRpbnQgaSwgcmV0O1xuICAzNTpcdFxuICAzNjpcdFx0dmRldi1cdTAwM2VyZWdpb25zID0ga3phbGxvY19vYmpzKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24sIGNvdW50LFxuICAzNzpcdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuICAzODpcdFx0aWYgKCF2ZGV2LVx1MDAzZXJlZ2lvbnMpXG4gIDM5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA0MDpcdFxuICA0MTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY291bnQ7IGkmIzQzOyYjNDM7KSB7XG4gIDQyOlx0XHRcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VyZXNbaV07XG4gIDQzOlx0XG4gIDQ0Olx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5hZGRyID0gcmVzLVx1MDAzZXN0YXJ0O1xuICA0NTpcdFx0XHR2ZGV2LVx1MDAzZXJlZ2lvbnNbaV0uc2l6ZSA9IHJlc291cmNlX3NpemUocmVzKTtcbiAgNDY6XHRcdFx0dmRldi1cdTAwM2VyZWdpb25zW2ldLnR5cGUgPSByZXMtXHUwMDNlZmxhZ3M7XG4gIDQ3Olx0XHRcdC8qXG4gIDQ4Olx0XHRcdCAqIE9ubHkgcmVnaW9ucyBhZGRyZXNzZWQgd2l0aCBQQUdFIGdyYW51bGFyaXR5IG1heSBiZVxuICA0OTpcdFx0XHQgKiBNTUFQJiMzOTtlZCBzZWN1cmVseS5cbiAgNTA6XHRcdFx0ICovXG4gIDUxOlx0XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5hZGRyIFx1MDAyNiB+UEFHRV9NQVNLKSBcdTAwMjZcdTAwMjZcbiAgNTI6XHRcdFx0ICAgICEodmRldi1cdTAwM2VyZWdpb25zW2ldLnNpemUgXHUwMDI2IH5QQUdFX01BU0spKVxuICA1MzpcdFx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PVxuICA1NDpcdFx0XHRcdFx0XHRWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUDtcbiAgNTU6XHRcdFx0dmRldi1cdTAwM2VyZWdpb25zW2ldLmZsYWdzIHw9IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEO1xuICA1NjpcdFx0XHRpZiAoIShjZHhfZGV2LVx1MDAzZXJlc1tpXS5mbGFncyBcdTAwMjYgSU9SRVNPVVJDRV9SRUFET05MWSkpXG4gIDU3Olx0XHRcdFx0dmRldi1cdTAwM2VyZWdpb25zW2ldLmZsYWdzIHw9IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURTtcbiAgNTg6XHRcdH1cbiAgNTk6XHRcdHJldCA9IGNkeF9kZXZfcmVzZXQoY29yZV92ZGV2LVx1MDAzZWRldik7XG4gIDYwOlx0XHRpZiAocmV0KSB7XG4gIDYxOlx0XHRcdGtmcmVlKHZkZXYtXHUwMDNlcmVnaW9ucyk7XG4gIDYyOlx0XHRcdHZkZXYtXHUwMDNlcmVnaW9ucyA9IE5VTEw7XG4gIDYzOlx0XHRcdHJldHVybiByZXQ7XG4gIDY0Olx0XHR9XG4gIDY1Olx0XHRyZXQgPSBjZHhfY2xlYXJfbWFzdGVyKGNkeF9kZXYpO1xuICA2NjpcdFx0aWYgKHJldClcbiAgNjc6XHRcdFx0dmRldi1cdTAwM2VmbGFncyBcdTAwMjY9IH5CTUVfU1VQUE9SVDtcbiAgNjg6XHRcdGVsc2VcbiAgNjk6XHRcdFx0dmRldi1cdTAwM2VmbGFncyB8PSBCTUVfU1VQUE9SVDtcbiAgNzA6XHRcbiAgNzE6XHRcdHJldHVybiAwO1xuICA3MjpcdH1cbiAgNzM6XHRcbiAgNzQ6XHRzdGF0aWMgdm9pZCB2ZmlvX2NkeF9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gIDc1Olx0e1xuICA3NjpcdFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG4gIDc3Olx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xuICA3ODpcdFxuICA3OTpcdFx0a2ZyZWUodmRldi1cdTAwM2VyZWdpb25zKTtcbiAgODA6XHRcdGNkeF9kZXZfcmVzZXQoY29yZV92ZGV2LVx1MDAzZWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTg5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgZm9ybWF0dGVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgVkZJTyBDRFggQ29kZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIGhlYWQgaW50byB0aGUgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBDRFggKENvbnRhaW5lciBEaXJlY3QgZVhjaGFuZ2UpIGltcGxlbWVudGF0aW9uIHdpdGhpbiBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgbGlrZWx5IHJlc2lkZXMuIE15IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBmaWxlIHdpbGwgY29udGFpbiB0aGUgZnVuZGFtZW50YWwgbG9naWMgZm9yIGhvdyB0aGUgQ0RYIGRldmljZSBpcyBpbml0aWFsaXplZCwgaG93IGl0IGhhbmRsZXMgcmVxdWVzdHMsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgYW5kIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgVkZJTyBmcmFtZXdvcmsuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIG1lbW9yeSBtYXBwaW5nIGZ1bmN0aW9ucywgYW5kIHRoZSBjb3JlIHJlcXVlc3QgZGlzcGF0Y2ggbG9vcC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBDRFggZGV2aWNlLCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gVW5kZXJzdGFuZGluZyB0aGlzIGBtYWluLmNgIGZpbGUgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgZmlndXJpbmcgb3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUgQ0RYIGltcGxlbWVudGF0aW9uIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIFZGSU8gYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjQwOlx0XHRcdHJldHVybiAtRU5PVFRZO1xuIDI0MTpcdFx0fVxuIDI0MjpcdH1cbiAyNDM6XHRcbiAyNDQ6XHRzdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcbiAyNDU6XHRcdFx0XHQgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbiAyNDY6XHR7XG4gMjQ3Olx0XHR1NjQgc2l6ZSA9IHZtYS1cdTAwM2V2bV9lbmQgLSB2bWEtXHUwMDNldm1fc3RhcnQ7XG4gMjQ4Olx0XHR1NjQgcGdvZmYsIGJhc2U7XG4gMjQ5Olx0XG4gMjUwOlx0XHRwZ29mZiA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwMjZcbiAyNTE6XHRcdFx0KCgxVSBcdTAwM2NcdTAwM2MgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xuIDI1MjpcdFx0YmFzZSA9IHBnb2ZmIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuIDI1MzpcdFxuIDI1NDpcdFx0aWYgKGJhc2UgJiM0Mzsgc2l6ZSBcdTAwM2UgcmVnaW9uLnNpemUpXG4gMjU1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI1NjpcdFxuIDI1NzpcdFx0dm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCk7XG4gMjU4Olx0XG4gMjU5Olx0XHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVx1MDAzZXZtX3N0YXJ0LFxuIDI2MDpcdFx0XHRcdFx0ICAocmVnaW9uLmFkZHIgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpICYjNDM7IHBnb2ZmLFxuIDI2MTpcdFx0XHRcdFx0ICBzaXplLCB2bWEtXHUwMDNldm1fcGFnZV9wcm90KTtcbiAyNjI6XHR9XG4gMjYzOlx0XG4gMjY0Olx0c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuIDI2NTpcdFx0XHRcdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbiAyNjY6XHR7XG4gMjY3Olx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbiAyNjg6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG4gMjY5Olx0XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoY29yZV92ZGV2LVx1MDAzZWRldik7XG4gMjcwOlx0XHR1bnNpZ25lZCBpbnQgaW5kZXg7XG4gMjcxOlx0XG4gMjcyOlx0XHRpbmRleCA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwM2VcdTAwM2UgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xuIDI3MzpcdFxuIDI3NDpcdFx0aWYgKGluZGV4IFx1MDAzZT0gY2R4X2Rldi1cdTAwM2VyZXNfY291bnQpXG4gMjc1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI3NjpcdFxuIDI3NzpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVApKVxuIDI3ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNzk6XHRcbiAyODA6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKSBcdTAwMjZcdTAwMjZcbiAyODE6XHRcdCAgICAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9SRUFEKSlcbiAyODI6XHRcdFx0cmV0dXJuIC1FUEVSTTtcbiAyODM6XHRcbiAyODQ6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkgXHUwMDI2XHUwMDI2XG4gMjg1Olx0XHQgICAgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIDI4NjpcdFx0XHRyZXR1cm4gLUVQRVJNO1xuIDI4NzpcdFxuIDI4ODpcdFx0cmV0dXJuIHZmaW9fY2R4X21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIDI4OTpcdH1cbiAyOTA6XHRcbiAyOTE6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XG4gMjkyOlx0XHQubmFtZVx0XHQ9IFwmIzM0O3ZmaW8tY2R4XCYjMzQ7LFxuIDI5MzpcdFx0LmluaXRcdFx0PSB2ZmlvX2NkeF9pbml0X2RldixcbiAyOTQ6XHRcdC5yZWxlYXNlXHQ9IHZmaW9fY2R4X3JlbGVhc2VfZGV2LFxuIDI5NTpcdFx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fY2R4X29wZW5fZGV2aWNlLFxuIDI5NjpcdFx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX2NkeF9jbG9zZV9kZXZpY2UsXG4gMjk3Olx0XHQuaW9jdGxcdFx0PSB2ZmlvX2NkeF9pb2N0bCxcbiAyOTg6XHRcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fY2R4X2lvY3RsX2dldF9yZWdpb25faW5mbyxcbiAyOTk6XHRcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fY2R4X2lvY3RsX2ZlYXR1cmUsXG4gMzAwOlx0XHQubW1hcFx0XHQ9IHZmaW9fY2R4X21tYXAsXG4gMzAxOlx0XHQuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxuIDMwMjpcdFx0LnVuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF91bmJpbmQsXG4gMzAzOlx0XHQuYXR0YWNoX2lvYXNcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2F0dGFjaF9pb2FzLFxuIDMwNDpcdH07XG4gMzA1Olx0XG4gMzA2Olx0c3RhdGljIGludCB2ZmlvX2NkeF9wcm9iZShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbiAzMDc6XHR7XG4gMzA4Olx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2O1xuIDMwOTpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXY7XG4gMzEwOlx0XHRpbnQgcmV0O1xuIDMxMTpcdFxuIDMxMjpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fY2R4X2RldmljZSwgdmRldiwgZGV2LFxuIDMxMzpcdFx0XHRcdFx0IFx1MDAyNnZmaW9fY2R4X29wcyk7XG4gMzE0Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuIDMxNTpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiAzMTY6XHRcbiAzMTc6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gMzE4Olx0XHRpZiAocmV0KVxuIDMxOTpcdFx0XHRnb3RvIG91dF91bmluaXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjkxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgdmZpb19jZHhgIERyaXZlcioqCgpBbHJpZ2h0LCBzbyBgdmZpb19jZHhgIGlzIHRyaWdnZXJlZCwgYXMgZXhwZWN0ZWQsIHdoZW4gYSBgY2R4X2RldmljZWAgc3RydWN0dXJlIGFsaWducyB3aXRoIHRoZSBgdmZpb19jZHhfZHJpdmVyYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgdGhhdCYjMzk7cyB0aGUgc2V0dXAsIGJ1dCB3aGF0JiMzOTtzICphY3R1YWxseSogaGFwcGVuaW5nIHdpdGggdGhpcyBDRFggdGhpbmc/JiMzNDsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGxhbmRzY2FwZS4KCkZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBzb3J0IG9mIGVtdWxhdGVkIG9yIG1vY2tlZCBpbXBsZW1lbnRhdGlvbnMgb2YgQ0RYIGJ1c2VzIG9yIGRldmljZXMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgaXRzZWxmLCBhbmQgb2YgY291cnNlLCBRRU1VIGlzIGEgbG9naWNhbCBwbGFjZSB0byBsb29rLiBJJiMzOTttIHRoaW5raW5nLCBhcmUgd2UgdGFsa2luZyBhYm91dCBhIHJlYWwsIHBoeXNpY2FsIGRldmljZSwgb3IgaXMgdGhpcyBzb21ldGhpbmcgdmlydHVhbGl6ZWQsIG9yIHBlcmhhcHMgYSB0ZXN0IGhhcm5lc3M/IEZpbmRpbmcgbW9jayBpbXBsZW1lbnRhdGlvbnMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGludGVudC4KClRoZW4sIEkmIzM5O2xsIHBlcmZvcm0gYSBicm9hZGVyIHNlYXJjaCwgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLiBJJiMzOTttIGdvaW5nIHRvIHRocm93IGEgJiMzNDtjZHgmIzM0OyBzZWFyY2ggc3RyaW5nIGFjcm9zcyB0aGUgd2hvbGUgY29kZWJhc2UuIEkgd2FudCB0byBpZGVudGlmeSBhbnkgb3RoZXIgY29kZSB0aGF0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyBlaXRoZXIgYSBDRFggY29udHJvbGxlciBvciBhIENEWCBkZXZpY2UuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3Vic3lzdGVtIGFyY2hpdGVjdHVyZSwgYW5kIGhvdyB0aGUgYHZmaW9fY2R4YCBkcml2ZXIgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBGaW5kaW5nIHRoZSByZWdpc3RyYXRpb24gcG9pbnRzIHdpbGwgbGV0IG1lIHNlZSB3aGVyZSB0aGlzIENEWCB0ZWNobm9sb2d5IG9yaWdpbmF0ZXMgZnJvbSB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGhhbmRsZSBvbiBob3cgaXQmIzM5O3MgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2RyaXZlcl9yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jZHguYz02Mjg9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjQ2LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjY0NzpFWFBPUlRfU1lNQk9MX0dQTChfX2NkeF9kcml2ZXJfcmVnaXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjQ4LVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM0OD1zdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM1Ny1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM1ODptb2R1bGVfZHJpdmVyKHZmaW9fY2R4X2RyaXZlciwgY2R4X2RyaXZlcl9yZWdpc3RlciwgY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM1OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MTk4PXN0cnVjdCBjZHhfZHJpdmVyIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjEyLS8qIE1hY3JvIHRvIGF2b2lkIGluY2x1ZGUgY2hhaW5pbmcgdG8gZ2V0IFRISVNfTU9EVUxFICovXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjEzOiNkZWZpbmUgY2R4X2RyaXZlcl9yZWdpc3RlcihkcnYpIFxcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjE0Olx0X19jZHhfZHJpdmVyX3JlZ2lzdGVyKGRydiwgVEhJU19NT0RVTEUpXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjE1LVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxNi0vKipcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTc6ICogX19jZHhfZHJpdmVyX3JlZ2lzdGVyIC0gcmVnaXN0ZXJzIGEgQ0RYIGRldmljZSBkcml2ZXJcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTgtICogQGNkeF9kcml2ZXI6IENEWCBkcml2ZXIgdG8gcmVnaXN0ZXJcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjIyLSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIyMzppbnQgX19tdXN0X2NoZWNrIF9fY2R4X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcixcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjQtXHRcdFx0XHQgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDcxNQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuCgoqKkludmVzdGlnYXRpbmcgYGNkeF9kcml2ZXJgIFVzYWdlKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIGBjZHhfZHJpdmVyYCBzdHJ1Y3R1cmUgYW5kIGBjZHhfZHJpdmVyX3JlZ2lzdGVyYCBmdW5jdGlvbiBhcmUgYmVpbmcgdXRpbGl6ZWQgdGhyb3VnaG91dCB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgYWxsIHRoZSBvdGhlciBkcml2ZXJzIHRoYXQgYXJlIGVtcGxveWluZyB0aGVzZSBlbGVtZW50cy4gSSYjMzk7bGwgbmVlZCB0byBkbyBhIHRob3JvdWdoIGNvZGUgc2VhcmNoLiBUaGUgbW9zdCBkaXJlY3QgYXBwcm9hY2ggaXMgYSBncmVwIGZvciBpbnN0YW5jZXMgb2YgYHN0cnVjdCBjZHhfZHJpdmVyYCBhbmQgYGNkeF9kcml2ZXJgIChjYXNlLWluc2Vuc2l0aXZlIHBlcmhhcHMsIGJ1dCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBjYXNlIHNlbnNpdGl2ZSkgYWNyb3NzIHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGlzIHNob3VsZCByZXZlYWwgYWxsIHJlbGV2YW50IGxvY2F0aW9ucyB3aGVyZSB0aGVzZSBhcmUgZGVmaW5lZCwgcmVmZXJlbmNlZCwgb3IgdXNlZC4gVGhpcyBncmFudWxhciBhcHByb2FjaCBzaG91bGQgZ2l2ZSBtZSBhIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIHRoZSBleGlzdGluZyBlY29zeXN0ZW0gcmVseWluZyBvbiB0aGlzIGNvbnN0cnVjdC4gV2l0aCB0aGlzIGluZm8sIEkgY2FuIHRoZW4gZGV0ZXJtaW5lIHRoZSBiZXN0IHBhdGggZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IGNkeF9kcml2ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY2R4LmM9OTU9aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTk5LVx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydjtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MjYzPXN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjY1LVx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjY6XHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI2Ny1cdGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpmb3VuZF9pZCA9IE5VTEw7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzAyPXN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMDUtXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0zMjg9c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMjkte1xuZHJpdmVycy9jZHgvY2R4LmM6MzMwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzMxLVx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzM3PXN0YXRpYyB2b2lkIGNkeF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xuZHJpdmVycy9jZHgvY2R4LmM6MzM5Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzQwLVx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzQ5PXN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzUwLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM1Mi1cdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTM3Mz1zdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzc0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Ni1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz02Mjg9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NjQ3PUVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM0Nj1NT0RVTEVfREVWSUNFX1RBQkxFKGNkeCwgdmZpb19jZHhfdGFibGUpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQ3LVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzQ4OnN0YXRpYyBzdHJ1Y3QgY2R4X2RyaXZlciB2ZmlvX2NkeF9kcml2ZXIgPSB7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zNDktXHQucHJvYmVcdFx0PSB2ZmlvX2NkeF9wcm9iZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MTQzPXN0cnVjdCBjZHhfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTgxLS8qKlxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE4MjogKiBzdHJ1Y3QgY2R4X2RyaXZlciAtIENEWCBkZXZpY2UgZHJpdmVyXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTgzLSAqIEBkcml2ZXI6IEdlbmVyaWMgZGV2aWNlIGRyaXZlclxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOTctICovXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MTk4OnN0cnVjdCBjZHhfZHJpdmVyIHtcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOTktXHRzdHJ1Y3QgZGV2aWNlX2RyaXZlciBkcml2ZXI7XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwOS0jZGVmaW5lIHRvX2NkeF9kcml2ZXIoX2RydikgXFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTA6XHRjb250YWluZXJfb2ZfY29uc3QoX2Rydiwgc3RydWN0IGNkeF9kcml2ZXIsIGRyaXZlcilcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTEtXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIyMi0gKi9cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMjM6aW50IF9fbXVzdF9jaGVjayBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjI0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjMwLSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIzMTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcik7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjMyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjU1MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWRklPLUNEWCBEcml2ZXIqKgoKT2theSwgaGVyZSYjMzk7cyBob3cgSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMuIE15IHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgdmZpb19jZHhfZHJpdmVyYCwgd2hpY2ggaXMgcmVnaXN0ZXJlZCB3aGVuIHRoZSBgdmZpby1jZHhgIG1vZHVsZSBsb2Fkcy4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gSG93ZXZlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGF0aCB0byBob3cgYSBmdW5jdGlvbiBsaWtlIGB2ZmlvX2NkeF9tbWFwX21taW9gLCBvciBhbnkgb2YgdGhlIGB2ZmlvX2NkeF8qYCBmdW5jdGlvbnMsIGFjdHVhbGx5IGdldHMgKmNhbGxlZCouIFRoZSBjcml0aWNhbCBwYXRoIHNlZW1zIHRvIGJlIHRoYXQgYSBgY2R4X2RldmljZWAgaGFzIHRvIGV4aXN0IGFuZCBiZSBib3VuZCB0byBgdmZpby1jZHhgLiBUaGVuLCBhIHVzZXItc3BhY2UgcHJvY2VzcyBtdXN0IG9wZW4gdGhlIFZGSU8gZGV2aWNlIGFuZCBjYWxsIGBtbWFwKClgLiBUaGF0JiMzOTtzIHRoZSBleHBlY3RlZCB1c2FnZS4KCk5vdywgSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZXZlbiBjcmVhdGUgYSBgY2R4X2RldmljZWAgaW4gdGhlIGFic2VuY2Ugb2YgYWN0dWFsIGhhcmR3YXJlLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBzaG91bGQgYmUgcG9zc2libGUgZm9yIHRlc3RpbmcgYW5kIGVtdWxhdGlvbiBwdXJwb3Nlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9jZHgvY2R4LmNgIGZpbGUgdG8gc2VlIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBjcmVhdGVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gY2hlY2tpbmcgaWYgdGhlcmUmIzM5O3MgYW55IHN5c2ZzIGludGVyZmFjZSB0aGF0IGFsbG93cyB0aGUgY3JlYXRpb24gb3IgJiMzNDttb2NraW5nJiMzNDsgb2YgQ0RYIGRldmljZXMsIG9yIGlmIHRoZWlyIGNyZWF0aW9uIGlzIGVudGlyZWx5IGRlcGVuZGVudCBvbiBhIGBjZHhfY29udHJvbGxlcmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gYGRyaXZlcnMvY2R4L2NkeC5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NkeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NjUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvY2R4L2NkeC5jLTY3LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lkci5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYzo2ODojaW5jbHVkZSBcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYy02OS0jaW5jbHVkZSBcdTAwM2NsaW51eC9pb21tdS5oXHUwMDNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xuZHJpdmVycy9jZHgvY2R4LmMtODAtLyogTG9jayB0byBwcm90ZWN0IGNvbnRyb2xsZXIgb3BzICovXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmMtODItLyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjgzOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjZHhfZGVidWdmc19kaXI7XG5kcml2ZXJzL2NkeC9jZHguYy04NC1cbmRyaXZlcnMvY2R4L2NkeC5jPTg1PXN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeFwmIzM0OztcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxuZHJpdmVycy9jZHgvY2R4LmM6ODc6c3RhdGljIHZvaWQgY2R4X2Rlc3Ryb3lfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtODgtXG5kcml2ZXJzL2NkeC9jZHguYy04OS0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjkwOiAqIGNkeF9kZXZfcmVzZXQgLSBSZXNldCBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTkxLSAqIEBkZXY6IENEWCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05NC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjk1OmludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjk3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnID0gezB9O1xuZHJpdmVycy9jZHgvY2R4LmM6MTAwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDEtXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY2R4LmMtMTAyLVxuZHJpdmVycy9jZHgvY2R4LmM6MTAzOlx0Y2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDQtXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIGlzIGJlaW5nIHJlc2V0ICovXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZXNldF9wcmVwYXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MTA2Olx0XHRjZHhfZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXG5kcml2ZXJzL2NkeC9jZHguYy0xMDgtXHRkZXZfY29uZmlnLnR5cGUgPSBDRFhfREVWX1JFU0VUX0NPTkY7XG5kcml2ZXJzL2NkeC9jZHguYzoxMDk6XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoxMTA6XHRcdFx0XHQgICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0sIFx1MDAyNmRldl9jb25maWcpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTExLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMTQtXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIHJlc2V0IGlzIGNvbXBsZXRlICovXG5kcml2ZXJzL2NkeC9jZHguYzoxMTU6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZXNldF9kb25lKVxuZHJpdmVycy9jZHgvY2R4LmM6MTE2Olx0XHRjZHhfZHJ2LVx1MDAzZXJlc2V0X2RvbmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMTctXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTE5LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjEyMDpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZGV2X3Jlc2V0KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEyMS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEyMi0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguYy0xMjQtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjEzMTpzdGF0aWMgaW50IHJlc2V0X2NkeF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxuZHJpdmVycy9jZHgvY2R4LmMtMTMyLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMzpcdHJldHVybiBjZHhfZGV2X3Jlc2V0KGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMzQtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEzNi0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjEzNzogKiBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UgLSBVbnJlZ2lzdGVyIGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtMTM4LSAqIEBkZXY6IENEWCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNDAtICpcdCAgYnV0IGlzIHJlcXVpcmVkIGhlcmUgYXMgdGhlIGJ1c19mb3JfZWFjaF9kZXYoKSBBUEkgZXhwZWN0c1xuZHJpdmVycy9jZHgvY2R4LmM6MTQxOiAqXHQgIHRoZSBwYXNzZWQgZnVuY3Rpb24gKGNkeF91bnJlZ2lzdGVyX2RldmljZSkgdG8gaGF2ZSB0aGlzXG5kcml2ZXJzL2NkeC9jZHguYy0xNDItICpcdCAgYXMgYW4gYXJndW1lbnQuXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTQ1LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTQ2OnN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Ny1cdFx0XHRcdCB2b2lkICpkYXRhKVxuZHJpdmVycy9jZHgvY2R4LmMtMTQ4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjE0OTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTUwOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MS1cbmRyaXZlcnMvY2R4L2NkeC5jOjE1MjpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cykge1xuZHJpdmVycy9jZHgvY2R4LmM6MTUzOlx0XHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTU0Olx0XHRpZiAoY2R4X2Rldi1cdTAwM2VlbmFibGVkIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6MTU1Olx0XHRcdGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtMTU2LVx0fSBlbHNlIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NzpcdFx0Y2R4X2Rlc3Ryb3lfcmVzX2F0dHIoY2R4X2RldiwgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1ODpcdFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTU5LVx0fVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE2MS1cdC8qXG5kcml2ZXJzL2NkeC9jZHguYzoxNjI6XHQgKiBEbyBub3QgZnJlZSBjZHhfZGV2IGhlcmUgYXMgaXQgd291bGQgYmUgZnJlZWQgaW5cbmRyaXZlcnMvY2R4L2NkeC5jOjE2MzpcdCAqIGNkeF9kZXZpY2VfcmVsZWFzZSgpIGNhbGxlZCBmcm9tIHdpdGhpbiBwdXRfZGV2aWNlKCkuXG5kcml2ZXJzL2NkeC9jZHguYy0xNjQtXHQgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE2NTpcdGRldmljZV9kZWwoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTY2Olx0cHV0X2RldmljZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xNjctXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTcwLVxuZHJpdmVycy9jZHgvY2R4LmM6MTcxOnN0YXRpYyB2b2lkIGNkeF91bnJlZ2lzdGVyX2RldmljZXMoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMpXG5kcml2ZXJzL2NkeC9jZHguYy0xNzIte1xuZHJpdmVycy9jZHgvY2R4LmMtMTczLVx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE3NDpcdGJ1c19mb3JfZWFjaF9kZXYoYnVzLCBOVUxMLCBOVUxMLCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTc1LX1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNzctLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoxNzg6ICogY2R4X21hdGNoX29uZV9kZXZpY2UgLSBUZWxsIGlmIGEgQ0RYIGRldmljZSBzdHJ1Y3R1cmUgaGFzIGEgbWF0Y2hpbmdcbmRyaXZlcnMvY2R4L2NkeC5jLTE3OS0gKlx0XHRcdCAgQ0RYIGRldmljZSBpZCBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xODItICpcbmRyaXZlcnMvY2R4L2NkeC5jOjE4MzogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0xODQtICovXG5kcml2ZXJzL2NkeC9jZHguYzoxODU6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXG5kcml2ZXJzL2NkeC9jZHguYzoxODY6Y2R4X21hdGNoX29uZV9kZXZpY2UoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkLFxuZHJpdmVycy9jZHgvY2R4LmM6MTg3Olx0XHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0xODgte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE5OS0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjIwMDogKiBjZHhfbWF0Y2hfaWQgLSBTZWUgaWYgYSBDRFggZGV2aWNlIG1hdGNoZXMgYSBnaXZlbiBjZHhfaWQgdGFibGVcbmRyaXZlcnMvY2R4L2NkeC5jLTIwMS0gKiBAaWRzOiBhcnJheSBvZiBDRFggZGV2aWNlIElEIHN0cnVjdHVyZXMgdG8gc2VhcmNoIGluXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjA0LSAqIFVzZWQgYnkgYSBkcml2ZXIgdG8gY2hlY2sgd2hldGhlciBhIENEWCBkZXZpY2UgaXMgaW4gaXRzIGxpc3Qgb2ZcbmRyaXZlcnMvY2R4L2NkeC5jOjIwNTogKiBzdXBwb3J0ZWQgZGV2aWNlcy4gUmV0dXJucyB0aGUgbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3JcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNi0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuZHJpdmVycy9jZHgvY2R4LmMtMjA3LSAqXG5kcml2ZXJzL2NkeC9jZHguYzoyMDg6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuZHJpdmVycy9jZHgvY2R4LmMtMjA5LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MjEwOnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKlxuZHJpdmVycy9jZHgvY2R4LmM6MjExOmNkeF9tYXRjaF9pZChjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzLCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjEyLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMTQtXHRcdHdoaWxlIChpZHMtXHUwMDNldmVuZG9yIHx8IGlkcy1cdTAwM2VkZXZpY2UpIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjIxNTpcdFx0XHRpZiAoY2R4X21hdGNoX29uZV9kZXZpY2UoaWRzLCBkZXYpKVxuZHJpdmVycy9jZHgvY2R4LmMtMjE2LVx0XHRcdFx0cmV0dXJuIGlkcztcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMjItXG5kcml2ZXJzL2NkeC9jZHguYzoyMjM6aW50IGNkeF9zZXRfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjI0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzoyMjY6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNy1cdGludCByZXQgPSAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMzEtXHRpZiAoY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MjMyOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoyMzM6XHRcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzQtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjM2LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfc2V0X21hc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXG5kcml2ZXJzL2NkeC9jZHguYzoyMzk6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNDAte1xuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjQzLVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI0Ny1cdGlmIChjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUpXG5kcml2ZXJzL2NkeC9jZHguYzoyNDg6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0OTpcdFx0XHRcdFx0ICAgICAgY2R4X2Rldi1cdTAwM2VkZXZfbnVtLCBcdTAwMjZkZXZfY29uZmlnKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI1MC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yNTItfVxuZHJpdmVycy9jZHgvY2R4LmM6MjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9jbGVhcl9tYXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjU0LVxuZHJpdmVycy9jZHgvY2R4LmMtMjU1LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MjU2OiAqIGNkeF9idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXG5kcml2ZXJzL2NkeC9jZHguYy0yNTctICogQGRldjogdGhlIGNkeCBkZXZpY2UgdG8gbWF0Y2ggYWdhaW5zdFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI2Mi0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjI2MzpzdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MjY2Olx0Y29uc3Qgc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRydik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjc6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xuZHJpdmVycy9jZHgvY2R4LmM6MjY4Olx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcztcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jZHguYy0yNzAtXG5kcml2ZXJzL2NkeC9jZHguYzoyNzE6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy0yNzItXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3My1cbmRyaXZlcnMvY2R4L2NkeC5jOjI3NDpcdGlkcyA9IGNkeF9kcnYtXHUwMDNlbWF0Y2hfaWRfdGFibGU7XG5kcml2ZXJzL2NkeC9jZHguYy0yNzUtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjgwLVxuZHJpdmVycy9jZHgvY2R4LmM6MjgxOlx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI4Mi1cdGlmICghZm91bmRfaWQpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjk1LVx0XHRpZHMgPSBmb3VuZF9pZCAmIzQzOyAxO1xuZHJpdmVycy9jZHgvY2R4LmM6Mjk2Olx0XHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjk3LVx0fSB3aGlsZSAoZm91bmRfaWQpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMwMS1cbmRyaXZlcnMvY2R4L2NkeC5jOjMwMjpzdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMDMte1xuZHJpdmVycy9jZHgvY2R4LmM6MzA0Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzA1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzozMDY6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMzA3LVx0aW50IGVycm9yO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMxMy1cdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlbXNpX2RvbWFpbikge1xuZHJpdmVycy9jZHgvY2R4LmM6MzE0Olx0XHRlcnJvciA9IG1zaV9zZXR1cF9kZXZpY2VfZGF0YShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMTUtXHRcdGlmIChlcnJvcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMTgtXG5kcml2ZXJzL2NkeC9jZHguYzozMTk6XHRlcnJvciA9IGNkeF9kcnYtXHUwMDNlcHJvYmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMjAtXHRpZiAoZXJyb3IpIHtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMjctXG5kcml2ZXJzL2NkeC9jZHguYzozMjg6c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMjkte1xuZHJpdmVycy9jZHgvY2R4LmM6MzMwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzMxOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMzItXG5kcml2ZXJzL2NkeC9jZHguYzozMzM6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZW1vdmUpXG5kcml2ZXJzL2NkeC9jZHguYzozMzQ6XHRcdGNkeF9kcnYtXHUwMDNlcmVtb3ZlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzM1LX1cbmRyaXZlcnMvY2R4L2NkeC5jLTMzNi1cbmRyaXZlcnMvY2R4L2NkeC5jOjMzNzpzdGF0aWMgdm9pZCBjZHhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzM4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzQxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Mi1cbmRyaXZlcnMvY2R4L2NkeC5jOjM0MzpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cyBcdTAwMjZcdTAwMjYgY2R4X2Rldi1cdTAwM2VlbmFibGVkIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ0Olx0XHRjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXNodXRkb3duKVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ2Olx0XHRjZHhfZHJ2LVx1MDAzZXNodXRkb3duKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzQ3LX1cbmRyaXZlcnMvY2R4L2NkeC5jLTM0OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjM0OTpzdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTM1MC17XG5kcml2ZXJzL2NkeC9jZHguYzozNTE6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozNTI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MzpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzozNTQ6XHR1MzIgaW5wdXRfaWQgPSBjZHhfZGV2LVx1MDAzZXJlcV9pZDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM1NS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzYyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzYzOlx0LyogQGNkeF9kcnYgbWF5IG5vdCBiZSB2YWxpZCB3aGVuIHdlJiMzOTtyZSBjYWxsZWQgZnJvbSB0aGUgSU9NTVUgbGF5ZXIgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjM2NDpcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZHJpdmVyIFx1MDAyNlx1MDAyNiAhY2R4X2Rydi1cdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpIHtcbmRyaXZlcnMvY2R4L2NkeC5jLTM2NS1cdFx0cmV0ID0gaW9tbXVfZGV2aWNlX3VzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTM3Mi1cbmRyaXZlcnMvY2R4L2NkeC5jOjM3MzpzdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzc0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Ni1cbmRyaXZlcnMvY2R4L2NkeC5jOjM3NzpcdGlmICghY2R4X2Rydi1cdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpXG5kcml2ZXJzL2NkeC9jZHguYy0zNzgtXHRcdGlvbW11X2RldmljZV91bnVzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTM4MS0vKiBzaG93IGNvbmZpZ3VyYXRpb24gZmllbGRzICovXG5kcml2ZXJzL2NkeC9jZHguYzozODI6I2RlZmluZSBjZHhfY29uZmlnX2F0dHIoZmllbGQsIGZvcm1hdF9zdHJpbmcpXHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgzLXN0YXRpYyBzc2l6ZV90XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM9Mzg0PWZpZWxkIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg1LXtcdFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODY6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcdFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODc6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIGZvcm1hdF9zdHJpbmcsIGNkeF9kZXYtXHUwMDNlZmllbGQpO1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4OC19XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM9Mzg5PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmaWVsZClcbmRyaXZlcnMvY2R4L2NkeC5jLTM5MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjM5MTpjZHhfY29uZmlnX2F0dHIodmVuZG9yLCBcJiMzNDsweCUwNHhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6MzkyOmNkeF9jb25maWdfYXR0cihkZXZpY2UsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTM6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV92ZW5kb3IsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTQ6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV9kZXZpY2UsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTU6Y2R4X2NvbmZpZ19hdHRyKHJldmlzaW9uLCBcJiMzNDsweCUwMnhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6Mzk2OmNkeF9jb25maWdfYXR0cihjbGFzcywgXCYjMzQ7MHglMDZ4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM5Ny1cbmRyaXZlcnMvY2R4L2NkeC5jPTM5OD1zdGF0aWMgc3NpemVfdCByZW1vdmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQxMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjQxMzpcdFx0cmV0ID0gY2R4X3VucmVnaXN0ZXJfZGV2aWNlKGRldiwgTlVMTCk7XG5kcml2ZXJzL2NkeC9jZHguYy00MTQtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDIyPXN0YXRpYyBzc2l6ZV90IHJlc2V0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDI0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQyNTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDI2LVx0Ym9vbCB2YWw7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDM0LVxuZHJpdmVycy9jZHgvY2R4LmM6NDM1Olx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtNDM2LVx0XHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NDM3Olx0XHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQzOC1cdGVsc2VcbmRyaXZlcnMvY2R4L2NkeC5jOjQzOTpcdFx0cmV0ID0gY2R4X2Rldl9yZXNldChkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDQwLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ0NT1zdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDQ3LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ0ODpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDQ5LVxuZHJpdmVycy9jZHgvY2R4LmM6NDUwOlx0cmV0dXJuIHNwcmludGYoYnVmLCBcJiMzNDtjZHg6diUwNFhkJTA0WHN2JTA0WHNkJTA0WGMlMDZYXFxuXCYjMzQ7LCBjZHhfZGV2LVx1MDAzZXZlbmRvcixcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MTpcdFx0XHRjZHhfZGV2LVx1MDAzZWRldmljZSwgY2R4X2Rldi1cdTAwM2VzdWJzeXN0ZW1fdmVuZG9yLCBjZHhfZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXG5kcml2ZXJzL2NkeC9jZHguYzo0NTI6XHRcdFx0Y2R4X2Rldi1cdTAwM2VjbGFzcyk7XG5kcml2ZXJzL2NkeC9jZHguYy00NTMtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NTgte1xuZHJpdmVycy9jZHgvY2R4LmM6NDU5Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo0NjA6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtNDYxLVx0Ym9vbCBlbmFibGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDY2LVxuZHJpdmVycy9jZHgvY2R4LmM6NDY3Olx0aWYgKGVuYWJsZSA9PSBjZHhfZGV2LVx1MDAzZWVuYWJsZWQpXG5kcml2ZXJzL2NkeC9jZHguYy00NjgtXHRcdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NzAtXHRpZiAoZW5hYmxlIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19lbmFibGUpXG5kcml2ZXJzL2NkeC9jZHguYzo0NzE6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2VuYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYy00NzItXHRlbHNlIGlmICghZW5hYmxlIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6NDczOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3NC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NzctXHRpZiAoIXJldClcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3ODpcdFx0Y2R4X2Rldi1cdTAwM2VlbmFibGVkID0gZW5hYmxlO1xuZHJpdmVycy9jZHgvY2R4LmMtNDc5LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ4Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG5kcml2ZXJzL2NkeC9jZHguYy00ODQte1xuZHJpdmVycy9jZHgvY2R4LmM6NDg1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00ODYtXG5kcml2ZXJzL2NkeC9jZHguYzo0ODc6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBjZHhfZGV2LVx1MDAzZWVuYWJsZWQpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDg4LX1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ4OT1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZW5hYmxlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ5MTpzdGF0aWMgdW1vZGVfdCBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Mi17XG5kcml2ZXJzL2NkeC9jZHguYy00OTMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xuZHJpdmVycy9jZHgvY2R4LmMtNDk1LVxuZHJpdmVycy9jZHgvY2R4LmM6NDk2Olx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NzpcdGlmICghY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy00OTgtXHRcdHJldHVybiBhLVx1MDAzZW1vZGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTAyLVxuZHJpdmVycy9jZHgvY2R4LmM6NTAzOnN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxuZHJpdmVycy9jZHgvY2R4LmMtNTA0LXtcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy01MDctXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA5Olx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtNTEwLVx0XHRyZXR1cm4gYS1cdTAwM2Vtb2RlO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUxNC1cbmRyaXZlcnMvY2R4L2NkeC5jOjUxNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNTE2LVx0XHUwMDI2ZGV2X2F0dHJfcmVtb3ZlLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTI3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9kZXZfZ3JvdXAgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1Mjk6XHQuYXR0cnMgPSBjZHhfZGV2X2F0dHJzLFxuZHJpdmVycy9jZHgvY2R4LmM6NTMwOlx0LmlzX3Zpc2libGUgPSBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlLFxuZHJpdmVycy9jZHgvY2R4LmMtNTMxLX07XG5kcml2ZXJzL2NkeC9jZHguYy01MzItXG5kcml2ZXJzL2NkeC9jZHguYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy01MzQtXHRcdTAwMjZkZXZfYXR0cl9lbmFibGUuYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MzgtXG5kcml2ZXJzL2NkeC9jZHguYzo1Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2J1c19kZXZfZ3JvdXAgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NDA6XHQuYXR0cnMgPSBjZHhfYnVzX2Rldl9hdHRycyxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MTpcdC5pc192aXNpYmxlID0gY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZSxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Mi19O1xuZHJpdmVycy9jZHgvY2R4LmMtNTQzLVxuZHJpdmVycy9jZHgvY2R4LmM6NTQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpjZHhfZGV2X2dyb3Vwc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NTQ1Olx0XHUwMDI2Y2R4X2Rldl9ncm91cCxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NjpcdFx1MDAyNmNkeF9idXNfZGV2X2dyb3VwLFxuZHJpdmVycy9jZHgvY2R4LmMtNTQ3LVx0TlVMTCxcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NDktXG5kcml2ZXJzL2NkeC9jZHguYzo1NTA6c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy01NTEte1xuZHJpdmVycy9jZHgvY2R4LmM6NTUyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NkeC9jZHguYy01NTMtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NTUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfQ0RYX0RFVl9SRVNPVVJDRVM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NTY6XHRcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gIFx1MDAyNmNkeF9kZXYtXHUwMDNlcmVzW2ldO1xuZHJpdmVycy9jZHgvY2R4LmMtNTU3LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU2Mi19XG5kcml2ZXJzL2NkeC9jZHguYzo1NjM6REVGSU5FX1NIT1dfQVRUUklCVVRFKGNkeF9kZWJ1Z19yZXNvdXJjZSk7XG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXG5kcml2ZXJzL2NkeC9jZHguYzo1NjU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy01NjYte1xuZHJpdmVycy9jZHgvY2R4LmM6NTY3Olx0Y2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldiksIGNkeF9kZWJ1Z2ZzX2Rpcik7XG5kcml2ZXJzL2NkeC9jZHguYzo1Njg6XHRpZiAoSVNfRVJSKGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIpKVxuZHJpdmVycy9jZHgvY2R4LmMtNTY5LVx0XHRyZXR1cm47XG5kcml2ZXJzL2NkeC9jZHguYy01NzAtXG5kcml2ZXJzL2NkeC9jZHguYzo1NzE6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3Jlc291cmNlXCYjMzQ7LCAwNDQ0LCBjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyLCBjZHhfZGV2LFxuZHJpdmVycy9jZHgvY2R4LmM6NTcyOlx0XHRcdCAgICBcdTAwMjZjZHhfZGVidWdfcmVzb3VyY2VfZm9wcyk7XG5kcml2ZXJzL2NkeC9jZHguYy01NzMtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTU3NT1zdGF0aWMgc3NpemVfdCByZXNjYW5fc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTc3LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjU3ODpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtNTc5LVx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTg3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTg4Olx0Z3VhcmQobXV0ZXgpKFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmMtNTg5LVxuZHJpdmVycy9jZHgvY2R4LmMtNTkwLVx0LyogVW5yZWdpc3RlciBhbGwgdGhlIGRldmljZXMgb24gdGhlIGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NTkxOlx0Y2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhcdTAwMjZjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTkyLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTYwOD1zdGF0aWMgQlVTX0FUVFJfV08ocmVzY2FuKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYwOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYxMDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNjExLVx0XHUwMDI2YnVzX2F0dHJfcmVzY2FuLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjEzLX07XG5kcml2ZXJzL2NkeC9jZHguYzo2MTQ6QVRUUklCVVRFX0dST1VQUyhjZHhfYnVzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYxNS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYxNjpjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgY2R4X2J1c190eXBlID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNjE3LVx0Lm5hbWVcdFx0PSBcJiMzNDtjZHhcJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYy02MTgtXHQuZHJpdmVyX292ZXJyaWRlID0gdHJ1ZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxOTpcdC5tYXRjaFx0XHQ9IGNkeF9idXNfbWF0Y2gsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjA6XHQucHJvYmVcdFx0PSBjZHhfcHJvYmUsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjE6XHQucmVtb3ZlXHRcdD0gY2R4X3JlbW92ZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMjpcdC5zaHV0ZG93blx0PSBjZHhfc2h1dGRvd24sXG5kcml2ZXJzL2NkeC9jZHguYzo2MjM6XHQuZG1hX2NvbmZpZ3VyZVx0PSBjZHhfZG1hX2NvbmZpZ3VyZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNDpcdC5kbWFfY2xlYW51cFx0PSBjZHhfZG1hX2NsZWFudXAsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjU6XHQuYnVzX2dyb3Vwc1x0PSBjZHhfYnVzX2dyb3VwcyxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNjpcdC5kZXZfZ3JvdXBzXHQ9IGNkeF9kZXZfZ3JvdXBzLFxuZHJpdmVycy9jZHgvY2R4LmMtNjI3LX07XG5kcml2ZXJzL2NkeC9jZHguYzo2Mjg6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjM0LVxuZHJpdmVycy9jZHgvY2R4LmM6NjM1Olx0Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNjpcdGNkeF9kcml2ZXItXHUwMDNlZHJpdmVyLmJ1cyA9IFx1MDAyNmNkeF9idXNfdHlwZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYzNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzODpcdGVycm9yID0gZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmNkeF9kcml2ZXItXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYzOS1cdGlmIChlcnJvcikge1xuZHJpdmVycy9jZHgvY2R4LmMtNjQwLVx0XHRwcl9lcnIoXCYjMzQ7ZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkIGZvciAlczogJWRcXG5cJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYzo2NDE6XHRcdCAgICAgICBjZHhfZHJpdmVyLVx1MDAzZWRyaXZlci5uYW1lLCBlcnJvcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDItXHRcdHJldHVybiBlcnJvcjtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxuZHJpdmVycy9jZHgvY2R4LmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xuZHJpdmVycy9jZHgvY2R4LmM6NjUxOlx0ZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjUyLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjY1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZHJpdmVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjU0LVxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy02NTYte1xuZHJpdmVycy9jZHgvY2R4LmM6NjU3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTk6XHRrZnJlZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MC19XG5kcml2ZXJzL2NkeC9jZHguYy02NjEtXG5kcml2ZXJzL2NkeC9jZHguYzo2NjI6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBjZHhfcGh5c192bV9vcHMgPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02NjMtI2lmZGVmIENPTkZJR19IQVZFX0lPUkVNQVBfUFJPVFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY2OC0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjY2OTogKiBjZHhfbW1hcF9yZXNvdXJjZSAtIG1hcCBhIENEWCByZXNvdXJjZSBpbnRvIHVzZXIgbWVtb3J5IHNwYWNlXG5kcml2ZXJzL2NkeC9jZHguYy02NzAtICogQGZwOiBGaWxlIHBvaW50ZXIuIE5vdCB1c2VkIGluIHRoaXMgZnVuY3Rpb24sIGJ1dCByZXF1aXJlZCB3aGVyZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY3OS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjY4MDpzdGF0aWMgaW50IGNkeF9tbWFwX3Jlc291cmNlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGtvYmplY3QgKmtvYmosXG5kcml2ZXJzL2NkeC9jZHguYy02ODEtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02ODMte1xuZHJpdmVycy9jZHgvY2R4LmM6Njg0Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGtvYmpfdG9fZGV2KGtvYmopKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY4NS1cdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVx1MDAzZXByaXZhdGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjg4LVxuZHJpdmVycy9jZHgvY2R4LmM6Njg5Olx0cmVzID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VyZXNbbnVtXTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY5MC1cdGlmIChpb21lbV9pc19leGNsdXNpdmUocmVzLVx1MDAzZXN0YXJ0KSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02OTMtXHQvKiBNYWtlIHN1cmUgdGhlIGNhbGxlciBpcyBtYXBwaW5nIGEgdmFsaWQgcmVzb3VyY2UgZm9yIHRoaXMgZGV2aWNlICovXG5kcml2ZXJzL2NkeC9jZHguYzo2OTQ6XHRzaXplID0gKChjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSkgLSAxKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCkgJiM0MzsgMTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY5NS1cdGlmICh2bWEtXHUwMDNldm1fcGdvZmYgJiM0Mzsgdm1hX3BhZ2VzKHZtYSkgXHUwMDNlIHNpemUpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzAyLVx0dm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCk7XG5kcml2ZXJzL2NkeC9jZHguYzo3MDM6XHR2bWEtXHUwMDNldm1fcGdvZmYgJiM0Mzs9IChjZHhfcmVzb3VyY2Vfc3RhcnQoY2R4X2RldiwgbnVtKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCk7XG5kcml2ZXJzL2NkeC9jZHguYzo3MDQ6XHR2bWEtXHUwMDNldm1fb3BzID0gXHUwMDI2Y2R4X3BoeXNfdm1fb3BzO1xuZHJpdmVycy9jZHgvY2R4LmMtNzA1LVx0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cdTAwM2V2bV9zdGFydCwgdm1hLVx1MDAzZXZtX3Bnb2ZmLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTcwOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjcxMDpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcbmRyaXZlcnMvY2R4L2NkeC5jLTcxMS17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzE3LVxuZHJpdmVycy9jZHgvY2R4LmM6NzE4Olx0XHRyZXNfYXR0ciA9IGNkeF9kZXYtXHUwMDNlcmVzX2F0dHJbaV07XG5kcml2ZXJzL2NkeC9jZHguYy03MTktXHRcdGlmIChyZXNfYXR0cikge1xuZHJpdmVycy9jZHgvY2R4LmM6NzIwOlx0XHRcdHN5c2ZzX3JlbW92ZV9iaW5fZmlsZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldi5rb2JqLCByZXNfYXR0cik7XG5kcml2ZXJzL2NkeC9jZHguYy03MjEtXHRcdFx0a2ZyZWUocmVzX2F0dHIpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTcyNi0jZGVmaW5lIENEWF9SRVNfQVRUUl9OQU1FX0xFTlx0MTBcbmRyaXZlcnMvY2R4L2NkeC5jOjcyNzpzdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXG5kcml2ZXJzL2NkeC9jZHguYy03Mjgte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTc0MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjc0MTpcdGNkeF9kZXYtXHUwMDNlcmVzX2F0dHJbbnVtXSA9IHJlc19hdHRyO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQyLVx0c3ByaW50ZihyZXNfYXR0cl9uYW1lLCBcJiMzNDtyZXNvdXJjZSVkXCYjMzQ7LCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQzLVxuZHJpdmVycy9jZHgvY2R4LmM6NzQ0Olx0cmVzX2F0dHItXHUwMDNlbW1hcCA9IGNkeF9tbWFwX3Jlc291cmNlO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQ1LVx0cmVzX2F0dHItXHUwMDNlYXR0ci5uYW1lID0gcmVzX2F0dHJfbmFtZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc0Ni1cdHJlc19hdHRyLVx1MDAzZWF0dHIubW9kZSA9IDA2MDA7XG5kcml2ZXJzL2NkeC9jZHguYzo3NDc6XHRyZXNfYXR0ci1cdTAwM2VzaXplID0gY2R4X3Jlc291cmNlX2xlbihjZHhfZGV2LCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQ4LVx0cmVzX2F0dHItXHUwMDNlcHJpdmF0ZSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpbnVtO1xuZHJpdmVycy9jZHgvY2R4LmM6NzQ5Olx0cmV0ID0gc3lzZnNfY3JlYXRlX2Jpbl9maWxlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc1MC1cdGlmIChyZXQpXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjgxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENEWCBDb250cm9sbGVyIFJlZ2lzdHJhdGlvbiBhbmQgRW11bGF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgQ0RYIGNvbnRyb2xsZXIgcmVnaXN0cmF0aW9uIGJlZ2lucyB3aXRoaW4gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AuIFRoZSBgeGxueF9jZHhfcHJvYmVgIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCBieSBhIHBsYXRmb3JtIGRldmljZSBtYXRjaCBmb3IgYCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeCYjMzQ7YC4gSXQgdGhlbiBlc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gdG8gYSByZW1vdGVwcm9jIGluc3RhbmNlIChzcGVjaWZpY2FsbHksIGByNV9jb3JlX25vZGVgKS4gVGhpcyBpbnZvbHZlcyBzZXR0aW5nIHVwIGFuIFJQTVNHIGRyaXZlci4gT25jZSB0aGUgUlBNU0cgY2hhbm5lbCBiZWNvbWVzIG9wZXJhdGlvbmFsLCBgY2R4X3JwbXNnX3Byb2JlYCBpcyBpbnZva2VkLCB3aGljaCB0aGVuIHNjaGVkdWxlcyBgY2R4X3JwbXNnX3Bvc3RfcHJvYmVfd29ya2AsIHVsdGltYXRlbHkgbGVhZGluZyB0byBgY2R4X3JwbXNnX3Bvc3RfcHJvYmVgIGFuZCwgZmluYWxseSwgYGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyYC4gQ29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSBydW5uaW5nIG9uIHRoZSBWZXJzYWwgQUNBUCBSNSBjb3JlIGhhcHBlbnMgdmlhIE1DREkgKHJlbW90ZXByb2MgbWFpbGJveC9ycG1zZykgZHVyaW5nIGVpdGhlciBgcmVzY2FuX3N0b3JlYCBvciBgY2R4X3NjYW5fZGV2aWNlc2AsIHdoaWNoIGFyZSB1c2VkIHRvIGVudW1lcmF0ZSBidXNlcyBhbmQgZGV2aWNlcy4KCk5vdywgYSBjcml0aWNhbCBwb2ludDogKip0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhlIENEWCBjb250cm9sbGVyIG9yIGFueSBvZiBpdHMgYXNzb2NpYXRlZCBkZXZpY2VzIHdpdGhpbiBRRU1VLCBHQ0UsIG9yIGV2ZW4gdGhlIG1haW5saW5lIExpbnV4IGtlcm5lbC4qKiBUaGlzIG1ha2VzIHRoaW5ncyBkaWZmaWN1bHQuIEZ1cnRoZXJtb3JlLCB0aGUgYXJjaGl0ZWN0dXJlIGluIHF1ZXN0aW9uIGhlcmUgaXMgYGFtZDY0YCwgd2hpbGUgdGhlIGBDRFhfQlVTYCBmdW5jdGlvbmFsaXR5IGFwcGVhcnMgdG8gZGVwZW5kIG9uIGEgY29tYmluYXRpb24gb2YgYE9GICZhbXA7JmFtcDsgQVJNNjQgfHwgQ09NUElMRV9URVNUYC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgVmVyc2FsIEFDQVAvQ0RYIGJ1cyBpcyBzcGVjaWZpYyB0byBBTUQvWGlsaW54IEFSTTY0IFNvQyBGUEdBIGhhcmR3YXJlIGFuZCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgKE1DREkgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBSNSBjb3JlKSB0byBvcGVyYXRlLgoKQ29uc2lkZXJpbmcgdGhlIGdpdmVuIGluc3RydWN0aW9ucywgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiwgd2hlcmUgd2UmIzM5O3JlIGxvb2tpbmcgZm9yIHNjZW5hcmlvcyB3aGVyZSBgV29ydGhGdXp6aW5nPWZhbHNlYCwgdHdvIGNyaXRlcmlhIGltbWVkaWF0ZWx5IHN0YW5kIG91dC4KCiogICAqKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToqKiBDRFggZmFsbHMgc3F1YXJlbHkgaW50byB0aGlzIGNhdGVnb3J5LiBJdCByZXF1aXJlcyBhIFZlcnNhbCBBQ0FQIFNvQywgYSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybSB3aXRoIHZlbmRvci1zcGVjaWZpYyBQQ0llIGludGVyYWN0aW9ucywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoqICAgKipVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6KiogVGhlIGNvZGUmIzM5O3MgZGVwZW5kZW5jZSBvbiB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLCBjb3VwbGVkIHdpdGggaXRzIHJlbGlhbmNlIG9uIHNwZWNpZmljIGZpcm13YXJlIGFuZCBoYXJkd2FyZSwgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byByZWFjaCB0aGVzZSBleGVjdXRpb24gcGF0aHMgb24gYW1kNjQgc3lzdGVtcy4KClRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyAqYW55KiB3YXkgdG8gaW5zdGFudGlhdGUgdGhlIENEWCBjb250cm9sbGVyIG9uIGFtZDY0IG9yIHdpdGhpbiBzdGFuZGFyZCBRRU1VLiBBcmUgdGhlcmUgYW55IHBsYXRmb3JtIGRldmljZXMgb3IgbW9jayBkcml2ZXJzIHRoYXQgbWlnaHQgc2ltdWxhdGUgdGhlIENEWCBiZWhhdmlvcj8gSSBuZWVkIHRvIHNlYXJjaCBmb3IgYCYjMzQ7dmVyc2FsLW5ldC1jZHgmIzM0O2Agb3IgYW55IG90aGVyIENEWC1yZWxhdGVkIGtleXdvcmRzIHRvIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBub3RoaW5nIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBHaXZlbiBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcsIEkgYW0gaGlnaGx5IGNvbmZpZGVudCB0aGF0IHRoaXMgcGF0aCBpcyBub3Qgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHJlcXVpcmVtZW50cyBJIHdhcyBnaXZlbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmVyc2FsLW5ldC1jZHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtMy0tLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbD0zNz1wcm9wZXJ0aWVzOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtMzgtICBjb21wYXRpYmxlOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWw6Mzk6ICAgIGNvbnN0OiB4bG54LHZlcnNhbC1uZXQtY2R4XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbC00MC1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbD03MD1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbC03Mi0gICAgY2R4IHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sOjczOiAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O3hsbngsdmVyc2FsLW5ldC1jZHhcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbC03NC0gICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5NQUlOVEFJTkVSUz0xMDU4PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoxMDU5OkY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbFxuTUFJTlRBSU5FUlMtMTA2MC1GOlx0ZHJpdmVycy9jZHgvKlxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTgzPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjZHhfZGVidWdmc19kaXI7XG5kcml2ZXJzL2NkeC9jZHguYy04NC1cbmRyaXZlcnMvY2R4L2NkeC5jOjg1OnN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeFwmIzM0OztcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0yMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2R4X21hdGNoX3RhYmxlW10gPSB7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MjM3Olx0ey5jb21wYXRpYmxlID0gXCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeFwmIzM0Oyx9LFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIzOC1cdHsgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwNTQKCQkJCQkJCW91dHB1dDogMTQ4CgkJCQkJCQl0aG91Z2h0czogNDAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBUYXJnZXQgQ29kZSBhbmQgRnV6emluZyBGZWFzaWJpbGl0eSoqCgpPa2F5LCBhZnRlciB0aGlzIHRob3JvdWdoIHJldmlldywgSSYjMzk7bSBhYnNvbHV0ZWx5IGNlcnRhaW4uIEV2ZXJ5dGhpbmcgcG9pbnRzIGRpcmVjdGx5IHRvIGFuIEFNRC9YaWxpbnggVmVyc2FsIEZQR0EgLyBBUk02NCBwbGF0Zm9ybS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGdlbmVyaWMgQVJNNjQgdGhpbmc7IGl0IHJlcXVpcmVzIHBoeXNpY2FsIEFNRC9YaWxpbnggVmVyc2FsIEFDQVAgaGFyZHdhcmUgd2l0aCBSNSBmaXJtd2FyZSBjb21tdW5pY2F0aW9uLiBFdmVuIHRob3VnaCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgIGluaXRpYWxseSwgdGhlIHJlcXVpcmVtZW50IGlzIHN0aWxsIHBoeXNpY2FsIGhhcmR3YXJlLgoKU3BlY2lmaWNhbGx5LCB0aGF0IGB2ZmlvX2NkeF9tbWFwX21taW9gIGZ1bmN0aW9uIGluIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2Ag4oCTIGl0JiMzOTtzIG9ubHkgZXZlciBjYWxsZWQgdGhyb3VnaCB0aGUgYG1tYXBgIGNhbGxiYWNrIG9mIHRoZSBgdmZpby1jZHhgIGRyaXZlci4gQW5kIHRoYXQgZHJpdmVyIGlzICpvbmx5KiByZWdpc3RlcmVkIGZvciBDRFggZGV2aWNlcywgd2hpY2ggYXJlIGVuYWJsZWQgYnkgYENPTkZJR19WRklPX0NEWGAgYW5kIGBDT05GSUdfQ0RYX0JVU2AuIFlvdSBjYW4mIzM5O3QganVzdCBzcGluIHRoaXMgdXAgaW4gUUVNVSBvciBHQ0UuIFdpdGhvdXQgdGhhdCBwaHlzaWNhbCBDRFggaGFyZHdhcmUsIHdpdGhvdXQgdGhlIGNvbnRyb2xsZXIgdG8gZGlzY292ZXIgYW5kIHJlZ2lzdGVyIENEWCBkZXZpY2VzLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgb3VyIGBzZXQtcmVzdWx0c2AgZmllbGRzLiBZZXAsIGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgYGZhbHNlYC4gVGhlIGBSZWFzb25pbmdgIHNob3VsZCBiZSBjcnlzdGFsIGNsZWFyLiBUaGUgYEZvY3VzU3ltYm9sc2A/IEVtcHR5LiBObyBmb2N1cyBzeW1ib2xzLiBBbmQgdGhlIGBFbmFibGVDb25maWdzYD8gQWxzbyBlbXB0eS4gUGVyZmVjdC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIHRvb2wgY2FsbCBmb3JtYXR0aW5nLiBPa2F5LCBgRm9jdXNTeW1ib2xzOiBbXWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGFuZCB0aGUgYFJlYXNvbmluZ2A6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9uIHZmaW9fY2R4X21tYXBfbW1pbyBpcyBwYXJ0IG9mIHRoZSBWRklPIENEWCBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKSwgd2hpY2ggc3VwcG9ydHMgQU1EL1hpbGlueCBWZXJzYWwgQ0RYIGJ1cyBkZXZpY2VzLiBDRFggYnVzIGRldmljZXMgcmVxdWlyZSBwaHlzaWNhbCBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIGhhcmR3YXJlIGFuZCBBUk02NCBmaXJtd2FyZSBjb21tdW5pY2F0aW9uIChNQ0RJIG92ZXIgcnBtc2cpLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgaW5zdGFudGlhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiBRRU1VIG9uIGFtZDY0KS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OyBUaGF0JiMzOTtzIGdvb2QuCgpBbHJpZ2h0LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbiB2ZmlvX2NkeF9tbWFwX21taW8gaXMgcGFydCBvZiB0aGUgVkZJTyBDRFggYnVzIGRyaXZlciAoZHJpdmVycy92ZmlvL2NkeC9tYWluLmMpLiBUaGUgQ0RYIGJ1cyBpcyBzcGVjaWZpYyB0byBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIHBsYXRmb3JtcyBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUvZmlybXdhcmUgKHJwbXNnL01DREkgY29tbXVuaWNhdGlvbiB3aXRoIGFuIFI1IG1hbmFnZW1lbnQgY29udHJvbGxlcikgdG8gZGlzY292ZXIgYW5kIHJlZ2lzdGVyIENEWCBkZXZpY2VzLiBCZWNhdXNlIHRoZXJlIGFyZSBubyBlbXVsYXRlZCBDRFggY29udHJvbGxlcnMgb3IgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VIGVudmlyb25tZW50cyAocGFydGljdWxhcmx5IG9uIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMToyMS4xNjc0NDQwNTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY1MzU1MTM5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbiB2ZmlvX2NkeF9tbWFwX21taW8gaXMgcGFydCBvZiB0aGUgVkZJTyBDRFggYnVzIGRyaXZlciAoZHJpdmVycy92ZmlvL2NkeC9tYWluLmMpLiBUaGUgQ0RYIGJ1cyBpcyBzcGVjaWZpYyB0byBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIHBsYXRmb3JtcyBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUvZmlybXdhcmUgKHJwbXNnL01DREkgY29tbXVuaWNhdGlvbiB3aXRoIGFuIFI1IG1hbmFnZW1lbnQgY29udHJvbGxlcikgdG8gZGlzY292ZXIgYW5kIHJlZ2lzdGVyIENEWCBkZXZpY2VzLiBCZWNhdXNlIHRoZXJlIGFyZSBubyBlbXVsYXRlZCBDRFggY29udHJvbGxlcnMgb3IgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VIGVudmlyb25tZW50cyAocGFydGljdWxhcmx5IG9uIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6MjEuMTY3NDUzMjI2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTg3ODU1ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwYzcxZjZmYjJjNmE2YTA1ZTYyYzdkZDRkYmJhNGI4NWNhZWYxZTYxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MjE6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xcbmluZGV4IGIzMWVkNGJlN2JkYzEuLjUzZDkxNmNmY2I4ZTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcXG4rKysgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xcbkBAIC0yNTQsMTAgKzI1NCwxMCBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcXG4gXFx0aWYgKGJhc2UgKyBzaXplIFxcdTAwM2UgcmVnaW9uLnNpemUpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0dm1hLVxcdTAwM2V2bV9wZ29mZiA9IChyZWdpb24uYWRkciBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSArIHBnb2ZmO1xcbiBcXHR2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QpO1xcbiBcXG4tXFx0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cXHUwMDNldm1fc3RhcnQsIHZtYS1cXHUwMDNldm1fcGdvZmYsXFxuK1xcdHJldHVybiBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtXFx1MDAzZXZtX3N0YXJ0LFxcbitcXHRcXHRcXHRcXHQgIChyZWdpb24uYWRkciBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSArIHBnb2ZmLFxcbiBcXHRcXHRcXHRcXHQgIHNpemUsIHZtYS1cXHUwMDNldm1fcGFnZV9wcm90KTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6MjEuNzg2ODk5NjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEwNTkxNjA0MDM1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGM3MWY2ZmIyYzZhNmEwNWU2MmM3ZGQ0ZGJiYTRiODVjYWVmMWU2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MjE6MjAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG5pbmRleCBiMzFlZDRiZTdiZGMxLi41M2Q5MTZjZmNiOGU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbisrKyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG5AQCAtMjU0LDEwICsyNTQsMTAgQEAgc3RhdGljIGludCB2ZmlvX2NkeF9tbWFwX21taW8oc3RydWN0IHZmaW9fY2R4X3JlZ2lvbiByZWdpb24sXG4gXHRpZiAoYmFzZSArIHNpemUgXHUwMDNlIHJlZ2lvbi5zaXplKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdHZtYS1cdTAwM2V2bV9wZ29mZiA9IChyZWdpb24uYWRkciBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCkgKyBwZ29mZjtcbiBcdHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGV2aWNlKHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QpO1xuIFxuLVx0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cdTAwM2V2bV9zdGFydCwgdm1hLVx1MDAzZXZtX3Bnb2ZmLFxuK1x0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cdTAwM2V2bV9zdGFydCxcbitcdFx0XHRcdCAgKHJlZ2lvbi5hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKSArIHBnb2ZmLFxuIFx0XHRcdFx0ICBzaXplLCB2bWEtXHUwMDNldm1fcGFnZV9wcm90KTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMToyMS43ODY5MDE2OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMTE4MjcyOTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgYSBQb3RlbnRpYWwgU3l6a2FsbGVyIFBhdGNoIGZvciBWRklPL0NEWCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIHRoZSBnb2FsIGlzIHRvIGV2YWx1YXRlIGl0cyBzdWl0YWJpbGl0eSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQgKmlzKiBDRFgsIGFuZCBpcyBpdCBldmVuIGZ1enphYmxlP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQncyByZWFjaGFibGUgaW4gYSB0eXBpY2FsIHN5c3RlbSBvciBpZiBpdCdzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIFRoYXQncyB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcC5cblxuTXkgcGxhbiBpcyB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIHVzaW5nIG15IHN0YW5kYXJkIHRvb2xzLCBwcm9iYWJseSBgZ2l0IGdyZXBgIGFuZCBzb21lIGZpbGUgcmVhZGluZywgdG8gcXVpY2tseSBnZXQgYSBsYXkgb2YgdGhlIGxhbmQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIENEWCBkcml2ZXIgYWN0dWFsbHkgKmRvZXMqIGFuZCBob3cgaXQncyBpbml0aWFsaXplZCBhbmQgdXNlZC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaXMgYW4gaW1wb3J0YW50IGJ1cyBhbmQgcGFydCBvZiB0aGUgbWFpbiBrZXJuZWwuXG5cbk5vdywgbG9va2luZyBhdCB0aGUgYWN0dWFsIHBhdGNoOiBpdCdzIHdpdGhpbiBgdmZpb19jZHhfbW1hcF9tbWlvYC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgc21hbGwgY2hhbmdlIHRvIGhvdyBhIG1lbW9yeSByZWdpb24gaXMgbWFwcGVkLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGNhbGN1bGF0aW5nIHRoZSBwYWdlIG9mZnNldCBhbmQgYGlvX3JlbWFwX3Bmbl9yYW5nZWAuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgb3JpZ2luYWwgY29kZSB3b3JrcyBhbmQgaG93IHRoZSBtb2RpZmljYXRpb24gY2hhbmdlcyB0aGUgYmVoYXZpb3VyLiBNeSBmaXJzdCBwcmlvcml0eSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLCBzbyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYnVzIGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYyLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6MzEuOTA1MTk3MzQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MTI2NDU4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVkZJT19DRFhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgKz0gZnNsLW1jL1xcbmRyaXZlcnMvdmZpby9NYWtlZmlsZToxODpvYmotJChDT05GSUdfVkZJT19DRFgpICs9IGNkeC9cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy03LVxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZzo4OmNvbmZpZyBWRklPX0NEWFxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIENEWCBidXMgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSArPSB2ZmlvLWNkeC5vXFxuZHJpdmVycy92ZmlvL2NkeC9NYWtlZmlsZS03LVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MjQ0PXN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24gcmVnaW9uLFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjUwLVxcdHBnb2ZmID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDI2XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjUxOlxcdFxcdCgoMVUgXFx1MDAzY1xcdTAwM2MgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI1Mi1cXHRiYXNlID0gcGdvZmYgXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVDtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI2ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNzEtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjcyOlxcdGluZGV4ID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDNlXFx1MDAzZSAoVkZJT19DRFhfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjczLVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtNS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo2OiNpZm5kZWYgVkZJT19DRFhfUFJJVkFURV9IXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NzojZGVmaW5lIFZGSU9fQ0RYX1BSSVZBVEVfSFxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTgtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMC1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDoxMTojZGVmaW5lIFZGSU9fQ0RYX09GRlNFVF9TSElGVCAgICA0MFxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTEyLVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTEzPXN0YXRpYyBpbmxpbmUgdTY0IHZmaW9fY2R4X2luZGV4X3RvX29mZnNldCh1MzIgaW5kZXgpXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTQte1xcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjE1OlxcdHJldHVybiAoKHU2NCkoaW5kZXgpIFxcdTAwM2NcXHUwMDNjIFZGSU9fQ0RYX09GRlNFVF9TSElGVCk7XFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTYtfVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg9NTk9c3RhdGljIHZvaWQgdmZpb19jZHhfaXJxc19jbGVhbnVwKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC02My1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo2NDojZW5kaWYgLyogVkZJT19DRFhfUFJJVkFURV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIxOjM0LjYxNzg1NDc1OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNzkzMTIyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFscmVhZHkgcHJldHR5IGZhbWlsaWFyIHdpdGgga2VybmVsIGRldmVsb3BtZW50IGFuZCBoYXJkd2FyZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDRFggQnVzIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGludG8gdGhpcyBmdXJ0aGVyLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgXCJDRFhcIiBidXMgYWN0dWFsbHkgKmlzKi4gVGhlIG5hbWVzIHN1Z2dlc3QgYSBjb25uZWN0aW9uLCBidXQgSSBjYW4ndCBhc3N1bWUuIE15IGZpcnN0IHN0b3Agc2hvdWxkIGJlIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gaXQg4oCTIGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgIGFuZCBgZHJpdmVycy9jZHgvS2NvbmZpZ2AuIFRoZXNlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZXknbGwgdGVsbCBtZSBpZiBpdOKAmXMgYSBWRklPLXNwZWNpZmljIGJ1cywgYSBtb3JlIGdlbmVyYWwgQ0RYIGJ1cywgYW5kIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhbmQgaW50ZW5kZWQgdXNlcyBhcmUuIFRoYXQncyB0aGUgYmVzdCB3YXkgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUga2VybmVsIGVjb3N5c3RlbS4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgc2V0IG1lIHVwIHRvIGxvb2sgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTozNy45OTcxNzAwOTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBWRklPIENEWCBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXFxuICAgNjpcXHQjXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBWRklPX0NEWFxcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXFxcIlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBDRFhfQlVTXFxuICAxMTpcXHRcXHRzZWxlY3QgRVZFTlRGRFxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBEcml2ZXIgdG8gZW5hYmxlIFZGSU8gc3VwcG9ydCBmb3IgdGhlIGRldmljZXMgb24gQ0RYIGJ1cy5cXG4gIDE0OlxcdFxcdCAgVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlIHVzZSBvZiBDRFggZGV2aWNlcyBwcmVzZW50IGluXFxuICAxNTpcXHRcXHQgIHRoZSBzeXN0ZW0gdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIxOjM3Ljk5NzI3NzUzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4MjYyMDU1MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIG9mIHRoZSBDRFggRHJpdmVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgc3RhcnRlZCBvbiB0aGlzLi4uIExldCdzIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9jZHgvS2NvbmZpZ2AgZmlsZS4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQ0RYIGRyaXZlcnMuIEl0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIHRvIHN0YXJ0LCByaWdodD8gSSdsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGdsZWFuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb2R1bGVzLCBhbnkgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyBmcm9tIHRoZXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHdoaWNoIGRyaXZlcnMgYXJlIGJ1aWx0IGlzIGxhaWQgb3V0LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIGhvdyB0aGV5IGFyZSBjb250cm9sbGVkLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6NDg0NiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6NDAuODIzNDg2MzQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODkxNDkyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ0RYX0JVU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL01ha2VmaWxlPTE5ND1vYmotJChDT05GSUdfRFJNX0FDQ0VMKVxcdFxcdCs9IGFjY2VsL1xcbmRyaXZlcnMvTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19DRFhfQlVTKVxcdFxcdCs9IGNkeC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5Ni1vYmotJChDT05GSUdfRFBMTClcXHRcXHQrPSBkcGxsL1xcbi0tXFxuZHJpdmVycy9jZHgvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L0tjb25maWc6ODpjb25maWcgQ0RYX0JVU1xcbmRyaXZlcnMvY2R4L0tjb25maWctOS1cXHRib29sIFxcXCJDRFggQnVzIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTctXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU6ODpjY2ZsYWdzLXkgKz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9J1xcXCJDRFhfQlVTXFxcIidcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS05LVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHgubyBjb250cm9sbGVyL1xcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTExLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQ0RYX0JVUykgKz0gY2R4X21zaS5vXFxuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTQtZW5kaWZcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTc1Nj1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzk1LVxcdGRldl9zZXRfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LCBcXFwiY2R4LSUwMng6JTAyeFxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk2OlxcdFxcdCAgICAgKChjZHgtXFx1MDAzZWlkIFxcdTAwM2NcXHUwMDNjIENEWF9DT05UUk9MTEVSX0lEX1NISUZUKSB8IChjZHhfZGV2LVxcdTAwM2VidXNfbnVtIFxcdTAwMjYgQ0RYX0JVU19OVU1fTUFTSykpLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTc5Ny1cXHRcXHQgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0pO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODQxLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NDI6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04NDMtXFxuZHJpdmVycy9jZHgvY2R4LmM9ODQ0PXN0cnVjdCBkZXZpY2UgKmNkeF9idXNfYWRkKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODYyLVxcdGRldl9zZXRfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LCBcXFwiY2R4LSUwMnhcXFwiLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjg2MzpcXHRcXHQgICAgICgoY2R4LVxcdTAwM2VpZCBcXHUwMDNjXFx1MDAzYyBDRFhfQ09OVFJPTExFUl9JRF9TSElGVCkgfCAoYnVzX251bSBcXHUwMDI2IENEWF9CVVNfTlVNX01BU0spKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODY0LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODg4LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4ODk6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2J1c19hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OTAtXFxuZHJpdmVycy9jZHgvY2R4LmM9ODkxPWludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxMy19XFxuZHJpdmVycy9jZHgvY2R4LmM6OTE0OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTkxNj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy05MjgtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkyOTpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTMwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTE2MD1zdHJ1Y3QgaXJxX2RvbWFpbiAqY2R4X21zaV9kb21haW5faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtMTkyLX1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MTkzOkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9tc2lfZG9tYWluX2luaXQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZzo4OmlmIENEWF9CVVNcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWctOS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0yNTY9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoyNTc6TU9EVUxFX0lNUE9SVF9OUyhcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjQ3LS8qXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI0ODogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI0OS0gKiBDRFggYnVzIGhvc3RzIGRldmljZXMgKGZ1bmN0aW9ucykgdGhhdCBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIENvbXBvc2FibGVcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNTYtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI1NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNcXHRcXHRcXHRcXHQweDFcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjU4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19NU0dTRVRcXHRcXHRcXHQweDFcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjU5LSN1bmRlZiBNQ19DTURfMHgxX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNjItXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2MzovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX0lOIG1zZ3JlcXVlc3QgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19JTl9MRU5cXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI2NS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY2Oi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjY4LS8qXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjcxLSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlRfT0ZTVFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjczOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfQlVTX0NPVU5UX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjc0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3Ni0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzc6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OC0gKiBFbnVtZXJhdGUgQ0RYIGJ1cyBkZXZpY2VzIG9uIGEgZ2l2ZW4gYnVzXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OS0gKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjgwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXFx0XFx0XFx0XFx0MHgyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19NU0dTRVRcXHRcXHRcXHQweDJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjgyLSN1bmRlZiBNQ19DTURfMHgyX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4NjovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU4gbXNncmVxdWVzdCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODgtLypcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg5LSAqIEJ1cyBudW1iZXIgdG8gZW51bWVyYXRlLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xLCBhcyByZXR1cm5lZCBieVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTA6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjkxLSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fQlVTX09GU1RcXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVNfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTQtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NTovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTctLypcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDEtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX09GU1RcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX0xFTlxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwNi0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDc6ICogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA4LSAqIFJldHVybnMgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGFuZCBNTUlPL01TSSByZXNvdXJjZSBkYXRhIGZvciBhIENEWCBkZXZpY2UuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzE4LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR1xcdFxcdFxcdFxcdFxcdDB4M1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19NU0dTRVRcXHRcXHRcXHRcXHRcXHQweDNcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzIxLSN1bmRlZiBNQ19DTURfMHgzX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMjQtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNTovKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTiBtc2dyZXF1ZXN0ICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0xFTlxcdFxcdFxcdFxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzI3LS8qIERldmljZSBidXMgbnVtYmVyLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0JVU19PRlNUXFx0XFx0XFx0XFx0MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVNfTEVOXFx0XFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzAtLyogRGV2aWNlIG51bWJlciByZWxhdGl2ZSB0byB0aGUgYnVzLCBpbiByYW5nZSAwIHRvIERFVklDRV9DT1VOVC0xIGZvciB0aGF0IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0VfT0ZTVFxcdFxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzMyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fREVWSUNFX0xFTlxcdFxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzMzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzQ6LyogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9MRU5cXHRcXHRcXHRcXHQ4OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzYtLyogMTYtYml0IFZlbmRvciBpZGVudGlmaWVyLCBjb21wbGlhbnQgd2l0aCBQQ0ktU0lHIFZlbmRvcklEIGFzc2lnbm1lbnQuICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WRU5ET1JfSURfT0ZTVFxcdFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzM4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1ZFTkRPUl9JRF9MRU5cXHRcXHRcXHQyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMzOS0vKiAxNi1iaXQgRGV2aWNlIElEIGFzc2lnbmVkIGJ5IHRoZSB2ZW5kb3IgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRF9PRlNUXFx0XFx0XFx0MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0lEX0xFTlxcdFxcdFxcdDJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQyLS8qXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQ1LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX1ZFTkRPUl9JRF9PRlNUXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX1ZFTkRPUl9JRF9MRU5cXHRcXHQyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM0OC0vKlxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1MS0gKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzUyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19ERVZJQ0VfSURfT0ZTVFxcdFxcdDZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzUzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19ERVZJQ0VfSURfTEVOXFx0XFx0MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNTQtLyogMjQtYml0IERldmljZSBDbGFzcyBjb2RlLCBjb21wbGlhbnQgd2l0aCBQQ0ktU0lHIERldmljZSBDbGFzcyBjb2RlcyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTX09GU1RcXHRcXHRcXHQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfQ0xBU1NfTEVOXFx0XFx0XFx0M1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNTctLyogOC1iaXQgdmVuZG9yLWFzc2lnbmVkIHJldmlzaW9uICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fT0ZTVFxcdFxcdDExXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fTEVOXFx0XFx0MVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjAtLyogUmVzZXJ2ZWQgKGFsaWdubWVudCkgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzYxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFU0VSVkVEX09GU1RcXHRcXHRcXHQxMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfUkVTRVJWRURfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjMtLyogTU1JTyByZWdpb24gMCBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX09GU1RcXHRcXHQxNlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTE9fT0ZTVFxcdFxcdDE2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MQk5cXHRcXHQxMjhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzcwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0hJX09GU1RcXHRcXHQyMFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEJOXFx0XFx0MTYwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM3NC0vKiBNTUlPIHJlZ2lvbiAwIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9PRlNUXFx0XFx0MjRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX09GU1RcXHRcXHQyNFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fTEJOXFx0XFx0MTkyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9PRlNUXFx0XFx0MjhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX0xCTlxcdFxcdDIyNFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zODUtLyogTU1JTyByZWdpb24gMSBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX09GU1RcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fT0ZTVFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MQk5cXHRcXHQyNTZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX09GU1RcXHRcXHQzNlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEJOXFx0XFx0Mjg4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM5Ni0vKiBNTUlPIHJlZ2lvbiAxIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9PRlNUXFx0XFx0NDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xPX09GU1RcXHRcXHQ0MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEJOXFx0XFx0MzIwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9ISV9PRlNUXFx0XFx0NDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xCTlxcdFxcdDM1MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MDctLyogTU1JTyByZWdpb24gMiBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX09GU1RcXHRcXHQ0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fT0ZTVFxcdFxcdDQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19MQk5cXHRcXHQzODRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDEzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX09GU1RcXHRcXHQ1MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfTEJOXFx0XFx0NDE2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQxOC0vKiBNTUlPIHJlZ2lvbiAyIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9PRlNUXFx0XFx0NTZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX09GU1RcXHRcXHQ1NlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEJOXFx0XFx0NDQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9PRlNUXFx0XFx0NjBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xCTlxcdFxcdDQ4MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mjg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MjktLyogTU1JTyByZWdpb24gMyBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDMwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX09GU1RcXHRcXHQ2NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTE9fT0ZTVFxcdFxcdDY0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MQk5cXHRcXHQ1MTJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0hJX09GU1RcXHRcXHQ2OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEJOXFx0XFx0NTQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ0MC0vKiBNTUlPIHJlZ2lvbiAzIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9PRlNUXFx0XFx0NzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX09GU1RcXHRcXHQ3MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fTEJOXFx0XFx0NTc2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9PRlNUXFx0XFx0NzZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX0xCTlxcdFxcdDYwOFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NTEtLyogTVNJIHZlY3RvciBjb3VudCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX09GU1RcXHRcXHRcXHQ4MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDU0LS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSAoU01NVSBTdHJlYW1JRCwgR0lDIElUUyBEZXZpY2VJRCkgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9PRlNUXFx0XFx0XFx0ODRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9MRU5cXHRcXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ1Ny1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU4Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMiBtc2dyZXNwb25zZSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOXFx0XFx0XFx0XFx0OTJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDYwLS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSBmb3IgR0lDIElUUyBEZXZpY2VJRCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NjE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfUkVRVUVTVEVSX0RFVklDRV9JRF9PRlNUXFx0ODhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDYyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX1JFUVVFU1RFUl9ERVZJQ0VfSURfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NjMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDY1LS8qXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2NjogKiBNQ19DTURfQ0RYX0JVU19ET1dOXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2Ny0gKiBBc3NlcnRpbmcgcmVzZXQgb24gdGhlIENEWCBidXMgY2F1c2VzIGFsbCBkZXZpY2VzIG9uIHRoZSBidXMgdG8gYmUgcXVpZXNjZWQuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDc3LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Nzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOXFx0XFx0XFx0XFx0XFx0MHg0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ3OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fTVNHU0VUXFx0XFx0XFx0MHg0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4MC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDgxOi8qIE1DX0NNRF9DRFhfQlVTX0RPV05fSU4gbXNncmVxdWVzdCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDgzLS8qIEJ1cyBudW1iZXIgdG8gcHV0IGluIHJlc2V0LCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX09GU1RcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDg2LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODctLypcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDg4OiAqIE1DX0NNRF9DRFhfQlVTX0RPV05fT1VUIG1zZ3Jlc3BvbnNlOiBUaGUgYnVzIGlzIHF1aWVzY2VkLCBubyBmdXJ0aGVyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4OS0gKiB1cHN0cmVhbSB0cmFmZmljIGZvciBkZXZpY2VzIG9uIHRoaXMgYnVzLlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTAtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ5MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fT1VUX0xFTlxcdFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDkyLVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ5NC0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0OTU6ICogTUNfQ01EX0NEWF9CVVNfVVBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDk2LSAqIEFmdGVyIGJ1cyByZXNldCBpcyBkZS1hc3NlcnRlZCwgZGV2aWNlcyBhcmUgaW4gYSBzdGF0ZSB3aGljaCBpcyBmdW5jdGlvbmFsbHlcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDUtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQXFx0XFx0XFx0XFx0XFx0MHg1XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX01TR1NFVFxcdFxcdFxcdDB4NVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDgtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwOTovKiBNQ19DTURfQ0RYX0JVU19VUF9JTiBtc2dyZXF1ZXN0ICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNTExLS8qIEJ1cyBudW1iZXIgdG8gdGFrZSBvdXQgb2YgcmVzZXQsIGluIHJhbmdlIDAgdG8gQlVTX0NPVU5ULTEgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTEyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfSU5fQlVTX09GU1RcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0JVU19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTE1Oi8qIE1DX0NNRF9DRFhfQlVTX1VQX09VVCBtc2dyZXNwb25zZTogVGhlIGJ1cyBjYW4gbm93IGJlIGVudW1lcmF0ZWQuICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX09VVF9MRU5cXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xMD1pbnQgY2R4X21jZGlfZ2V0X251bV9idXNlcyhzdHJ1Y3QgY2R4X21jZGkgKmNkeClcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjpcXHRNQ0RJX0RFQ0xBUkVfQlVGKG91dGJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTMtXFx0c2l6ZV90IG91dGxlbjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTY6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFUywgTlVMTCwgMCxcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTctXFx0XFx0XFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXFx1MDAyNm91dGxlbik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjIxOlxcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfTEVOKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yMi1cXHRcXHRyZXR1cm4gLUVJTztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjMtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjI0OlxcdHJldHVybiBNQ0RJX0RXT1JEKG91dGJ1ZiwgQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yNS19XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9Mjc9aW50IGNkeF9tY2RpX2dldF9udW1fZGV2cyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCwgaW50IGJ1c19udW0pXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTI4LXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6Mjk6XFx0TUNESV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzA6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0xFTik7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTMxLVxcdHNpemVfdCBvdXRsZW47XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzMtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjM0OlxcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zNS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzY6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzctXFx0XFx0XFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXFx1MDAyNm91dGxlbik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjQxOlxcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU4pXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQyLVxcdFxcdHJldHVybiAtRUlPO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00My1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NDQ6XFx0cmV0dXJuIE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDUtfVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTQ3PWludCBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCxcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy01MC17XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjUxOlxcdE1DRElfREVDTEFSRV9CVUYob3V0YnVmLCBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTI6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNTMtXFx0c3RydWN0IHJlc291cmNlICpyZXMgPSBcXHUwMDI2ZGV2X3BhcmFtcy1cXHUwMDNlcmVzWzBdO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTU3LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1ODpcXHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1OTpcXHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0UsIGRldl9udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02MC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjE6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUcsIGluYnVmLCBzaXplb2YoaW5idWYpLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Mi1cXHRcXHRcXHQgICBvdXRidWYsIHNpemVvZihvdXRidWYpLCBcXHUwMDI2b3V0bGVuKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02NS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjY6XFx0aWYgKG91dGxlbiAhPSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Ny1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03MS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NzI6XFx0cmVxX2lkID0gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRCk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTczLVxcdGRldl9wYXJhbXMtXFx1MDAzZXJlcV9pZCA9IHJlcV9pZDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03NS1cXHRkZXZfcGFyYW1zLVxcdTAwM2Vtc2lfZGV2X2lkID0gTUNESV9EV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc2OlxcdFxcdFxcdFxcdFxcdCAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNzctXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc4LVxcdGRldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudCA9IDA7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc5OlxcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkUpICE9IDApIHtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODAtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MTpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04Mi1cXHRcXHRyZXNbZGV2X3BhcmFtcy1cXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MzpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODQtXFx0XFx0XFx0XFx0ICAgTUNESV9RV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjg1OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFKSAtIDE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg2LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODktXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjkwOlxcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkUpICE9IDApIHtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTEtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5MjpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy05My1cXHRcXHRyZXNbZGV2X3BhcmFtcy1cXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5NDpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTUtXFx0XFx0XFx0XFx0ICAgTUNESV9RV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjk2OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFKSAtIDE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTk3LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTAwLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDE6XFx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRSkgIT0gMCkge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDItXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDM6XFx0XFx0XFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA0LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmVuZCA9XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwNTpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA2LVxcdFxcdFxcdFxcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDc6XFx0XFx0XFx0XFx0XFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkUpIC0gMTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA4LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTExLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTI6XFx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRSkgIT0gMCkge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTMtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTQ6XFx0XFx0XFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE1LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmVuZCA9XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjExNjpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE3LVxcdFxcdFxcdFxcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTg6XFx0XFx0XFx0XFx0XFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkUpIC0gMTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE5LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTIyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjM6XFx0ZGV2X3BhcmFtcy1cXHUwMDNldmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI0OlxcdGRldl9wYXJhbXMtXFx1MDAzZWRldmljZSA9IE1DRElfV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRCk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyNS1cXHRkZXZfcGFyYW1zLVxcdTAwM2VzdWJzeXNfdmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZixcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI2OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSUQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMjctXFx0ZGV2X3BhcmFtcy1cXHUwMDNlc3Vic3lzX2RldmljZSA9IE1DRElfV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyODpcXHRcXHRcXHRcXHRcXHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTI5LVxcdGRldl9wYXJhbXMtXFx1MDAzZWNsYXNzID0gTUNESV9EV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMDpcXHRcXHRcXHRcXHQgICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTKSBcXHUwMDI2IDB4RkZGRkZGO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzE6XFx0ZGV2X3BhcmFtcy1cXHUwMDNlcmV2aXNpb24gPSBNQ0RJX0JZVEUob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT04pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzI6XFx0ZGV2X3BhcmFtcy1cXHUwMDNlbnVtX21zaSA9IE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NU0lfQ09VTlQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9MTM3PWludCBjZHhfbWNkaV9idXNfZW5hYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzgte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzk6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfVVBfSU5fTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTQwLVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0MS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTQyOlxcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX1VQX0lOX0JVUywgYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE0MzpcXHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19VUCwgaW5idWYsIHNpemVvZihpbmJ1ZiksXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0NC1cXHRcXHRcXHQgICBOVUxMLCAwLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xNDk9aW50IGNkeF9tY2RpX2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTAte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTE6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRE9XTl9JTl9MRU4pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTItXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTQ6XFx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfRE9XTl9JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTU6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRE9XTiwgaW5idWYsIHNpemVvZihpbmJ1ZiksXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1Ni1cXHRcXHRcXHQgICBOVUxMLCAwLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jPTE2MTU9dTMyIHI2MDBfZ3B1X2NoZWNrX3NvZnRfcmVzZXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYy0xNjY3LVxcdGlmIChHXzAwMEU1MF9NQ0JfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWl9CVVNZKHRtcCkgfFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jOjE2Njg6XFx0ICAgIEdfMDAwRTUwX01DRFlfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWF9CVVNZKHRtcCkgfFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jLTE2NjktXFx0ICAgIEdfMDAwRTUwX01DRFdfQlVTWSh0bXApKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oLTE4MzMtI2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFlfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDExKSBcXHUwMDI2IDEpXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oOjE4MzQ6I2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFhfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDEyKSBcXHUwMDI2IDEpXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oLTE4MzUtI2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFdfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDEzKSBcXHUwMDI2IDEpXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LmM9MTg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKiBjb25zdCBpb21tdV9idXNlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdS5jLTE5OS0jZW5kaWZcXG5kcml2ZXJzL2lvbW11L2lvbW11LmM6MjAwOiNpZmRlZiBDT05GSUdfQ0RYX0JVU1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0yMDEtXFx0XFx1MDAyNmNkeF9idXNfdHlwZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZz04PWNvbmZpZyBWRklPX0NEWFxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIENEWCBidXMgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6MTA6XFx0ZGVwZW5kcyBvbiBDRFhfQlVTXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTExLVxcdHNlbGVjdCBFVkVOVEZEXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0zNjE9TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJWRklPIGZvciBDRFggZGV2aWNlcyAtIFVzZXIgTGV2ZWwgbWV0YS1kcml2ZXJcXFwiKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozNjI6TU9EVUxFX0lNUE9SVF9OUyhcXFwiQ0RYX0JVU1xcXCIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTgtXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjk6I2lmbmRlZiBfQ0RYX0JVU19IX1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxMDojZGVmaW5lIF9DRFhfQlVTX0hfXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTExLVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE4LSNkZWZpbmUgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQgNFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxOTojZGVmaW5lIENEWF9CVVNfTlVNX01BU0sgMHhGXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTI4MT1zdGF0aWMgaW5saW5lIHZvaWQgY2R4X2Rpc2FibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTI4Ni1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6Mjg3OiNlbmRpZiAvKiBfQ0RYX0JVU19IXyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo0My4zMTI2NTA4NjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDc3MDE4NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkludmVzdGlnYXRpbmcgQ0RYIENvbnRyb2xsZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyBhcmUgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyBhcyBgY2R4X2NvbnRyb2xsZXJgIGluc3RhbmNlcy4gVGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIGlzIHRvIGxldmVyYWdlIG15IG9sZCBmcmllbmQsIGBncmVwYC4gSSdsbCBydW4gYSBzZWFyY2ggc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcmAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBsaXN0IG9mIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlYmFzZSB3aGVyZSB0aGlzIHJlZ2lzdHJhdGlvbiBpcyBoYXBwZW5pbmcuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgd2hpY2ggc3BlY2lmaWMgZHJpdmVycyBhcmUgbWFuYWdpbmcgdGhlc2UgY29udHJvbGxlcnMgYW5kIHdoYXQgdGhlaXIgcmVzcGVjdGl2ZSByb2xlcyBhcmUuIFRoaXMgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGlmIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MDMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo0NS43ODk2NzU3MzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjYxNDAwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmM9ODg5PUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9idXNfYWRkLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtODkwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg5MTppbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY2R4LmMtODkyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxMy19XFxuZHJpdmVycy9jZHgvY2R4LmM6OTE0OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4Lmg9MzE9c3RydWN0IGNkeF9kZXZfcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTQ5LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5oOjUwOiAqIGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyIC0gUmVnaXN0ZXIgYSBDRFggY29udHJvbGxlciBhbmQgaXRzIHBvcnRzXFxuZHJpdmVycy9jZHgvY2R4LmgtNTEtICpcXHRcXHRvbiB0aGUgQ0RYIGJ1cy5cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTU1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XFxuZHJpdmVycy9jZHgvY2R4LmgtNTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9NDY9dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00OC1cXHQvKiBSZWdpc3RlciBDRFggY29udHJvbGxlciB3aXRoIENEWCBidXMgZHJpdmVyICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ5OlxcdGlmIChjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihjZHgpKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01MC1cXHRcXHRkZXZfZXJyKGNkeC1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBjb250cm9sbGVyXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6NDguMDE1ODI4NTIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNjk5Nzg4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AgZmlsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbmFsaXR5IHRoYXQgZmlsZSBpcyByZXNwb25zaWJsZSBmb3IgYW5kLCBtb3JlIHNwZWNpZmljYWxseSwgd2hhdCB0aGUgYGNkeGAgY29udHJvbGxlciBpcyBkb2luZy4gQSBnb29kIGZpcnN0IHN0ZXAgd291bGQgYmUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2UuIEknbGwgbmVlZCB0byBsb2NhdGUgd2hlcmUgdGhpcyBmaWxlIGlzIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBgIHdpdGhpbiB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvYCBkaXJlY3RvcnkgYW5kIHNlZSB3aGF0IHBvcHMgdXAsIHNlYXJjaGluZyBmb3IgbWVudGlvbnMgb2YgdGhlIGBjZHhfY29udHJvbGxlci5jYCBmaWxlLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBvciBtb2R1bGUgcmVnaXN0cmF0aW9uIHBvaW50cyBhbmQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGludGVncmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQ2MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIxOjUwLjE4NTgxMjA4MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1MDMzMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X2NvbnRyb2xsZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jZHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk6c3RhdGljIERFRklORV9JREEoY2R4X2NvbnRyb2xsZXJfaWRhKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgyLS8qIERlYnVnZnMgZGlyIGZvciBjZHggYnVzICovXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz05NT1pbnQgY2R4X2Rldl9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy05Ny1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy05OS1cXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZyA9IHswfTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTE0Nj1zdGF0aWMgaW50IGNkeF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNDktXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTUwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTIyMz1pbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjI0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMjU6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjI2LVxcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MjM5PWludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI0Mi1cXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTMwMj1zdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMDUtXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA2OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cXHRpbnQgZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0zMzc9c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM0MC1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MzQ5PXN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzUyLVxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTQtXFx0dTMyIGlucHV0X2lkID0gY2R4X2Rldi1cXHUwMDNlcmVxX2lkO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDU5LVxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz01NzU9c3RhdGljIHNzaXplX3QgcmVzY2FuX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTc3LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Nzg6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTc5LVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTg3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU4ODpcXHRndWFyZChtdXRleCkoXFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU4OS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTc1Nj1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NzU4OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gZGV2X3BhcmFtcy1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc1OS1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTg0Mj1FWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXFxcIkNEWF9CVVNfQ09OVFJPTExFUlxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NDQ6c3RydWN0IGRldmljZSAqY2R4X2J1c19hZGQoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXFxuZHJpdmVycy9jZHgvY2R4LmMtODQ1LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTg4OT1FWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfYnVzX2FkZCwgXFxcIkNEWF9CVVNfQ09OVFJPTExFUlxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg5MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo4OTE6aW50IGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTg5Mi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy04OTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6ODk1OlxcdHJldCA9IGlkYV9hbGxvY19yYW5nZShcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfaWRhLCAwLCAgTUFYX0NEWF9DT05UUk9MTEVSUyAtIDEsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg5Ni1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtOTAyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkwMzpcXHRtdXRleF9sb2NrKFxcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcXG5kcml2ZXJzL2NkeC9jZHguYy05MDQtXFx0Y2R4LVxcdTAwM2VpZCA9IHJldDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkwOS1cXHRjZHgtXFx1MDAzZWNvbnRyb2xsZXJfcmVnaXN0ZXJlZCA9IHRydWU7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTEwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTExLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9OTE0PUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkxNjp2b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY2R4LmMtOTE3LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkyMC1cXG5kcml2ZXJzL2NkeC9jZHguYzo5MjE6XFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTIyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtOTI0LVxcdGRldmljZV9mb3JfZWFjaF9jaGlsZChjZHgtXFx1MDAzZWRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo5MjU6XFx0aWRhX2ZyZWUoXFx1MDAyNmNkeF9jb250cm9sbGVyX2lkYSwgY2R4LVxcdTAwM2VpZCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTI2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkyNzpcXHRtdXRleF91bmxvY2soXFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTkyOC19XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaD0zMT1zdHJ1Y3QgY2R4X2Rldl9wYXJhbXMge1xcbmRyaXZlcnMvY2R4L2NkeC5oOjMyOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5oLTMzLVxcdHN0cnVjdCBkZXZpY2UgKnBhcmVudDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTU1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XFxuZHJpdmVycy9jZHgvY2R4LmgtNTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC02MS0gKi9cXG5kcml2ZXJzL2NkeC9jZHguaDo2Mjp2b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbmRyaXZlcnMvY2R4L2NkeC5oLTYzLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4Lmg9NzM9aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcyk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC04My0gKi9cXG5kcml2ZXJzL2NkeC9jZHguaDo4NDpzdHJ1Y3QgZGV2aWNlICpjZHhfYnVzX2FkZChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY2R4LmgtODUtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9Mzk9c3RhdGljIHZvaWQgY2R4X21zaV93cml0ZV9pcnFfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNDItXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKG1zaV9kZXNjLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo0MzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNDQtXFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9Njg9aW50IGNkeF9lbmFibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy02OS17XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jOjcwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy03MS1cXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz04ND12b2lkIGNkeF9kaXNhYmxlX21zaShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtODUte1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo4NjpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtODctXFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0NEWF9DT05UUk9MTEVSKSArPSBjZHgtY29udHJvbGxlci5vXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9NYWtlZmlsZTo5OmNkeC1jb250cm9sbGVyLW9ianMgOj0gY2R4X2NvbnRyb2xsZXIubyBjZHhfcnBtc2cubyBtY2RpLm8gbWNkaV9mdW5jdGlvbnMub1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTEyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxMzojaW5jbHVkZSBcXFwiY2R4X2NvbnRyb2xsZXIuaFxcXCJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQtI2luY2x1ZGUgXFxcIi4uL2NkeC5oXFxcIlxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2R4X21jZGlfb3BzIG1jZGlfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTM1LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzozNjpzdGF0aWMgaW50IGNkeF9idXNfZW5hYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0zNy17XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQxOnN0YXRpYyBpbnQgY2R4X2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00Mi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ2OnZvaWQgY2R4X3JwbXNnX3Bvc3RfcHJvYmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01Mi1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NTM6dm9pZCBjZHhfcnBtc2dfcHJlX3JlbW92ZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTQte1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTU4LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo1OTpzdGF0aWMgaW50IGNkeF9jb25maWd1cmVfZGV2aWNlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy02MC1cXHRcXHRcXHRcXHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTkyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo5MzpzdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk0LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0xNjQ9c3RhdGljIGludCB4bG54X2NkeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNjUte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNjY6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE2Ny1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTIyMj1zdGF0aWMgdm9pZCB4bG54X2NkeF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMjIzLXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MjI0OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIyNS1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpID0gY2R4LVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5oLTEzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaDoxNDp2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5oOjE2OnZvaWQgY2R4X3JwbXNnX3ByZV9yZW1vdmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUtI2luY2x1ZGUgXFxcIi4uL2NkeC5oXFxcIlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTY6I2luY2x1ZGUgXFxcImNkeF9jb250cm9sbGVyLmhcXFwiXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNy0jaW5jbHVkZSBcXFwibWNkaV9mdW5jdGlvbnMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9NDY9c3RhdGljIGludCBjZHhfYXR0YWNoX3RvX3Jwcm9jKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTQ4LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcjVfY29yZV9ub2RlO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6NDk6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTUwLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTg1PXN0YXRpYyB2b2lkIGNkeF9kZXRhY2hfdG9fcjUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTg2LXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjg3OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy04OC1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz05Nz1zdGF0aWMgaW50IGNkeF9ycG1zZ19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtOTkte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTAwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNnJwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTAxLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTExPXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTEyLXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjExMzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTE0LVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTEyMT1zdGF0aWMgaW50IGNkeF9ycG1zZ19wcm9iZShzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTIzLVxcdHN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvID0gezB9O1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTI0OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjUtXFx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyNi1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjEyNzpcXHRjZHhfYyA9IChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKiljZHhfcnBtc2dfaWRfdGFibGVbMF0uZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjgtXFx0Y2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTQ5PXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19yZW1vdmUoc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNTAte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTUxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNnJwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUyLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTY5PWludCBjZHhfc2V0dXBfcnBtc2coc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3MC17XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxNzE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3Mi1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo1MC4yMzczMjI2NjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzE3NjA2Mjc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDRFggRGVlcCBEaXZlKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgaGVyZS4gQ0RYLi4uIHJpZ2h0LiBDb21wb3NhYmxlIERNQSBzdWJzeXN0ZW0gYnVzLiBUaGF0IHJpbmdzIGEgYmVsbCDigJMgZGVmaW5pdGVseSBpbiB0aGUgQU1EL1hpbGlueCBGUEdBL1NvQyBlY29zeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgdGhhdCBjcnVjaWFsIGxpbmsgYmV0d2VlbiBWZXJzYWwgQUNBUC9GUEdBIGRldmljZXMgYW5kIHRoZSBSNSBjb3JlLCByZWx5aW5nIG9uIG1lY2hhbmlzbXMgbGlrZSBycG1zZy9yZW1vdGVwcm9jLiBJJ20gdGhpbmtpbmcgb2YgY29tbXVuaWNhdGlvbiB2aWEgcGxhdGZvcm0gZGV2aWNlcyBsaWtlIGB4bG54LHZlcnNhbC1uZXQtY2R4YCBvciByZWxhdGVkIGRldmljZXMuXG5cblRpbWUgdG8gY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBub3cuIEknbGwgc3RhcnQgd2l0aCB0aG9zZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWdgIGFuZCBgZHJpdmVycy9jZHgvS2NvbmZpZ2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgZXhhY3RseSB3aGF0IGNvbXBvbmVudHMgYXJlIGludm9sdmVkIGFuZCBob3cgdGhpcyBzeXN0ZW0gaXMgYXJjaGl0ZWN0ZWQuIFRoYXQgaXMgd2hlcmUgdGhlIGtleSBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo1My40MTMzODk2NDNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgQ0RYIGJ1cyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXFxuICAgNjpcXHQjXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBDRFhfQlVTXFxuICAgOTpcXHRcXHRib29sIFxcXCJDRFggQnVzIGRyaXZlclxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQVJNNjQgfHwgQ09NUElMRV9URVNUXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgIERyaXZlciB0byBlbmFibGUgQ29tcG9zYWJsZSBETUEgVHJhbnNmZXIoQ0RYKSBCdXMuIENEWCBidXNcXG4gIDEzOlxcdFxcdCAgZXhwb3NlcyBGYWJyaWMgZGV2aWNlcyB3aGljaCB1c2VzIGNvbXBvc2FibGUgRE1BIElQIHRvIHRoZVxcbiAgMTQ6XFx0XFx0ICBBUFUuIENEWCBidXMgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHNjYW5uaW5nIGFuZCBwcm9iaW5nXFxuICAxNTpcXHRcXHQgIG9mIENEWCBkZXZpY2VzLiBDRFggZGV2aWNlcyBhcmUgbWVtb3J5IG1hcHBlZCBvbiBzeXN0ZW0gYnVzXFxuICAxNjpcXHRcXHQgIGZvciBlbWJlZGRlZCBDUFVzLiBDRFggYnVzIHVzZXMgQ0RYIGNvbnRyb2xsZXIgYW5kIGZpcm13YXJlXFxuICAxNzpcXHRcXHQgIHRvIHNjYW4gdGhlc2UgQ0RYIGRldmljZXMuXFxuICAxODpcXHRcXG4gIDE5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo1My40MTM0NjE5NzNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzMzNzc4NzMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ0RYX0JVUyBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYENEWF9CVVNgIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXMgdGhhdCBgZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQVJNNjQgfHwgQ09NUElMRV9URVNUYCBkaXJlY3RpdmUuIFRoYXQncyBjcnVjaWFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGl0IHJlcXVpcmluZyBlaXRoZXIgdGhlIHByZXNlbmNlIG9mIHRoZSBEZXZpY2UgVHJlZSwgYmVpbmcgb24gYW4gQVJNNjQgYXJjaGl0ZWN0dXJlLCBvciB0aGUgYENPTVBJTEVfVEVTVGAgb3B0aW9uIGJlaW5nIGFjdGl2ZS4gRWFjaCBvZiB0aGVzZSBjb25kaXRpb25zIGNoYW5nZXMgdGhlIGNvbnRleHQuIFxuXG5UaGVuLCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBgQ0RYX0JVU2AsIEkgc2hvdWxkIHJlYWxseSBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2AuIEl0IGlzIGxpa2VseSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFybHkgbGFpZCBvdXQgdGhlcmUsIHdoaWNoIEkgY2FuIHVzZSB0byBpbmZlciB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzE0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo1Ni43NTEyNjA4NDVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy5cXG4gICA2OlxcdCNcXG4gICA3OlxcdFxcbiAgIDg6XFx0aWYgQ0RYX0JVU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQ0RYX0NPTlRST0xMRVJcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJDRFggYnVzIGNvbnRyb2xsZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG4gIDEzOlxcdFxcdHNlbGVjdCBSRU1PVEVQUk9DXFxuICAxNDpcXHRcXHRzZWxlY3QgUlBNU0dcXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgQ0RYIGNvbnRyb2xsZXIgZHJpdmVzIHRoZSBDRFggYnVzLiBJdCBpbnRlcmFjdHMgd2l0aFxcbiAgMTc6XFx0XFx0ICBmaXJtd2FyZSB0byBnZXQgdGhlIGhhcmR3YXJlIGRldmljZXMgYW5kIHJlZ2lzdGVycyB3aXRoXFxuICAxODpcXHRcXHQgIHRoZSBDRFggYnVzLiBTYXkgWSB0byBlbmFibGUgdGhlIENEWCBoYXJkd2FyZSBkcml2ZXIuXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0ZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6NTYuNzUxMzU2NDU1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5MTk2NTEwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDRFggRGV2aWNlIEludGVncmF0aW9uKipcblxuT2theSwgc28gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgZGVmaW5pdGVseSBgYW1kNjRgLCBvciB4ODZfNjQsIHdoaWNoIGlzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhpcyBgQ0RYX0JVU2AgZGVwZW5kZW5jeS4gSXQgc2VlbXMgbGlrZSBpdCdzIHRpZWQgdG8gYE9GIFx1MDAyNlx1MDAyNiBBUk02NCB8fCBDT01QSUxFX1RFU1RgLiBUaGF0J3MgaW50ZXJlc3RpbmcuIFRoZSBxdWVzdGlvbiBpcywgY2FuIGEgQ0RYIGRldmljZSAqZXZlciogcmVhbGlzdGljYWxseSBiZSByZWdpc3RlcmVkIG9yIGV2ZW4gY3JlYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvbiBgYW1kNjRgLCBvciBhbnkgY29tbW9uIFZNLCBldmVuIGlmIGBDT05GSUdfQ09NUElMRV9URVNUYCBpcyBlbmFibGVkPyBUaGF0J3MgYSBrZXkgcXVlc3Rpb24gaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByYWN0aWNhbGl0aWVzLlxuXG5NeSBtYWluIHBvaW50IG9mIGNvbmZ1c2lvbiBzdGVtcyBmcm9tIG5vdCBrbm93aW5nICpob3cqIGEgQ0RYIGRldmljZSBpcyBjcmVhdGVkIHRvIGJlZ2luIHdpdGguIFdoYXQncyB0aGUgdHJpZ2dlcmluZyBtZWNoYW5pc20/IExldCBtZSBkcmlsbCBkb3duIGFuZCBleGFtaW5lIHRoZSBgY2R4X2RldmljZV9hZGRgIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgc2l0ZXMgYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSB3YXlzIGRldmljZXMgYXJlIGFjdHVhbGx5IGFkZGVkIHRvIHRoZSBDRFggYnVzLiBUaGF0IHdpbGwgaWxsdW1pbmF0ZSB0aGUgd2hvbGUgcHJvY2Vzcy4gSSdsbCBmb2N1cyBvbiBgY2R4X2RldmljZV9hZGRgIGFuZCBldmVyeSBzaW5nbGUgY2FsbGVyIG9mIHRoYXQgZnVuY3Rpb24uIFRoYXQncyB0aGUgY29yZSBvZiB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODA4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MDIuNjcxMDEzNjY2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzQzNTg1OTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeF9kZXZpY2VfYWRkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY2R4L2NkeC5jPTcyNz1zdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03NTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NzU2OmludCBjZHhfZGV2aWNlX2FkZChzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgKmRldl9wYXJhbXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtNzU3LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTg0MS19XFxuZHJpdmVycy9jZHgvY2R4LmM6ODQyOkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9kZXZpY2VfYWRkLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtODQzLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4Lmg9NjI9dm9pZCBjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTY0LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5oOjY1OiAqIGNkeF9kZXZpY2VfYWRkIC0gQWRkIGEgQ0RYIGRldmljZS4gVGhpcyBmdW5jdGlvbiBhZGRzIGEgQ0RYIGRldmljZVxcbmRyaXZlcnMvY2R4L2NkeC5oLTY2LSAqXFx0XFx0b24gdGhlIENEWCBidXMgYXMgcGVyIHRoZSBkZXZpY2UgcGFyYW1ldGVycyBwcm92aWRlZFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmgtNzItICovXFxuZHJpdmVycy9jZHgvY2R4Lmg6NzM6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcyk7XFxuZHJpdmVycy9jZHgvY2R4LmgtNzQtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9OTM9c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0MS1cXHRcXHRcXHQvKiBBZGQgdGhlIGRldmljZSB0byB0aGUgY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNDI6XFx0XFx0XFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXFx1MDAyNmRldl9wYXJhbXMpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDMtXFx0XFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMjowNS4wMTQ2MTIwNzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDc3Mzk0MTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aW9uIGludG8gY2R4X2RldmljZV9hZGQqKlxuXG5Pa2F5LCBzbyBgY2R4X2RldmljZV9hZGRgIOKAkyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzICpvbmx5KiBjYWxsZWQgYnkgYGNkeF9zY2FuX2RldmljZXNgLCBhbmQgdGhhdCdzIGZvdW5kIHdpdGhpbiBgZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jYC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgcmlnaHQ/IFRvIHJlYWxseSBncmFzcCB3aGF0J3MgaGFwcGVuaW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBjZHhfY29udHJvbGxlcmAgaXMgcHJvYmVkIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgZm9yIHdoZW4gYW5kIHdoeSBgY2R4X2RldmljZV9hZGRgIGdldHMgY2FsbGVkLiBTbywgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgIGFuZCBzZWUgd2hhdCB0aGUgcHJvYmluZyBzZXR1cCBsb29rcyBsaWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODcxMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjA5Ljc4ODU1ODY1OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjA6XFx0XFx0LnNjYW5cXHRcXHQ9IGNkeF9zY2FuX2RldmljZXMsXFxuIDE2MTpcXHRcXHQuZGV2X2NvbmZpZ3VyZVxcdD0gY2R4X2NvbmZpZ3VyZV9kZXZpY2UsXFxuIDE2MjpcXHR9O1xcbiAxNjM6XFx0XFxuIDE2NDpcXHRzdGF0aWMgaW50IHhsbnhfY2R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDE2NTpcXHR7XFxuIDE2NjpcXHRcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcXG4gMTY3OlxcdFxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuIDE2ODpcXHRcXHRpbnQgcmV0O1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRjZHhfbWNkaSA9IGt6YWxsb2Nfb2JqKCpjZHhfbWNkaSk7XFxuIDE3MTpcXHRcXHRpZiAoIWNkeF9tY2RpKVxcbiAxNzI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE3MzpcXHRcXG4gMTc0OlxcdFxcdC8qIFN0b3JlIHRoZSBNQ0RJIG9wcyAqL1xcbiAxNzU6XFx0XFx0Y2R4X21jZGktXFx1MDAzZW1jZGlfb3BzID0gXFx1MDAyNm1jZGlfb3BzO1xcbiAxNzY6XFx0XFx0LyogTUNESSBGVzogSW5pdGlhbGl6ZSB0aGUgRlcgcGF0aCAqL1xcbiAxNzc6XFx0XFx0cmV0ID0gY2R4X21jZGlfaW5pdChjZHhfbWNkaSk7XFxuIDE3ODpcXHRcXHRpZiAocmV0KSB7XFxuIDE3OTpcXHRcXHRcXHRkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJldCwgXFxcIk1DREkgSW5pdGlhbGl6YXRpb24gZmFpbGVkXFxcXG5cXFwiKTtcXG4gMTgwOlxcdFxcdFxcdGdvdG8gbWNkaV9pbml0X2ZhaWw7XFxuIDE4MTpcXHRcXHR9XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdGNkeCA9IGt6YWxsb2Nfb2JqKCpjZHgpO1xcbiAxODQ6XFx0XFx0aWYgKCFjZHgpIHtcXG4gMTg1OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuIDE4NjpcXHRcXHRcXHRnb3RvIGNkeF9hbGxvY19mYWlsO1xcbiAxODc6XFx0XFx0fVxcbiAxODg6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgY2R4KTtcXG4gMTg5OlxcdFxcbiAxOTA6XFx0XFx0Y2R4LVxcdTAwM2VkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiAxOTE6XFx0XFx0Y2R4LVxcdTAwM2Vwcml2ID0gY2R4X21jZGk7XFxuIDE5MjpcXHRcXHRjZHgtXFx1MDAzZW9wcyA9IFxcdTAwMjZjZHhfb3BzO1xcbiAxOTM6XFx0XFxuIDE5NDpcXHRcXHQvKiBDcmVhdGUgTVNJIGRvbWFpbiAqL1xcbiAxOTU6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0dFTkVSSUNfTVNJX0lSUSkpXFxuIDE5NjpcXHRcXHRcXHRjZHgtXFx1MDAzZW1zaV9kb21haW4gPSBjZHhfbXNpX2RvbWFpbl9pbml0KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxOTc6XFx0XFx0aWYgKCFjZHgtXFx1MDAzZW1zaV9kb21haW4pIHtcXG4gMTk4OlxcdFxcdFxcdHJldCA9IGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVOT0RFViwgXFxcImNkeF9tc2lfZG9tYWluX2luaXQoKSBmYWlsZWRcXFwiKTtcXG4gMTk5OlxcdFxcdFxcdGdvdG8gY2R4X21zaV9mYWlsO1xcbiAyMDA6XFx0XFx0fVxcbiAyMDE6XFx0XFxuIDIwMjpcXHRcXHRyZXQgPSBjZHhfc2V0dXBfcnBtc2cocGRldik7XFxuIDIwMzpcXHRcXHRpZiAocmV0KSB7XFxuIDIwNDpcXHRcXHRcXHRkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJldCwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBDRFggUlBNc2cgdHJhbnNwb3J0XFxcXG5cXFwiKTtcXG4gMjA1OlxcdFxcdFxcdGdvdG8gY2R4X3JwbXNnX2ZhaWw7XFxuIDIwNjpcXHRcXHR9XFxuIDIwNzpcXHRcXG4gMjA4OlxcdFxcdHJldHVybiAwO1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRjZHhfcnBtc2dfZmFpbDpcXG4gMjExOlxcdFxcdGlycV9kb21haW5fcmVtb3ZlKGNkeC1cXHUwMDNlbXNpX2RvbWFpbik7XFxuIDIxMjpcXHRjZHhfbXNpX2ZhaWw6XFxuIDIxMzpcXHRcXHRrZnJlZShjZHgpO1xcbiAyMTQ6XFx0Y2R4X2FsbG9jX2ZhaWw6XFxuIDIxNTpcXHRcXHRjZHhfbWNkaV9maW5pc2goY2R4X21jZGkpO1xcbiAyMTY6XFx0bWNkaV9pbml0X2ZhaWw6XFxuIDIxNzpcXHRcXHRrZnJlZShjZHhfbWNkaSk7XFxuIDIxODpcXHRcXG4gMjE5OlxcdFxcdHJldHVybiByZXQ7XFxuIDIyMDpcXHR9XFxuIDIyMTpcXHRcXG4gMjIyOlxcdHN0YXRpYyB2b2lkIHhsbnhfY2R4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiAyMjM6XFx0e1xcbiAyMjQ6XFx0XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gMjI1OlxcdFxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXFx1MDAzZXByaXY7XFxuIDIyNjpcXHRcXG4gMjI3OlxcdFxcdGNkeF9kZXN0cm95X3JwbXNnKHBkZXYpO1xcbiAyMjg6XFx0XFxuIDIyOTpcXHRcXHRpcnFfZG9tYWluX3JlbW92ZShjZHgtXFx1MDAzZW1zaV9kb21haW4pO1xcbiAyMzA6XFx0XFx0a2ZyZWUoY2R4KTtcXG4gMjMxOlxcdFxcbiAyMzI6XFx0XFx0Y2R4X21jZGlfZmluaXNoKGNkeF9tY2RpKTtcXG4gMjMzOlxcdFxcdGtmcmVlKGNkeF9tY2RpKTtcXG4gMjM0OlxcdH1cXG4gMjM1OlxcdFxcbiAyMzY6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2R4X21hdGNoX3RhYmxlW10gPSB7XFxuIDIzNzpcXHRcXHR7LmNvbXBhdGlibGUgPSBcXFwieGxueCx2ZXJzYWwtbmV0LWNkeFxcXCIsfSxcXG4gMjM4OlxcdFxcdHsgfSxcXG4gMjM5OlxcdH07XFxuIDI0MDpcXHRcXG4gMjQxOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGNkeF9tYXRjaF90YWJsZSk7XFxuIDI0MjpcXHRcXG4gMjQzOlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkeF9wZHJpdmVyID0ge1xcbiAyNDQ6XFx0XFx0LmRyaXZlciA9IHtcXG4gMjQ1OlxcdFxcdFxcdCAgIC5uYW1lID0gXFxcImNkeC1jb250cm9sbGVyXFxcIixcXG4gMjQ2OlxcdFxcdFxcdCAgIC5vZl9tYXRjaF90YWJsZSA9IGNkeF9tYXRjaF90YWJsZSxcXG4gMjQ3OlxcdFxcdFxcdCAgIH0sXFxuIDI0ODpcXHRcXHQucHJvYmUgPSB4bG54X2NkeF9wcm9iZSxcXG4gMjQ5OlxcdFxcdC5yZW1vdmUgPSB4bG54X2NkeF9yZW1vdmUsXFxuIDI1MDpcXHR9O1xcbiAyNTE6XFx0XFxuIDI1MjpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGNkeF9wZHJpdmVyKTtcXG4gMjUzOlxcdFxcbiAyNTQ6XFx0TU9EVUxFX0FVVEhPUihcXFwiQU1EIEluYy5cXFwiKTtcXG4gMjU1OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiQ0RYIGNvbnRyb2xsZXIgZm9yIEFNRCBkZXZpY2VzXFxcIik7XFxuIDI1NjpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuIDI1NzpcXHRNT0RVTEVfSU1QT1JUX05TKFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MDkuNzg4NzM2NTA4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg3NzAxMTU1NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqVkZJTyBDRFggRHJpdmVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBWRklPIGRyaXZlciBmb3IgQ0RYIGJ1cyBkZXZpY2VzIOKAkyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgZmlsZSBpbiBxdWVzdGlvbiBpcyBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgaXQncyBkb2luZy4gYG1haW4uY2AgaXMgdXN1YWxseSB0aGUgY29yZSwgc28gaXQnbGwgcHJvYmFibHkgY29udGFpbiB0aGUgZXNzZW50aWFsIGluaXRpYWxpemF0aW9uLCBkZXZpY2UgaGFuZGxpbmcsIGFuZCBlbnRyeSBwb2ludHMgZm9yIHRoaXMgVkZJTyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGludGVyYWN0aW5nIHdpdGggdGhlIENEWCBidXMgc3BlY2lmaWNhbGx5LCBhbmQgaG93IGl0J3MgZXhwb3NpbmcgdGhhdCB0byB0aGUgVkZJTyBmcmFtZXdvcmsuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGhvdyBpdCBoYW5kbGVzIGRldmljZSBkaXNjb3ZlcnksIGhvdyBpdCBzZXRzIHVwIERNQSBtYXBwaW5ncywgYW5kIGhvdyBpdCBoYW5kbGVzIGludGVycnVwdHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaG93IHRoaXMgZHJpdmVyIGZhY2lsaXRhdGVzIHZpcnR1YWxpemVkIGFjY2VzcyB0byBDRFggZGV2aWNlcy4gTGV0J3MgZ2V0IHJlYWRpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDg5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMjoxOC41NTg4NTQ3NDdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTEwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXFxuICAgNDpcXHQgKi9cXG4gICA1OlxcdFxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZmaW8uaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXFx1MDAzZVxcbiAgIDg6XFx0XFxuICAgOTpcXHQjaW5jbHVkZSBcXFwicHJpdmF0ZS5oXFxcIlxcbiAgMTA6XFx0XFxuICAxMTpcXHRzdGF0aWMgaW50IHZmaW9fY2R4X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiAgMTI6XFx0e1xcbiAgMTM6XFx0XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuICAxNDpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2dmRldi1cXHUwMDNlY2R4X2lycXNfbG9jayk7XFxuICAxNzpcXHRcXHRyZXR1cm4gMDtcXG4gIDE4OlxcdH1cXG4gIDE5OlxcdFxcbiAgMjA6XFx0c3RhdGljIHZvaWQgdmZpb19jZHhfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuICAyMTpcXHR7XFxuICAyMjpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG4gIDIzOlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZ2ZGV2LVxcdTAwM2VjZHhfaXJxc19sb2NrKTtcXG4gIDI2OlxcdH1cXG4gIDI3OlxcdFxcbiAgMjg6XFx0c3RhdGljIGludCB2ZmlvX2NkeF9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gIDI5OlxcdHtcXG4gIDMwOlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbiAgMzE6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XFxuICAzMjpcXHRcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoY29yZV92ZGV2LVxcdTAwM2VkZXYpO1xcbiAgMzM6XFx0XFx0aW50IGNvdW50ID0gY2R4X2Rldi1cXHUwMDNlcmVzX2NvdW50O1xcbiAgMzQ6XFx0XFx0aW50IGksIHJldDtcXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9ucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uLCBjb3VudCxcXG4gIDM3OlxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gIDM4OlxcdFxcdGlmICghdmRldi1cXHUwMDNlcmVnaW9ucylcXG4gIDM5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgY291bnQ7IGkrKykge1xcbiAgNDI6XFx0XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXMgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlcmVzW2ldO1xcbiAgNDM6XFx0XFxuICA0NDpcXHRcXHRcXHR2ZGV2LVxcdTAwM2VyZWdpb25zW2ldLmFkZHIgPSByZXMtXFx1MDAzZXN0YXJ0O1xcbiAgNDU6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS5zaXplID0gcmVzb3VyY2Vfc2l6ZShyZXMpO1xcbiAgNDY6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS50eXBlID0gcmVzLVxcdTAwM2VmbGFncztcXG4gIDQ3OlxcdFxcdFxcdC8qXFxuICA0ODpcXHRcXHRcXHQgKiBPbmx5IHJlZ2lvbnMgYWRkcmVzc2VkIHdpdGggUEFHRSBncmFudWxhcml0eSBtYXkgYmVcXG4gIDQ5OlxcdFxcdFxcdCAqIE1NQVAnZWQgc2VjdXJlbHkuXFxuICA1MDpcXHRcXHRcXHQgKi9cXG4gIDUxOlxcdFxcdFxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uYWRkciBcXHUwMDI2IH5QQUdFX01BU0spIFxcdTAwMjZcXHUwMDI2XFxuICA1MjpcXHRcXHRcXHQgICAgISh2ZGV2LVxcdTAwM2VyZWdpb25zW2ldLnNpemUgXFx1MDAyNiB+UEFHRV9NQVNLKSlcXG4gIDUzOlxcdFxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uZmxhZ3MgfD1cXG4gIDU0OlxcdFxcdFxcdFxcdFxcdFxcdFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQO1xcbiAgNTU6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfUkVBRDtcXG4gIDU2OlxcdFxcdFxcdGlmICghKGNkeF9kZXYtXFx1MDAzZXJlc1tpXS5mbGFncyBcXHUwMDI2IElPUkVTT1VSQ0VfUkVBRE9OTFkpKVxcbiAgNTc6XFx0XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEU7XFxuICA1ODpcXHRcXHR9XFxuICA1OTpcXHRcXHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4gIDYwOlxcdFxcdGlmIChyZXQpIHtcXG4gIDYxOlxcdFxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZXJlZ2lvbnMpO1xcbiAgNjI6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9ucyA9IE5VTEw7XFxuICA2MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgNjQ6XFx0XFx0fVxcbiAgNjU6XFx0XFx0cmV0ID0gY2R4X2NsZWFyX21hc3RlcihjZHhfZGV2KTtcXG4gIDY2OlxcdFxcdGlmIChyZXQpXFxuICA2NzpcXHRcXHRcXHR2ZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+Qk1FX1NVUFBPUlQ7XFxuICA2ODpcXHRcXHRlbHNlXFxuICA2OTpcXHRcXHRcXHR2ZGV2LVxcdTAwM2VmbGFncyB8PSBCTUVfU1VQUE9SVDtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0cmV0dXJuIDA7XFxuICA3MjpcXHR9XFxuICA3MzpcXHRcXG4gIDc0OlxcdHN0YXRpYyB2b2lkIHZmaW9fY2R4X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gIDc1OlxcdHtcXG4gIDc2OlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbiAgNzc6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZXJlZ2lvbnMpO1xcbiAgODA6XFx0XFx0Y2R4X2Rldl9yZXNldChjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjE4LjU1ODk0ODQ5N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjc3OTk2MDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCdzIGdvaW5nIG9uLCBmb3JtYXR0ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEaWdnaW5nIGludG8gdGhlIFZGSU8gQ0RYIENvZGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgZGVlcGVyLiBJJ20gZ29pbmcgdG8gaGVhZCBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgb2YgdGhlIENEWCAoQ29udGFpbmVyIERpcmVjdCBlWGNoYW5nZSkgaW1wbGVtZW50YXRpb24gd2l0aGluIFZGSU8gKFZpcnR1YWwgRnVuY3Rpb24gSS9PKSBsaWtlbHkgcmVzaWRlcy4gTXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGlzIGZpbGUgd2lsbCBjb250YWluIHRoZSBmdW5kYW1lbnRhbCBsb2dpYyBmb3IgaG93IHRoZSBDRFggZGV2aWNlIGlzIGluaXRpYWxpemVkLCBob3cgaXQgaGFuZGxlcyByZXF1ZXN0cywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIG1lbW9yeSBtYXBwaW5nIGZ1bmN0aW9ucywgYW5kIHRoZSBjb3JlIHJlcXVlc3QgZGlzcGF0Y2ggbG9vcC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBDRFggZGV2aWNlLCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gVW5kZXJzdGFuZGluZyB0aGlzIGBtYWluLmNgIGZpbGUgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgZmlndXJpbmcgb3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUgQ0RYIGltcGxlbWVudGF0aW9uIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIFZGSU8gYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE5ODksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjIxLjgzNjk0ODkxM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjQwOlxcdFxcdFxcdHJldHVybiAtRU5PVFRZO1xcbiAyNDE6XFx0XFx0fVxcbiAyNDI6XFx0fVxcbiAyNDM6XFx0XFxuIDI0NDpcXHRzdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcXG4gMjQ1OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbiAyNDY6XFx0e1xcbiAyNDc6XFx0XFx0dTY0IHNpemUgPSB2bWEtXFx1MDAzZXZtX2VuZCAtIHZtYS1cXHUwMDNldm1fc3RhcnQ7XFxuIDI0ODpcXHRcXHR1NjQgcGdvZmYsIGJhc2U7XFxuIDI0OTpcXHRcXG4gMjUwOlxcdFxcdHBnb2ZmID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDI2XFxuIDI1MTpcXHRcXHRcXHQoKDFVIFxcdTAwM2NcXHUwMDNjIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKSkgLSAxKTtcXG4gMjUyOlxcdFxcdGJhc2UgPSBwZ29mZiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUO1xcbiAyNTM6XFx0XFxuIDI1NDpcXHRcXHRpZiAoYmFzZSArIHNpemUgXFx1MDAzZSByZWdpb24uc2l6ZSlcXG4gMjU1OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNTY6XFx0XFxuIDI1NzpcXHRcXHR2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QpO1xcbiAyNTg6XFx0XFxuIDI1OTpcXHRcXHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVxcdTAwM2V2bV9zdGFydCxcXG4gMjYwOlxcdFxcdFxcdFxcdFxcdCAgKHJlZ2lvbi5hZGRyIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQpICsgcGdvZmYsXFxuIDI2MTpcXHRcXHRcXHRcXHRcXHQgIHNpemUsIHZtYS1cXHUwMDNldm1fcGFnZV9wcm90KTtcXG4gMjYyOlxcdH1cXG4gMjYzOlxcdFxcbiAyNjQ6XFx0c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiAyNjU6XFx0XFx0XFx0XFx0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbiAyNjY6XFx0e1xcbiAyNjc6XFx0XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuIDI2ODpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG4gMjY5OlxcdFxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuIDI3MDpcXHRcXHR1bnNpZ25lZCBpbnQgaW5kZXg7XFxuIDI3MTpcXHRcXG4gMjcyOlxcdFxcdGluZGV4ID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDNlXFx1MDAzZSAoVkZJT19DRFhfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XFxuIDI3MzpcXHRcXG4gMjc0OlxcdFxcdGlmIChpbmRleCBcXHUwMDNlPSBjZHhfZGV2LVxcdTAwM2VyZXNfY291bnQpXFxuIDI3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjc2OlxcdFxcbiAyNzc6XFx0XFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUCkpXFxuIDI3ODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjc5OlxcdFxcbiAyODA6XFx0XFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfUkVBRCkgXFx1MDAyNlxcdTAwMjZcXG4gMjgxOlxcdFxcdCAgICAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1JFQUQpKVxcbiAyODI6XFx0XFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4gMjgzOlxcdFxcbiAyODQ6XFx0XFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpIFxcdTAwMjZcXHUwMDI2XFxuIDI4NTpcXHRcXHQgICAgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9XUklURSkpXFxuIDI4NjpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiAyODc6XFx0XFxuIDI4ODpcXHRcXHRyZXR1cm4gdmZpb19jZHhfbW1hcF9tbWlvKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xcbiAyODk6XFx0fVxcbiAyOTA6XFx0XFxuIDI5MTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XFxuIDI5MjpcXHRcXHQubmFtZVxcdFxcdD0gXFxcInZmaW8tY2R4XFxcIixcXG4gMjkzOlxcdFxcdC5pbml0XFx0XFx0PSB2ZmlvX2NkeF9pbml0X2RldixcXG4gMjk0OlxcdFxcdC5yZWxlYXNlXFx0PSB2ZmlvX2NkeF9yZWxlYXNlX2RldixcXG4gMjk1OlxcdFxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19jZHhfb3Blbl9kZXZpY2UsXFxuIDI5NjpcXHRcXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX2NkeF9jbG9zZV9kZXZpY2UsXFxuIDI5NzpcXHRcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fY2R4X2lvY3RsLFxcbiAyOTg6XFx0XFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19jZHhfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbiAyOTk6XFx0XFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19jZHhfaW9jdGxfZmVhdHVyZSxcXG4gMzAwOlxcdFxcdC5tbWFwXFx0XFx0PSB2ZmlvX2NkeF9tbWFwLFxcbiAzMDE6XFx0XFx0LmJpbmRfaW9tbXVmZFxcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2JpbmQsXFxuIDMwMjpcXHRcXHQudW5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF91bmJpbmQsXFxuIDMwMzpcXHRcXHQuYXR0YWNoX2lvYXNcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9hdHRhY2hfaW9hcyxcXG4gMzA0OlxcdH07XFxuIDMwNTpcXHRcXG4gMzA2OlxcdHN0YXRpYyBpbnQgdmZpb19jZHhfcHJvYmUoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuIDMwNzpcXHR7XFxuIDMwODpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2O1xcbiAzMDk6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNmNkeF9kZXYtXFx1MDAzZWRldjtcXG4gMzEwOlxcdFxcdGludCByZXQ7XFxuIDMxMTpcXHRcXG4gMzEyOlxcdFxcdHZkZXYgPSB2ZmlvX2FsbG9jX2RldmljZSh2ZmlvX2NkeF9kZXZpY2UsIHZkZXYsIGRldixcXG4gMzEzOlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2dmZpb19jZHhfb3BzKTtcXG4gMzE0OlxcdFxcdGlmIChJU19FUlIodmRldikpXFxuIDMxNTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcXG4gMzE2OlxcdFxcbiAzMTc6XFx0XFx0cmV0ID0gdmZpb19yZWdpc3Rlcl9ncm91cF9kZXYoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpO1xcbiAzMTg6XFx0XFx0aWYgKHJldClcXG4gMzE5OlxcdFxcdFxcdGdvdG8gb3V0X3VuaW5pdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MjEuODM3MDg5MjAzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1MzEzNzYzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHZmaW9fY2R4YCBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBzbyBgdmZpb19jZHhgIGlzIHRyaWdnZXJlZCwgYXMgZXhwZWN0ZWQsIHdoZW4gYSBgY2R4X2RldmljZWAgc3RydWN0dXJlIGFsaWducyB3aXRoIHRoZSBgdmZpb19jZHhfZHJpdmVyYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgdGhhdCdzIHRoZSBzZXR1cCwgYnV0IHdoYXQncyAqYWN0dWFsbHkqIGhhcHBlbmluZyB3aXRoIHRoaXMgQ0RYIHRoaW5nP1wiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBsYW5kc2NhcGUuXG5cbkZpcnN0LCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3IgYW55IHNvcnQgb2YgZW11bGF0ZWQgb3IgbW9ja2VkIGltcGxlbWVudGF0aW9ucyBvZiBDRFggYnVzZXMgb3IgZGV2aWNlcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYsIGFuZCBvZiBjb3Vyc2UsIFFFTVUgaXMgYSBsb2dpY2FsIHBsYWNlIHRvIGxvb2suIEknbSB0aGlua2luZywgYXJlIHdlIHRhbGtpbmcgYWJvdXQgYSByZWFsLCBwaHlzaWNhbCBkZXZpY2UsIG9yIGlzIHRoaXMgc29tZXRoaW5nIHZpcnR1YWxpemVkLCBvciBwZXJoYXBzIGEgdGVzdCBoYXJuZXNzPyBGaW5kaW5nIG1vY2sgaW1wbGVtZW50YXRpb25zIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbnQuXG5cblRoZW4sIEknbGwgcGVyZm9ybSBhIGJyb2FkZXIgc2VhcmNoLCBhIGRlZXBlciBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UuIEknbSBnb2luZyB0byB0aHJvdyBhIFwiY2R4XCIgc2VhcmNoIHN0cmluZyBhY3Jvc3MgdGhlIHdob2xlIGNvZGViYXNlLiBJIHdhbnQgdG8gaWRlbnRpZnkgYW55IG90aGVyIGNvZGUgdGhhdCdzIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyBlaXRoZXIgYSBDRFggY29udHJvbGxlciBvciBhIENEWCBkZXZpY2UuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3Vic3lzdGVtIGFyY2hpdGVjdHVyZSwgYW5kIGhvdyB0aGUgYHZmaW9fY2R4YCBkcml2ZXIgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBGaW5kaW5nIHRoZSByZWdpc3RyYXRpb24gcG9pbnRzIHdpbGwgbGV0IG1lIHNlZSB3aGVyZSB0aGlzIENEWCB0ZWNobm9sb2d5IG9yaWdpbmF0ZXMgZnJvbSB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGhhbmRsZSBvbiBob3cgaXQncyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzY5MSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MjYuMzY4NDcwMDE3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkxMTA1OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeF9kcml2ZXJfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmM9NjI4PUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzMS1cXHRcXHRcXHQgIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjQ2LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwoX19jZHhfZHJpdmVyX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0zNDg9c3RhdGljIHN0cnVjdCBjZHhfZHJpdmVyIHZmaW9fY2R4X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM1Ny1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozNTg6bW9kdWxlX2RyaXZlcih2ZmlvX2NkeF9kcml2ZXIsIGNkeF9kcml2ZXJfcmVnaXN0ZXIsIGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzU5LVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTE5OD1zdHJ1Y3QgY2R4X2RyaXZlciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjEyLS8qIE1hY3JvIHRvIGF2b2lkIGluY2x1ZGUgY2hhaW5pbmcgdG8gZ2V0IFRISVNfTU9EVUxFICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIxMzojZGVmaW5lIGNkeF9kcml2ZXJfcmVnaXN0ZXIoZHJ2KSBcXFxcXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIxNDpcXHRfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoZHJ2LCBUSElTX01PRFVMRSlcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjE1LVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTYtLyoqXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIxNzogKiBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIgLSByZWdpc3RlcnMgYSBDRFggZGV2aWNlIGRyaXZlclxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTgtICogQGNkeF9kcml2ZXI6IENEWCBkcml2ZXIgdG8gcmVnaXN0ZXJcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjItICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIyMzppbnQgX19tdXN0X2NoZWNrIF9fY2R4X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcixcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjI0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjI4Ljg1OTU4NzA1MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDExNjU1NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy5cblxuKipJbnZlc3RpZ2F0aW5nIGBjZHhfZHJpdmVyYCBVc2FnZSoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIGBjZHhfZHJpdmVyYCBzdHJ1Y3R1cmUgYW5kIGBjZHhfZHJpdmVyX3JlZ2lzdGVyYCBmdW5jdGlvbiBhcmUgYmVpbmcgdXRpbGl6ZWQgdGhyb3VnaG91dCB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgYWxsIHRoZSBvdGhlciBkcml2ZXJzIHRoYXQgYXJlIGVtcGxveWluZyB0aGVzZSBlbGVtZW50cy4gSSdsbCBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY29kZSBzZWFyY2guIFRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCBpcyBhIGdyZXAgZm9yIGluc3RhbmNlcyBvZiBgc3RydWN0IGNkeF9kcml2ZXJgIGFuZCBgY2R4X2RyaXZlcmAgKGNhc2UtaW5zZW5zaXRpdmUgcGVyaGFwcywgYnV0IGxldCdzIHN0YXJ0IHdpdGggY2FzZSBzZW5zaXRpdmUpIGFjcm9zcyB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZS4gVGhpcyBzaG91bGQgcmV2ZWFsIGFsbCByZWxldmFudCBsb2NhdGlvbnMgd2hlcmUgdGhlc2UgYXJlIGRlZmluZWQsIHJlZmVyZW5jZWQsIG9yIHVzZWQuIFRoaXMgZ3JhbnVsYXIgYXBwcm9hY2ggc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSBvdmVydmlldyBvZiB0aGUgZXhpc3RpbmcgZWNvc3lzdGVtIHJlbHlpbmcgb24gdGhpcyBjb25zdHJ1Y3QuIFdpdGggdGhpcyBpbmZvLCBJIGNhbiB0aGVuIGRldGVybWluZSB0aGUgYmVzdCBwYXRoIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzE1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MzIuODcxMjQ1ODA0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzUwMTg1MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBjZHhfZHJpdmVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY2R4L2NkeC5jPTk1PWludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk5LVxcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnID0gezB9O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEwMDpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydjtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMDEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTI2Mz1zdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjY1LVxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NjpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNjctXFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmZvdW5kX2lkID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTMwMj1zdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAzLXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMDUtXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0zMjg9c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzI5LXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzEtXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0zMzc9c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM0MC1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM0OT1zdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM1Mi1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM3Mz1zdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzc1OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjI4PUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzMS1cXHRcXHRcXHQgIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjQ3PUVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQ4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0OTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcilcXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MzQ2PU1PRFVMRV9ERVZJQ0VfVEFCTEUoY2R4LCB2ZmlvX2NkeF90YWJsZSk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQ3LVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM0ODpzdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM0OS1cXHQucHJvYmVcXHRcXHQ9IHZmaW9fY2R4X3Byb2JlLFxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTE0Mz1zdHJ1Y3QgY2R4X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTgxLS8qKlxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxODI6ICogc3RydWN0IGNkeF9kcml2ZXIgLSBDRFggZGV2aWNlIGRyaXZlclxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xODMtICogQGRyaXZlcjogR2VuZXJpYyBkZXZpY2UgZHJpdmVyXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTk3LSAqL1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxOTg6c3RydWN0IGNkeF9kcml2ZXIge1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOTktXFx0c3RydWN0IGRldmljZV9kcml2ZXIgZHJpdmVyO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwOS0jZGVmaW5lIHRvX2NkeF9kcml2ZXIoX2RydikgXFxcXFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTA6XFx0Y29udGFpbmVyX29mX2NvbnN0KF9kcnYsIHN0cnVjdCBjZHhfZHJpdmVyLCBkcml2ZXIpXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxMS1cXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjItICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIyMzppbnQgX19tdXN0X2NoZWNrIF9fY2R4X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcixcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjI0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjMwLSAqL1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMzE6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjM1LjIyMTQ0NDQzWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwOTg4MjM5ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZGSU8tQ0RYIERyaXZlcioqXG5cbk9rYXksIGhlcmUncyBob3cgSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcy4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGB2ZmlvX2NkeF9kcml2ZXJgLCB3aGljaCBpcyByZWdpc3RlcmVkIHdoZW4gdGhlIGB2ZmlvLWNkeGAgbW9kdWxlIGxvYWRzLiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBIb3dldmVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwYXRoIHRvIGhvdyBhIGZ1bmN0aW9uIGxpa2UgYHZmaW9fY2R4X21tYXBfbW1pb2AsIG9yIGFueSBvZiB0aGUgYHZmaW9fY2R4XypgIGZ1bmN0aW9ucywgYWN0dWFsbHkgZ2V0cyAqY2FsbGVkKi4gVGhlIGNyaXRpY2FsIHBhdGggc2VlbXMgdG8gYmUgdGhhdCBhIGBjZHhfZGV2aWNlYCBoYXMgdG8gZXhpc3QgYW5kIGJlIGJvdW5kIHRvIGB2ZmlvLWNkeGAuIFRoZW4sIGEgdXNlci1zcGFjZSBwcm9jZXNzIG11c3Qgb3BlbiB0aGUgVkZJTyBkZXZpY2UgYW5kIGNhbGwgYG1tYXAoKWAuIFRoYXQncyB0aGUgZXhwZWN0ZWQgdXNhZ2UuXG5cbk5vdywgSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZXZlbiBjcmVhdGUgYSBgY2R4X2RldmljZWAgaW4gdGhlIGFic2VuY2Ugb2YgYWN0dWFsIGhhcmR3YXJlLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBzaG91bGQgYmUgcG9zc2libGUgZm9yIHRlc3RpbmcgYW5kIGVtdWxhdGlvbiBwdXJwb3Nlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9jZHgvY2R4LmNgIGZpbGUgdG8gc2VlIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBjcmVhdGVkLiBTcGVjaWZpY2FsbHksIEknbSBjaGVja2luZyBpZiB0aGVyZSdzIGFueSBzeXNmcyBpbnRlcmZhY2UgdGhhdCBhbGxvd3MgdGhlIGNyZWF0aW9uIG9yIFwibW9ja2luZ1wiIG9mIENEWCBkZXZpY2VzLCBvciBpZiB0aGVpciBjcmVhdGlvbiBpcyBlbnRpcmVseSBkZXBlbmRlbnQgb24gYSBgY2R4X2NvbnRyb2xsZXJgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gaW4gYGRyaXZlcnMvY2R4L2NkeC5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY1NTEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6NDYuMjA5NjkxMDE0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI1MjQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4L2NkeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjY1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2NkeC9jZHguYy02Ny0jaW5jbHVkZSBcXHUwMDNjbGludXgvaWRyLmhcXHUwMDNlXFxuZHJpdmVycy9jZHgvY2R4LmM6Njg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcXHUwMDNlXFxuZHJpdmVycy9jZHgvY2R4LmMtNjktI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvbW11LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03OC0vKiBJREEgZm9yIENEWCBjb250cm9sbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIENEWCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgwLS8qIExvY2sgdG8gcHJvdGVjdCBjb250cm9sbGVyIG9wcyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjgxOnN0YXRpYyBERUZJTkVfTVVURVgoY2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODItLyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MzpzdGF0aWMgc3RydWN0IGRlbnRyeSAqY2R4X2RlYnVnZnNfZGlyO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg0LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTg1PXN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXFxcInhsbngsdmVyc2FsLW5ldC1jZHhcXFwiO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg3OnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OC1cXG5kcml2ZXJzL2NkeC9jZHguYy04OS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzo5MDogKiBjZHhfZGV2X3Jlc2V0IC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtOTEtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtOTQtICovXFxuZHJpdmVycy9jZHgvY2R4LmM6OTU6aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo5NzpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZyA9IHswfTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAxLVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjEwMzpcXHRjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTA0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXFxuZHJpdmVycy9jZHgvY2R4LmMtMTA4LVxcdGRldl9jb25maWcudHlwZSA9IENEWF9ERVZfUkVTRVRfQ09ORjtcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDk6XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMDpcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTExLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMTQtXFx0LyogTm90aWZ5IGRyaXZlciB0aGF0IGRldmljZSByZXNldCBpcyBjb21wbGV0ZSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjExNTpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VyZXNldF9kb25lKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjExNjpcXHRcXHRjZHhfZHJ2LVxcdTAwM2VyZXNldF9kb25lKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTExOS19XFxuZHJpdmVycy9jZHgvY2R4LmM6MTIwOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEyMS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMjItLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTIzOiAqIHJlc2V0X2NkeF9kZXZpY2UgLSBSZXNldCBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0xMjQtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTMwLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMTpzdGF0aWMgaW50IHJlc2V0X2NkeF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMi17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTMzOlxcdHJldHVybiBjZHhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTM0LX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNi0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoxMzc6ICogY2R4X3VucmVnaXN0ZXJfZGV2aWNlIC0gVW5yZWdpc3RlciBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzgtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQwLSAqXFx0ICBidXQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGUgYnVzX2Zvcl9lYWNoX2RldigpIEFQSSBleHBlY3RzXFxuZHJpdmVycy9jZHgvY2R4LmM6MTQxOiAqXFx0ICB0aGUgcGFzc2VkIGZ1bmN0aW9uIChjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpIHRvIGhhdmUgdGhpc1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Mi0gKlxcdCAgYXMgYW4gYXJndW1lbnQuXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNDUtICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ2OnN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2NkeC9jZHguYy0xNDctXFx0XFx0XFx0XFx0IHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNDk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTUwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MS1cXG5kcml2ZXJzL2NkeC9jZHguYzoxNTI6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cykge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MzpcXHRcXHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NDpcXHRcXHRpZiAoY2R4X2Rldi1cXHUwMDNlZW5hYmxlZCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTU1OlxcdFxcdFxcdGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NzpcXHRcXHRjZHhfZGVzdHJveV9yZXNfYXR0cihjZHhfZGV2LCBNQVhfQ0RYX0RFVl9SRVNPVVJDRVMpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1ODpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNjEtXFx0LypcXG5kcml2ZXJzL2NkeC9jZHguYzoxNjI6XFx0ICogRG8gbm90IGZyZWUgY2R4X2RldiBoZXJlIGFzIGl0IHdvdWxkIGJlIGZyZWVkIGluXFxuZHJpdmVycy9jZHgvY2R4LmM6MTYzOlxcdCAqIGNkeF9kZXZpY2VfcmVsZWFzZSgpIGNhbGxlZCBmcm9tIHdpdGhpbiBwdXRfZGV2aWNlKCkuXFxuZHJpdmVycy9jZHgvY2R4LmMtMTY0LVxcdCAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NTpcXHRkZXZpY2VfZGVsKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NjpcXHRwdXRfZGV2aWNlKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Ny1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoxNzE6c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzIte1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE3My1cXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE3NDpcXHRidXNfZm9yX2VhY2hfZGV2KGJ1cywgTlVMTCwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzUtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTc3LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE3ODogKiBjZHhfbWF0Y2hfb25lX2RldmljZSAtIFRlbGwgaWYgYSBDRFggZGV2aWNlIHN0cnVjdHVyZSBoYXMgYSBtYXRjaGluZ1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE3OS0gKlxcdFxcdFxcdCAgQ0RYIGRldmljZSBpZCBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4MzogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODY6Y2R4X21hdGNoX29uZV9kZXZpY2UoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE5OS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoyMDA6ICogY2R4X21hdGNoX2lkIC0gU2VlIGlmIGEgQ0RYIGRldmljZSBtYXRjaGVzIGEgZ2l2ZW4gY2R4X2lkIHRhYmxlXFxuZHJpdmVycy9jZHgvY2R4LmMtMjAxLSAqIEBpZHM6IGFycmF5IG9mIENEWCBkZXZpY2UgSUQgc3RydWN0dXJlcyB0byBzZWFyY2ggaW5cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNC0gKiBVc2VkIGJ5IGEgZHJpdmVyIHRvIGNoZWNrIHdoZXRoZXIgYSBDRFggZGV2aWNlIGlzIGluIGl0cyBsaXN0IG9mXFxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNi0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNy0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMjA5LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIxMDpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjEyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIxNC1cXHRcXHR3aGlsZSAoaWRzLVxcdTAwM2V2ZW5kb3IgfHwgaWRzLVxcdTAwM2VkZXZpY2UpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTU6XFx0XFx0XFx0aWYgKGNkeF9tYXRjaF9vbmVfZGV2aWNlKGlkcywgZGV2KSlcXG5kcml2ZXJzL2NkeC9jZHguYy0yMTYtXFx0XFx0XFx0XFx0cmV0dXJuIGlkcztcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMjM6aW50IGNkeF9zZXRfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjI1OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjctXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjMxLVxcdGlmIChjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoyMzI6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMzpcXHRcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjM0LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjM2LX1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMzc6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X3NldF9tYXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTIzOC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMzk6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjQwLXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQyOlxcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI0My1cXHRpbnQgcmV0ID0gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNDctXFx0aWYgKGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0ODpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0sXFxuZHJpdmVycy9jZHgvY2R4LmM6MjQ5OlxcdFxcdFxcdFxcdFxcdCAgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0sIFxcdTAwMjZkZXZfY29uZmlnKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTAtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNTItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfY2xlYXJfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTQtXFxuZHJpdmVycy9jZHgvY2R4LmMtMjU1LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1NjogKiBjZHhfYnVzX21hdGNoIC0gZGV2aWNlIHRvIGRyaXZlciBtYXRjaGluZyBjYWxsYmFja1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI1Ny0gKiBAZGV2OiB0aGUgY2R4IGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNjItICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MjYzOnN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjY2OlxcdGNvbnN0IHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkcnYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2ODpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNzE6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3My1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNzQ6XFx0aWRzID0gY2R4X2Rydi1cXHUwMDNlbWF0Y2hfaWRfdGFibGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjc1LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjgwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI4MTpcXHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI4Mi1cXHRpZiAoIWZvdW5kX2lkKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjk1LVxcdFxcdGlkcyA9IGZvdW5kX2lkICsgMTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyOTY6XFx0XFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yOTctXFx0fSB3aGlsZSAoZm91bmRfaWQpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAxLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMwMjpzdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAzLXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA2OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cXHRpbnQgZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMTMtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0dFTkVSSUNfTVNJX0lSUSkgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2Vtc2lfZG9tYWluKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzE0OlxcdFxcdGVycm9yID0gbXNpX3NldHVwX2RldmljZV9kYXRhKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMxNS1cXHRcXHRpZiAoZXJyb3IpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMTgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzE5OlxcdGVycm9yID0gY2R4X2Rydi1cXHUwMDNlcHJvYmUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzIwLVxcdGlmIChlcnJvcikge1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzI3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMyODpzdGF0aWMgdm9pZCBjZHhfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zMjkte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMDpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzItXFxuZHJpdmVycy9jZHgvY2R4LmM6MzMzOlxcdGlmIChjZHhfZHJ2IFxcdTAwMjZcXHUwMDI2IGNkeF9kcnYtXFx1MDAzZXJlbW92ZSlcXG5kcml2ZXJzL2NkeC9jZHguYzozMzQ6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVtb3ZlKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMzNS19XFxuZHJpdmVycy9jZHgvY2R4LmMtMzM2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMzNzpzdGF0aWMgdm9pZCBjZHhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMzOC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzM5OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzQwOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MTpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNDItXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQzOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMgXFx1MDAyNlxcdTAwMjYgY2R4X2Rldi1cXHUwMDNlZW5hYmxlZCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ0OlxcdFxcdGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NTpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VzaHV0ZG93bilcXG5kcml2ZXJzL2NkeC9jZHguYzozNDY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlc2h1dGRvd24oY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQ3LX1cXG5kcml2ZXJzL2NkeC9jZHguYy0zNDgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ5OnN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM1MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzUxOlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzUyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTQ6XFx0dTMyIGlucHV0X2lkID0gY2R4X2Rldi1cXHUwMDNlcmVxX2lkO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM1NS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzYyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM2MzpcXHQvKiBAY2R4X2RydiBtYXkgbm90IGJlIHZhbGlkIHdoZW4gd2UncmUgY2FsbGVkIGZyb20gdGhlIElPTU1VIGxheWVyICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MzY0OlxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlZHJpdmVyIFxcdTAwMjZcXHUwMDI2ICFjZHhfZHJ2LVxcdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpIHtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNjUtXFx0XFx0cmV0ID0gaW9tbXVfZGV2aWNlX3VzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzcyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM3MzpzdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzc1OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NzpcXHRpZiAoIWNkeF9kcnYtXFx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSlcXG5kcml2ZXJzL2NkeC9jZHguYy0zNzgtXFx0XFx0aW9tbXVfZGV2aWNlX3VudXNlX2RlZmF1bHRfZG9tYWluKGRldik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zODEtLyogc2hvdyBjb25maWd1cmF0aW9uIGZpZWxkcyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM4MjojZGVmaW5lIGNkeF9jb25maWdfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZylcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgzLXN0YXRpYyBzc2l6ZV90XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODY6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NzpcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIGZvcm1hdF9zdHJpbmcsIGNkeF9kZXYtXFx1MDAzZWZpZWxkKTtcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg4LX1cXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmM9Mzg5PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmaWVsZClcXG5kcml2ZXJzL2NkeC9jZHguYy0zOTAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzkxOmNkeF9jb25maWdfYXR0cih2ZW5kb3IsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MjpjZHhfY29uZmlnX2F0dHIoZGV2aWNlLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTM6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV92ZW5kb3IsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NDpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX2RldmljZSwgXFxcIjB4JTA0eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzk1OmNkeF9jb25maWdfYXR0cihyZXZpc2lvbiwgXFxcIjB4JTAyeFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzk2OmNkeF9jb25maWdfYXR0cihjbGFzcywgXFxcIjB4JTA2eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzk3LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM5OD1zdGF0aWMgc3NpemVfdCByZW1vdmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDEyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQxMzpcXHRcXHRyZXQgPSBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LCBOVUxMKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MTQtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQyMj1zdGF0aWMgc3NpemVfdCByZXNldF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDI0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0MjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDI2LVxcdGJvb2wgdmFsO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDM0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNTpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQzNi1cXHRcXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNzpcXHRcXHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MzgtXFx0ZWxzZVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzOTpcXHRcXHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDQwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDQ4OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo0NTA6XFx0cmV0dXJuIHNwcmludGYoYnVmLCBcXFwiY2R4OnYlMDRYZCUwNFhzdiUwNFhzZCUwNFhjJTA2WFxcXFxuXFxcIiwgY2R4X2Rldi1cXHUwMDNldmVuZG9yLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MTpcXHRcXHRcXHRjZHhfZGV2LVxcdTAwM2VkZXZpY2UsIGNkeF9kZXYtXFx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIGNkeF9kZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXFxuZHJpdmVycy9jZHgvY2R4LmM6NDUyOlxcdFxcdFxcdGNkeF9kZXYtXFx1MDAzZWNsYXNzKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NTMtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDU4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0NTk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDYwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2MS1cXHRib29sIGVuYWJsZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo0Njc6XFx0aWYgKGVuYWJsZSA9PSBjZHhfZGV2LVxcdTAwM2VlbmFibGVkKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OC1cXHRcXHRyZXR1cm4gY291bnQ7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NzAtXFx0aWYgKGVuYWJsZSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2VuYWJsZSlcXG5kcml2ZXJzL2NkeC9jZHguYzo0NzE6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19lbmFibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NzItXFx0ZWxzZSBpZiAoIWVuYWJsZSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDczOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3NC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NzctXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDc4OlxcdFxcdGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgPSBlbmFibGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDc5LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDgzPXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL2NkeC9jZHguYy00ODQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy00ODYtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDg3OlxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCBjZHhfZGV2LVxcdTAwM2VlbmFibGVkKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00ODgtfVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ4OT1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZW5hYmxlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTAtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDkxOnN0YXRpYyB1bW9kZV90IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Mi17XFxuZHJpdmVycy9jZHgvY2R4LmMtNDkzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDk2OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDk3OlxcdGlmICghY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5OC1cXHRcXHRyZXR1cm4gYS1cXHUwMDNlbW9kZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUwMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MDM6c3RhdGljIHVtb2RlX3QgY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXFxuZHJpdmVycy9jZHgvY2R4LmMtNTA0LXtcXG5kcml2ZXJzL2NkeC9jZHguYy01MDUtXFx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTA2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XFx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo1MDk6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy01MTAtXFx0XFx0cmV0dXJuIGEtXFx1MDAzZW1vZGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTE1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTE2LVxcdFxcdTAwMjZkZXZfYXR0cl9yZW1vdmUuYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUyNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjg6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2Rldl9ncm91cCA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjk6XFx0LmF0dHJzID0gY2R4X2Rldl9hdHRycyxcXG5kcml2ZXJzL2NkeC9jZHguYzo1MzA6XFx0LmlzX3Zpc2libGUgPSBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMS19O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTM0LVxcdFxcdTAwMjZkZXZfYXR0cl9lbmFibGUuYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzOC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2J1c19kZXZfZ3JvdXAgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTQwOlxcdC5hdHRycyA9IGNkeF9idXNfZGV2X2F0dHJzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MTpcXHQuaXNfdmlzaWJsZSA9IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUsXFxuZHJpdmVycy9jZHgvY2R4LmMtNTQyLX07XFxuZHJpdmVycy9jZHgvY2R4LmMtNTQzLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqY2R4X2Rldl9ncm91cHNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDU6XFx0XFx1MDAyNmNkeF9kZXZfZ3JvdXAsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ2OlxcdFxcdTAwMjZjZHhfYnVzX2Rldl9ncm91cCxcXG5kcml2ZXJzL2NkeC9jZHguYy01NDctXFx0TlVMTCxcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NTA6c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTUxLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU1NS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTOyBpKyspIHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTY6XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXMgPSAgXFx1MDAyNmNkeF9kZXYtXFx1MDAzZXJlc1tpXTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01NjItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU2MzpERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTY1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfZGVidWdmc19pbml0KHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6NTY3OlxcdGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpLCBjZHhfZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU2ODpcXHRpZiAoSVNfRVJSKGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyKSlcXG5kcml2ZXJzL2NkeC9jZHguYy01NjktXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NzE6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwicmVzb3VyY2VcXFwiLCAwNDQ0LCBjZHhfZGV2LVxcdTAwM2VkZWJ1Z2ZzX2RpciwgY2R4X2RldixcXG5kcml2ZXJzL2NkeC9jZHguYzo1NzI6XFx0XFx0XFx0ICAgIFxcdTAwMjZjZHhfZGVidWdfcmVzb3VyY2VfZm9wcyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTczLX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTU3NT1zdGF0aWMgc3NpemVfdCByZXNjYW5fc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01Nzcte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU3ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy01NzktXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGQ7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01ODctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTg4OlxcdGd1YXJkKG11dGV4KShcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTg5LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU5MC1cXHQvKiBVbnJlZ2lzdGVyIGFsbCB0aGUgZGV2aWNlcyBvbiB0aGUgYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6NTkxOlxcdGNkeF91bnJlZ2lzdGVyX2RldmljZXMoXFx1MDAyNmNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTkyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjA4PXN0YXRpYyBCVVNfQVRUUl9XTyhyZXNjYW4pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYwOS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MTA6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy02MTEtXFx0XFx1MDAyNmJ1c19hdHRyX3Jlc2Nhbi5hdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjEzLX07XFxuZHJpdmVycy9jZHgvY2R4LmM6NjE0OkFUVFJJQlVURV9HUk9VUFMoY2R4X2J1cyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjE1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNjpjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgY2R4X2J1c190eXBlID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYxNy1cXHQubmFtZVxcdFxcdD0gXFxcImNkeFxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjE4LVxcdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxOTpcXHQubWF0Y2hcXHRcXHQ9IGNkeF9idXNfbWF0Y2gsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIwOlxcdC5wcm9iZVxcdFxcdD0gY2R4X3Byb2JlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMTpcXHQucmVtb3ZlXFx0XFx0PSBjZHhfcmVtb3ZlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMjpcXHQuc2h1dGRvd25cXHQ9IGNkeF9zaHV0ZG93bixcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjM6XFx0LmRtYV9jb25maWd1cmVcXHQ9IGNkeF9kbWFfY29uZmlndXJlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNDpcXHQuZG1hX2NsZWFudXBcXHQ9IGNkeF9kbWFfY2xlYW51cCxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjU6XFx0LmJ1c19ncm91cHNcXHQ9IGNkeF9idXNfZ3JvdXBzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNjpcXHQuZGV2X2dyb3Vwc1xcdD0gY2R4X2Rldl9ncm91cHMsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjI3LX07XFxuZHJpdmVycy9jZHgvY2R4LmM6NjI4OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzMS1cXHRcXHRcXHQgIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjM0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNTpcXHRjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcXG5kcml2ZXJzL2NkeC9jZHguYzo2MzY6XFx0Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZjZHhfYnVzX3R5cGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjM3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzODpcXHRlcnJvciA9IGRyaXZlcl9yZWdpc3RlcihcXHUwMDI2Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MzktXFx0aWYgKGVycm9yKSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQwLVxcdFxcdHByX2VycihcXFwiZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkIGZvciAlczogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjQxOlxcdFxcdCAgICAgICBjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIubmFtZSwgZXJyb3IpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Mi1cXHRcXHRyZXR1cm4gZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0NzpFWFBPUlRfU1lNQk9MX0dQTChfX2NkeF9kcml2ZXJfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjUwLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTE6XFx0ZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmNkeF9kcml2ZXItXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjUyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjU2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjU4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY1OTpcXHRrZnJlZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NjAtfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NjI6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBjZHhfcGh5c192bV9vcHMgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjYzLSNpZmRlZiBDT05GSUdfSEFWRV9JT1JFTUFQX1BST1RcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY2OC0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzo2Njk6ICogY2R4X21tYXBfcmVzb3VyY2UgLSBtYXAgYSBDRFggcmVzb3VyY2UgaW50byB1c2VyIG1lbW9yeSBzcGFjZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY3MC0gKiBAZnA6IEZpbGUgcG9pbnRlci4gTm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHJlcXVpcmVkIHdoZXJlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NzktICovXFxuZHJpdmVycy9jZHgvY2R4LmM6NjgwOnN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5kcml2ZXJzL2NkeC9jZHguYy02ODEtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XFxuZHJpdmVycy9jZHgvY2R4LmM6Njg0OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShrb2JqX3RvX2Rldihrb2JqKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVxcdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVxcdTAwM2Vwcml2YXRlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjg4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OTpcXHRyZXMgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlcmVzW251bV07XFxuZHJpdmVycy9jZHgvY2R4LmMtNjkwLVxcdGlmIChpb21lbV9pc19leGNsdXNpdmUocmVzLVxcdTAwM2VzdGFydCkpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02OTMtXFx0LyogTWFrZSBzdXJlIHRoZSBjYWxsZXIgaXMgbWFwcGluZyBhIHZhbGlkIHJlc291cmNlIGZvciB0aGlzIGRldmljZSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY5NDpcXHRzaXplID0gKChjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSkgLSAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSArIDE7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjk1LVxcdGlmICh2bWEtXFx1MDAzZXZtX3Bnb2ZmICsgdm1hX3BhZ2VzKHZtYSkgXFx1MDAzZSBzaXplKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzAyLVxcdHZtYS1cXHUwMDNldm1fcGFnZV9wcm90ID0gcGdwcm90X2RldmljZSh2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCk7XFxuZHJpdmVycy9jZHgvY2R4LmM6NzAzOlxcdHZtYS1cXHUwMDNldm1fcGdvZmYgKz0gKGNkeF9yZXNvdXJjZV9zdGFydChjZHhfZGV2LCBudW0pIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjcwNDpcXHR2bWEtXFx1MDAzZXZtX29wcyA9IFxcdTAwMjZjZHhfcGh5c192bV9vcHM7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzA1LVxcdHJldHVybiBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtXFx1MDAzZXZtX3N0YXJ0LCB2bWEtXFx1MDAzZXZtX3Bnb2ZmLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzA5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjcxMDpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcXG5kcml2ZXJzL2NkeC9jZHguYy03MTEte1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzE3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjcxODpcXHRcXHRyZXNfYXR0ciA9IGNkeF9kZXYtXFx1MDAzZXJlc19hdHRyW2ldO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTcxOS1cXHRcXHRpZiAocmVzX2F0dHIpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzo3MjA6XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2Jpbl9maWxlKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYua29iaiwgcmVzX2F0dHIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTcyMS1cXHRcXHRcXHRrZnJlZShyZXNfYXR0cik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03MjYtI2RlZmluZSBDRFhfUkVTX0FUVFJfTkFNRV9MRU5cXHQxMFxcbmRyaXZlcnMvY2R4L2NkeC5jOjcyNzpzdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXFxuZHJpdmVycy9jZHgvY2R4LmMtNzI4LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTc0MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo3NDE6XFx0Y2R4X2Rldi1cXHUwMDNlcmVzX2F0dHJbbnVtXSA9IHJlc19hdHRyO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc0Mi1cXHRzcHJpbnRmKHJlc19hdHRyX25hbWUsIFxcXCJyZXNvdXJjZSVkXFxcIiwgbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy03NDMtXFxuZHJpdmVycy9jZHgvY2R4LmM6NzQ0OlxcdHJlc19hdHRyLVxcdTAwM2VtbWFwID0gY2R4X21tYXBfcmVzb3VyY2U7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzQ1LVxcdHJlc19hdHRyLVxcdTAwM2VhdHRyLm5hbWUgPSByZXNfYXR0cl9uYW1lO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc0Ni1cXHRyZXNfYXR0ci1cXHUwMDNlYXR0ci5tb2RlID0gMDYwMDtcXG5kcml2ZXJzL2NkeC9jZHguYzo3NDc6XFx0cmVzX2F0dHItXFx1MDAzZXNpemUgPSBjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzQ4LVxcdHJlc19hdHRyLVxcdTAwM2Vwcml2YXRlID0gKHZvaWQgKikodW5zaWduZWQgbG9uZyludW07XFxuZHJpdmVycy9jZHgvY2R4LmM6NzQ5OlxcdHJldCA9IHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy03NTAtXFx0aWYgKHJldClcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMjo0Ni4yNjQ5NjAxOVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NzIzNDMzMzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENEWCBDb250cm9sbGVyIFJlZ2lzdHJhdGlvbiBhbmQgRW11bGF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIENEWCBjb250cm9sbGVyIHJlZ2lzdHJhdGlvbiBiZWdpbnMgd2l0aGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgLiBUaGUgYHhsbnhfY2R4X3Byb2JlYCBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgYnkgYSBwbGF0Zm9ybSBkZXZpY2UgbWF0Y2ggZm9yIGBcInhsbngsdmVyc2FsLW5ldC1jZHhcImAuIEl0IHRoZW4gZXN0YWJsaXNoZXMgYSBjb25uZWN0aW9uIHRvIGEgcmVtb3RlcHJvYyBpbnN0YW5jZSAoc3BlY2lmaWNhbGx5LCBgcjVfY29yZV9ub2RlYCkuIFRoaXMgaW52b2x2ZXMgc2V0dGluZyB1cCBhbiBSUE1TRyBkcml2ZXIuIE9uY2UgdGhlIFJQTVNHIGNoYW5uZWwgYmVjb21lcyBvcGVyYXRpb25hbCwgYGNkeF9ycG1zZ19wcm9iZWAgaXMgaW52b2tlZCwgd2hpY2ggdGhlbiBzY2hlZHVsZXMgYGNkeF9ycG1zZ19wb3N0X3Byb2JlX3dvcmtgLCB1bHRpbWF0ZWx5IGxlYWRpbmcgdG8gYGNkeF9ycG1zZ19wb3N0X3Byb2JlYCBhbmQsIGZpbmFsbHksIGBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcmAuIENvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUgcnVubmluZyBvbiB0aGUgVmVyc2FsIEFDQVAgUjUgY29yZSBoYXBwZW5zIHZpYSBNQ0RJIChyZW1vdGVwcm9jIG1haWxib3gvcnBtc2cpIGR1cmluZyBlaXRoZXIgYHJlc2Nhbl9zdG9yZWAgb3IgYGNkeF9zY2FuX2RldmljZXNgLCB3aGljaCBhcmUgdXNlZCB0byBlbnVtZXJhdGUgYnVzZXMgYW5kIGRldmljZXMuXG5cbk5vdywgYSBjcml0aWNhbCBwb2ludDogKip0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGUgQ0RYIGNvbnRyb2xsZXIgb3IgYW55IG9mIGl0cyBhc3NvY2lhdGVkIGRldmljZXMgd2l0aGluIFFFTVUsIEdDRSwgb3IgZXZlbiB0aGUgbWFpbmxpbmUgTGludXgga2VybmVsLioqIFRoaXMgbWFrZXMgdGhpbmdzIGRpZmZpY3VsdC4gRnVydGhlcm1vcmUsIHRoZSBhcmNoaXRlY3R1cmUgaW4gcXVlc3Rpb24gaGVyZSBpcyBgYW1kNjRgLCB3aGlsZSB0aGUgYENEWF9CVVNgIGZ1bmN0aW9uYWxpdHkgYXBwZWFycyB0byBkZXBlbmQgb24gYSBjb21iaW5hdGlvbiBvZiBgT0YgXHUwMDI2XHUwMDI2IEFSTTY0IHx8IENPTVBJTEVfVEVTVGAuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIFZlcnNhbCBBQ0FQL0NEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBBUk02NCBTb0MgRlBHQSBoYXJkd2FyZSBhbmQgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGZpcm13YXJlIChNQ0RJIGNvbW11bmljYXRpb24gd2l0aCB0aGUgUjUgY29yZSkgdG8gb3BlcmF0ZS5cblxuQ29uc2lkZXJpbmcgdGhlIGdpdmVuIGluc3RydWN0aW9ucywgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiwgd2hlcmUgd2UncmUgbG9va2luZyBmb3Igc2NlbmFyaW9zIHdoZXJlIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCB0d28gY3JpdGVyaWEgaW1tZWRpYXRlbHkgc3RhbmQgb3V0LlxuXG4qICAgKipTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6KiogQ0RYIGZhbGxzIHNxdWFyZWx5IGludG8gdGhpcyBjYXRlZ29yeS4gSXQgcmVxdWlyZXMgYSBWZXJzYWwgQUNBUCBTb0MsIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gd2l0aCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBpbnRlcmFjdGlvbnMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbiogICAqKlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoqKiBUaGUgY29kZSdzIGRlcGVuZGVuY2Ugb24gdGhlIEFSTTY0IGFyY2hpdGVjdHVyZSwgY291cGxlZCB3aXRoIGl0cyByZWxpYW5jZSBvbiBzcGVjaWZpYyBmaXJtd2FyZSBhbmQgaGFyZHdhcmUsIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcmVhY2ggdGhlc2UgZXhlY3V0aW9uIHBhdGhzIG9uIGFtZDY0IHN5c3RlbXMuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzICphbnkqIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgQ0RYIGNvbnRyb2xsZXIgb24gYW1kNjQgb3Igd2l0aGluIHN0YW5kYXJkIFFFTVUuIEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0gZGV2aWNlcyBvciBtb2NrIGRyaXZlcnMgdGhhdCBtaWdodCBzaW11bGF0ZSB0aGUgQ0RYIGJlaGF2aW9yPyBJIG5lZWQgdG8gc2VhcmNoIGZvciBgXCJ2ZXJzYWwtbmV0LWNkeFwiYCBvciBhbnkgb3RoZXIgQ0RYLXJlbGF0ZWQga2V5d29yZHMgdG8gbWFrZSBzdXJlIHRoZXJlJ3Mgbm90aGluZyB0aGF0IEknbSBtaXNzaW5nLiBHaXZlbiBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcsIEkgYW0gaGlnaGx5IGNvbmZpZGVudCB0aGF0IHRoaXMgcGF0aCBpcyBub3Qgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHJlcXVpcmVtZW50cyBJIHdhcyBnaXZlbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgyODEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6NTIuOTg4Mzk4NTUxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY0NTA0MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZlcnNhbC1uZXQtY2R4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sLTMtLS0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWw6NDokaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sPTM3PXByb3BlcnRpZXM6XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtMzgtICBjb21wYXRpYmxlOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sOjM5OiAgICBjb25zdDogeGxueCx2ZXJzYWwtbmV0LWNkeFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sLTQwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWw9NzA9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbC03Mi0gICAgY2R4IHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbDo3MzogICAgICAgIGNvbXBhdGlibGUgPSBcXFwieGxueCx2ZXJzYWwtbmV0LWNkeFxcXCI7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtNzQtICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbk1BSU5UQUlORVJTPTEwNTg9UzpcXHRNYWludGFpbmVkXFxuTUFJTlRBSU5FUlM6MTA1OTpGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sXFxuTUFJTlRBSU5FUlMtMTA2MC1GOlxcdGRyaXZlcnMvY2R4LypcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTgzPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjZHhfZGVidWdmc19kaXI7XFxuZHJpdmVycy9jZHgvY2R4LmMtODQtXFxuZHJpdmVycy9jZHgvY2R4LmM6ODU6c3RhdGljIGNoYXIgKmNvbXBhdF9ub2RlX25hbWUgPSBcXFwieGxueCx2ZXJzYWwtbmV0LWNkeFxcXCI7XFxuZHJpdmVycy9jZHgvY2R4LmMtODYtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9MjM2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkeF9tYXRjaF90YWJsZVtdID0ge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoyMzc6XFx0ey5jb21wYXRpYmxlID0gXFxcInhsbngsdmVyc2FsLW5ldC1jZHhcXFwiLH0sXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIzOC1cXHR7IH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjU1LjI1MjkwODk1M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQ0OTk4NjYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgVGFyZ2V0IENvZGUgYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBhZnRlciB0aGlzIHRob3JvdWdoIHJldmlldywgSSdtIGFic29sdXRlbHkgY2VydGFpbi4gRXZlcnl0aGluZyBwb2ludHMgZGlyZWN0bHkgdG8gYW4gQU1EL1hpbGlueCBWZXJzYWwgRlBHQSAvIEFSTTY0IHBsYXRmb3JtLiBUaGlzIGlzbid0IGp1c3QgYSBnZW5lcmljIEFSTTY0IHRoaW5nOyBpdCByZXF1aXJlcyBwaHlzaWNhbCBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIGhhcmR3YXJlIHdpdGggUjUgZmlybXdhcmUgY29tbXVuaWNhdGlvbi4gRXZlbiB0aG91Z2ggdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYGFtZDY0YCBpbml0aWFsbHksIHRoZSByZXF1aXJlbWVudCBpcyBzdGlsbCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuU3BlY2lmaWNhbGx5LCB0aGF0IGB2ZmlvX2NkeF9tbWFwX21taW9gIGZ1bmN0aW9uIGluIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2Ag4oCTIGl0J3Mgb25seSBldmVyIGNhbGxlZCB0aHJvdWdoIHRoZSBgbW1hcGAgY2FsbGJhY2sgb2YgdGhlIGB2ZmlvLWNkeGAgZHJpdmVyLiBBbmQgdGhhdCBkcml2ZXIgaXMgKm9ubHkqIHJlZ2lzdGVyZWQgZm9yIENEWCBkZXZpY2VzLCB3aGljaCBhcmUgZW5hYmxlZCBieSBgQ09ORklHX1ZGSU9fQ0RYYCBhbmQgYENPTkZJR19DRFhfQlVTYC4gWW91IGNhbid0IGp1c3Qgc3BpbiB0aGlzIHVwIGluIFFFTVUgb3IgR0NFLiBXaXRob3V0IHRoYXQgcGh5c2ljYWwgQ0RYIGhhcmR3YXJlLCB3aXRob3V0IHRoZSBjb250cm9sbGVyIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcywgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSBvdXIgYHNldC1yZXN1bHRzYCBmaWVsZHMuIFllcCwgYFdvcnRoRnV6emluZ2AgaXMgdW5lcXVpdm9jYWxseSBgZmFsc2VgLiBUaGUgYFJlYXNvbmluZ2Agc2hvdWxkIGJlIGNyeXN0YWwgY2xlYXIuIFRoZSBgRm9jdXNTeW1ib2xzYD8gRW1wdHkuIE5vIGZvY3VzIHN5bWJvbHMuIEFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgPyBBbHNvIGVtcHR5LiBQZXJmZWN0LlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIHRvb2wgY2FsbCBmb3JtYXR0aW5nLiBPa2F5LCBgRm9jdXNTeW1ib2xzOiBbXWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGFuZCB0aGUgYFJlYXNvbmluZ2A6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIHZmaW9fY2R4X21tYXBfbW1pbyBpcyBwYXJ0IG9mIHRoZSBWRklPIENEWCBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKSwgd2hpY2ggc3VwcG9ydHMgQU1EL1hpbGlueCBWZXJzYWwgQ0RYIGJ1cyBkZXZpY2VzLiBDRFggYnVzIGRldmljZXMgcmVxdWlyZSBwaHlzaWNhbCBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIGhhcmR3YXJlIGFuZCBBUk02NCBmaXJtd2FyZSBjb21tdW5pY2F0aW9uIChNQ0RJIG92ZXIgcnBtc2cpLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgaW5zdGFudGlhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiBRRU1VIG9uIGFtZDY0KS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIiBUaGF0J3MgZ29vZC5cblxuQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDU0LCJPdXRwdXRUb2tlbnMiOjE0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMzowNy43MDI5MDE3MjlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbiB2ZmlvX2NkeF9tbWFwX21taW8gaXMgcGFydCBvZiB0aGUgVkZJTyBDRFggYnVzIGRyaXZlciAoZHJpdmVycy92ZmlvL2NkeC9tYWluLmMpLiBUaGUgQ0RYIGJ1cyBpcyBzcGVjaWZpYyB0byBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIHBsYXRmb3JtcyBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUvZmlybXdhcmUgKHJwbXNnL01DREkgY29tbXVuaWNhdGlvbiB3aXRoIGFuIFI1IG1hbmFnZW1lbnQgY29udHJvbGxlcikgdG8gZGlzY292ZXIgYW5kIHJlZ2lzdGVyIENEWCBkZXZpY2VzLiBCZWNhdXNlIHRoZXJlIGFyZSBubyBlbXVsYXRlZCBDRFggY29udHJvbGxlcnMgb3IgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VIGVudmlyb25tZW50cyAocGFydGljdWxhcmx5IG9uIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIzOjA3LjcwMjk0MzQzOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflows7gpv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 14:19:51 +0000 UTC FinishedAt: 2026-09-04 14:23:09 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwYzcxZjZmYjJjNmE2YTA1ZTYyYzdkZDRkYmJhNGI4NWNhZWYxZTYxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxNDoyMToyMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG5pbmRleCBiMzFlZDRiZTdiZGMxLi41M2Q5MTZjZmNiOGU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG5AQCAtMjU0LDEwICYjNDM7MjU0LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24gcmVnaW9uLFxuIFx0aWYgKGJhc2UgJiM0Mzsgc2l6ZSBcdTAwM2UgcmVnaW9uLnNpemUpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0dm1hLVx1MDAzZXZtX3Bnb2ZmID0gKHJlZ2lvbi5hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKSAmIzQzOyBwZ29mZjtcbiBcdHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGV2aWNlKHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QpO1xuIFxuLVx0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cdTAwM2V2bV9zdGFydCwgdm1hLVx1MDAzZXZtX3Bnb2ZmLFxuJiM0MztcdHJldHVybiBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtXHUwMDNldm1fc3RhcnQsXG4mIzQzO1x0XHRcdFx0ICAocmVnaW9uLmFkZHIgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpICYjNDM7IHBnb2ZmLFxuIFx0XHRcdFx0ICBzaXplLCB2bWEtXHUwMDNldm1fcGFnZV9wcm90KTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYzcxZjZmYjJjNmE2YTA1ZTYyYzdkZDRkYmJhNGI4NWNhZWYxZTYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBTZXAgNCAxNDoyMToyMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jIGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMKaW5kZXggYjMxZWQ0YmU3YmRjMS4uNTNkOTE2Y2ZjYjhlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMKQEAgLTI1NCwxMCAmIzQzOzI1NCwxMCBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbiwKIAlpZiAoYmFzZSAmIzQzOyBzaXplICZndDsgcmVnaW9uLnNpemUpCiAJCXJldHVybiAtRUlOVkFMOwogCi0Jdm1hLSZndDt2bV9wZ29mZiA9IChyZWdpb24uYWRkciAmZ3Q7Jmd0OyBQQUdFX1NISUZUKSAmIzQzOyBwZ29mZjsKIAl2bWEtJmd0O3ZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLSZndDt2bV9wYWdlX3Byb3QpOwogCi0JcmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS0mZ3Q7dm1fc3RhcnQsIHZtYS0mZ3Q7dm1fcGdvZmYsCiYjNDM7CXJldHVybiBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtJmd0O3ZtX3N0YXJ0LAomIzQzOwkJCQkgIChyZWdpb24uYWRkciAmZ3Q7Jmd0OyBQQUdFX1NISUZUKSAmIzQzOyBwZ29mZiwKIAkJCQkgIHNpemUsIHZtYS0mZ3Q7dm1fcGFnZV9wcm90KTsKIH0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYyCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV2YWx1YXRpbmcgYSBQb3RlbnRpYWwgU3l6a2FsbGVyIFBhdGNoIGZvciBWRklPL0NEWCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIHRoZSBnb2FsIGlzIHRvIGV2YWx1YXRlIGl0cyBzdWl0YWJpbGl0eSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgKmlzKiBDRFgsIGFuZCBpcyBpdCBldmVuIGZ1enphYmxlPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQmIzM5O3MgcmVhY2hhYmxlIGluIGEgdHlwaWNhbCBzeXN0ZW0gb3IgaWYgaXQmIzM5O3MgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZS4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcC4KCk15IHBsYW4gaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlYmFzZSB1c2luZyBteSBzdGFuZGFyZCB0b29scywgcHJvYmFibHkgYGdpdCBncmVwYCBhbmQgc29tZSBmaWxlIHJlYWRpbmcsIHRvIHF1aWNrbHkgZ2V0IGEgbGF5IG9mIHRoZSBsYW5kLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSBDRFggZHJpdmVyIGFjdHVhbGx5ICpkb2VzKiBhbmQgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkIGFuZCB1c2VkLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaXMgYW4gaW1wb3J0YW50IGJ1cyBhbmQgcGFydCBvZiB0aGUgbWFpbiBrZXJuZWwuCgpOb3csIGxvb2tpbmcgYXQgdGhlIGFjdHVhbCBwYXRjaDogaXQmIzM5O3Mgd2l0aGluIGB2ZmlvX2NkeF9tbWFwX21taW9gLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGEgc21hbGwgY2hhbmdlIHRvIGhvdyBhIG1lbW9yeSByZWdpb24gaXMgbWFwcGVkLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGNhbGN1bGF0aW5nIHRoZSBwYWdlIG9mZnNldCBhbmQgYGlvX3JlbWFwX3Bmbl9yYW5nZWAuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG9yaWdpbmFsIGNvZGUgd29ya3MgYW5kIGhvdyB0aGUgbW9kaWZpY2F0aW9uIGNoYW5nZXMgdGhlIGJlaGF2aW91ci4gTXkgZmlyc3QgcHJpb3JpdHkgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGlzIGNoYW5nZSwgc28gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBidXMgaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkZJT19DRFgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IGZzbC1tYy9cbmRyaXZlcnMvdmZpby9NYWtlZmlsZToxODpvYmotJChDT05GSUdfVkZJT19DRFgpICYjNDM7PSBjZHgvXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTctXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6ODpjb25maWcgVkZJT19DRFhcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlLTUtXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSAmIzQzOz0gdmZpby1jZHgub1xuZHJpdmVycy92ZmlvL2NkeC9NYWtlZmlsZS03LVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI0ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNTAtXHRwZ29mZiA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwMjZcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjI1MTpcdFx0KCgxVSBcdTAwM2NcdTAwM2MgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjUyLVx0YmFzZSA9IHBnb2ZmIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI2ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjcxLVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjcyOlx0aW5kZXggPSB2bWEtXHUwMDNldm1fcGdvZmYgXHUwMDNlXHUwMDNlIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI3My1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC01LVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjojaWZuZGVmIFZGSU9fQ0RYX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NzojZGVmaW5lIFZGSU9fQ0RYX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtOC1cbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMC1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19DRFhfT0ZGU0VUX1NISUZUICAgIDQwXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMi1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTEzPXN0YXRpYyBpbmxpbmUgdTY0IHZmaW9fY2R4X2luZGV4X3RvX29mZnNldCh1MzIgaW5kZXgpXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xNC17XG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDoxNTpcdHJldHVybiAoKHU2NCkoaW5kZXgpIFx1MDAzY1x1MDAzYyBWRklPX0NEWF9PRkZTRVRfU0hJRlQpO1xuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTYtfVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTU5PXN0YXRpYyB2b2lkIHZmaW9fY2R4X2lycXNfY2xlYW51cChzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTYzLVxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NjQ6I2VuZGlmIC8qIFZGSU9fQ0RYX1BSSVZBVEVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgaGFyZHdhcmU6CgoqKkludmVzdGlnYXRpbmcgdGhlIENEWCBCdXMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGludG8gdGhpcyBmdXJ0aGVyLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgJiMzNDtDRFgmIzM0OyBidXMgYWN0dWFsbHkgKmlzKi4gVGhlIG5hbWVzIHN1Z2dlc3QgYSBjb25uZWN0aW9uLCBidXQgSSBjYW4mIzM5O3QgYXNzdW1lLiBNeSBmaXJzdCBzdG9wIHNob3VsZCBiZSB0aGUgS2NvbmZpZyBmaWxlcyByZWxhdGVkIHRvIGl0IOKAkyBgZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnYCBhbmQgYGRyaXZlcnMvY2R4L0tjb25maWdgLiBUaGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhleSYjMzk7bGwgdGVsbCBtZSBpZiBpdOKAmXMgYSBWRklPLXNwZWNpZmljIGJ1cywgYSBtb3JlIGdlbmVyYWwgQ0RYIGJ1cywgYW5kIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhbmQgaW50ZW5kZWQgdXNlcyBhcmUuIFRoYXQmIzM5O3MgdGhlIGJlc3Qgd2F5IHRvIGdyYXNwIGl0cyBwdXJwb3NlIGFuZCBiZWhhdmlvciB3aXRoaW4gdGhlIGtlcm5lbCBlY29zeXN0ZW0uIEtub3dpbmcgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3aWxsIHNldCBtZSB1cCB0byBsb29rIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIFZGSU8gQ0RYIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgVkZJT19DRFhcbiAgIDk6XHRcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIENEWF9CVVNcbiAgMTE6XHRcdHNlbGVjdCBFVkVOVEZEXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIERyaXZlciB0byBlbmFibGUgVkZJTyBzdXBwb3J0IGZvciB0aGUgZGV2aWNlcyBvbiBDRFggYnVzLlxuICAxNDpcdFx0ICBUaGlzIGlzIHJlcXVpcmVkIHRvIG1ha2UgdXNlIG9mIENEWCBkZXZpY2VzIHByZXNlbnQgaW5cbiAgMTU6XHRcdCAgdGhlIHN5c3RlbSB1c2luZyB0aGUgVkZJTyBmcmFtZXdvcmsuXG4gIDE2Olx0XG4gIDE3Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NDYKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgS2NvbmZpZyBvZiB0aGUgQ0RYIERyaXZlcnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBzdGFydGVkIG9uIHRoaXMuLi4gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9jZHgvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIENEWCBkcml2ZXJzLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcGxhY2UgdG8gc3RhcnQsIHJpZ2h0PyBJJiMzOTtsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGdsZWFuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb2R1bGVzLCBhbnkgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyBmcm9tIHRoZXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHdoaWNoIGRyaXZlcnMgYXJlIGJ1aWx0IGlzIGxhaWQgb3V0LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIGhvdyB0aGV5IGFyZSBjb250cm9sbGVkLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDRFhfQlVTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvTWFrZWZpbGU9MTk0PW9iai0kKENPTkZJR19EUk1fQUNDRUwpXHRcdCYjNDM7PSBhY2NlbC9cbmRyaXZlcnMvTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19DRFhfQlVTKVx0XHQmIzQzOz0gY2R4L1xuZHJpdmVycy9NYWtlZmlsZS0xOTYtb2JqLSQoQ09ORklHX0RQTEwpXHRcdCYjNDM7PSBkcGxsL1xuLS1cbmRyaXZlcnMvY2R4L0tjb25maWctNy1cbmRyaXZlcnMvY2R4L0tjb25maWc6ODpjb25maWcgQ0RYX0JVU1xuZHJpdmVycy9jZHgvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtDRFggQnVzIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlLTctXG5kcml2ZXJzL2NkeC9NYWtlZmlsZTo4OmNjZmxhZ3MteSAmIzQzOz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9JiMzOTtcJiMzNDtDRFhfQlVTXCYjMzQ7JiMzOTtcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTktXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMDpvYmotJChDT05GSUdfQ0RYX0JVUykgJiM0Mzs9IGNkeC5vIGNvbnRyb2xsZXIvXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEzOm9iai0kKENPTkZJR19DRFhfQlVTKSAmIzQzOz0gY2R4X21zaS5vXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS0xNC1lbmRpZlxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTc1Nj1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTc5NS1cdGRldl9zZXRfbmFtZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldiwgXCYjMzQ7Y2R4LSUwMng6JTAyeFwmIzM0OyxcbmRyaXZlcnMvY2R4L2NkeC5jOjc5NjpcdFx0ICAgICAoKGNkeC1cdTAwM2VpZCBcdTAwM2NcdTAwM2MgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQpIHwgKGNkeF9kZXYtXHUwMDNlYnVzX251bSBcdTAwMjYgQ0RYX0JVU19OVU1fTUFTSykpLFxuZHJpdmVycy9jZHgvY2R4LmMtNzk3LVx0XHQgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSk7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODQxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjg0MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cbmRyaXZlcnMvY2R4L2NkeC5jPTg0ND1zdHJ1Y3QgZGV2aWNlICpjZHhfYnVzX2FkZChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04NjItXHRkZXZfc2V0X25hbWUoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYsIFwmIzM0O2NkeC0lMDJ4XCYjMzQ7LFxuZHJpdmVycy9jZHgvY2R4LmM6ODYzOlx0XHQgICAgICgoY2R4LVx1MDAzZWlkIFx1MDAzY1x1MDAzYyBDRFhfQ09OVFJPTExFUl9JRF9TSElGVCkgfCAoYnVzX251bSBcdTAwMjYgQ0RYX0JVU19OVU1fTUFTSykpKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg2NC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04ODgtfVxuZHJpdmVycy9jZHgvY2R4LmM6ODg5OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9idXNfYWRkLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtODkwLVxuZHJpdmVycy9jZHgvY2R4LmM9ODkxPWludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05MTMtfVxuZHJpdmVycy9jZHgvY2R4LmM6OTE0OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxuZHJpdmVycy9jZHgvY2R4LmM9OTE2PXZvaWQgY2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05MjgtfVxuZHJpdmVycy9jZHgvY2R4LmM6OTI5OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy05MzAtXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTE2MD1zdHJ1Y3QgaXJxX2RvbWFpbiAqY2R4X21zaV9kb21haW5faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTE5Mi19XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MTkzOkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9tc2lfZG9tYWluX2luaXQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnLTctXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWc6ODppZiBDRFhfQlVTXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWctOS1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9MjU2PU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MjU3Ok1PRFVMRV9JTVBPUlRfTlMoXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjQ3LS8qXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjQ4OiAqIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNDktICogQ0RYIGJ1cyBob3N0cyBkZXZpY2VzIChmdW5jdGlvbnMpIHRoYXQgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZSBDb21wb3NhYmxlXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI1Ni0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNTc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTXHRcdFx0XHQweDFcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNTg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX01TR1NFVFx0XHRcdDB4MVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI1OS0jdW5kZWYgTUNfQ01EXzB4MV9QUklWSUxFR0VfQ1RHXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI2Mi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNjM6LyogTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19JTiBtc2dyZXF1ZXN0ICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19JTl9MRU5cdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjY1LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NjovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVCBtc2dyZXNwb25zZSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNjgtLypcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjcxLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI3MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0JVU19DT1VOVF9PRlNUXHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlRfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNzQtXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3Ni0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI3NzogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNzgtICogRW51bWVyYXRlIENEWCBidXMgZGV2aWNlcyBvbiBhIGdpdmVuIGJ1c1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OS0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyODA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNcdFx0XHRcdDB4MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19NU0dTRVRcdFx0XHQweDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODItI3VuZGVmIE1DX0NNRF8weDJfUFJJVklMRUdFX0NUR1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mjg2Oi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTiBtc2dyZXF1ZXN0ICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mjg3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODgtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODktICogQnVzIG51bWJlciB0byBlbnVtZXJhdGUsIGluIHJhbmdlIDAgdG8gQlVTX0NPVU5ULTEsIGFzIHJldHVybmVkIGJ5XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjkwOiAqIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjkxLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVNfT0ZTVFx0XHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fQlVTX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTQtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mjk1Oi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVQgbXNncmVzcG9uc2UgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTctLypcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzAxLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX09GU1RcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0RFVklDRV9DT1VOVF9MRU5cdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDQtXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwNi0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwNzogKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwOC0gKiBSZXR1cm5zIGRldmljZSBpZGVudGlmaWNhdGlvbiBhbmQgTU1JTy9NU0kgcmVzb3VyY2UgZGF0YSBmb3IgYSBDRFggZGV2aWNlLlxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMTgtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzE5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdcdFx0XHRcdFx0MHgzXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzIwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfTVNHU0VUXHRcdFx0XHRcdDB4M1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMyMS0jdW5kZWYgTUNfQ01EXzB4M19QUklWSUxFR0VfQ1RHXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMyNC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjU6LyogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0xFTlx0XHRcdFx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzI3LS8qIERldmljZSBidXMgbnVtYmVyLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzI4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fQlVTX09GU1RcdFx0XHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVNfTEVOXHRcdFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzMwLS8qIERldmljZSBudW1iZXIgcmVsYXRpdmUgdG8gdGhlIGJ1cywgaW4gcmFuZ2UgMCB0byBERVZJQ0VfQ09VTlQtMSBmb3IgdGhhdCBidXMgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0VfT0ZTVFx0XHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0RFVklDRV9MRU5cdFx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzM0Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVCBtc2dyZXNwb25zZSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9MRU5cdFx0XHRcdDg4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzM2LS8qIDE2LWJpdCBWZW5kb3IgaWRlbnRpZmllciwgY29tcGxpYW50IHdpdGggUENJLVNJRyBWZW5kb3JJRCBhc3NpZ25tZW50LiAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WRU5ET1JfSURfT0ZTVFx0XHRcdDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEX0xFTlx0XHRcdDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzktLyogMTYtYml0IERldmljZSBJRCBhc3NpZ25lZCBieSB0aGUgdmVuZG9yICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRF9PRlNUXHRcdFx0MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM0MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfSURfTEVOXHRcdFx0MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM0Mi0vKlxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNDUtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQ2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSURfT0ZTVFx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQ3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSURfTEVOXHRcdDJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNDgtLypcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzUxLSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEX09GU1RcdFx0NlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEX0xFTlx0XHQyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzU0LS8qIDI0LWJpdCBEZXZpY2UgQ2xhc3MgY29kZSwgY29tcGxpYW50IHdpdGggUENJLVNJRyBEZXZpY2UgQ2xhc3MgY29kZXMgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTX09GU1RcdFx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzU2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9DTEFTU19MRU5cdFx0XHQzXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzU3LS8qIDgtYml0IHZlbmRvci1hc3NpZ25lZCByZXZpc2lvbiAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fT0ZTVFx0XHQxMVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fTEVOXHRcdDFcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjAtLyogUmVzZXJ2ZWQgKGFsaWdubWVudCkgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfUkVTRVJWRURfT0ZTVFx0XHRcdDEyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzYyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFU0VSVkVEX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjMtLyogTU1JTyByZWdpb24gMCBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfT0ZTVFx0XHQxNlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19PRlNUXHRcdDE2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX0xCTlx0XHQxMjhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfT0ZTVFx0XHQyMFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9MQk5cdFx0MTYwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzczOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzc0LS8qIE1NSU8gcmVnaW9uIDAgc2l6ZSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfT0ZTVFx0XHQyNFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19PRlNUXHRcdDI0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX0xCTlx0XHQxOTJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfT0ZTVFx0XHQyOFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9MQk5cdFx0MjI0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzg1LS8qIE1NSU8gcmVnaW9uIDEgYmFzZSBhZGRyZXNzIChidXMgYWRkcmVzcyksIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX09GU1RcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fT0ZTVFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MQk5cdFx0MjU2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX09GU1RcdFx0MzZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEJOXHRcdDI4OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM5Ni0vKiBNTUlPIHJlZ2lvbiAxIHNpemUsIDAgaWYgdW51c2VkICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX09GU1RcdFx0NDBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTEVOXHRcdDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fT0ZTVFx0XHQ0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19MQk5cdFx0MzIwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDAyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xPX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDAzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX09GU1RcdFx0NDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfTEJOXHRcdDM1MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9ISV9XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQwNy0vKiBNTUlPIHJlZ2lvbiAyIGJhc2UgYWRkcmVzcyAoYnVzIGFkZHJlc3MpLCAwIGlmIHVudXNlZCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9PRlNUXHRcdDQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xFTlx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDEwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX09GU1RcdFx0NDhcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fTEJOXHRcdDM4NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9PRlNUXHRcdDUyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX0xCTlx0XHQ0MTZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MTgtLyogTU1JTyByZWdpb24gMiBzaXplLCAwIGlmIHVudXNlZCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9PRlNUXHRcdDU2XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xFTlx0XHQ4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX09GU1RcdFx0NTZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEJOXHRcdDQ0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MT19XSURUSFx0XHQzMlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9PRlNUXHRcdDYwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xCTlx0XHQ0ODBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mjg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfSElfV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MjktLyogTU1JTyByZWdpb24gMyBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfT0ZTVFx0XHQ2NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19PRlNUXHRcdDY0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDMzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX0xCTlx0XHQ1MTJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfT0ZTVFx0XHQ2OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9MQk5cdFx0NTQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDQwLS8qIE1NSU8gcmVnaW9uIDMgc2l6ZSwgMCBpZiB1bnVzZWQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfT0ZTVFx0XHQ3MlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MRU5cdFx0OFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19PRlNUXHRcdDcyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX0xCTlx0XHQ1NzZcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fV0lEVEhcdFx0MzJcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfT0ZTVFx0XHQ3NlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9MQk5cdFx0NjA4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDUwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX1dJRFRIXHRcdDMyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDUxLS8qIE1TSSB2ZWN0b3IgY291bnQgKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX09GU1RcdFx0XHQ4MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NU0lfQ09VTlRfTEVOXHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ1NC0vKiBSZXF1ZXN0ZXIgSUQgdXNlZCBieSBkZXZpY2UgKFNNTVUgU3RyZWFtSUQsIEdJQyBJVFMgRGV2aWNlSUQpICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9PRlNUXHRcdFx0ODRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfUkVRVUVTVEVSX0lEX0xFTlx0XHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NTctXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU4Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMiBtc2dyZXNwb25zZSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ1OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9MRU5cdFx0XHRcdDkyXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDYwLS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSBmb3IgR0lDIElUUyBEZXZpY2VJRCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEX09GU1RcdDg4XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDYyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX1JFUVVFU1RFUl9ERVZJQ0VfSURfTEVOXHRcdDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NjMtXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2NS0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2NjogKiBNQ19DTURfQ0RYX0JVU19ET1dOXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDY3LSAqIEFzc2VydGluZyByZXNldCBvbiB0aGUgQ0RYIGJ1cyBjYXVzZXMgYWxsIGRldmljZXMgb24gdGhlIGJ1cyB0byBiZSBxdWllc2NlZC5cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDc3LSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ3ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05cdFx0XHRcdFx0MHg0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDc5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRE9XTl9NU0dTRVRcdFx0XHQweDRcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODAtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDgxOi8qIE1DX0NNRF9DRFhfQlVTX0RPV05fSU4gbXNncmVxdWVzdCAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4MjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fTEVOXHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4My0vKiBCdXMgbnVtYmVyIHRvIHB1dCBpbiByZXNldCwgaW4gcmFuZ2UgMCB0byBCVVNfQ09VTlQtMSAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX09GU1RcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX0xFTlx0XHQ0XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDg2LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4Ny0vKlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4ODogKiBNQ19DTURfQ0RYX0JVU19ET1dOX09VVCBtc2dyZXNwb25zZTogVGhlIGJ1cyBpcyBxdWllc2NlZCwgbm8gZnVydGhlclxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4OS0gKiB1cHN0cmVhbSB0cmFmZmljIGZvciBkZXZpY2VzIG9uIHRoaXMgYnVzLlxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ5MC0gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0OTE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX09VVF9MRU5cdFx0XHQwXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDkyLVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTQtLypcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0OTU6ICogTUNfQ01EX0NEWF9CVVNfVVBcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTYtICogQWZ0ZXIgYnVzIHJlc2V0IGlzIGRlLWFzc2VydGVkLCBkZXZpY2VzIGFyZSBpbiBhIHN0YXRlIHdoaWNoIGlzIGZ1bmN0aW9uYWxseVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDUtICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTA2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBcdFx0XHRcdFx0MHg1XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTA3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfTVNHU0VUXHRcdFx0MHg1XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNTA4LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwOTovKiBNQ19DTURfQ0RYX0JVU19VUF9JTiBtc2dyZXF1ZXN0ICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTEwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfSU5fTEVOXHRcdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxMS0vKiBCdXMgbnVtYmVyIHRvIHRha2Ugb3V0IG9mIHJlc2V0LCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTEyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfSU5fQlVTX09GU1RcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0JVU19MRU5cdFx0NFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo1MTU6LyogTUNfQ01EX0NEWF9CVVNfVVBfT1VUIG1zZ3Jlc3BvbnNlOiBUaGUgYnVzIGNhbiBub3cgYmUgZW51bWVyYXRlZC4gKi9cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo1MTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19VUF9PVVRfTEVOXHRcdFx0MFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNy1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9MTA9aW50IGNkeF9tY2RpX2dldF9udW1fYnVzZXMoc3RydWN0IGNkeF9tY2RpICpjZHgpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyOlx0TUNESV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTMtXHRzaXplX3Qgb3V0bGVuO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNjpcdHJldCA9IGNkeF9tY2RpX3JwYyhjZHgsIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVMsIE5VTEwsIDAsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTctXHRcdFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXHUwMDI2b3V0bGVuKTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjAtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MjE6XHRpZiAob3V0bGVuICE9IE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yMi1cdFx0cmV0dXJuIC1FSU87XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MjQ6XHRyZXR1cm4gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfRU5VTV9CVVNFU19PVVRfQlVTX0NPVU5UKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yNS19XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTI3PWludCBjZHhfbWNkaV9nZXRfbnVtX2RldnMoc3RydWN0IGNkeF9tY2RpICpjZHgsIGludCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTI4LXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoyOTpcdE1DRElfREVDTEFSRV9CVUYob3V0YnVmLCBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzA6XHRNQ0RJX0RFQ0xBUkVfQlVGKGluYnVmLCBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fTEVOKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zMS1cdHNpemVfdCBvdXRsZW47XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTMzLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjM0Olx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0JVUywgYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzY6XHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVMsIGluYnVmLCBzaXplb2YoaW5idWYpLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTM3LVx0XHRcdCAgIG91dGJ1Ziwgc2l6ZW9mKG91dGJ1ZiksIFx1MDAyNm91dGxlbik7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjQxOlx0aWYgKG91dGxlbiAhPSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUX0xFTilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00Mi1cdFx0cmV0dXJuIC1FSU87XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NDQ6XHRyZXR1cm4gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9ERVZJQ0VfQ09VTlQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQ1LX1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9NDc9aW50IGNkeF9tY2RpX2dldF9kZXZfY29uZmlnKHN0cnVjdCBjZHhfbWNkaSAqY2R4LFxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy01MC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTE6XHRNQ0RJX0RFQ0xBUkVfQlVGKG91dGJ1ZiwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTI6XHRNQ0RJX0RFQ0xBUkVfQlVGKGluYnVmLCBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9MRU4pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTUzLVx0c3RydWN0IHJlc291cmNlICpyZXMgPSBcdTAwMjZkZXZfcGFyYW1zLVx1MDAzZXJlc1swXTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNTctXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTg6XHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVMsIGJ1c19udW0pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjU5Olx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fREVWSUNFLCBkZXZfbnVtKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02MC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo2MTpcdHJldCA9IGNkeF9tY2RpX3JwYyhjZHgsIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Mi1cdFx0XHQgICBvdXRidWYsIHNpemVvZihvdXRidWYpLCBcdTAwMjZvdXRsZW4pO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02NS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo2NjpcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX0xFTilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Ny1cdFx0cmV0dXJuIC1FSU87XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTcxLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjcyOlx0cmVxX2lkID0gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNzMtXHRkZXZfcGFyYW1zLVx1MDAzZXJlcV9pZCA9IHJlcV9pZDtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNzUtXHRkZXZfcGFyYW1zLVx1MDAzZW1zaV9kZXZfaWQgPSBNQ0RJX0RXT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo3NjpcdFx0XHRcdFx0ICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX1JFUVVFU1RFUl9ERVZJQ0VfSUQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc3LVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc4LVx0ZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnQgPSAwO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc5Olx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRSkgIT0gMCkge1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTgwLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLnN0YXJ0ID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MTpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTgyLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmVuZCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6ODM6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFKSAmIzQzO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg0LVx0XHRcdFx0ICAgTUNESV9RV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6ODU6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFKSAtIDE7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODYtXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODktXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6OTA6XHRpZiAoTUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFKSAhPSAwKSB7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTEtXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjkyOlx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTMtXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZW5kID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5NDpcdFx0XHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpICYjNDM7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTUtXHRcdFx0XHQgICBNQ0RJX1FXT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5NjpcdFx0XHRcdFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkUpIC0gMTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy05Ny1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDAtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTAxOlx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRSkgIT0gMCkge1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEwMi1cdFx0cmVzW2Rldl9wYXJhbXMtXHUwMDNlcmVzX2NvdW50XS5zdGFydCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTAzOlx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRSk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA0LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmVuZCA9XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTA1Olx0XHRcdE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRSkgJiM0MztcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDYtXHRcdFx0XHQgICBNQ0RJX1FXT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDc6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFKSAtIDE7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA4LVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExMS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTI6XHRpZiAoTUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFKSAhPSAwKSB7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEzLVx0XHRyZXNbZGV2X3BhcmFtcy1cdTAwM2VyZXNfY291bnRdLnN0YXJ0ID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTQ6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTUtXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZW5kID1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTY6XHRcdFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFKSAmIzQzO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTExNy1cdFx0XHRcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjExODpcdFx0XHRcdFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkUpIC0gMTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTktXHRcdHJlc1tkZXZfcGFyYW1zLVx1MDAzZXJlc19jb3VudF0uZmxhZ3MgPSBJT1JFU09VUkNFX01FTTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTIyLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyMzpcdGRldl9wYXJhbXMtXHUwMDNldmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjQ6XHRkZXZfcGFyYW1zLVx1MDAzZWRldmljZSA9IE1DRElfV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRCk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTI1LVx0ZGV2X3BhcmFtcy1cdTAwM2VzdWJzeXNfdmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZixcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjY6XHRcdFx0XHRcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSUQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyNy1cdGRldl9wYXJhbXMtXHUwMDNlc3Vic3lzX2RldmljZSA9IE1DRElfV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI4Olx0XHRcdFx0XHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMjktXHRkZXZfcGFyYW1zLVx1MDAzZWNsYXNzID0gTUNESV9EV09SRChvdXRidWYsXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTMwOlx0XHRcdFx0ICAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9DTEFTUykgXHUwMDI2IDB4RkZGRkZGO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMTpcdGRldl9wYXJhbXMtXHUwMDNlcmV2aXNpb24gPSBNQ0RJX0JZVEUob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT04pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMjpcdGRldl9wYXJhbXMtXHUwMDNlbnVtX21zaSA9IE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NU0lfQ09VTlQpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEzMy1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9MTM3PWludCBjZHhfbWNkaV9idXNfZW5hYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEzOC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTM5Olx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfVVBfSU5fTEVOKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNDAtXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0MS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNDI6XHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19VUF9JTl9CVVMsIGJ1c19udW0pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE0MzpcdHJldCA9IGNkeF9tY2RpX3JwYyhjZHgsIE1DX0NNRF9DRFhfQlVTX1VQLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNDQtXHRcdFx0ICAgTlVMTCwgMCwgTlVMTCk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTE0OT1pbnQgY2R4X21jZGlfYnVzX2Rpc2FibGUoc3RydWN0IGNkeF9tY2RpICpjZHgsIHU4IGJ1c19udW0pXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUwLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTE6XHRNQ0RJX0RFQ0xBUkVfQlVGKGluYnVmLCBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0xFTik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUyLVx0aW50IHJldDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTMtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTU0Olx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfRE9XTl9JTl9CVVMsIGJ1c19udW0pO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE1NTpcdHJldCA9IGNkeF9tY2RpX3JwYyhjZHgsIE1DX0NNRF9DRFhfQlVTX0RPV04sIGluYnVmLCBzaXplb2YoaW5idWYpLFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1Ni1cdFx0XHQgICBOVUxMLCAwLCBOVUxMKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYz0xNjE1PXUzMiByNjAwX2dwdV9jaGVja19zb2Z0X3Jlc2V0KHN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2KVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jLTE2NjctXHRpZiAoR18wMDBFNTBfTUNCX0JVU1kodG1wKSB8IEdfMDAwRTUwX01DRFpfQlVTWSh0bXApIHxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jOjE2Njg6XHQgICAgR18wMDBFNTBfTUNEWV9CVVNZKHRtcCkgfCBHXzAwMEU1MF9NQ0RYX0JVU1kodG1wKSB8XG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYy0xNjY5LVx0ICAgIEdfMDAwRTUwX01DRFdfQlVTWSh0bXApKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMGQuaC0xODMzLSNkZWZpbmVcdFx0R18wMDBFNTBfTUNEWV9CVVNZKHgpXHRcdFx0KCgoeCkgXHUwMDNlXHUwMDNlIDExKSBcdTAwMjYgMSlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMGQuaDoxODM0OiNkZWZpbmVcdFx0R18wMDBFNTBfTUNEWF9CVVNZKHgpXHRcdFx0KCgoeCkgXHUwMDNlXHUwMDNlIDEyKSBcdTAwMjYgMSlcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMGQuaC0xODM1LSNkZWZpbmVcdFx0R18wMDBFNTBfTUNEV19CVVNZKHgpXHRcdFx0KCgoeCkgXHUwMDNlXHUwMDNlIDEzKSBcdTAwMjYgMSlcbi0tXG5kcml2ZXJzL2lvbW11L2lvbW11LmM9MTg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKiBjb25zdCBpb21tdV9idXNlc1tdID0ge1xuLS1cbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0xOTktI2VuZGlmXG5kcml2ZXJzL2lvbW11L2lvbW11LmM6MjAwOiNpZmRlZiBDT05GSUdfQ0RYX0JVU1xuZHJpdmVycy9pb21tdS9pb21tdS5jLTIwMS1cdFx1MDAyNmNkeF9idXNfdHlwZSxcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc9OD1jb25maWcgVkZJT19DRFhcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7VkZJTyBzdXBwb3J0IGZvciBDRFggYnVzIGRldmljZXNcJiMzNDtcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZzoxMDpcdGRlcGVuZHMgb24gQ0RYX0JVU1xuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTExLVx0c2VsZWN0IEVWRU5URkRcbi0tXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0zNjE9TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1ZGSU8gZm9yIENEWCBkZXZpY2VzIC0gVXNlciBMZXZlbCBtZXRhLWRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozNjI6TU9EVUxFX0lNUE9SVF9OUyhcJiMzNDtDRFhfQlVTXCYjMzQ7KTtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtOC1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDo5OiNpZm5kZWYgX0NEWF9CVVNfSF9cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxMDojZGVmaW5lIF9DRFhfQlVTX0hfXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTEtXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE4LSNkZWZpbmUgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQgNFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE5OiNkZWZpbmUgQ0RYX0JVU19OVU1fTUFTSyAweEZcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMC1cbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MjgxPXN0YXRpYyBpbmxpbmUgdm9pZCBjZHhfZGlzYWJsZV9tc2koc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTI4Ni1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyODc6I2VuZGlmIC8qIF9DRFhfQlVTX0hfICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MDMKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkludmVzdGlnYXRpbmcgQ0RYIENvbnRyb2xsZXIgUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcnMgYXJlIHJlZ2lzdGVyaW5nIHRoZW1zZWx2ZXMgYXMgYGNkeF9jb250cm9sbGVyYCBpbnN0YW5jZXMuIFRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCBpcyB0byBsZXZlcmFnZSBteSBvbGQgZnJpZW5kLCBgZ3JlcGAuIEkmIzM5O2xsIHJ1biBhIHNlYXJjaCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIG5hbWUgYGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIGxpc3Qgb2YgYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGViYXNlIHdoZXJlIHRoaXMgcmVnaXN0cmF0aW9uIGlzIGhhcHBlbmluZy4gRnJvbSB0aGVyZSwgSSBjYW4gc3RhcnQgdG8gdW5kZXJzdGFuZCB3aGljaCBzcGVjaWZpYyBkcml2ZXJzIGFyZSBtYW5hZ2luZyB0aGVzZSBjb250cm9sbGVycyBhbmQgd2hhdCB0aGVpciByZXNwZWN0aXZlIHJvbGVzIGFyZS4gVGhpcyBnaXZlcyBtZSBhIHN0YXJ0aW5nIHBvaW50IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaWYgbmVlZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZHhfcmVnaXN0ZXJfY29udHJvbGxlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jZHguYz04ODk9RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2J1c19hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04OTAtXG5kcml2ZXJzL2NkeC9jZHguYzo4OTE6aW50IGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuZHJpdmVycy9jZHgvY2R4LmMtODkyLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05MTMtfVxuZHJpdmVycy9jZHgvY2R4LmM6OTE0OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5oPTMxPXN0cnVjdCBjZHhfZGV2X3BhcmFtcyB7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmgtNDktLyoqXG5kcml2ZXJzL2NkeC9jZHguaDo1MDogKiBjZHhfcmVnaXN0ZXJfY29udHJvbGxlciAtIFJlZ2lzdGVyIGEgQ0RYIGNvbnRyb2xsZXIgYW5kIGl0cyBwb3J0c1xuZHJpdmVycy9jZHgvY2R4LmgtNTEtICpcdFx0b24gdGhlIENEWCBidXMuXG4tLVxuZHJpdmVycy9jZHgvY2R4LmgtNTUtICovXG5kcml2ZXJzL2NkeC9jZHguaDo1NjppbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xuZHJpdmVycy9jZHgvY2R4LmgtNTctXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTQ2PXZvaWQgY2R4X3JwbXNnX3Bvc3RfcHJvYmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQ4LVx0LyogUmVnaXN0ZXIgQ0RYIGNvbnRyb2xsZXIgd2l0aCBDRFggYnVzIGRyaXZlciAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ5Olx0aWYgKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKGNkeCkpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTAtXHRcdGRldl9lcnIoY2R4LVx1MDAzZWRldiwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBjb250cm9sbGVyXFxuXCYjMzQ7KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0NjIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhlIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgIGZpbGUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25hbGl0eSB0aGF0IGZpbGUgaXMgcmVzcG9uc2libGUgZm9yIGFuZCwgbW9yZSBzcGVjaWZpY2FsbHksIHdoYXQgdGhlIGBjZHhgIGNvbnRyb2xsZXIgaXMgZG9pbmcuIEEgZ29vZCBmaXJzdCBzdGVwIHdvdWxkIGJlIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgcmVnaXN0ZXIgaW5pdGlhbGl6YXRpb24gYW5kIHVzYWdlLiBJJiMzOTtsbCBuZWVkIHRvIGxvY2F0ZSB3aGVyZSB0aGlzIGZpbGUgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIFRpbWUgdG8gZmlyZSB1cCBgZ3JlcGAgd2l0aGluIHRoZSBgZHJpdmVycy9jZHgvY29udHJvbGxlci9gIGRpcmVjdG9yeSBhbmQgc2VlIHdoYXQgcG9wcyB1cCwgc2VhcmNoaW5nIGZvciBtZW50aW9ucyBvZiB0aGUgYGNkeF9jb250cm9sbGVyLmNgIGZpbGUuIEhvcGVmdWxseSwgdGhpcyB3aWxsIGxlYWQgbWUgdG8gdGhlIHJlbGV2YW50IGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIG9yIG1vZHVsZSByZWdpc3RyYXRpb24gcG9pbnRzIGFuZCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgaW50ZWdyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NkeF9jb250cm9sbGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xuZHJpdmVycy9jZHgvY2R4LmMtODAtLyogTG9jayB0byBwcm90ZWN0IGNvbnRyb2xsZXIgb3BzICovXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmMtODItLyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz05NT1pbnQgY2R4X2Rldl9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTctXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjk4Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTk5LVx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MTQ2PXN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNDktXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0xNTEtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MjIzPWludCBjZHhfc2V0X21hc3RlcihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XG5kcml2ZXJzL2NkeC9jZHguYzoyMjU6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMjI2LVx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MjM5PWludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjQwLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0yNDItXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0zMDI9c3RhdGljIGludCBjZHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMwNS1cdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzA2Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cdGludCBlcnJvcjtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0zMzc9c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zNDAtXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy0zNDItXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzQ5PXN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTM1Mi1cdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzUzOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM1NC1cdHUzMiBpbnB1dF9pZCA9IGNkeF9kZXYtXHUwMDNlcmVxX2lkO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NTktXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXHRib29sIGVuYWJsZTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz01NzU9c3RhdGljIHNzaXplX3QgcmVzY2FuX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU3Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo1Nzg6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTU3OS1cdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU4Ny1cbmRyaXZlcnMvY2R4L2NkeC5jOjU4ODpcdGd1YXJkKG11dGV4KShcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTU4OS1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz03NTY9aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XG5kcml2ZXJzL2NkeC9jZHguYzo3NTg6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGRldl9wYXJhbXMtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtNzU5LVx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9ODQyPUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9kZXZpY2VfYWRkLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtODQzLVxuZHJpdmVycy9jZHgvY2R4LmM6ODQ0OnN0cnVjdCBkZXZpY2UgKmNkeF9idXNfYWRkKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY2R4LmMtODQ1LXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz04ODk9RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2J1c19hZGQsIFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYy04OTAtXG5kcml2ZXJzL2NkeC9jZHguYzo4OTE6aW50IGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuZHJpdmVycy9jZHgvY2R4LmMtODkyLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy04OTQtXG5kcml2ZXJzL2NkeC9jZHguYzo4OTU6XHRyZXQgPSBpZGFfYWxsb2NfcmFuZ2UoXHUwMDI2Y2R4X2NvbnRyb2xsZXJfaWRhLCAwLCAgTUFYX0NEWF9DT05UUk9MTEVSUyAtIDEsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9jZHgvY2R4LmMtODk2LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTkwMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjkwMzpcdG11dGV4X2xvY2soXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYy05MDQtXHRjZHgtXHUwMDNlaWQgPSByZXQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTA5LVx0Y2R4LVx1MDAzZWNvbnRyb2xsZXJfcmVnaXN0ZXJlZCA9IHRydWU7XG5kcml2ZXJzL2NkeC9jZHguYzo5MTA6XHRtdXRleF91bmxvY2soXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XG5kcml2ZXJzL2NkeC9jZHguYy05MTEtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9OTE0PUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcJiMzNDtDRFhfQlVTX0NPTlRST0xMRVJcJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxuZHJpdmVycy9jZHgvY2R4LmM6OTE2OnZvaWQgY2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbmRyaXZlcnMvY2R4L2NkeC5jLTkxNy17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtOTIwLVxuZHJpdmVycy9jZHgvY2R4LmM6OTIxOlx0bXV0ZXhfbG9jayhcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTkyMi1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05MjQtXHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoY2R4LVx1MDAzZWRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjkyNTpcdGlkYV9mcmVlKFx1MDAyNmNkeF9jb250cm9sbGVyX2lkYSwgY2R4LVx1MDAzZWlkKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTkyNi1cbmRyaXZlcnMvY2R4L2NkeC5jOjkyNzpcdG11dGV4X3VubG9jayhcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTkyOC19XG4tLVxuZHJpdmVycy9jZHgvY2R4Lmg9MzE9c3RydWN0IGNkeF9kZXZfcGFyYW1zIHtcbmRyaXZlcnMvY2R4L2NkeC5oOjMyOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XG5kcml2ZXJzL2NkeC9jZHguaC0zMy1cdHN0cnVjdCBkZXZpY2UgKnBhcmVudDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC01NS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jZHguaC01Ny1cbi0tXG5kcml2ZXJzL2NkeC9jZHguaC02MS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5oOjYyOnZvaWQgY2R4X3VucmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XG5kcml2ZXJzL2NkeC9jZHguaC02My1cbi0tXG5kcml2ZXJzL2NkeC9jZHguaD03Mz1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguaC04My0gKi9cbmRyaXZlcnMvY2R4L2NkeC5oOjg0OnN0cnVjdCBkZXZpY2UgKmNkeF9idXNfYWRkKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5oLTg1LVxuLS1cbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz0zOT1zdGF0aWMgdm9pZCBjZHhfbXNpX3dyaXRlX2lycV91bmxvY2soc3RydWN0IGlycV9kYXRhICppcnFfZGF0YSlcbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNDItXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UobXNpX2Rlc2MtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo0MzpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNDQtXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9Njg9aW50IGNkeF9lbmFibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4X21zaS5jLTY5LXtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo3MDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNzEtXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbi0tXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9ODQ9dm9pZCBjZHhfZGlzYWJsZV9tc2koc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtODUte1xuZHJpdmVycy9jZHgvY2R4X21zaS5jOjg2Olx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy04Ny1cdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvTWFrZWZpbGU9OD1vYmotJChDT05GSUdfQ0RYX0NPTlRST0xMRVIpICYjNDM7PSBjZHgtY29udHJvbGxlci5vXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL01ha2VmaWxlOjk6Y2R4LWNvbnRyb2xsZXItb2JqcyA6PSBjZHhfY29udHJvbGxlci5vIGNkeF9ycG1zZy5vIG1jZGkubyBtY2RpX2Z1bmN0aW9ucy5vXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTEyLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjEzOiNpbmNsdWRlIFwmIzM0O2NkeF9jb250cm9sbGVyLmhcJiMzNDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNC0jaW5jbHVkZSBcJiMzNDsuLi9jZHguaFwmIzM0O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0zMT1zdGF0aWMgY29uc3Qgc3RydWN0IGNkeF9tY2RpX29wcyBtY2RpX29wcyA9IHtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMzUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MzY6c3RhdGljIGludCBjZHhfYnVzX2VuYWJsZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSlcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0zNy17XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQwLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQxOnN0YXRpYyBpbnQgY2R4X2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQyLXtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDUtXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NDY6dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00Ny17XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTUyLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjUzOnZvaWQgY2R4X3JwbXNnX3ByZV9yZW1vdmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTQte1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01OC1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo1OTpzdGF0aWMgaW50IGNkeF9jb25maWd1cmVfZGV2aWNlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTYwLVx0XHRcdFx0dTggYnVzX251bSwgdTggZGV2X251bSxcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtOTItXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6OTM6c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk0LXtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9MTY0PXN0YXRpYyBpbnQgeGxueF9jZHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNjUte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE2NjpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE2Ny1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTIyMj1zdGF0aWMgdm9pZCB4bG54X2NkeF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0yMjMte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjIyNDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMjI1LVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaSA9IGNkeC1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xMy1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaDoxNDp2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xNS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaDoxNjp2b2lkIGNkeF9ycG1zZ19wcmVfcmVtb3ZlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xNy1cbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE1LSNpbmNsdWRlIFwmIzM0Oy4uL2NkeC5oXCYjMzQ7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjE2OiNpbmNsdWRlIFwmIzM0O2NkeF9jb250cm9sbGVyLmhcJiMzNDtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTctI2luY2x1ZGUgXCYjMzQ7bWNkaV9mdW5jdGlvbnMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9NDY9c3RhdGljIGludCBjZHhfYXR0YWNoX3RvX3Jwcm9jKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy00OC1cdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcjVfY29yZV9ub2RlO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzo0OTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTUwLVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTg1PXN0YXRpYyB2b2lkIGNkeF9kZXRhY2hfdG9fcjUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtODYte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzo4NzpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTg4LVx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTk3PXN0YXRpYyBpbnQgY2R4X3JwbXNnX2NiKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtOTkte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxMDA6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNnJwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEwMS1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTExPXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMTIte1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxMTM6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMTQtXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTIxPXN0YXRpYyBpbnQgY2R4X3JwbXNnX3Byb2JlKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTIzLVx0c3RydWN0IHJwbXNnX2NoYW5uZWxfaW5mbyBjaGluZm8gPSB7MH07XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjEyNDpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyNS1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyNi1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTI3Olx0Y2R4X2MgPSAoc3RydWN0IGNkeF9jb250cm9sbGVyICopY2R4X3JwbXNnX2lkX3RhYmxlWzBdLmRyaXZlcl9kYXRhO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjgtXHRjZHhfbWNkaSA9IGNkeF9jLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz0xNDk9c3RhdGljIHZvaWQgY2R4X3JwbXNnX3JlbW92ZShzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldilcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUwLXtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTUxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYyA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZycGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNTItXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpID0gY2R4X2MtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTE2OT1pbnQgY2R4X3NldHVwX3JwbXNnKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3MC17XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjE3MTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3Mi1cdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNEWCBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGhlcmUuIENEWC4uLiByaWdodC4gQ29tcG9zYWJsZSBETUEgc3Vic3lzdGVtIGJ1cy4gVGhhdCByaW5ncyBhIGJlbGwg4oCTIGRlZmluaXRlbHkgaW4gdGhlIEFNRC9YaWxpbnggRlBHQS9Tb0MgZWNvc3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIHRoYXQgY3J1Y2lhbCBsaW5rIGJldHdlZW4gVmVyc2FsIEFDQVAvRlBHQSBkZXZpY2VzIGFuZCB0aGUgUjUgY29yZSwgcmVseWluZyBvbiBtZWNoYW5pc21zIGxpa2UgcnBtc2cvcmVtb3RlcHJvYy4gSSYjMzk7bSB0aGlua2luZyBvZiBjb21tdW5pY2F0aW9uIHZpYSBwbGF0Zm9ybSBkZXZpY2VzIGxpa2UgYHhsbngsdmVyc2FsLW5ldC1jZHhgIG9yIHJlbGF0ZWQgZGV2aWNlcy4KClRpbWUgdG8gY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBub3cuIEkmIzM5O2xsIHN0YXJ0IHdpdGggdGhvc2UgYEtjb25maWdgIGZpbGVzIOKAkyBgZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnYCBhbmQgYGRyaXZlcnMvY2R4L0tjb25maWdgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGEgY2xlYXJlciBwaWN0dXJlIG9mIGV4YWN0bHkgd2hhdCBjb21wb25lbnRzIGFyZSBpbnZvbHZlZCBhbmQgaG93IHRoaXMgc3lzdGVtIGlzIGFyY2hpdGVjdGVkLiBUaGF0IGlzIHdoZXJlIHRoZSBrZXkgbGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIENEWCBidXMgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBDRFhfQlVTXG4gICA5Olx0XHRib29sIFwmIzM0O0NEWCBCdXMgZHJpdmVyXCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiBBUk02NCB8fCBDT01QSUxFX1RFU1RcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgRHJpdmVyIHRvIGVuYWJsZSBDb21wb3NhYmxlIERNQSBUcmFuc2ZlcihDRFgpIEJ1cy4gQ0RYIGJ1c1xuICAxMzpcdFx0ICBleHBvc2VzIEZhYnJpYyBkZXZpY2VzIHdoaWNoIHVzZXMgY29tcG9zYWJsZSBETUEgSVAgdG8gdGhlXG4gIDE0Olx0XHQgIEFQVS4gQ0RYIGJ1cyBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3Igc2Nhbm5pbmcgYW5kIHByb2JpbmdcbiAgMTU6XHRcdCAgb2YgQ0RYIGRldmljZXMuIENEWCBkZXZpY2VzIGFyZSBtZW1vcnkgbWFwcGVkIG9uIHN5c3RlbSBidXNcbiAgMTY6XHRcdCAgZm9yIGVtYmVkZGVkIENQVXMuIENEWCBidXMgdXNlcyBDRFggY29udHJvbGxlciBhbmQgZmlybXdhcmVcbiAgMTc6XHRcdCAgdG8gc2NhbiB0aGVzZSBDRFggZGV2aWNlcy5cbiAgMTg6XHRcbiAgMTk6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzE0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIENEWF9CVVMgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYENEWF9CVVNgIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXMgdGhhdCBgZGVwZW5kcyBvbiBPRiAmYW1wOyZhbXA7IEFSTTY0IHx8IENPTVBJTEVfVEVTVGAgZGlyZWN0aXZlLiBUaGF0JiMzOTtzIGNydWNpYWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXQgcmVxdWlyaW5nIGVpdGhlciB0aGUgcHJlc2VuY2Ugb2YgdGhlIERldmljZSBUcmVlLCBiZWluZyBvbiBhbiBBUk02NCBhcmNoaXRlY3R1cmUsIG9yIHRoZSBgQ09NUElMRV9URVNUYCBvcHRpb24gYmVpbmcgYWN0aXZlLiBFYWNoIG9mIHRoZXNlIGNvbmRpdGlvbnMgY2hhbmdlcyB0aGUgY29udGV4dC4gCgpUaGVuLCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBgQ0RYX0JVU2AsIEkgc2hvdWxkIHJlYWxseSBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2AuIEl0IGlzIGxpa2VseSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFybHkgbGFpZCBvdXQgdGhlcmUsIHdoaWNoIEkgY2FuIHVzZSB0byBpbmZlciB0aGUgYmlnZ2VyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgQ0RYIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGlmIENEWF9CVVNcbiAgIDk6XHRcbiAgMTA6XHRjb25maWcgQ0RYX0NPTlRST0xMRVJcbiAgMTE6XHRcdHRyaXN0YXRlIFwmIzM0O0NEWCBidXMgY29udHJvbGxlclwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBIQVNfRE1BXG4gIDEzOlx0XHRzZWxlY3QgUkVNT1RFUFJPQ1xuICAxNDpcdFx0c2VsZWN0IFJQTVNHXG4gIDE1Olx0XHRoZWxwXG4gIDE2Olx0XHQgIENEWCBjb250cm9sbGVyIGRyaXZlcyB0aGUgQ0RYIGJ1cy4gSXQgaW50ZXJhY3RzIHdpdGhcbiAgMTc6XHRcdCAgZmlybXdhcmUgdG8gZ2V0IHRoZSBoYXJkd2FyZSBkZXZpY2VzIGFuZCByZWdpc3RlcnMgd2l0aFxuICAxODpcdFx0ICB0aGUgQ0RYIGJ1cy4gU2F5IFkgdG8gZW5hYmxlIHRoZSBDRFggaGFyZHdhcmUgZHJpdmVyLlxuICAxOTpcdFxuICAyMDpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuICAyMTpcdFxuICAyMjpcdGVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODA4CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ0RYIERldmljZSBJbnRlZ3JhdGlvbioqCgpPa2F5LCBzbyB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBkZWZpbml0ZWx5IGBhbWQ2NGAsIG9yIHg4Nl82NCwgd2hpY2ggaXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGlzIGBDRFhfQlVTYCBkZXBlbmRlbmN5LiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHRpZWQgdG8gYE9GICZhbXA7JmFtcDsgQVJNNjQgfHwgQ09NUElMRV9URVNUYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gYSBDRFggZGV2aWNlICpldmVyKiByZWFsaXN0aWNhbGx5IGJlIHJlZ2lzdGVyZWQgb3IgZXZlbiBjcmVhdGVkIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9uIGBhbWQ2NGAsIG9yIGFueSBjb21tb24gVk0sIGV2ZW4gaWYgYENPTkZJR19DT01QSUxFX1RFU1RgIGlzIGVuYWJsZWQ/IFRoYXQmIzM5O3MgYSBrZXkgcXVlc3Rpb24gaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByYWN0aWNhbGl0aWVzLgoKTXkgbWFpbiBwb2ludCBvZiBjb25mdXNpb24gc3RlbXMgZnJvbSBub3Qga25vd2luZyAqaG93KiBhIENEWCBkZXZpY2UgaXMgY3JlYXRlZCB0byBiZWdpbiB3aXRoLiBXaGF0JiMzOTtzIHRoZSB0cmlnZ2VyaW5nIG1lY2hhbmlzbT8gTGV0IG1lIGRyaWxsIGRvd24gYW5kIGV4YW1pbmUgdGhlIGBjZHhfZGV2aWNlX2FkZGAgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgc2l0ZXMgYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSB3YXlzIGRldmljZXMgYXJlIGFjdHVhbGx5IGFkZGVkIHRvIHRoZSBDRFggYnVzLiBUaGF0IHdpbGwgaWxsdW1pbmF0ZSB0aGUgd2hvbGUgcHJvY2Vzcy4gSSYjMzk7bGwgZm9jdXMgb24gYGNkeF9kZXZpY2VfYWRkYCBhbmQgZXZlcnkgc2luZ2xlIGNhbGxlciBvZiB0aGF0IGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHdoZXJlIEkgbmVlZCB0byBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2RldmljZV9hZGQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY2R4LmM9NzI3PXN0YXRpYyBpbnQgY2R4X2NyZWF0ZV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy03NTUtXG5kcml2ZXJzL2NkeC9jZHguYzo3NTY6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcylcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtODQxLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjg0MjpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXCYjMzQ7Q0RYX0JVU19DT05UUk9MTEVSXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cbi0tXG5kcml2ZXJzL2NkeC9jZHguaD02Mj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5oLTY0LS8qKlxuZHJpdmVycy9jZHgvY2R4Lmg6NjU6ICogY2R4X2RldmljZV9hZGQgLSBBZGQgYSBDRFggZGV2aWNlLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguaC02Ni0gKlx0XHRvbiB0aGUgQ0RYIGJ1cyBhcyBwZXIgdGhlIGRldmljZSBwYXJhbWV0ZXJzIHByb3ZpZGVkXG4tLVxuZHJpdmVycy9jZHgvY2R4LmgtNzItICovXG5kcml2ZXJzL2NkeC9jZHguaDo3MzppbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKTtcbmRyaXZlcnMvY2R4L2NkeC5oLTc0LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz05Mz1zdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXG4tLVxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0MS1cdFx0XHQvKiBBZGQgdGhlIGRldmljZSB0byB0aGUgY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjE0MjpcdFx0XHRyZXQgPSBjZHhfZGV2aWNlX2FkZChcdTAwMjZkZXZfcGFyYW1zKTtcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDMtXHRcdFx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODcxMAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBjZHhfZGV2aWNlX2FkZCoqCgpPa2F5LCBzbyBgY2R4X2RldmljZV9hZGRgIOKAkyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCYjMzk7cyAqb25seSogY2FsbGVkIGJ5IGBjZHhfc2Nhbl9kZXZpY2VzYCwgYW5kIHRoYXQmIzM5O3MgZm91bmQgd2l0aGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgcmlnaHQ/IFRvIHJlYWxseSBncmFzcCB3aGF0JiMzOTtzIGhhcHBlbmluZywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgY2R4X2NvbnRyb2xsZXJgIGlzIHByb2JlZCBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoYXQgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IGZvciB3aGVuIGFuZCB3aHkgYGNkeF9kZXZpY2VfYWRkYCBnZXRzIGNhbGxlZC4gU28sIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZGl2aW5nIGludG8gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AgYW5kIHNlZSB3aGF0IHRoZSBwcm9iaW5nIHNldHVwIGxvb2tzIGxpa2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYwOlx0XHQuc2Nhblx0XHQ9IGNkeF9zY2FuX2RldmljZXMsXG4gMTYxOlx0XHQuZGV2X2NvbmZpZ3VyZVx0PSBjZHhfY29uZmlndXJlX2RldmljZSxcbiAxNjI6XHR9O1xuIDE2MzpcdFxuIDE2NDpcdHN0YXRpYyBpbnQgeGxueF9jZHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiAxNjU6XHR7XG4gMTY2Olx0XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcbiAxNjc6XHRcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XG4gMTY4Olx0XHRpbnQgcmV0O1xuIDE2OTpcdFxuIDE3MDpcdFx0Y2R4X21jZGkgPSBremFsbG9jX29iaigqY2R4X21jZGkpO1xuIDE3MTpcdFx0aWYgKCFjZHhfbWNkaSlcbiAxNzI6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTczOlx0XG4gMTc0Olx0XHQvKiBTdG9yZSB0aGUgTUNESSBvcHMgKi9cbiAxNzU6XHRcdGNkeF9tY2RpLVx1MDAzZW1jZGlfb3BzID0gXHUwMDI2bWNkaV9vcHM7XG4gMTc2Olx0XHQvKiBNQ0RJIEZXOiBJbml0aWFsaXplIHRoZSBGVyBwYXRoICovXG4gMTc3Olx0XHRyZXQgPSBjZHhfbWNkaV9pbml0KGNkeF9tY2RpKTtcbiAxNzg6XHRcdGlmIChyZXQpIHtcbiAxNzk6XHRcdFx0ZGV2X2Vycl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcmV0LCBcJiMzNDtNQ0RJIEluaXRpYWxpemF0aW9uIGZhaWxlZFxcblwmIzM0Oyk7XG4gMTgwOlx0XHRcdGdvdG8gbWNkaV9pbml0X2ZhaWw7XG4gMTgxOlx0XHR9XG4gMTgyOlx0XG4gMTgzOlx0XHRjZHggPSBremFsbG9jX29iaigqY2R4KTtcbiAxODQ6XHRcdGlmICghY2R4KSB7XG4gMTg1Olx0XHRcdHJldCA9IC1FTk9NRU07XG4gMTg2Olx0XHRcdGdvdG8gY2R4X2FsbG9jX2ZhaWw7XG4gMTg3Olx0XHR9XG4gMTg4Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBjZHgpO1xuIDE4OTpcdFxuIDE5MDpcdFx0Y2R4LVx1MDAzZWRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuIDE5MTpcdFx0Y2R4LVx1MDAzZXByaXYgPSBjZHhfbWNkaTtcbiAxOTI6XHRcdGNkeC1cdTAwM2VvcHMgPSBcdTAwMjZjZHhfb3BzO1xuIDE5MzpcdFxuIDE5NDpcdFx0LyogQ3JlYXRlIE1TSSBkb21haW4gKi9cbiAxOTU6XHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpKVxuIDE5NjpcdFx0XHRjZHgtXHUwMDNlbXNpX2RvbWFpbiA9IGNkeF9tc2lfZG9tYWluX2luaXQoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDE5NzpcdFx0aWYgKCFjZHgtXHUwMDNlbXNpX2RvbWFpbikge1xuIDE5ODpcdFx0XHRyZXQgPSBkZXZfZXJyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCAtRU5PREVWLCBcJiMzNDtjZHhfbXNpX2RvbWFpbl9pbml0KCkgZmFpbGVkXCYjMzQ7KTtcbiAxOTk6XHRcdFx0Z290byBjZHhfbXNpX2ZhaWw7XG4gMjAwOlx0XHR9XG4gMjAxOlx0XG4gMjAyOlx0XHRyZXQgPSBjZHhfc2V0dXBfcnBtc2cocGRldik7XG4gMjAzOlx0XHRpZiAocmV0KSB7XG4gMjA0Olx0XHRcdGRldl9lcnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJldCwgXCYjMzQ7RmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBSUE1zZyB0cmFuc3BvcnRcXG5cJiMzNDspO1xuIDIwNTpcdFx0XHRnb3RvIGNkeF9ycG1zZ19mYWlsO1xuIDIwNjpcdFx0fVxuIDIwNzpcdFxuIDIwODpcdFx0cmV0dXJuIDA7XG4gMjA5Olx0XG4gMjEwOlx0Y2R4X3JwbXNnX2ZhaWw6XG4gMjExOlx0XHRpcnFfZG9tYWluX3JlbW92ZShjZHgtXHUwMDNlbXNpX2RvbWFpbik7XG4gMjEyOlx0Y2R4X21zaV9mYWlsOlxuIDIxMzpcdFx0a2ZyZWUoY2R4KTtcbiAyMTQ6XHRjZHhfYWxsb2NfZmFpbDpcbiAyMTU6XHRcdGNkeF9tY2RpX2ZpbmlzaChjZHhfbWNkaSk7XG4gMjE2Olx0bWNkaV9pbml0X2ZhaWw6XG4gMjE3Olx0XHRrZnJlZShjZHhfbWNkaSk7XG4gMjE4Olx0XG4gMjE5Olx0XHRyZXR1cm4gcmV0O1xuIDIyMDpcdH1cbiAyMjE6XHRcbiAyMjI6XHRzdGF0aWMgdm9pZCB4bG54X2NkeF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiAyMjM6XHR7XG4gMjI0Olx0XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuIDIyNTpcdFx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaSA9IGNkeC1cdTAwM2Vwcml2O1xuIDIyNjpcdFxuIDIyNzpcdFx0Y2R4X2Rlc3Ryb3lfcnBtc2cocGRldik7XG4gMjI4Olx0XG4gMjI5Olx0XHRpcnFfZG9tYWluX3JlbW92ZShjZHgtXHUwMDNlbXNpX2RvbWFpbik7XG4gMjMwOlx0XHRrZnJlZShjZHgpO1xuIDIzMTpcdFxuIDIzMjpcdFx0Y2R4X21jZGlfZmluaXNoKGNkeF9tY2RpKTtcbiAyMzM6XHRcdGtmcmVlKGNkeF9tY2RpKTtcbiAyMzQ6XHR9XG4gMjM1Olx0XG4gMjM2Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2R4X21hdGNoX3RhYmxlW10gPSB7XG4gMjM3Olx0XHR7LmNvbXBhdGlibGUgPSBcJiMzNDt4bG54LHZlcnNhbC1uZXQtY2R4XCYjMzQ7LH0sXG4gMjM4Olx0XHR7IH0sXG4gMjM5Olx0fTtcbiAyNDA6XHRcbiAyNDE6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBjZHhfbWF0Y2hfdGFibGUpO1xuIDI0MjpcdFxuIDI0MzpcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkeF9wZHJpdmVyID0ge1xuIDI0NDpcdFx0LmRyaXZlciA9IHtcbiAyNDU6XHRcdFx0ICAgLm5hbWUgPSBcJiMzNDtjZHgtY29udHJvbGxlclwmIzM0OyxcbiAyNDY6XHRcdFx0ICAgLm9mX21hdGNoX3RhYmxlID0gY2R4X21hdGNoX3RhYmxlLFxuIDI0NzpcdFx0XHQgICB9LFxuIDI0ODpcdFx0LnByb2JlID0geGxueF9jZHhfcHJvYmUsXG4gMjQ5Olx0XHQucmVtb3ZlID0geGxueF9jZHhfcmVtb3ZlLFxuIDI1MDpcdH07XG4gMjUxOlx0XG4gMjUyOlx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjZHhfcGRyaXZlcik7XG4gMjUzOlx0XG4gMjU0Olx0TU9EVUxFX0FVVEhPUihcJiMzNDtBTUQgSW5jLlwmIzM0Oyk7XG4gMjU1Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0NEWCBjb250cm9sbGVyIGZvciBBTUQgZGV2aWNlc1wmIzM0Oyk7XG4gMjU2Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbiAyNTc6XHRNT0RVTEVfSU1QT1JUX05TKFwmIzM0O0NEWF9CVVNfQ09OVFJPTExFUlwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNDg5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipWRklPIENEWCBEcml2ZXIgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCB0aGUgVkZJTyBkcml2ZXIgZm9yIENEWCBidXMgZGV2aWNlcyDigJMgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFRoZSBmaWxlIGluIHF1ZXN0aW9uIGlzIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZy4gYG1haW4uY2AgaXMgdXN1YWxseSB0aGUgY29yZSwgc28gaXQmIzM5O2xsIHByb2JhYmx5IGNvbnRhaW4gdGhlIGVzc2VudGlhbCBpbml0aWFsaXphdGlvbiwgZGV2aWNlIGhhbmRsaW5nLCBhbmQgZW50cnkgcG9pbnRzIGZvciB0aGlzIFZGSU8gZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgQ0RYIGJ1cyBzcGVjaWZpY2FsbHksIGFuZCBob3cgaXQmIzM5O3MgZXhwb3NpbmcgdGhhdCB0byB0aGUgVkZJTyBmcmFtZXdvcmsuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBob3cgaXQgaGFuZGxlcyBkZXZpY2UgZGlzY292ZXJ5LCBob3cgaXQgc2V0cyB1cCBETUEgbWFwcGluZ3MsIGFuZCBob3cgaXQgaGFuZGxlcyBpbnRlcnJ1cHRzLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIGhvdyB0aGlzIGRyaXZlciBmYWNpbGl0YXRlcyB2aXJ0dWFsaXplZCBhY2Nlc3MgdG8gQ0RYIGRldmljZXMuIExldCYjMzk7cyBnZXQgcmVhZGluZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0LypcbiAgIDM6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMjItMjAyMywgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLlxuICAgNDpcdCAqL1xuICAgNTpcdFxuICAgNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZmaW8uaFx1MDAzZVxuICAgNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcdTAwM2VcbiAgIDg6XHRcbiAgIDk6XHQjaW5jbHVkZSBcJiMzNDtwcml2YXRlLmhcJiMzNDtcbiAgMTA6XHRcbiAgMTE6XHRzdGF0aWMgaW50IHZmaW9fY2R4X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxuICAxMjpcdHtcbiAgMTM6XHRcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxuICAxNDpcdFx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcbiAgMTU6XHRcbiAgMTY6XHRcdG11dGV4X2luaXQoXHUwMDI2dmRldi1cdTAwM2VjZHhfaXJxc19sb2NrKTtcbiAgMTc6XHRcdHJldHVybiAwO1xuICAxODpcdH1cbiAgMTk6XHRcbiAgMjA6XHRzdGF0aWMgdm9pZCB2ZmlvX2NkeF9yZWxlYXNlX2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbiAgMjE6XHR7XG4gIDIyOlx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbiAgMjM6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG4gIDI0Olx0XG4gIDI1Olx0XHRtdXRleF9kZXN0cm95KFx1MDAyNnZkZXYtXHUwMDNlY2R4X2lycXNfbG9jayk7XG4gIDI2Olx0fVxuICAyNzpcdFxuICAyODpcdHN0YXRpYyBpbnQgdmZpb19jZHhfb3Blbl9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gIDI5Olx0e1xuICAzMDpcdFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG4gIDMxOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xuICAzMjpcdFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGNvcmVfdmRldi1cdTAwM2VkZXYpO1xuICAzMzpcdFx0aW50IGNvdW50ID0gY2R4X2Rldi1cdTAwM2VyZXNfY291bnQ7XG4gIDM0Olx0XHRpbnQgaSwgcmV0O1xuICAzNTpcdFxuICAzNjpcdFx0dmRldi1cdTAwM2VyZWdpb25zID0ga3phbGxvY19vYmpzKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24sIGNvdW50LFxuICAzNzpcdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuICAzODpcdFx0aWYgKCF2ZGV2LVx1MDAzZXJlZ2lvbnMpXG4gIDM5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA0MDpcdFxuICA0MTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY291bnQ7IGkmIzQzOyYjNDM7KSB7XG4gIDQyOlx0XHRcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VyZXNbaV07XG4gIDQzOlx0XG4gIDQ0Olx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5hZGRyID0gcmVzLVx1MDAzZXN0YXJ0O1xuICA0NTpcdFx0XHR2ZGV2LVx1MDAzZXJlZ2lvbnNbaV0uc2l6ZSA9IHJlc291cmNlX3NpemUocmVzKTtcbiAgNDY6XHRcdFx0dmRldi1cdTAwM2VyZWdpb25zW2ldLnR5cGUgPSByZXMtXHUwMDNlZmxhZ3M7XG4gIDQ3Olx0XHRcdC8qXG4gIDQ4Olx0XHRcdCAqIE9ubHkgcmVnaW9ucyBhZGRyZXNzZWQgd2l0aCBQQUdFIGdyYW51bGFyaXR5IG1heSBiZVxuICA0OTpcdFx0XHQgKiBNTUFQJiMzOTtlZCBzZWN1cmVseS5cbiAgNTA6XHRcdFx0ICovXG4gIDUxOlx0XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5hZGRyIFx1MDAyNiB+UEFHRV9NQVNLKSBcdTAwMjZcdTAwMjZcbiAgNTI6XHRcdFx0ICAgICEodmRldi1cdTAwM2VyZWdpb25zW2ldLnNpemUgXHUwMDI2IH5QQUdFX01BU0spKVxuICA1MzpcdFx0XHRcdHZkZXYtXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PVxuICA1NDpcdFx0XHRcdFx0XHRWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUDtcbiAgNTU6XHRcdFx0dmRldi1cdTAwM2VyZWdpb25zW2ldLmZsYWdzIHw9IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEO1xuICA1NjpcdFx0XHRpZiAoIShjZHhfZGV2LVx1MDAzZXJlc1tpXS5mbGFncyBcdTAwMjYgSU9SRVNPVVJDRV9SRUFET05MWSkpXG4gIDU3Olx0XHRcdFx0dmRldi1cdTAwM2VyZWdpb25zW2ldLmZsYWdzIHw9IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURTtcbiAgNTg6XHRcdH1cbiAgNTk6XHRcdHJldCA9IGNkeF9kZXZfcmVzZXQoY29yZV92ZGV2LVx1MDAzZWRldik7XG4gIDYwOlx0XHRpZiAocmV0KSB7XG4gIDYxOlx0XHRcdGtmcmVlKHZkZXYtXHUwMDNlcmVnaW9ucyk7XG4gIDYyOlx0XHRcdHZkZXYtXHUwMDNlcmVnaW9ucyA9IE5VTEw7XG4gIDYzOlx0XHRcdHJldHVybiByZXQ7XG4gIDY0Olx0XHR9XG4gIDY1Olx0XHRyZXQgPSBjZHhfY2xlYXJfbWFzdGVyKGNkeF9kZXYpO1xuICA2NjpcdFx0aWYgKHJldClcbiAgNjc6XHRcdFx0dmRldi1cdTAwM2VmbGFncyBcdTAwMjY9IH5CTUVfU1VQUE9SVDtcbiAgNjg6XHRcdGVsc2VcbiAgNjk6XHRcdFx0dmRldi1cdTAwM2VmbGFncyB8PSBCTUVfU1VQUE9SVDtcbiAgNzA6XHRcbiAgNzE6XHRcdHJldHVybiAwO1xuICA3MjpcdH1cbiAgNzM6XHRcbiAgNzQ6XHRzdGF0aWMgdm9pZCB2ZmlvX2NkeF9jbG9zZV9kZXZpY2Uoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gIDc1Olx0e1xuICA3NjpcdFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XG4gIDc3Olx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xuICA3ODpcdFxuICA3OTpcdFx0a2ZyZWUodmRldi1cdTAwM2VyZWdpb25zKTtcbiAgODA6XHRcdGNkeF9kZXZfcmVzZXQoY29yZV92ZGV2LVx1MDAzZWRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTg5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgZm9ybWF0dGVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRpZ2dpbmcgaW50byB0aGUgVkZJTyBDRFggQ29kZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIGhlYWQgaW50byB0aGUgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBDRFggKENvbnRhaW5lciBEaXJlY3QgZVhjaGFuZ2UpIGltcGxlbWVudGF0aW9uIHdpdGhpbiBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgbGlrZWx5IHJlc2lkZXMuIE15IGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBmaWxlIHdpbGwgY29udGFpbiB0aGUgZnVuZGFtZW50YWwgbG9naWMgZm9yIGhvdyB0aGUgQ0RYIGRldmljZSBpcyBpbml0aWFsaXplZCwgaG93IGl0IGhhbmRsZXMgcmVxdWVzdHMsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgYW5kIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgVkZJTyBmcmFtZXdvcmsuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIG1lbW9yeSBtYXBwaW5nIGZ1bmN0aW9ucywgYW5kIHRoZSBjb3JlIHJlcXVlc3QgZGlzcGF0Y2ggbG9vcC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBDRFggZGV2aWNlLCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gVW5kZXJzdGFuZGluZyB0aGlzIGBtYWluLmNgIGZpbGUgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgZmlndXJpbmcgb3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUgQ0RYIGltcGxlbWVudGF0aW9uIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIFZGSU8gYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vY2R4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjQwOlx0XHRcdHJldHVybiAtRU5PVFRZO1xuIDI0MTpcdFx0fVxuIDI0MjpcdH1cbiAyNDM6XHRcbiAyNDQ6XHRzdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcbiAyNDU6XHRcdFx0XHQgICAgICBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbiAyNDY6XHR7XG4gMjQ3Olx0XHR1NjQgc2l6ZSA9IHZtYS1cdTAwM2V2bV9lbmQgLSB2bWEtXHUwMDNldm1fc3RhcnQ7XG4gMjQ4Olx0XHR1NjQgcGdvZmYsIGJhc2U7XG4gMjQ5Olx0XG4gMjUwOlx0XHRwZ29mZiA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwMjZcbiAyNTE6XHRcdFx0KCgxVSBcdTAwM2NcdTAwM2MgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xuIDI1MjpcdFx0YmFzZSA9IHBnb2ZmIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuIDI1MzpcdFxuIDI1NDpcdFx0aWYgKGJhc2UgJiM0Mzsgc2l6ZSBcdTAwM2UgcmVnaW9uLnNpemUpXG4gMjU1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI1NjpcdFxuIDI1NzpcdFx0dm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCk7XG4gMjU4Olx0XG4gMjU5Olx0XHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVx1MDAzZXZtX3N0YXJ0LFxuIDI2MDpcdFx0XHRcdFx0ICAocmVnaW9uLmFkZHIgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQpICYjNDM7IHBnb2ZmLFxuIDI2MTpcdFx0XHRcdFx0ICBzaXplLCB2bWEtXHUwMDNldm1fcGFnZV9wcm90KTtcbiAyNjI6XHR9XG4gMjYzOlx0XG4gMjY0Olx0c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuIDI2NTpcdFx0XHRcdCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbiAyNjY6XHR7XG4gMjY3Olx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cbiAyNjg6XHRcdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XG4gMjY5Olx0XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoY29yZV92ZGV2LVx1MDAzZWRldik7XG4gMjcwOlx0XHR1bnNpZ25lZCBpbnQgaW5kZXg7XG4gMjcxOlx0XG4gMjcyOlx0XHRpbmRleCA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwM2VcdTAwM2UgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xuIDI3MzpcdFxuIDI3NDpcdFx0aWYgKGluZGV4IFx1MDAzZT0gY2R4X2Rldi1cdTAwM2VyZXNfY291bnQpXG4gMjc1Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDI3NjpcdFxuIDI3NzpcdFx0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX01NQVApKVxuIDI3ODpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAyNzk6XHRcbiAyODA6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19SRUFEKSBcdTAwMjZcdTAwMjZcbiAyODE6XHRcdCAgICAodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9SRUFEKSlcbiAyODI6XHRcdFx0cmV0dXJuIC1FUEVSTTtcbiAyODM6XHRcbiAyODQ6XHRcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkgXHUwMDI2XHUwMDI2XG4gMjg1Olx0XHQgICAgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIDI4NjpcdFx0XHRyZXR1cm4gLUVQRVJNO1xuIDI4NzpcdFxuIDI4ODpcdFx0cmV0dXJuIHZmaW9fY2R4X21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIDI4OTpcdH1cbiAyOTA6XHRcbiAyOTE6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XG4gMjkyOlx0XHQubmFtZVx0XHQ9IFwmIzM0O3ZmaW8tY2R4XCYjMzQ7LFxuIDI5MzpcdFx0LmluaXRcdFx0PSB2ZmlvX2NkeF9pbml0X2RldixcbiAyOTQ6XHRcdC5yZWxlYXNlXHQ9IHZmaW9fY2R4X3JlbGVhc2VfZGV2LFxuIDI5NTpcdFx0Lm9wZW5fZGV2aWNlXHQ9IHZmaW9fY2R4X29wZW5fZGV2aWNlLFxuIDI5NjpcdFx0LmNsb3NlX2RldmljZVx0PSB2ZmlvX2NkeF9jbG9zZV9kZXZpY2UsXG4gMjk3Olx0XHQuaW9jdGxcdFx0PSB2ZmlvX2NkeF9pb2N0bCxcbiAyOTg6XHRcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fY2R4X2lvY3RsX2dldF9yZWdpb25faW5mbyxcbiAyOTk6XHRcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fY2R4X2lvY3RsX2ZlYXR1cmUsXG4gMzAwOlx0XHQubW1hcFx0XHQ9IHZmaW9fY2R4X21tYXAsXG4gMzAxOlx0XHQuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxuIDMwMjpcdFx0LnVuYmluZF9pb21tdWZkXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF91bmJpbmQsXG4gMzAzOlx0XHQuYXR0YWNoX2lvYXNcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2F0dGFjaF9pb2FzLFxuIDMwNDpcdH07XG4gMzA1Olx0XG4gMzA2Olx0c3RhdGljIGludCB2ZmlvX2NkeF9wcm9iZShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcbiAzMDc6XHR7XG4gMzA4Olx0XHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2O1xuIDMwOTpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXY7XG4gMzEwOlx0XHRpbnQgcmV0O1xuIDMxMTpcdFxuIDMxMjpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fY2R4X2RldmljZSwgdmRldiwgZGV2LFxuIDMxMzpcdFx0XHRcdFx0IFx1MDAyNnZmaW9fY2R4X29wcyk7XG4gMzE0Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuIDMxNTpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiAzMTY6XHRcbiAzMTc6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gMzE4Olx0XHRpZiAocmV0KVxuIDMxOTpcdFx0XHRnb3RvIG91dF91bmluaXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNjkxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgdmZpb19jZHhgIERyaXZlcioqCgpBbHJpZ2h0LCBzbyBgdmZpb19jZHhgIGlzIHRyaWdnZXJlZCwgYXMgZXhwZWN0ZWQsIHdoZW4gYSBgY2R4X2RldmljZWAgc3RydWN0dXJlIGFsaWducyB3aXRoIHRoZSBgdmZpb19jZHhfZHJpdmVyYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgdGhhdCYjMzk7cyB0aGUgc2V0dXAsIGJ1dCB3aGF0JiMzOTtzICphY3R1YWxseSogaGFwcGVuaW5nIHdpdGggdGhpcyBDRFggdGhpbmc/JiMzNDsuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIGxhbmRzY2FwZS4KCkZpcnN0LCBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBzb3J0IG9mIGVtdWxhdGVkIG9yIG1vY2tlZCBpbXBsZW1lbnRhdGlvbnMgb2YgQ0RYIGJ1c2VzIG9yIGRldmljZXMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgaXRzZWxmLCBhbmQgb2YgY291cnNlLCBRRU1VIGlzIGEgbG9naWNhbCBwbGFjZSB0byBsb29rLiBJJiMzOTttIHRoaW5raW5nLCBhcmUgd2UgdGFsa2luZyBhYm91dCBhIHJlYWwsIHBoeXNpY2FsIGRldmljZSwgb3IgaXMgdGhpcyBzb21ldGhpbmcgdmlydHVhbGl6ZWQsIG9yIHBlcmhhcHMgYSB0ZXN0IGhhcm5lc3M/IEZpbmRpbmcgbW9jayBpbXBsZW1lbnRhdGlvbnMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGludGVudC4KClRoZW4sIEkmIzM5O2xsIHBlcmZvcm0gYSBicm9hZGVyIHNlYXJjaCwgYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZSBrZXJuZWwgc291cmNlLiBJJiMzOTttIGdvaW5nIHRvIHRocm93IGEgJiMzNDtjZHgmIzM0OyBzZWFyY2ggc3RyaW5nIGFjcm9zcyB0aGUgd2hvbGUgY29kZWJhc2UuIEkgd2FudCB0byBpZGVudGlmeSBhbnkgb3RoZXIgY29kZSB0aGF0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyBlaXRoZXIgYSBDRFggY29udHJvbGxlciBvciBhIENEWCBkZXZpY2UuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3Vic3lzdGVtIGFyY2hpdGVjdHVyZSwgYW5kIGhvdyB0aGUgYHZmaW9fY2R4YCBkcml2ZXIgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBGaW5kaW5nIHRoZSByZWdpc3RyYXRpb24gcG9pbnRzIHdpbGwgbGV0IG1lIHNlZSB3aGVyZSB0aGlzIENEWCB0ZWNobm9sb2d5IG9yaWdpbmF0ZXMgZnJvbSB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGhhbmRsZSBvbiBob3cgaXQmIzM5O3MgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4X2RyaXZlcl9yZWdpc3RlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2NkeC9jZHguYz02Mjg9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjQ2LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjY0NzpFWFBPUlRfU1lNQk9MX0dQTChfX2NkeF9kcml2ZXJfcmVnaXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjQ4LVxuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM0OD1zdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM1Ny1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM1ODptb2R1bGVfZHJpdmVyKHZmaW9fY2R4X2RyaXZlciwgY2R4X2RyaXZlcl9yZWdpc3RlciwgY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM1OS1cbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MTk4PXN0cnVjdCBjZHhfZHJpdmVyIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjEyLS8qIE1hY3JvIHRvIGF2b2lkIGluY2x1ZGUgY2hhaW5pbmcgdG8gZ2V0IFRISVNfTU9EVUxFICovXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjEzOiNkZWZpbmUgY2R4X2RyaXZlcl9yZWdpc3RlcihkcnYpIFxcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MjE0Olx0X19jZHhfZHJpdmVyX3JlZ2lzdGVyKGRydiwgVEhJU19NT0RVTEUpXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjE1LVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxNi0vKipcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTc6ICogX19jZHhfZHJpdmVyX3JlZ2lzdGVyIC0gcmVnaXN0ZXJzIGEgQ0RYIGRldmljZSBkcml2ZXJcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTgtICogQGNkeF9kcml2ZXI6IENEWCBkcml2ZXIgdG8gcmVnaXN0ZXJcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjIyLSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIyMzppbnQgX19tdXN0X2NoZWNrIF9fY2R4X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcixcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjQtXHRcdFx0XHQgICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDcxNQoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuCgoqKkludmVzdGlnYXRpbmcgYGNkeF9kcml2ZXJgIFVzYWdlKioKCkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIGBjZHhfZHJpdmVyYCBzdHJ1Y3R1cmUgYW5kIGBjZHhfZHJpdmVyX3JlZ2lzdGVyYCBmdW5jdGlvbiBhcmUgYmVpbmcgdXRpbGl6ZWQgdGhyb3VnaG91dCB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgYWxsIHRoZSBvdGhlciBkcml2ZXJzIHRoYXQgYXJlIGVtcGxveWluZyB0aGVzZSBlbGVtZW50cy4gSSYjMzk7bGwgbmVlZCB0byBkbyBhIHRob3JvdWdoIGNvZGUgc2VhcmNoLiBUaGUgbW9zdCBkaXJlY3QgYXBwcm9hY2ggaXMgYSBncmVwIGZvciBpbnN0YW5jZXMgb2YgYHN0cnVjdCBjZHhfZHJpdmVyYCBhbmQgYGNkeF9kcml2ZXJgIChjYXNlLWluc2Vuc2l0aXZlIHBlcmhhcHMsIGJ1dCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBjYXNlIHNlbnNpdGl2ZSkgYWNyb3NzIHRoZSBlbnRpcmUga2VybmVsIHNvdXJjZSB0cmVlLiBUaGlzIHNob3VsZCByZXZlYWwgYWxsIHJlbGV2YW50IGxvY2F0aW9ucyB3aGVyZSB0aGVzZSBhcmUgZGVmaW5lZCwgcmVmZXJlbmNlZCwgb3IgdXNlZC4gVGhpcyBncmFudWxhciBhcHByb2FjaCBzaG91bGQgZ2l2ZSBtZSBhIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIHRoZSBleGlzdGluZyBlY29zeXN0ZW0gcmVseWluZyBvbiB0aGlzIGNvbnN0cnVjdC4gV2l0aCB0aGlzIGluZm8sIEkgY2FuIHRoZW4gZGV0ZXJtaW5lIHRoZSBiZXN0IHBhdGggZm9yd2FyZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IGNkeF9kcml2ZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jZHgvY2R4LmM9OTU9aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTk5LVx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWcgPSB7MH07XG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydjtcbmRyaXZlcnMvY2R4L2NkeC5jLTEwMS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MjYzPXN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjY1LVx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjY6XHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI2Ny1cdGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpmb3VuZF9pZCA9IE5VTEw7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzAyPXN0YXRpYyBpbnQgY2R4X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTMwMy17XG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMDUtXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYz0zMjg9c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMjkte1xuZHJpdmVycy9jZHgvY2R4LmM6MzMwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzMxLVx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzM3PXN0YXRpYyB2b2lkIGNkeF9zaHV0ZG93bihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xuZHJpdmVycy9jZHgvY2R4LmM6MzM5Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzQwLVx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9MzQ5PXN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzUwLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM1Mi1cdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTM3Mz1zdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzc0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Ni1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYz02Mjg9RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NjQ3PUVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xuLS1cbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTM0Nj1NT0RVTEVfREVWSUNFX1RBQkxFKGNkeCwgdmZpb19jZHhfdGFibGUpO1xuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQ3LVxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MzQ4OnN0YXRpYyBzdHJ1Y3QgY2R4X2RyaXZlciB2ZmlvX2NkeF9kcml2ZXIgPSB7XG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0zNDktXHQucHJvYmVcdFx0PSB2ZmlvX2NkeF9wcm9iZSxcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg9MTQzPXN0cnVjdCBjZHhfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTgxLS8qKlxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjE4MjogKiBzdHJ1Y3QgY2R4X2RyaXZlciAtIENEWCBkZXZpY2UgZHJpdmVyXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTgzLSAqIEBkcml2ZXI6IEdlbmVyaWMgZGV2aWNlIGRyaXZlclxuLS1cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOTctICovXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6MTk4OnN0cnVjdCBjZHhfZHJpdmVyIHtcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOTktXHRzdHJ1Y3QgZGV2aWNlX2RyaXZlciBkcml2ZXI7XG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwOS0jZGVmaW5lIHRvX2NkeF9kcml2ZXIoX2RydikgXFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTA6XHRjb250YWluZXJfb2ZfY29uc3QoX2Rydiwgc3RydWN0IGNkeF9kcml2ZXIsIGRyaXZlcilcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTEtXG4tLVxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIyMi0gKi9cbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMjM6aW50IF9fbXVzdF9jaGVjayBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIsXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjI0LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBtb2R1bGUgKm93bmVyKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjMwLSAqL1xuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIzMTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcik7XG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjMyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxNDoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjU1MQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWRklPLUNEWCBEcml2ZXIqKgoKT2theSwgaGVyZSYjMzk7cyBob3cgSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMuIE15IHN0YXJ0aW5nIHBvaW50IGlzIHRoZSBgdmZpb19jZHhfZHJpdmVyYCwgd2hpY2ggaXMgcmVnaXN0ZXJlZCB3aGVuIHRoZSBgdmZpby1jZHhgIG1vZHVsZSBsb2Fkcy4gTWFrZXMgcGVyZmVjdCBzZW5zZS4gSG93ZXZlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgcGF0aCB0byBob3cgYSBmdW5jdGlvbiBsaWtlIGB2ZmlvX2NkeF9tbWFwX21taW9gLCBvciBhbnkgb2YgdGhlIGB2ZmlvX2NkeF8qYCBmdW5jdGlvbnMsIGFjdHVhbGx5IGdldHMgKmNhbGxlZCouIFRoZSBjcml0aWNhbCBwYXRoIHNlZW1zIHRvIGJlIHRoYXQgYSBgY2R4X2RldmljZWAgaGFzIHRvIGV4aXN0IGFuZCBiZSBib3VuZCB0byBgdmZpby1jZHhgLiBUaGVuLCBhIHVzZXItc3BhY2UgcHJvY2VzcyBtdXN0IG9wZW4gdGhlIFZGSU8gZGV2aWNlIGFuZCBjYWxsIGBtbWFwKClgLiBUaGF0JiMzOTtzIHRoZSBleHBlY3RlZCB1c2FnZS4KCk5vdywgSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZXZlbiBjcmVhdGUgYSBgY2R4X2RldmljZWAgaW4gdGhlIGFic2VuY2Ugb2YgYWN0dWFsIGhhcmR3YXJlLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBzaG91bGQgYmUgcG9zc2libGUgZm9yIHRlc3RpbmcgYW5kIGVtdWxhdGlvbiBwdXJwb3Nlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9jZHgvY2R4LmNgIGZpbGUgdG8gc2VlIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBjcmVhdGVkLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gY2hlY2tpbmcgaWYgdGhlcmUmIzM5O3MgYW55IHN5c2ZzIGludGVyZmFjZSB0aGF0IGFsbG93cyB0aGUgY3JlYXRpb24gb3IgJiMzNDttb2NraW5nJiMzNDsgb2YgQ0RYIGRldmljZXMsIG9yIGlmIHRoZWlyIGNyZWF0aW9uIGlzIGVudGlyZWx5IGRlcGVuZGVudCBvbiBhIGBjZHhfY29udHJvbGxlcmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gaW4gYGRyaXZlcnMvY2R4L2NkeC5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2R4XyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvY2R4L2NkeC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2NjUgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvY2R4L2NkeC5jLTY3LSNpbmNsdWRlIFx1MDAzY2xpbnV4L2lkci5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYzo2ODojaW5jbHVkZSBcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXHUwMDNlXG5kcml2ZXJzL2NkeC9jZHguYy02OS0jaW5jbHVkZSBcdTAwM2NsaW51eC9pb21tdS5oXHUwMDNlXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xuZHJpdmVycy9jZHgvY2R4LmMtODAtLyogTG9jayB0byBwcm90ZWN0IGNvbnRyb2xsZXIgb3BzICovXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmMtODItLyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjgzOnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjZHhfZGVidWdmc19kaXI7XG5kcml2ZXJzL2NkeC9jZHguYy04NC1cbmRyaXZlcnMvY2R4L2NkeC5jPTg1PXN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeFwmIzM0OztcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxuZHJpdmVycy9jZHgvY2R4LmM6ODc6c3RhdGljIHZvaWQgY2R4X2Rlc3Ryb3lfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtODgtXG5kcml2ZXJzL2NkeC9jZHguYy04OS0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjkwOiAqIGNkeF9kZXZfcmVzZXQgLSBSZXNldCBhIENEWCBkZXZpY2VcbmRyaXZlcnMvY2R4L2NkeC5jLTkxLSAqIEBkZXY6IENEWCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy05NC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjk1OmludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjk3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnID0gezB9O1xuZHJpdmVycy9jZHgvY2R4LmM6MTAwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDEtXHRpbnQgcmV0O1xuZHJpdmVycy9jZHgvY2R4LmMtMTAyLVxuZHJpdmVycy9jZHgvY2R4LmM6MTAzOlx0Y2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDQtXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIGlzIGJlaW5nIHJlc2V0ICovXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZXNldF9wcmVwYXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MTA2Olx0XHRjZHhfZHJ2LVx1MDAzZXJlc2V0X3ByZXBhcmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXG5kcml2ZXJzL2NkeC9jZHguYy0xMDgtXHRkZXZfY29uZmlnLnR5cGUgPSBDRFhfREVWX1JFU0VUX0NPTkY7XG5kcml2ZXJzL2NkeC9jZHguYzoxMDk6XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoxMTA6XHRcdFx0XHQgICAgICBjZHhfZGV2LVx1MDAzZWRldl9udW0sIFx1MDAyNmRldl9jb25maWcpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTExLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xMTQtXHQvKiBOb3RpZnkgZHJpdmVyIHRoYXQgZGV2aWNlIHJlc2V0IGlzIGNvbXBsZXRlICovXG5kcml2ZXJzL2NkeC9jZHguYzoxMTU6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZXNldF9kb25lKVxuZHJpdmVycy9jZHgvY2R4LmM6MTE2Olx0XHRjZHhfZHJ2LVx1MDAzZXJlc2V0X2RvbmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMTctXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTE5LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjEyMDpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZGV2X3Jlc2V0KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTEyMS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEyMi0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjEyMzogKiByZXNldF9jZHhfZGV2aWNlIC0gUmVzZXQgYSBDRFggZGV2aWNlXG5kcml2ZXJzL2NkeC9jZHguYy0xMjQtICogQGRldjogQ0RYIGRldmljZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEzMC0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjEzMTpzdGF0aWMgaW50IHJlc2V0X2NkeF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxuZHJpdmVycy9jZHgvY2R4LmMtMTMyLXtcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMzpcdHJldHVybiBjZHhfZGV2X3Jlc2V0KGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xMzQtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTEzNi0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjEzNzogKiBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UgLSBVbnJlZ2lzdGVyIGEgQ0RYIGRldmljZVxuZHJpdmVycy9jZHgvY2R4LmMtMTM4LSAqIEBkZXY6IENEWCBkZXZpY2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNDAtICpcdCAgYnV0IGlzIHJlcXVpcmVkIGhlcmUgYXMgdGhlIGJ1c19mb3JfZWFjaF9kZXYoKSBBUEkgZXhwZWN0c1xuZHJpdmVycy9jZHgvY2R4LmM6MTQxOiAqXHQgIHRoZSBwYXNzZWQgZnVuY3Rpb24gKGNkeF91bnJlZ2lzdGVyX2RldmljZSkgdG8gaGF2ZSB0aGlzXG5kcml2ZXJzL2NkeC9jZHguYy0xNDItICpcdCAgYXMgYW4gYXJndW1lbnQuXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTQ1LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MTQ2OnN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Ny1cdFx0XHRcdCB2b2lkICpkYXRhKVxuZHJpdmVycy9jZHgvY2R4LmMtMTQ4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjE0OTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTUwOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MS1cbmRyaXZlcnMvY2R4L2NkeC5jOjE1MjpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cykge1xuZHJpdmVycy9jZHgvY2R4LmM6MTUzOlx0XHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTU0Olx0XHRpZiAoY2R4X2Rldi1cdTAwM2VlbmFibGVkIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6MTU1Olx0XHRcdGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2Rpc2FibGUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtMTU2LVx0fSBlbHNlIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NzpcdFx0Y2R4X2Rlc3Ryb3lfcmVzX2F0dHIoY2R4X2RldiwgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjE1ODpcdFx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTU5LVx0fVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE2MS1cdC8qXG5kcml2ZXJzL2NkeC9jZHguYzoxNjI6XHQgKiBEbyBub3QgZnJlZSBjZHhfZGV2IGhlcmUgYXMgaXQgd291bGQgYmUgZnJlZWQgaW5cbmRyaXZlcnMvY2R4L2NkeC5jOjE2MzpcdCAqIGNkeF9kZXZpY2VfcmVsZWFzZSgpIGNhbGxlZCBmcm9tIHdpdGhpbiBwdXRfZGV2aWNlKCkuXG5kcml2ZXJzL2NkeC9jZHguYy0xNjQtXHQgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE2NTpcdGRldmljZV9kZWwoXHUwMDI2Y2R4X2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MTY2Olx0cHV0X2RldmljZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0xNjctXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMTcwLVxuZHJpdmVycy9jZHgvY2R4LmM6MTcxOnN0YXRpYyB2b2lkIGNkeF91bnJlZ2lzdGVyX2RldmljZXMoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMpXG5kcml2ZXJzL2NkeC9jZHguYy0xNzIte1xuZHJpdmVycy9jZHgvY2R4LmMtMTczLVx0LyogUmVzZXQgYWxsIHRoZSBkZXZpY2VzIGF0dGFjaGVkIHRvIGNkeCBidXMgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjE3NDpcdGJ1c19mb3JfZWFjaF9kZXYoYnVzLCBOVUxMLCBOVUxMLCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpO1xuZHJpdmVycy9jZHgvY2R4LmMtMTc1LX1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xNzctLyoqXG5kcml2ZXJzL2NkeC9jZHguYzoxNzg6ICogY2R4X21hdGNoX29uZV9kZXZpY2UgLSBUZWxsIGlmIGEgQ0RYIGRldmljZSBzdHJ1Y3R1cmUgaGFzIGEgbWF0Y2hpbmdcbmRyaXZlcnMvY2R4L2NkeC5jLTE3OS0gKlx0XHRcdCAgQ0RYIGRldmljZSBpZCBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0xODItICpcbmRyaXZlcnMvY2R4L2NkeC5jOjE4MzogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXG5kcml2ZXJzL2NkeC9jZHguYy0xODQtICovXG5kcml2ZXJzL2NkeC9jZHguYzoxODU6c3RhdGljIGlubGluZSBjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqXG5kcml2ZXJzL2NkeC9jZHguYzoxODY6Y2R4X21hdGNoX29uZV9kZXZpY2UoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkLFxuZHJpdmVycy9jZHgvY2R4LmM6MTg3Olx0XHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0xODgte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTE5OS0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjIwMDogKiBjZHhfbWF0Y2hfaWQgLSBTZWUgaWYgYSBDRFggZGV2aWNlIG1hdGNoZXMgYSBnaXZlbiBjZHhfaWQgdGFibGVcbmRyaXZlcnMvY2R4L2NkeC5jLTIwMS0gKiBAaWRzOiBhcnJheSBvZiBDRFggZGV2aWNlIElEIHN0cnVjdHVyZXMgdG8gc2VhcmNoIGluXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjA0LSAqIFVzZWQgYnkgYSBkcml2ZXIgdG8gY2hlY2sgd2hldGhlciBhIENEWCBkZXZpY2UgaXMgaW4gaXRzIGxpc3Qgb2ZcbmRyaXZlcnMvY2R4L2NkeC5jOjIwNTogKiBzdXBwb3J0ZWQgZGV2aWNlcy4gUmV0dXJucyB0aGUgbWF0Y2hpbmcgY2R4X2RldmljZV9pZCBzdHJ1Y3R1cmUgb3JcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNi0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuZHJpdmVycy9jZHgvY2R4LmMtMjA3LSAqXG5kcml2ZXJzL2NkeC9jZHguYzoyMDg6ICogUmV0dXJuOiBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvciBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxuZHJpdmVycy9jZHgvY2R4LmMtMjA5LSAqL1xuZHJpdmVycy9jZHgvY2R4LmM6MjEwOnN0YXRpYyBpbmxpbmUgY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKlxuZHJpdmVycy9jZHgvY2R4LmM6MjExOmNkeF9tYXRjaF9pZChjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzLCBzdHJ1Y3QgY2R4X2RldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjEyLXtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMTQtXHRcdHdoaWxlIChpZHMtXHUwMDNldmVuZG9yIHx8IGlkcy1cdTAwM2VkZXZpY2UpIHtcbmRyaXZlcnMvY2R4L2NkeC5jOjIxNTpcdFx0XHRpZiAoY2R4X21hdGNoX29uZV9kZXZpY2UoaWRzLCBkZXYpKVxuZHJpdmVycy9jZHgvY2R4LmMtMjE2LVx0XHRcdFx0cmV0dXJuIGlkcztcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMjItXG5kcml2ZXJzL2NkeC9jZHguYzoyMjM6aW50IGNkeF9zZXRfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjI0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNTpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzoyMjY6XHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNy1cdGludCByZXQgPSAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yMzEtXHRpZiAoY2R4LVx1MDAzZW9wcy1cdTAwM2VkZXZfY29uZmlndXJlKVxuZHJpdmVycy9jZHgvY2R4LmM6MjMyOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVx1MDAzZWJ1c19udW0sXG5kcml2ZXJzL2NkeC9jZHguYzoyMzM6XHRcdFx0XHRcdCAgICAgIGNkeF9kZXYtXHUwMDNlZGV2X251bSwgXHUwMDI2ZGV2X2NvbmZpZyk7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzQtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjM2LX1cbmRyaXZlcnMvY2R4L2NkeC5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfc2V0X21hc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy0yMzgtXG5kcml2ZXJzL2NkeC9jZHguYzoyMzk6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0yNDAte1xuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jOjI0MjpcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xuZHJpdmVycy9jZHgvY2R4LmMtMjQzLVx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI0Ny1cdGlmIChjZHgtXHUwMDNlb3BzLVx1MDAzZWRldl9jb25maWd1cmUpXG5kcml2ZXJzL2NkeC9jZHguYzoyNDg6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0OTpcdFx0XHRcdFx0ICAgICAgY2R4X2Rldi1cdTAwM2VkZXZfbnVtLCBcdTAwMjZkZXZfY29uZmlnKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI1MC1cbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0yNTItfVxuZHJpdmVycy9jZHgvY2R4LmM6MjUzOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9jbGVhcl9tYXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjU0LVxuZHJpdmVycy9jZHgvY2R4LmMtMjU1LS8qKlxuZHJpdmVycy9jZHgvY2R4LmM6MjU2OiAqIGNkeF9idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXG5kcml2ZXJzL2NkeC9jZHguYy0yNTctICogQGRldjogdGhlIGNkeCBkZXZpY2UgdG8gbWF0Y2ggYWdhaW5zdFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTI2Mi0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjI2MzpzdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MjY2Olx0Y29uc3Qgc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRydik7XG5kcml2ZXJzL2NkeC9jZHguYzoyNjc6XHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xuZHJpdmVycy9jZHgvY2R4LmM6MjY4Olx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkcztcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cdGludCByZXQ7XG5kcml2ZXJzL2NkeC9jZHguYy0yNzAtXG5kcml2ZXJzL2NkeC9jZHguYzoyNzE6XHRpZiAoY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy0yNzItXHRcdHJldHVybiBmYWxzZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI3My1cbmRyaXZlcnMvY2R4L2NkeC5jOjI3NDpcdGlkcyA9IGNkeF9kcnYtXHUwMDNlbWF0Y2hfaWRfdGFibGU7XG5kcml2ZXJzL2NkeC9jZHguYy0yNzUtXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjgwLVxuZHJpdmVycy9jZHgvY2R4LmM6MjgxOlx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTI4Mi1cdGlmICghZm91bmRfaWQpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMjk1LVx0XHRpZHMgPSBmb3VuZF9pZCAmIzQzOyAxO1xuZHJpdmVycy9jZHgvY2R4LmM6Mjk2Olx0XHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMjk3LVx0fSB3aGlsZSAoZm91bmRfaWQpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMwMS1cbmRyaXZlcnMvY2R4L2NkeC5jOjMwMjpzdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMDMte1xuZHJpdmVycy9jZHgvY2R4LmM6MzA0Olx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzA1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzozMDY6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtMzA3LVx0aW50IGVycm9yO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTMxMy1cdGlmIChJU19FTkFCTEVEKENPTkZJR19HRU5FUklDX01TSV9JUlEpIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlbXNpX2RvbWFpbikge1xuZHJpdmVycy9jZHgvY2R4LmM6MzE0Olx0XHRlcnJvciA9IG1zaV9zZXR1cF9kZXZpY2VfZGF0YShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMTUtXHRcdGlmIChlcnJvcilcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMTgtXG5kcml2ZXJzL2NkeC9jZHguYzozMTk6XHRlcnJvciA9IGNkeF9kcnYtXHUwMDNlcHJvYmUoY2R4X2Rldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMjAtXHRpZiAoZXJyb3IpIHtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy0zMjctXG5kcml2ZXJzL2NkeC9jZHguYzozMjg6c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy0zMjkte1xuZHJpdmVycy9jZHgvY2R4LmM6MzMwOlx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzMxOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy0zMzItXG5kcml2ZXJzL2NkeC9jZHguYzozMzM6XHRpZiAoY2R4X2RydiBcdTAwMjZcdTAwMjYgY2R4X2Rydi1cdTAwM2VyZW1vdmUpXG5kcml2ZXJzL2NkeC9jZHguYzozMzQ6XHRcdGNkeF9kcnYtXHUwMDNlcmVtb3ZlKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzM1LX1cbmRyaXZlcnMvY2R4L2NkeC5jLTMzNi1cbmRyaXZlcnMvY2R4L2NkeC5jOjMzNzpzdGF0aWMgdm9pZCBjZHhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzM4LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6MzQxOlx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVx1MDAzZWNkeDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM0Mi1cbmRyaXZlcnMvY2R4L2NkeC5jOjM0MzpcdGlmIChjZHhfZGV2LVx1MDAzZWlzX2J1cyBcdTAwMjZcdTAwMjYgY2R4X2Rldi1cdTAwM2VlbmFibGVkIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ0Olx0XHRjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NTpcdGlmIChjZHhfZHJ2IFx1MDAyNlx1MDAyNiBjZHhfZHJ2LVx1MDAzZXNodXRkb3duKVxuZHJpdmVycy9jZHgvY2R4LmM6MzQ2Olx0XHRjZHhfZHJ2LVx1MDAzZXNodXRkb3duKGNkeF9kZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtMzQ3LX1cbmRyaXZlcnMvY2R4L2NkeC5jLTM0OC1cbmRyaXZlcnMvY2R4L2NkeC5jOjM0OTpzdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvY2R4L2NkeC5jLTM1MC17XG5kcml2ZXJzL2NkeC9jZHguYzozNTE6XHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVx1MDAzZWRyaXZlcik7XG5kcml2ZXJzL2NkeC9jZHguYzozNTI6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MzpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cdTAwM2VjZHg7XG5kcml2ZXJzL2NkeC9jZHguYzozNTQ6XHR1MzIgaW5wdXRfaWQgPSBjZHhfZGV2LVx1MDAzZXJlcV9pZDtcbmRyaXZlcnMvY2R4L2NkeC5jLTM1NS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtMzYyLVxuZHJpdmVycy9jZHgvY2R4LmM6MzYzOlx0LyogQGNkeF9kcnYgbWF5IG5vdCBiZSB2YWxpZCB3aGVuIHdlJiMzOTtyZSBjYWxsZWQgZnJvbSB0aGUgSU9NTVUgbGF5ZXIgKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjM2NDpcdGlmICghcmV0IFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZHJpdmVyIFx1MDAyNlx1MDAyNiAhY2R4X2Rydi1cdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpIHtcbmRyaXZlcnMvY2R4L2NkeC5jLTM2NS1cdFx0cmV0ID0gaW9tbXVfZGV2aWNlX3VzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTM3Mi1cbmRyaXZlcnMvY2R4L2NkeC5jOjM3MzpzdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9jZHgvY2R4LmMtMzc0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NTpcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM3Ni1cbmRyaXZlcnMvY2R4L2NkeC5jOjM3NzpcdGlmICghY2R4X2Rydi1cdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpXG5kcml2ZXJzL2NkeC9jZHguYy0zNzgtXHRcdGlvbW11X2RldmljZV91bnVzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTM4MS0vKiBzaG93IGNvbmZpZ3VyYXRpb24gZmllbGRzICovXG5kcml2ZXJzL2NkeC9jZHguYzozODI6I2RlZmluZSBjZHhfY29uZmlnX2F0dHIoZmllbGQsIGZvcm1hdF9zdHJpbmcpXHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgzLXN0YXRpYyBzc2l6ZV90XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM9Mzg0PWZpZWxkIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXHRcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg1LXtcdFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODY6XHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcdFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODc6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIGZvcm1hdF9zdHJpbmcsIGNkeF9kZXYtXHUwMDNlZmllbGQpO1x0XFxcbmRyaXZlcnMvY2R4L2NkeC5jLTM4OC19XHRcXFxuZHJpdmVycy9jZHgvY2R4LmM9Mzg5PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmaWVsZClcbmRyaXZlcnMvY2R4L2NkeC5jLTM5MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjM5MTpjZHhfY29uZmlnX2F0dHIodmVuZG9yLCBcJiMzNDsweCUwNHhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6MzkyOmNkeF9jb25maWdfYXR0cihkZXZpY2UsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTM6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV92ZW5kb3IsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTQ6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV9kZXZpY2UsIFwmIzM0OzB4JTA0eFxcblwmIzM0Oyk7XG5kcml2ZXJzL2NkeC9jZHguYzozOTU6Y2R4X2NvbmZpZ19hdHRyKHJldmlzaW9uLCBcJiMzNDsweCUwMnhcXG5cJiMzNDspO1xuZHJpdmVycy9jZHgvY2R4LmM6Mzk2OmNkeF9jb25maWdfYXR0cihjbGFzcywgXCYjMzQ7MHglMDZ4XFxuXCYjMzQ7KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTM5Ny1cbmRyaXZlcnMvY2R4L2NkeC5jPTM5OD1zdGF0aWMgc3NpemVfdCByZW1vdmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTQxMi1cbmRyaXZlcnMvY2R4L2NkeC5jOjQxMzpcdFx0cmV0ID0gY2R4X3VucmVnaXN0ZXJfZGV2aWNlKGRldiwgTlVMTCk7XG5kcml2ZXJzL2NkeC9jZHguYy00MTQtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmM9NDIyPXN0YXRpYyBzc2l6ZV90IHJlc2V0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDI0LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQyNTpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDI2LVx0Ym9vbCB2YWw7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDM0LVxuZHJpdmVycy9jZHgvY2R4LmM6NDM1Olx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtNDM2LVx0XHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NDM3Olx0XHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQzOC1cdGVsc2VcbmRyaXZlcnMvY2R4L2NkeC5jOjQzOTpcdFx0cmV0ID0gY2R4X2Rldl9yZXNldChkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDQwLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ0NT1zdGF0aWMgc3NpemVfdCBtb2RhbGlhc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDQ3LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ0ODpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDQ5LVxuZHJpdmVycy9jZHgvY2R4LmM6NDUwOlx0cmV0dXJuIHNwcmludGYoYnVmLCBcJiMzNDtjZHg6diUwNFhkJTA0WHN2JTA0WHNkJTA0WGMlMDZYXFxuXCYjMzQ7LCBjZHhfZGV2LVx1MDAzZXZlbmRvcixcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MTpcdFx0XHRjZHhfZGV2LVx1MDAzZWRldmljZSwgY2R4X2Rldi1cdTAwM2VzdWJzeXN0ZW1fdmVuZG9yLCBjZHhfZGV2LVx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXG5kcml2ZXJzL2NkeC9jZHguYzo0NTI6XHRcdFx0Y2R4X2Rldi1cdTAwM2VjbGFzcyk7XG5kcml2ZXJzL2NkeC9jZHguYy00NTMtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ1Nj1zdGF0aWMgc3NpemVfdCBlbmFibGVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NTgte1xuZHJpdmVycy9jZHgvY2R4LmM6NDU5Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYzo0NjA6XHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXHUwMDNlY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtNDYxLVx0Ym9vbCBlbmFibGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNDY2LVxuZHJpdmVycy9jZHgvY2R4LmM6NDY3Olx0aWYgKGVuYWJsZSA9PSBjZHhfZGV2LVx1MDAzZWVuYWJsZWQpXG5kcml2ZXJzL2NkeC9jZHguYy00NjgtXHRcdHJldHVybiBjb3VudDtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NzAtXHRpZiAoZW5hYmxlIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19lbmFibGUpXG5kcml2ZXJzL2NkeC9jZHguYzo0NzE6XHRcdHJldCA9IGNkeC1cdTAwM2VvcHMtXHUwMDNlYnVzX2VuYWJsZShjZHgsIGNkeF9kZXYtXHUwMDNlYnVzX251bSk7XG5kcml2ZXJzL2NkeC9jZHguYy00NzItXHRlbHNlIGlmICghZW5hYmxlIFx1MDAyNlx1MDAyNiBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKVxuZHJpdmVycy9jZHgvY2R4LmM6NDczOlx0XHRyZXQgPSBjZHgtXHUwMDNlb3BzLVx1MDAzZWJ1c19kaXNhYmxlKGNkeCwgY2R4X2Rldi1cdTAwM2VidXNfbnVtKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3NC1cdGVsc2Vcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy00NzctXHRpZiAoIXJldClcbmRyaXZlcnMvY2R4L2NkeC5jOjQ3ODpcdFx0Y2R4X2Rldi1cdTAwM2VlbmFibGVkID0gZW5hYmxlO1xuZHJpdmVycy9jZHgvY2R4LmMtNDc5LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ4Mz1zdGF0aWMgc3NpemVfdCBlbmFibGVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG5kcml2ZXJzL2NkeC9jZHguYy00ODQte1xuZHJpdmVycy9jZHgvY2R4LmM6NDg1Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy00ODYtXG5kcml2ZXJzL2NkeC9jZHguYzo0ODc6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBjZHhfZGV2LVx1MDAzZWVuYWJsZWQpO1xuZHJpdmVycy9jZHgvY2R4LmMtNDg4LX1cbmRyaXZlcnMvY2R4L2NkeC5jPTQ4OT1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZW5hYmxlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjQ5MTpzdGF0aWMgdW1vZGVfdCBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0cmlidXRlICphLCBpbnQgbilcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Mi17XG5kcml2ZXJzL2NkeC9jZHguYy00OTMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBrb2JqX3RvX2Rldihrb2JqKTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xuZHJpdmVycy9jZHgvY2R4LmMtNDk1LVxuZHJpdmVycy9jZHgvY2R4LmM6NDk2Olx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NzpcdGlmICghY2R4X2Rldi1cdTAwM2Vpc19idXMpXG5kcml2ZXJzL2NkeC9jZHguYy00OTgtXHRcdHJldHVybiBhLVx1MDAzZW1vZGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTAyLVxuZHJpdmVycy9jZHgvY2R4LmM6NTAzOnN0YXRpYyB1bW9kZV90IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxuZHJpdmVycy9jZHgvY2R4LmMtNTA0LXtcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA2Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXY7XG5kcml2ZXJzL2NkeC9jZHguYy01MDctXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XHRjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xuZHJpdmVycy9jZHgvY2R4LmM6NTA5Olx0aWYgKGNkeF9kZXYtXHUwMDNlaXNfYnVzKVxuZHJpdmVycy9jZHgvY2R4LmMtNTEwLVx0XHRyZXR1cm4gYS1cdTAwM2Vtb2RlO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTUxNC1cbmRyaXZlcnMvY2R4L2NkeC5jOjUxNTpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNTE2LVx0XHUwMDI2ZGV2X2F0dHJfcmVtb3ZlLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTI3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGNkeF9kZXZfZ3JvdXAgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1Mjk6XHQuYXR0cnMgPSBjZHhfZGV2X2F0dHJzLFxuZHJpdmVycy9jZHgvY2R4LmM6NTMwOlx0LmlzX3Zpc2libGUgPSBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlLFxuZHJpdmVycy9jZHgvY2R4LmMtNTMxLX07XG5kcml2ZXJzL2NkeC9jZHguYy01MzItXG5kcml2ZXJzL2NkeC9jZHguYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL2NkeC9jZHguYy01MzQtXHRcdTAwMjZkZXZfYXR0cl9lbmFibGUuYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01MzgtXG5kcml2ZXJzL2NkeC9jZHguYzo1Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2J1c19kZXZfZ3JvdXAgPSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NDA6XHQuYXR0cnMgPSBjZHhfYnVzX2Rldl9hdHRycyxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MTpcdC5pc192aXNpYmxlID0gY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZSxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0Mi19O1xuZHJpdmVycy9jZHgvY2R4LmMtNTQzLVxuZHJpdmVycy9jZHgvY2R4LmM6NTQ0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpjZHhfZGV2X2dyb3Vwc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmM6NTQ1Olx0XHUwMDI2Y2R4X2Rldl9ncm91cCxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NjpcdFx1MDAyNmNkeF9idXNfZGV2X2dyb3VwLFxuZHJpdmVycy9jZHgvY2R4LmMtNTQ3LVx0TlVMTCxcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NDktXG5kcml2ZXJzL2NkeC9jZHguYzo1NTA6c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXG5kcml2ZXJzL2NkeC9jZHguYy01NTEte1xuZHJpdmVycy9jZHgvY2R4LmM6NTUyOlx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVx1MDAzZXByaXZhdGU7XG5kcml2ZXJzL2NkeC9jZHguYy01NTMtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy01NTUtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfQ0RYX0RFVl9SRVNPVVJDRVM7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL2NkeC9jZHguYzo1NTY6XHRcdHN0cnVjdCByZXNvdXJjZSAqcmVzID0gIFx1MDAyNmNkeF9kZXYtXHUwMDNlcmVzW2ldO1xuZHJpdmVycy9jZHgvY2R4LmMtNTU3LVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTU2Mi19XG5kcml2ZXJzL2NkeC9jZHguYzo1NjM6REVGSU5FX1NIT1dfQVRUUklCVVRFKGNkeF9kZWJ1Z19yZXNvdXJjZSk7XG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXG5kcml2ZXJzL2NkeC9jZHguYzo1NjU6c3RhdGljIHZvaWQgY2R4X2RldmljZV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXG5kcml2ZXJzL2NkeC9jZHguYy01NjYte1xuZHJpdmVycy9jZHgvY2R4LmM6NTY3Olx0Y2R4X2Rldi1cdTAwM2VkZWJ1Z2ZzX2RpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfbmFtZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldiksIGNkeF9kZWJ1Z2ZzX2Rpcik7XG5kcml2ZXJzL2NkeC9jZHguYzo1Njg6XHRpZiAoSVNfRVJSKGNkeF9kZXYtXHUwMDNlZGVidWdmc19kaXIpKVxuZHJpdmVycy9jZHgvY2R4LmMtNTY5LVx0XHRyZXR1cm47XG5kcml2ZXJzL2NkeC9jZHguYy01NzAtXG5kcml2ZXJzL2NkeC9jZHguYzo1NzE6XHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3Jlc291cmNlXCYjMzQ7LCAwNDQ0LCBjZHhfZGV2LVx1MDAzZWRlYnVnZnNfZGlyLCBjZHhfZGV2LFxuZHJpdmVycy9jZHgvY2R4LmM6NTcyOlx0XHRcdCAgICBcdTAwMjZjZHhfZGVidWdfcmVzb3VyY2VfZm9wcyk7XG5kcml2ZXJzL2NkeC9jZHguYy01NzMtfVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTU3NT1zdGF0aWMgc3NpemVfdCByZXNjYW5fc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTc3LXtcbmRyaXZlcnMvY2R4L2NkeC5jOjU3ODpcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xuZHJpdmVycy9jZHgvY2R4LmMtNTc5LVx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGQ7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNTg3LVxuZHJpdmVycy9jZHgvY2R4LmM6NTg4Olx0Z3VhcmQobXV0ZXgpKFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xuZHJpdmVycy9jZHgvY2R4LmMtNTg5LVxuZHJpdmVycy9jZHgvY2R4LmMtNTkwLVx0LyogVW5yZWdpc3RlciBhbGwgdGhlIGRldmljZXMgb24gdGhlIGJ1cyAqL1xuZHJpdmVycy9jZHgvY2R4LmM6NTkxOlx0Y2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhcdTAwMjZjZHhfYnVzX3R5cGUpO1xuZHJpdmVycy9jZHgvY2R4LmMtNTkyLVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTYwOD1zdGF0aWMgQlVTX0FUVFJfV08ocmVzY2FuKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYwOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYxMDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqY2R4X2J1c19hdHRyc1tdID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNjExLVx0XHUwMDI2YnVzX2F0dHJfcmVzY2FuLmF0dHIsXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjEzLX07XG5kcml2ZXJzL2NkeC9jZHguYzo2MTQ6QVRUUklCVVRFX0dST1VQUyhjZHhfYnVzKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYxNS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYxNjpjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgY2R4X2J1c190eXBlID0ge1xuZHJpdmVycy9jZHgvY2R4LmMtNjE3LVx0Lm5hbWVcdFx0PSBcJiMzNDtjZHhcJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYy02MTgtXHQuZHJpdmVyX292ZXJyaWRlID0gdHJ1ZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxOTpcdC5tYXRjaFx0XHQ9IGNkeF9idXNfbWF0Y2gsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjA6XHQucHJvYmVcdFx0PSBjZHhfcHJvYmUsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjE6XHQucmVtb3ZlXHRcdD0gY2R4X3JlbW92ZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMjpcdC5zaHV0ZG93blx0PSBjZHhfc2h1dGRvd24sXG5kcml2ZXJzL2NkeC9jZHguYzo2MjM6XHQuZG1hX2NvbmZpZ3VyZVx0PSBjZHhfZG1hX2NvbmZpZ3VyZSxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNDpcdC5kbWFfY2xlYW51cFx0PSBjZHhfZG1hX2NsZWFudXAsXG5kcml2ZXJzL2NkeC9jZHguYzo2MjU6XHQuYnVzX2dyb3Vwc1x0PSBjZHhfYnVzX2dyb3VwcyxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNjpcdC5kZXZfZ3JvdXBzXHQ9IGNkeF9kZXZfZ3JvdXBzLFxuZHJpdmVycy9jZHgvY2R4LmMtNjI3LX07XG5kcml2ZXJzL2NkeC9jZHguYzo2Mjg6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2J1c190eXBlKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYyOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxuZHJpdmVycy9jZHgvY2R4LmMtNjMxLVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjM0LVxuZHJpdmVycy9jZHgvY2R4LmM6NjM1Olx0Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNjpcdGNkeF9kcml2ZXItXHUwMDNlZHJpdmVyLmJ1cyA9IFx1MDAyNmNkeF9idXNfdHlwZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYzNy1cbmRyaXZlcnMvY2R4L2NkeC5jOjYzODpcdGVycm9yID0gZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmNkeF9kcml2ZXItXHUwMDNlZHJpdmVyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTYzOS1cdGlmIChlcnJvcikge1xuZHJpdmVycy9jZHgvY2R4LmMtNjQwLVx0XHRwcl9lcnIoXCYjMzQ7ZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkIGZvciAlczogJWRcXG5cJiMzNDssXG5kcml2ZXJzL2NkeC9jZHguYzo2NDE6XHRcdCAgICAgICBjZHhfZHJpdmVyLVx1MDAzZWRyaXZlci5uYW1lLCBlcnJvcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDItXHRcdHJldHVybiBlcnJvcjtcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxuZHJpdmVycy9jZHgvY2R4LmM6NjQ3OkVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xuZHJpdmVycy9jZHgvY2R4LmM6NjUxOlx0ZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Y2R4X2RyaXZlci1cdTAwM2Vkcml2ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjUyLX1cbmRyaXZlcnMvY2R4L2NkeC5jOjY1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfZHJpdmVyX3VucmVnaXN0ZXIpO1xuZHJpdmVycy9jZHgvY2R4LmMtNjU0LVxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2NkeC9jZHguYy02NTYte1xuZHJpdmVycy9jZHgvY2R4LmM6NjU3Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XG5kcml2ZXJzL2NkeC9jZHguYy02NTgtXG5kcml2ZXJzL2NkeC9jZHguYzo2NTk6XHRrZnJlZShjZHhfZGV2KTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MC19XG5kcml2ZXJzL2NkeC9jZHguYy02NjEtXG5kcml2ZXJzL2NkeC9jZHguYzo2NjI6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBjZHhfcGh5c192bV9vcHMgPSB7XG5kcml2ZXJzL2NkeC9jZHguYy02NjMtI2lmZGVmIENPTkZJR19IQVZFX0lPUkVNQVBfUFJPVFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY2OC0vKipcbmRyaXZlcnMvY2R4L2NkeC5jOjY2OTogKiBjZHhfbW1hcF9yZXNvdXJjZSAtIG1hcCBhIENEWCByZXNvdXJjZSBpbnRvIHVzZXIgbWVtb3J5IHNwYWNlXG5kcml2ZXJzL2NkeC9jZHguYy02NzAtICogQGZwOiBGaWxlIHBvaW50ZXIuIE5vdCB1c2VkIGluIHRoaXMgZnVuY3Rpb24sIGJ1dCByZXF1aXJlZCB3aGVyZVxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTY3OS0gKi9cbmRyaXZlcnMvY2R4L2NkeC5jOjY4MDpzdGF0aWMgaW50IGNkeF9tbWFwX3Jlc291cmNlKHN0cnVjdCBmaWxlICpmcCwgc3RydWN0IGtvYmplY3QgKmtvYmosXG5kcml2ZXJzL2NkeC9jZHguYy02ODEtXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02ODMte1xuZHJpdmVycy9jZHgvY2R4LmM6Njg0Olx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGtvYmpfdG9fZGV2KGtvYmopKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY4NS1cdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVx1MDAzZXByaXZhdGU7XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNjg4LVxuZHJpdmVycy9jZHgvY2R4LmM6Njg5Olx0cmVzID0gXHUwMDI2Y2R4X2Rldi1cdTAwM2VyZXNbbnVtXTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY5MC1cdGlmIChpb21lbV9pc19leGNsdXNpdmUocmVzLVx1MDAzZXN0YXJ0KSlcbi0tXG5kcml2ZXJzL2NkeC9jZHguYy02OTMtXHQvKiBNYWtlIHN1cmUgdGhlIGNhbGxlciBpcyBtYXBwaW5nIGEgdmFsaWQgcmVzb3VyY2UgZm9yIHRoaXMgZGV2aWNlICovXG5kcml2ZXJzL2NkeC9jZHguYzo2OTQ6XHRzaXplID0gKChjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSkgLSAxKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCkgJiM0MzsgMTtcbmRyaXZlcnMvY2R4L2NkeC5jLTY5NS1cdGlmICh2bWEtXHUwMDNldm1fcGdvZmYgJiM0Mzsgdm1hX3BhZ2VzKHZtYSkgXHUwMDNlIHNpemUpXG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzAyLVx0dm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCk7XG5kcml2ZXJzL2NkeC9jZHguYzo3MDM6XHR2bWEtXHUwMDNldm1fcGdvZmYgJiM0Mzs9IChjZHhfcmVzb3VyY2Vfc3RhcnQoY2R4X2RldiwgbnVtKSBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCk7XG5kcml2ZXJzL2NkeC9jZHguYzo3MDQ6XHR2bWEtXHUwMDNldm1fb3BzID0gXHUwMDI2Y2R4X3BoeXNfdm1fb3BzO1xuZHJpdmVycy9jZHgvY2R4LmMtNzA1LVx0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cdTAwM2V2bV9zdGFydCwgdm1hLVx1MDAzZXZtX3Bnb2ZmLFxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTcwOS1cbmRyaXZlcnMvY2R4L2NkeC5jOjcxMDpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcbmRyaXZlcnMvY2R4L2NkeC5jLTcxMS17XG4tLVxuZHJpdmVycy9jZHgvY2R4LmMtNzE3LVxuZHJpdmVycy9jZHgvY2R4LmM6NzE4Olx0XHRyZXNfYXR0ciA9IGNkeF9kZXYtXHUwMDNlcmVzX2F0dHJbaV07XG5kcml2ZXJzL2NkeC9jZHguYy03MTktXHRcdGlmIChyZXNfYXR0cikge1xuZHJpdmVycy9jZHgvY2R4LmM6NzIwOlx0XHRcdHN5c2ZzX3JlbW92ZV9iaW5fZmlsZShcdTAwMjZjZHhfZGV2LVx1MDAzZWRldi5rb2JqLCByZXNfYXR0cik7XG5kcml2ZXJzL2NkeC9jZHguYy03MjEtXHRcdFx0a2ZyZWUocmVzX2F0dHIpO1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTcyNi0jZGVmaW5lIENEWF9SRVNfQVRUUl9OQU1FX0xFTlx0MTBcbmRyaXZlcnMvY2R4L2NkeC5jOjcyNzpzdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXG5kcml2ZXJzL2NkeC9jZHguYy03Mjgte1xuLS1cbmRyaXZlcnMvY2R4L2NkeC5jLTc0MC1cbmRyaXZlcnMvY2R4L2NkeC5jOjc0MTpcdGNkeF9kZXYtXHUwMDNlcmVzX2F0dHJbbnVtXSA9IHJlc19hdHRyO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQyLVx0c3ByaW50ZihyZXNfYXR0cl9uYW1lLCBcJiMzNDtyZXNvdXJjZSVkXCYjMzQ7LCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQzLVxuZHJpdmVycy9jZHgvY2R4LmM6NzQ0Olx0cmVzX2F0dHItXHUwMDNlbW1hcCA9IGNkeF9tbWFwX3Jlc291cmNlO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQ1LVx0cmVzX2F0dHItXHUwMDNlYXR0ci5uYW1lID0gcmVzX2F0dHJfbmFtZTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc0Ni1cdHJlc19hdHRyLVx1MDAzZWF0dHIubW9kZSA9IDA2MDA7XG5kcml2ZXJzL2NkeC9jZHguYzo3NDc6XHRyZXNfYXR0ci1cdTAwM2VzaXplID0gY2R4X3Jlc291cmNlX2xlbihjZHhfZGV2LCBudW0pO1xuZHJpdmVycy9jZHgvY2R4LmMtNzQ4LVx0cmVzX2F0dHItXHUwMDNlcHJpdmF0ZSA9ICh2b2lkICopKHVuc2lnbmVkIGxvbmcpbnVtO1xuZHJpdmVycy9jZHgvY2R4LmM6NzQ5Olx0cmV0ID0gc3lzZnNfY3JlYXRlX2Jpbl9maWxlKFx1MDAyNmNkeF9kZXYtXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcbmRyaXZlcnMvY2R4L2NkeC5jLTc1MC1cdGlmIChyZXQpXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MjgxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNDcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIENEWCBDb250cm9sbGVyIFJlZ2lzdHJhdGlvbiBhbmQgRW11bGF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgQ0RYIGNvbnRyb2xsZXIgcmVnaXN0cmF0aW9uIGJlZ2lucyB3aXRoaW4gYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AuIFRoZSBgeGxueF9jZHhfcHJvYmVgIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCBieSBhIHBsYXRmb3JtIGRldmljZSBtYXRjaCBmb3IgYCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeCYjMzQ7YC4gSXQgdGhlbiBlc3RhYmxpc2hlcyBhIGNvbm5lY3Rpb24gdG8gYSByZW1vdGVwcm9jIGluc3RhbmNlIChzcGVjaWZpY2FsbHksIGByNV9jb3JlX25vZGVgKS4gVGhpcyBpbnZvbHZlcyBzZXR0aW5nIHVwIGFuIFJQTVNHIGRyaXZlci4gT25jZSB0aGUgUlBNU0cgY2hhbm5lbCBiZWNvbWVzIG9wZXJhdGlvbmFsLCBgY2R4X3JwbXNnX3Byb2JlYCBpcyBpbnZva2VkLCB3aGljaCB0aGVuIHNjaGVkdWxlcyBgY2R4X3JwbXNnX3Bvc3RfcHJvYmVfd29ya2AsIHVsdGltYXRlbHkgbGVhZGluZyB0byBgY2R4X3JwbXNnX3Bvc3RfcHJvYmVgIGFuZCwgZmluYWxseSwgYGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyYC4gQ29tbXVuaWNhdGlvbiB3aXRoIHRoZSBmaXJtd2FyZSBydW5uaW5nIG9uIHRoZSBWZXJzYWwgQUNBUCBSNSBjb3JlIGhhcHBlbnMgdmlhIE1DREkgKHJlbW90ZXByb2MgbWFpbGJveC9ycG1zZykgZHVyaW5nIGVpdGhlciBgcmVzY2FuX3N0b3JlYCBvciBgY2R4X3NjYW5fZGV2aWNlc2AsIHdoaWNoIGFyZSB1c2VkIHRvIGVudW1lcmF0ZSBidXNlcyBhbmQgZGV2aWNlcy4KCk5vdywgYSBjcml0aWNhbCBwb2ludDogKip0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRvciBmb3IgdGhlIENEWCBjb250cm9sbGVyIG9yIGFueSBvZiBpdHMgYXNzb2NpYXRlZCBkZXZpY2VzIHdpdGhpbiBRRU1VLCBHQ0UsIG9yIGV2ZW4gdGhlIG1haW5saW5lIExpbnV4IGtlcm5lbC4qKiBUaGlzIG1ha2VzIHRoaW5ncyBkaWZmaWN1bHQuIEZ1cnRoZXJtb3JlLCB0aGUgYXJjaGl0ZWN0dXJlIGluIHF1ZXN0aW9uIGhlcmUgaXMgYGFtZDY0YCwgd2hpbGUgdGhlIGBDRFhfQlVTYCBmdW5jdGlvbmFsaXR5IGFwcGVhcnMgdG8gZGVwZW5kIG9uIGEgY29tYmluYXRpb24gb2YgYE9GICZhbXA7JmFtcDsgQVJNNjQgfHwgQ09NUElMRV9URVNUYC4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgVmVyc2FsIEFDQVAvQ0RYIGJ1cyBpcyBzcGVjaWZpYyB0byBBTUQvWGlsaW54IEFSTTY0IFNvQyBGUEdBIGhhcmR3YXJlIGFuZCBuZWVkcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgKE1DREkgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSBSNSBjb3JlKSB0byBvcGVyYXRlLgoKQ29uc2lkZXJpbmcgdGhlIGdpdmVuIGluc3RydWN0aW9ucywgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiwgd2hlcmUgd2UmIzM5O3JlIGxvb2tpbmcgZm9yIHNjZW5hcmlvcyB3aGVyZSBgV29ydGhGdXp6aW5nPWZhbHNlYCwgdHdvIGNyaXRlcmlhIGltbWVkaWF0ZWx5IHN0YW5kIG91dC4KCiogICAqKlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToqKiBDRFggZmFsbHMgc3F1YXJlbHkgaW50byB0aGlzIGNhdGVnb3J5LiBJdCByZXF1aXJlcyBhIFZlcnNhbCBBQ0FQIFNvQywgYSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybSB3aXRoIHZlbmRvci1zcGVjaWZpYyBQQ0llIGludGVyYWN0aW9ucywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgoqICAgKipVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6KiogVGhlIGNvZGUmIzM5O3MgZGVwZW5kZW5jZSBvbiB0aGUgQVJNNjQgYXJjaGl0ZWN0dXJlLCBjb3VwbGVkIHdpdGggaXRzIHJlbGlhbmNlIG9uIHNwZWNpZmljIGZpcm13YXJlIGFuZCBoYXJkd2FyZSwgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byByZWFjaCB0aGVzZSBleGVjdXRpb24gcGF0aHMgb24gYW1kNjQgc3lzdGVtcy4KClRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSYjMzk7cyAqYW55KiB3YXkgdG8gaW5zdGFudGlhdGUgdGhlIENEWCBjb250cm9sbGVyIG9uIGFtZDY0IG9yIHdpdGhpbiBzdGFuZGFyZCBRRU1VLiBBcmUgdGhlcmUgYW55IHBsYXRmb3JtIGRldmljZXMgb3IgbW9jayBkcml2ZXJzIHRoYXQgbWlnaHQgc2ltdWxhdGUgdGhlIENEWCBiZWhhdmlvcj8gSSBuZWVkIHRvIHNlYXJjaCBmb3IgYCYjMzQ7dmVyc2FsLW5ldC1jZHgmIzM0O2Agb3IgYW55IG90aGVyIENEWC1yZWxhdGVkIGtleXdvcmRzIHRvIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBub3RoaW5nIHRoYXQgSSYjMzk7bSBtaXNzaW5nLiBHaXZlbiBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcsIEkgYW0gaGlnaGx5IGNvbmZpZGVudCB0aGF0IHRoaXMgcGF0aCBpcyBub3Qgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHJlcXVpcmVtZW50cyBJIHdhcyBnaXZlbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmVyc2FsLW5ldC1jZHgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtMy0tLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbD0zNz1wcm9wZXJ0aWVzOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtMzgtICBjb21wYXRpYmxlOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWw6Mzk6ICAgIGNvbnN0OiB4bG54LHZlcnNhbC1uZXQtY2R4XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbC00MC1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbD03MD1leGFtcGxlczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbC03Mi0gICAgY2R4IHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sOjczOiAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O3hsbngsdmVyc2FsLW5ldC1jZHhcJiMzNDs7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbC03NC0gICAgICAgICNhZGRyZXNzLWNlbGxzID0gXHUwMDNjMVx1MDAzZTtcbi0tXG5NQUlOVEFJTkVSUz0xMDU4PVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoxMDU5OkY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbFxuTUFJTlRBSU5FUlMtMTA2MC1GOlx0ZHJpdmVycy9jZHgvKlxuLS1cbmRyaXZlcnMvY2R4L2NkeC5jPTgzPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjZHhfZGVidWdmc19kaXI7XG5kcml2ZXJzL2NkeC9jZHguYy04NC1cbmRyaXZlcnMvY2R4L2NkeC5jOjg1OnN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeFwmIzM0OztcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxuLS1cbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0yMzY9c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2R4X21hdGNoX3RhYmxlW10gPSB7XG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MjM3Olx0ey5jb21wYXRpYmxlID0gXCYjMzQ7eGxueCx2ZXJzYWwtbmV0LWNkeFwmIzM0Oyx9LFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIzOC1cdHsgfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAwNTQKCQkJCQkJCW91dHB1dDogMTQ4CgkJCQkJCQl0aG91Z2h0czogNDAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIHRoZSBUYXJnZXQgQ29kZSBhbmQgRnV6emluZyBGZWFzaWJpbGl0eSoqCgpPa2F5LCBhZnRlciB0aGlzIHRob3JvdWdoIHJldmlldywgSSYjMzk7bSBhYnNvbHV0ZWx5IGNlcnRhaW4uIEV2ZXJ5dGhpbmcgcG9pbnRzIGRpcmVjdGx5IHRvIGFuIEFNRC9YaWxpbnggVmVyc2FsIEZQR0EgLyBBUk02NCBwbGF0Zm9ybS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGdlbmVyaWMgQVJNNjQgdGhpbmc7IGl0IHJlcXVpcmVzIHBoeXNpY2FsIEFNRC9YaWxpbnggVmVyc2FsIEFDQVAgaGFyZHdhcmUgd2l0aCBSNSBmaXJtd2FyZSBjb21tdW5pY2F0aW9uLiBFdmVuIHRob3VnaCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBgYW1kNjRgIGluaXRpYWxseSwgdGhlIHJlcXVpcmVtZW50IGlzIHN0aWxsIHBoeXNpY2FsIGhhcmR3YXJlLgoKU3BlY2lmaWNhbGx5LCB0aGF0IGB2ZmlvX2NkeF9tbWFwX21taW9gIGZ1bmN0aW9uIGluIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2Ag4oCTIGl0JiMzOTtzIG9ubHkgZXZlciBjYWxsZWQgdGhyb3VnaCB0aGUgYG1tYXBgIGNhbGxiYWNrIG9mIHRoZSBgdmZpby1jZHhgIGRyaXZlci4gQW5kIHRoYXQgZHJpdmVyIGlzICpvbmx5KiByZWdpc3RlcmVkIGZvciBDRFggZGV2aWNlcywgd2hpY2ggYXJlIGVuYWJsZWQgYnkgYENPTkZJR19WRklPX0NEWGAgYW5kIGBDT05GSUdfQ0RYX0JVU2AuIFlvdSBjYW4mIzM5O3QganVzdCBzcGluIHRoaXMgdXAgaW4gUUVNVSBvciBHQ0UuIFdpdGhvdXQgdGhhdCBwaHlzaWNhbCBDRFggaGFyZHdhcmUsIHdpdGhvdXQgdGhlIGNvbnRyb2xsZXIgdG8gZGlzY292ZXIgYW5kIHJlZ2lzdGVyIENEWCBkZXZpY2VzLCB0aGlzIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIHdpdGhpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgb3VyIGBzZXQtcmVzdWx0c2AgZmllbGRzLiBZZXAsIGBXb3J0aEZ1enppbmdgIGlzIHVuZXF1aXZvY2FsbHkgYGZhbHNlYC4gVGhlIGBSZWFzb25pbmdgIHNob3VsZCBiZSBjcnlzdGFsIGNsZWFyLiBUaGUgYEZvY3VzU3ltYm9sc2A/IEVtcHR5LiBObyBmb2N1cyBzeW1ib2xzLiBBbmQgdGhlIGBFbmFibGVDb25maWdzYD8gQWxzbyBlbXB0eS4gUGVyZmVjdC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIHRvb2wgY2FsbCBmb3JtYXR0aW5nLiBPa2F5LCBgRm9jdXNTeW1ib2xzOiBbXWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGFuZCB0aGUgYFJlYXNvbmluZ2A6ICYjMzQ7VGhlIG1vZGlmaWVkIGZ1bmN0aW9uIHZmaW9fY2R4X21tYXBfbW1pbyBpcyBwYXJ0IG9mIHRoZSBWRklPIENEWCBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKSwgd2hpY2ggc3VwcG9ydHMgQU1EL1hpbGlueCBWZXJzYWwgQ0RYIGJ1cyBkZXZpY2VzLiBDRFggYnVzIGRldmljZXMgcmVxdWlyZSBwaHlzaWNhbCBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIGhhcmR3YXJlIGFuZCBBUk02NCBmaXJtd2FyZSBjb21tdW5pY2F0aW9uIChNQ0RJIG92ZXIgcnBtc2cpLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgaW5zdGFudGlhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiBRRU1VIG9uIGFtZDY0KS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OyBUaGF0JiMzOTtzIGdvb2QuCgpBbHJpZ2h0LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBtb2RpZmllZCBmdW5jdGlvbiB2ZmlvX2NkeF9tbWFwX21taW8gaXMgcGFydCBvZiB0aGUgVkZJTyBDRFggYnVzIGRyaXZlciAoZHJpdmVycy92ZmlvL2NkeC9tYWluLmMpLiBUaGUgQ0RYIGJ1cyBpcyBzcGVjaWZpYyB0byBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIHBsYXRmb3JtcyBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUvZmlybXdhcmUgKHJwbXNnL01DREkgY29tbXVuaWNhdGlvbiB3aXRoIGFuIFI1IG1hbmFnZW1lbnQgY29udHJvbGxlcikgdG8gZGlzY292ZXIgYW5kIHJlZ2lzdGVyIENEWCBkZXZpY2VzLiBCZWNhdXNlIHRoZXJlIGFyZSBubyBlbXVsYXRlZCBDRFggY29udHJvbGxlcnMgb3IgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VIGVudmlyb25tZW50cyAocGFydGljdWxhcmx5IG9uIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE0OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMToyMS4xNjc0NDQwNTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY1MzU1MTM5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbiB2ZmlvX2NkeF9tbWFwX21taW8gaXMgcGFydCBvZiB0aGUgVkZJTyBDRFggYnVzIGRyaXZlciAoZHJpdmVycy92ZmlvL2NkeC9tYWluLmMpLiBUaGUgQ0RYIGJ1cyBpcyBzcGVjaWZpYyB0byBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIHBsYXRmb3JtcyBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUvZmlybXdhcmUgKHJwbXNnL01DREkgY29tbXVuaWNhdGlvbiB3aXRoIGFuIFI1IG1hbmFnZW1lbnQgY29udHJvbGxlcikgdG8gZGlzY292ZXIgYW5kIHJlZ2lzdGVyIENEWCBkZXZpY2VzLiBCZWNhdXNlIHRoZXJlIGFyZSBubyBlbXVsYXRlZCBDRFggY29udHJvbGxlcnMgb3IgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VIGVudmlyb25tZW50cyAocGFydGljdWxhcmx5IG9uIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6MjEuMTY3NDUzMjI2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTg3ODU1ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwYzcxZjZmYjJjNmE2YTA1ZTYyYzdkZDRkYmJhNGI4NWNhZWYxZTYxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MjE6MjAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmMgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xcbmluZGV4IGIzMWVkNGJlN2JkYzEuLjUzZDkxNmNmY2I4ZTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcXG4rKysgYi9kcml2ZXJzL3ZmaW8vY2R4L21haW4uY1xcbkBAIC0yNTQsMTAgKzI1NCwxMCBAQCBzdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcXG4gXFx0aWYgKGJhc2UgKyBzaXplIFxcdTAwM2UgcmVnaW9uLnNpemUpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4tXFx0dm1hLVxcdTAwM2V2bV9wZ29mZiA9IChyZWdpb24uYWRkciBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSArIHBnb2ZmO1xcbiBcXHR2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QpO1xcbiBcXG4tXFx0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cXHUwMDNldm1fc3RhcnQsIHZtYS1cXHUwMDNldm1fcGdvZmYsXFxuK1xcdHJldHVybiBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtXFx1MDAzZXZtX3N0YXJ0LFxcbitcXHRcXHRcXHRcXHQgIChyZWdpb24uYWRkciBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSArIHBnb2ZmLFxcbiBcXHRcXHRcXHRcXHQgIHNpemUsIHZtYS1cXHUwMDNldm1fcGFnZV9wcm90KTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6MjEuNzg2ODk5NjFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjEwNTkxNjA0MDM1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGM3MWY2ZmIyYzZhNmEwNWU2MmM3ZGQ0ZGJiYTRiODVjYWVmMWU2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTQ6MjE6MjAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vY2R4L21haW4uYyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG5pbmRleCBiMzFlZDRiZTdiZGMxLi41M2Q5MTZjZmNiOGU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcbisrKyBiL2RyaXZlcnMvdmZpby9jZHgvbWFpbi5jXG5AQCAtMjU0LDEwICsyNTQsMTAgQEAgc3RhdGljIGludCB2ZmlvX2NkeF9tbWFwX21taW8oc3RydWN0IHZmaW9fY2R4X3JlZ2lvbiByZWdpb24sXG4gXHRpZiAoYmFzZSArIHNpemUgXHUwMDNlIHJlZ2lvbi5zaXplKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbi1cdHZtYS1cdTAwM2V2bV9wZ29mZiA9IChyZWdpb24uYWRkciBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVCkgKyBwZ29mZjtcbiBcdHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QgPSBwZ3Byb3RfZGV2aWNlKHZtYS1cdTAwM2V2bV9wYWdlX3Byb3QpO1xuIFxuLVx0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cdTAwM2V2bV9zdGFydCwgdm1hLVx1MDAzZXZtX3Bnb2ZmLFxuK1x0cmV0dXJuIGlvX3JlbWFwX3Bmbl9yYW5nZSh2bWEsIHZtYS1cdTAwM2V2bV9zdGFydCxcbitcdFx0XHRcdCAgKHJlZ2lvbi5hZGRyIFx1MDAzZVx1MDAzZSBQQUdFX1NISUZUKSArIHBnb2ZmLFxuIFx0XHRcdFx0ICBzaXplLCB2bWEtXHUwMDNldm1fcGFnZV9wcm90KTtcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMToyMS43ODY5MDE2OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMTE4MjcyOTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV2YWx1YXRpbmcgYSBQb3RlbnRpYWwgU3l6a2FsbGVyIFBhdGNoIGZvciBWRklPL0NEWCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jYCwgYW5kIHRoZSBnb2FsIGlzIHRvIGV2YWx1YXRlIGl0cyBzdWl0YWJpbGl0eSBmb3Igc3l6a2FsbGVyIGZ1enppbmcuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQgKmlzKiBDRFgsIGFuZCBpcyBpdCBldmVuIGZ1enphYmxlP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQncyByZWFjaGFibGUgaW4gYSB0eXBpY2FsIHN5c3RlbSBvciBpZiBpdCdzIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUuIFRoYXQncyB0aGUgY3JpdGljYWwgZmlyc3Qgc3RlcC5cblxuTXkgcGxhbiBpcyB0byBkaXZlIGludG8gdGhlIGNvZGViYXNlIHVzaW5nIG15IHN0YW5kYXJkIHRvb2xzLCBwcm9iYWJseSBgZ2l0IGdyZXBgIGFuZCBzb21lIGZpbGUgcmVhZGluZywgdG8gcXVpY2tseSBnZXQgYSBsYXkgb2YgdGhlIGxhbmQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIENEWCBkcml2ZXIgYWN0dWFsbHkgKmRvZXMqIGFuZCBob3cgaXQncyBpbml0aWFsaXplZCBhbmQgdXNlZC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQgaXMgYW4gaW1wb3J0YW50IGJ1cyBhbmQgcGFydCBvZiB0aGUgbWFpbiBrZXJuZWwuXG5cbk5vdywgbG9va2luZyBhdCB0aGUgYWN0dWFsIHBhdGNoOiBpdCdzIHdpdGhpbiBgdmZpb19jZHhfbW1hcF9tbWlvYC4gSXQgbG9va3MgbGlrZSBpdCdzIGEgc21hbGwgY2hhbmdlIHRvIGhvdyBhIG1lbW9yeSByZWdpb24gaXMgbWFwcGVkLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGNhbGN1bGF0aW5nIHRoZSBwYWdlIG9mZnNldCBhbmQgYGlvX3JlbWFwX3Bmbl9yYW5nZWAuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgb3JpZ2luYWwgY29kZSB3b3JrcyBhbmQgaG93IHRoZSBtb2RpZmljYXRpb24gY2hhbmdlcyB0aGUgYmVoYXZpb3VyLiBNeSBmaXJzdCBwcmlvcml0eSBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlLCBzbyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgYnVzIGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYyLCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6MzEuOTA1MTk3MzQ5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3MTI2NDU4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiVkZJT19DRFhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL01ha2VmaWxlPTE3PW9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgKz0gZnNsLW1jL1xcbmRyaXZlcnMvdmZpby9NYWtlZmlsZToxODpvYmotJChDT05GSUdfVkZJT19DRFgpICs9IGNkeC9cXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy03LVxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZzo4OmNvbmZpZyBWRklPX0NEWFxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIENEWCBidXMgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL3ZmaW8vY2R4L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSArPSB2ZmlvLWNkeC5vXFxuZHJpdmVycy92ZmlvL2NkeC9NYWtlZmlsZS03LVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MjQ0PXN0YXRpYyBpbnQgdmZpb19jZHhfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2NkeF9yZWdpb24gcmVnaW9uLFxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjUwLVxcdHBnb2ZmID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDI2XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjUxOlxcdFxcdCgoMVUgXFx1MDAzY1xcdTAwM2MgKFZGSU9fQ0RYX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTI1Mi1cXHRiYXNlID0gcGdvZmYgXFx1MDAzY1xcdTAwM2MgUEFHRV9TSElGVDtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jPTI2ND1zdGF0aWMgaW50IHZmaW9fY2R4X21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYy0yNzEtXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM6MjcyOlxcdGluZGV4ID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDNlXFx1MDAzZSAoVkZJT19DRFhfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMjczLVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtNS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo2OiNpZm5kZWYgVkZJT19DRFhfUFJJVkFURV9IXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg6NzojZGVmaW5lIFZGSU9fQ0RYX1BSSVZBVEVfSFxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTgtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC0xMC1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDoxMTojZGVmaW5lIFZGSU9fQ0RYX09GRlNFVF9TSElGVCAgICA0MFxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oLTEyLVxcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oPTEzPXN0YXRpYyBpbmxpbmUgdTY0IHZmaW9fY2R4X2luZGV4X3RvX29mZnNldCh1MzIgaW5kZXgpXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTQte1xcbmRyaXZlcnMvdmZpby9jZHgvcHJpdmF0ZS5oOjE1OlxcdHJldHVybiAoKHU2NCkoaW5kZXgpIFxcdTAwM2NcXHUwMDNjIFZGSU9fQ0RYX09GRlNFVF9TSElGVCk7XFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmgtMTYtfVxcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9wcml2YXRlLmg9NTk9c3RhdGljIHZvaWQgdmZpb19jZHhfaXJxc19jbGVhbnVwKHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaC02My1cXG5kcml2ZXJzL3ZmaW8vY2R4L3ByaXZhdGUuaDo2NDojZW5kaWYgLyogVkZJT19DRFhfUFJJVkFURV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIxOjM0LjYxNzg1NDc1OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMzNzkzMTIyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFscmVhZHkgcHJldHR5IGZhbWlsaWFyIHdpdGgga2VybmVsIGRldmVsb3BtZW50IGFuZCBoYXJkd2FyZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDRFggQnVzIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGludG8gdGhpcyBmdXJ0aGVyLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoaXMgXCJDRFhcIiBidXMgYWN0dWFsbHkgKmlzKi4gVGhlIG5hbWVzIHN1Z2dlc3QgYSBjb25uZWN0aW9uLCBidXQgSSBjYW4ndCBhc3N1bWUuIE15IGZpcnN0IHN0b3Agc2hvdWxkIGJlIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gaXQg4oCTIGBkcml2ZXJzL3ZmaW8vY2R4L0tjb25maWdgIGFuZCBgZHJpdmVycy9jZHgvS2NvbmZpZ2AuIFRoZXNlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZXknbGwgdGVsbCBtZSBpZiBpdOKAmXMgYSBWRklPLXNwZWNpZmljIGJ1cywgYSBtb3JlIGdlbmVyYWwgQ0RYIGJ1cywgYW5kIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhbmQgaW50ZW5kZWQgdXNlcyBhcmUuIFRoYXQncyB0aGUgYmVzdCB3YXkgdG8gZ3Jhc3AgaXRzIHB1cnBvc2UgYW5kIGJlaGF2aW9yIHdpdGhpbiB0aGUga2VybmVsIGVjb3N5c3RlbS4gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgc2V0IG1lIHVwIHRvIGxvb2sgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNTQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTozNy45OTcxNzAwOTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBWRklPIENEWCBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXFxuICAgNjpcXHQjXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBWRklPX0NEWFxcbiAgIDk6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgQ0RYIGJ1cyBkZXZpY2VzXFxcIlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBDRFhfQlVTXFxuICAxMTpcXHRcXHRzZWxlY3QgRVZFTlRGRFxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBEcml2ZXIgdG8gZW5hYmxlIFZGSU8gc3VwcG9ydCBmb3IgdGhlIGRldmljZXMgb24gQ0RYIGJ1cy5cXG4gIDE0OlxcdFxcdCAgVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlIHVzZSBvZiBDRFggZGV2aWNlcyBwcmVzZW50IGluXFxuICAxNTpcXHRcXHQgIHRoZSBzeXN0ZW0gdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIxOjM3Ljk5NzI3NzUzN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI4MjYyMDU1MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIG9mIHRoZSBDRFggRHJpdmVycyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBnZXQgc3RhcnRlZCBvbiB0aGlzLi4uIExldCdzIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9jZHgvS2NvbmZpZ2AgZmlsZS4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQ0RYIGRyaXZlcnMuIEl0J3MgdGhlIHN0YW5kYXJkIHBsYWNlIHRvIHN0YXJ0LCByaWdodD8gSSdsbCBwcm9iYWJseSBiZSBhYmxlIHRvIGdsZWFuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb2R1bGVzLCBhbnkgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyBmcm9tIHRoZXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHdoaWNoIGRyaXZlcnMgYXJlIGJ1aWx0IGlzIGxhaWQgb3V0LiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBhdmFpbGFibGUgZmVhdHVyZXMgYW5kIGhvdyB0aGV5IGFyZSBjb250cm9sbGVkLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6NDg0NiwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6NDAuODIzNDg2MzQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0ODkxNDkyOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ0RYX0JVU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL01ha2VmaWxlPTE5ND1vYmotJChDT05GSUdfRFJNX0FDQ0VMKVxcdFxcdCs9IGFjY2VsL1xcbmRyaXZlcnMvTWFrZWZpbGU6MTk1Om9iai0kKENPTkZJR19DRFhfQlVTKVxcdFxcdCs9IGNkeC9cXG5kcml2ZXJzL01ha2VmaWxlLTE5Ni1vYmotJChDT05GSUdfRFBMTClcXHRcXHQrPSBkcGxsL1xcbi0tXFxuZHJpdmVycy9jZHgvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L0tjb25maWc6ODpjb25maWcgQ0RYX0JVU1xcbmRyaXZlcnMvY2R4L0tjb25maWctOS1cXHRib29sIFxcXCJDRFggQnVzIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTctXFxuZHJpdmVycy9jZHgvTWFrZWZpbGU6ODpjY2ZsYWdzLXkgKz0gLURERUZBVUxUX1NZTUJPTF9OQU1FU1BBQ0U9J1xcXCJDRFhfQlVTXFxcIidcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZS05LVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19DRFhfQlVTKSArPSBjZHgubyBjb250cm9sbGVyL1xcbmRyaXZlcnMvY2R4L01ha2VmaWxlLTExLVxcbmRyaXZlcnMvY2R4L01ha2VmaWxlPTEyPWlmZGVmIENPTkZJR19HRU5FUklDX01TSV9JUlFcXG5kcml2ZXJzL2NkeC9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfQ0RYX0JVUykgKz0gY2R4X21zaS5vXFxuZHJpdmVycy9jZHgvTWFrZWZpbGUtMTQtZW5kaWZcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTc1Nj1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzk1LVxcdGRldl9zZXRfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LCBcXFwiY2R4LSUwMng6JTAyeFxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk2OlxcdFxcdCAgICAgKChjZHgtXFx1MDAzZWlkIFxcdTAwM2NcXHUwMDNjIENEWF9DT05UUk9MTEVSX0lEX1NISUZUKSB8IChjZHhfZGV2LVxcdTAwM2VidXNfbnVtIFxcdTAwMjYgQ0RYX0JVU19OVU1fTUFTSykpLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTc5Ny1cXHRcXHQgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0pO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODQxLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NDI6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2RldmljZV9hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04NDMtXFxuZHJpdmVycy9jZHgvY2R4LmM9ODQ0PXN0cnVjdCBkZXZpY2UgKmNkeF9idXNfYWRkKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODYyLVxcdGRldl9zZXRfbmFtZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LCBcXFwiY2R4LSUwMnhcXFwiLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjg2MzpcXHRcXHQgICAgICgoY2R4LVxcdTAwM2VpZCBcXHUwMDNjXFx1MDAzYyBDRFhfQ09OVFJPTExFUl9JRF9TSElGVCkgfCAoYnVzX251bSBcXHUwMDI2IENEWF9CVVNfTlVNX01BU0spKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODY0LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtODg4LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo4ODk6RVhQT1JUX1NZTUJPTF9OU19HUEwoY2R4X2J1c19hZGQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OTAtXFxuZHJpdmVycy9jZHgvY2R4LmM9ODkxPWludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxMy19XFxuZHJpdmVycy9jZHgvY2R4LmM6OTE0OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTkxNj12b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy05MjgtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkyOTpFWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTMwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4X21zaS5jPTE2MD1zdHJ1Y3QgaXJxX2RvbWFpbiAqY2R4X21zaV9kb21haW5faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtMTkyLX1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM6MTkzOkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9tc2lfZG9tYWluX2luaXQsIFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZy03LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvS2NvbmZpZzo4OmlmIENEWF9CVVNcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWctOS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0yNTY9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoyNTc6TU9EVUxFX0lNUE9SVF9OUyhcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjQ3LS8qXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI0ODogKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI0OS0gKiBDRFggYnVzIGhvc3RzIGRldmljZXMgKGZ1bmN0aW9ucykgdGhhdCBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIENvbXBvc2FibGVcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNTYtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI1NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNcXHRcXHRcXHRcXHQweDFcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjU4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19NU0dTRVRcXHRcXHRcXHQweDFcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjU5LSN1bmRlZiBNQ19DTURfMHgxX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yNjItXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2MzovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX0lOIG1zZ3JlcXVlc3QgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19JTl9MRU5cXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI2NS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjY2Oi8qIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fQlVTRVNfT1VUX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjY4LS8qXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjcxLSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlRfT0ZTVFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjczOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfQlVTX0NPVU5UX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjc0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3Ni0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyNzc6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OC0gKiBFbnVtZXJhdGUgQ0RYIGJ1cyBkZXZpY2VzIG9uIGEgZ2l2ZW4gYnVzXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTI3OS0gKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MjgwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTXFx0XFx0XFx0XFx0MHgyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19NU0dTRVRcXHRcXHRcXHQweDJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjgyLSN1bmRlZiBNQ19DTURfMHgyX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI4NjovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU4gbXNncmVxdWVzdCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yODgtLypcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjg5LSAqIEJ1cyBudW1iZXIgdG8gZW51bWVyYXRlLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xLCBhcyByZXR1cm5lZCBieVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTA6ICogTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMjkxLSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDoyOTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfSU5fQlVTX09GU1RcXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVNfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTQtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NTovKiBNQ19DTURfQ0RYX0JVU19FTlVNX0RFVklDRVNfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjI5NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0yOTctLypcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMDEtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX09GU1RcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UX0xFTlxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA0LVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMwNi0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMDc6ICogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzA4LSAqIFJldHVybnMgZGV2aWNlIGlkZW50aWZpY2F0aW9uIGFuZCBNTUlPL01TSSByZXNvdXJjZSBkYXRhIGZvciBhIENEWCBkZXZpY2UuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzE4LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR1xcdFxcdFxcdFxcdFxcdDB4M1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19NU0dTRVRcXHRcXHRcXHRcXHRcXHQweDNcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzIxLSN1bmRlZiBNQ19DTURfMHgzX1BSSVZJTEVHRV9DVEdcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMjQtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNTovKiBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTiBtc2dyZXF1ZXN0ICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0xFTlxcdFxcdFxcdFxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzI3LS8qIERldmljZSBidXMgbnVtYmVyLCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMyODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX0lOX0JVU19PRlNUXFx0XFx0XFx0XFx0MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMjk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVNfTEVOXFx0XFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzAtLyogRGV2aWNlIG51bWJlciByZWxhdGl2ZSB0byB0aGUgYnVzLCBpbiByYW5nZSAwIHRvIERFVklDRV9DT1VOVC0xIGZvciB0aGF0IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0VfT0ZTVFxcdFxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzMyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fREVWSUNFX0xFTlxcdFxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzMzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozMzQ6LyogTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUIG1zZ3Jlc3BvbnNlICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9MRU5cXHRcXHRcXHRcXHQ4OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zMzYtLyogMTYtYml0IFZlbmRvciBpZGVudGlmaWVyLCBjb21wbGlhbnQgd2l0aCBQQ0ktU0lHIFZlbmRvcklEIGFzc2lnbm1lbnQuICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjMzNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WRU5ET1JfSURfT0ZTVFxcdFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzM4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1ZFTkRPUl9JRF9MRU5cXHRcXHRcXHQyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTMzOS0vKiAxNi1iaXQgRGV2aWNlIElEIGFzc2lnbmVkIGJ5IHRoZSB2ZW5kb3IgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzQwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRF9PRlNUXFx0XFx0XFx0MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0lEX0xFTlxcdFxcdFxcdDJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQyLS8qXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtMzQ1LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX1ZFTkRPUl9JRF9PRlNUXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNDc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfU1VCU1lTX1ZFTkRPUl9JRF9MRU5cXHRcXHQyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM0OC0vKlxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM1MS0gKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzUyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19ERVZJQ0VfSURfT0ZTVFxcdFxcdDZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzUzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19ERVZJQ0VfSURfTEVOXFx0XFx0MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNTQtLyogMjQtYml0IERldmljZSBDbGFzcyBjb2RlLCBjb21wbGlhbnQgd2l0aCBQQ0ktU0lHIERldmljZSBDbGFzcyBjb2RlcyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTX09GU1RcXHRcXHRcXHQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfQ0xBU1NfTEVOXFx0XFx0XFx0M1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNTctLyogOC1iaXQgdmVuZG9yLWFzc2lnbmVkIHJldmlzaW9uICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fT0ZTVFxcdFxcdDExXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM1OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT05fTEVOXFx0XFx0MVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjAtLyogUmVzZXJ2ZWQgKGFsaWdubWVudCkgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzYxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFU0VSVkVEX09GU1RcXHRcXHRcXHQxMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfUkVTRVJWRURfTEVOXFx0XFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zNjMtLyogTU1JTyByZWdpb24gMCBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX09GU1RcXHRcXHQxNlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNjY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfTE9fT0ZTVFxcdFxcdDE2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM2ODojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9MT19MQk5cXHRcXHQxMjhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzY5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzcwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9CQVNFX0hJX09GU1RcXHRcXHQyMFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0VfSElfTEJOXFx0XFx0MTYwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3MzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM3NC0vKiBNTUlPIHJlZ2lvbiAwIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM3NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9PRlNUXFx0XFx0MjRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzc3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0xPX09GU1RcXHRcXHQyNFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozNzk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfTE9fTEJOXFx0XFx0MTkyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjBfU0laRV9ISV9PRlNUXFx0XFx0MjhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzgzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFX0hJX0xCTlxcdFxcdDIyNFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC0zODUtLyogTU1JTyByZWdpb24gMSBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzg2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX09GU1RcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozODg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfTE9fT0ZTVFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM4OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5MDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9MT19MQk5cXHRcXHQyNTZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6MzkyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9CQVNFX0hJX09GU1RcXHRcXHQzNlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDozOTQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0VfSElfTEJOXFx0XFx0Mjg4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTM5Ni0vKiBNTUlPIHJlZ2lvbiAxIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjM5NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9PRlNUXFx0XFx0NDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6Mzk5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0xPX09GU1RcXHRcXHQ0MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfTE9fTEJOXFx0XFx0MzIwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQwMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjFfU0laRV9ISV9PRlNUXFx0XFx0NDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFX0hJX0xCTlxcdFxcdDM1MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MDctLyogTU1JTyByZWdpb24gMiBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDA4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX09GU1RcXHRcXHQ0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MDk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfTE9fT0ZTVFxcdFxcdDQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxMjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9MT19MQk5cXHRcXHQzODRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDEzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDE0OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFX0hJX09GU1RcXHRcXHQ1MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MTY6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0VfSElfTEJOXFx0XFx0NDE2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQxOC0vKiBNTUlPIHJlZ2lvbiAyIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQxOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9PRlNUXFx0XFx0NTZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDIxOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0xPX09GU1RcXHRcXHQ1NlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MjM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfTE9fTEJOXFx0XFx0NDQ4XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQyNTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRV9ISV9PRlNUXFx0XFx0NjBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDI3OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9TSVpFX0hJX0xCTlxcdFxcdDQ4MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mjg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00MjktLyogTU1JTyByZWdpb24gMyBiYXNlIGFkZHJlc3MgKGJ1cyBhZGRyZXNzKSwgMCBpZiB1bnVzZWQgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDMwOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX09GU1RcXHRcXHQ2NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTEVOXFx0XFx0OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0MzI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfTE9fT0ZTVFxcdFxcdDY0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzNDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9MT19MQk5cXHRcXHQ1MTJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0xPX1dJRFRIXFx0XFx0MzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDM2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFX0hJX09GU1RcXHRcXHQ2OFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzc6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Mzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0VfSElfTEJOXFx0XFx0NTQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQzOTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfQkFTRV9ISV9XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ0MC0vKiBNTUlPIHJlZ2lvbiAzIHNpemUsIDAgaWYgdW51c2VkICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9PRlNUXFx0XFx0NzJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xFTlxcdFxcdDhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQzOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0xPX09GU1RcXHRcXHQ3MlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDQ6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NDU6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfTE9fTEJOXFx0XFx0NTc2XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9MT19XSURUSFxcdFxcdDMyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ0NzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRV9ISV9PRlNUXFx0XFx0NzZcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ4OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDQ5OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19TSVpFX0hJX0xCTlxcdFxcdDYwOFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTA6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkVfSElfV0lEVEhcXHRcXHQzMlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NTEtLyogTVNJIHZlY3RvciBjb3VudCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX09GU1RcXHRcXHRcXHQ4MFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTM6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTVNJX0NPVU5UX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDU0LS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSAoU01NVSBTdHJlYW1JRCwgR0lDIElUUyBEZXZpY2VJRCkgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU1OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9PRlNUXFx0XFx0XFx0ODRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU2OiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRF9MRU5cXHRcXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ1Ny1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDU4Oi8qIE1DX0NNRF9DRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMiBtc2dyZXNwb25zZSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NTk6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOXFx0XFx0XFx0XFx0OTJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDYwLS8qIFJlcXVlc3RlciBJRCB1c2VkIGJ5IGRldmljZSBmb3IgR0lDIElUUyBEZXZpY2VJRCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0NjE6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfUkVRVUVTVEVSX0RFVklDRV9JRF9PRlNUXFx0ODhcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDYyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1YyX1JFUVVFU1RFUl9ERVZJQ0VfSURfTEVOXFx0XFx0NFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00NjMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDY1LS8qXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ2NjogKiBNQ19DTURfQ0RYX0JVU19ET1dOXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ2Ny0gKiBBc3NlcnRpbmcgcmVzZXQgb24gdGhlIENEWCBidXMgY2F1c2VzIGFsbCBkZXZpY2VzIG9uIHRoZSBidXMgdG8gYmUgcXVpZXNjZWQuXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDc3LSAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0Nzg6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOXFx0XFx0XFx0XFx0XFx0MHg0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ3OTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fTVNHU0VUXFx0XFx0XFx0MHg0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4MC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDgxOi8qIE1DX0NNRF9DRFhfQlVTX0RPV05fSU4gbXNncmVxdWVzdCAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0ODI6I2RlZmluZSBNQ19DTURfQ0RYX0JVU19ET1dOX0lOX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDgzLS8qIEJ1cyBudW1iZXIgdG8gcHV0IGluIHJlc2V0LCBpbiByYW5nZSAwIHRvIEJVU19DT1VOVC0xICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX09GU1RcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ4NTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fSU5fQlVTX0xFTlxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDg2LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00ODctLypcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NDg4OiAqIE1DX0NNRF9DRFhfQlVTX0RPV05fT1VUIG1zZ3Jlc3BvbnNlOiBUaGUgYnVzIGlzIHF1aWVzY2VkLCBubyBmdXJ0aGVyXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ4OS0gKiB1cHN0cmVhbSB0cmFmZmljIGZvciBkZXZpY2VzIG9uIHRoaXMgYnVzLlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC00OTAtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjQ5MTojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX0RPV05fT1VUX0xFTlxcdFxcdFxcdDBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDkyLVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTQ5NC0vKlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaDo0OTU6ICogTUNfQ01EX0NEWF9CVVNfVVBcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNDk2LSAqIEFmdGVyIGJ1cyByZXNldCBpcyBkZS1hc3NlcnRlZCwgZGV2aWNlcyBhcmUgaW4gYSBzdGF0ZSB3aGljaCBpcyBmdW5jdGlvbmFsbHlcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDUtICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQXFx0XFx0XFx0XFx0XFx0MHg1XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwNzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX01TR1NFVFxcdFxcdFxcdDB4NVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNfY2R4X3Bjb2wuaC01MDgtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUwOTovKiBNQ19DTURfQ0RYX0JVU19VUF9JTiBtc2dyZXF1ZXN0ICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMDojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0xFTlxcdFxcdFxcdDRcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmgtNTExLS8qIEJ1cyBudW1iZXIgdG8gdGFrZSBvdXQgb2YgcmVzZXQsIGluIHJhbmdlIDAgdG8gQlVTX0NPVU5ULTEgKi9cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTEyOiNkZWZpbmUgTUNfQ01EX0NEWF9CVVNfVVBfSU5fQlVTX09GU1RcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxMzojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX0lOX0JVU19MRU5cXHRcXHQ0XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jX2NkeF9wY29sLmg6NTE1Oi8qIE1DX0NNRF9DRFhfQlVTX1VQX09VVCBtc2dyZXNwb25zZTogVGhlIGJ1cyBjYW4gbm93IGJlIGVudW1lcmF0ZWQuICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oOjUxNjojZGVmaW5lIE1DX0NNRF9DRFhfQlVTX1VQX09VVF9MRU5cXHRcXHRcXHQwXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY19jZHhfcGNvbC5oLTUxNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xMD1pbnQgY2R4X21jZGlfZ2V0X251bV9idXNlcyhzdHJ1Y3QgY2R4X21jZGkgKmNkeClcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTEte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjpcXHRNQ0RJX0RFQ0xBUkVfQlVGKG91dGJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTMtXFx0c2l6ZV90IG91dGxlbjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTY6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFUywgTlVMTCwgMCxcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTctXFx0XFx0XFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXFx1MDAyNm91dGxlbik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjIxOlxcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9CVVNFU19PVVRfTEVOKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yMi1cXHRcXHRyZXR1cm4gLUVJTztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMjMtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjI0OlxcdHJldHVybiBNQ0RJX0RXT1JEKG91dGJ1ZiwgQ0RYX0JVU19FTlVNX0JVU0VTX09VVF9CVVNfQ09VTlQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0yNS19XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9Mjc9aW50IGNkeF9tY2RpX2dldF9udW1fZGV2cyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCwgaW50IGJ1c19udW0pXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTI4LXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6Mjk6XFx0TUNESV9ERUNMQVJFX0JVRihvdXRidWYsIE1DX0NNRF9DRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzA6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX0lOX0xFTik7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTMxLVxcdHNpemVfdCBvdXRsZW47XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzMtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjM0OlxcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0zNS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MzY6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTLCBpbmJ1Ziwgc2l6ZW9mKGluYnVmKSxcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMzctXFx0XFx0XFx0ICAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgXFx1MDAyNm91dGxlbik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjQxOlxcdGlmIChvdXRsZW4gIT0gTUNfQ01EX0NEWF9CVVNfRU5VTV9ERVZJQ0VTX09VVF9MRU4pXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTQyLVxcdFxcdHJldHVybiAtRUlPO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy00My1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NDQ6XFx0cmV0dXJuIE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0VOVU1fREVWSUNFU19PVVRfREVWSUNFX0NPVU5UKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNDUtfVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jPTQ3PWludCBjZHhfbWNkaV9nZXRfZGV2X2NvbmZpZyhzdHJ1Y3QgY2R4X21jZGkgKmNkeCxcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy01MC17XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjUxOlxcdE1DRElfREVDTEFSRV9CVUYob3V0YnVmLCBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NTI6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfSU5fTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNTMtXFx0c3RydWN0IHJlc291cmNlICpyZXMgPSBcXHUwMDI2ZGV2X3BhcmFtcy1cXHUwMDNlcmVzWzBdO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTU3LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1ODpcXHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo1OTpcXHRNQ0RJX1NFVF9EV09SRChpbmJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19JTl9ERVZJQ0UsIGRldl9udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02MC1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjE6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfR0VUX0RFVklDRV9DT05GSUcsIGluYnVmLCBzaXplb2YoaW5idWYpLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Mi1cXHRcXHRcXHQgICBvdXRidWYsIHNpemVvZihvdXRidWYpLCBcXHUwMDI2b3V0bGVuKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02NS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NjY6XFx0aWYgKG91dGxlbiAhPSBNQ19DTURfQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVjJfTEVOKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy02Ny1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03MS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6NzI6XFx0cmVxX2lkID0gTUNESV9EV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1JFUVVFU1RFUl9JRCk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTczLVxcdGRldl9wYXJhbXMtXFx1MDAzZXJlcV9pZCA9IHJlcV9pZDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy03NS1cXHRkZXZfcGFyYW1zLVxcdTAwM2Vtc2lfZGV2X2lkID0gTUNESV9EV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc2OlxcdFxcdFxcdFxcdFxcdCAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9WMl9SRVFVRVNURVJfREVWSUNFX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtNzctXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTc4LVxcdGRldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudCA9IDA7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjc5OlxcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX1NJWkUpICE9IDApIHtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODAtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MTpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy04Mi1cXHRcXHRyZXNbZGV2X3BhcmFtcy1cXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo4MzpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04wX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODQtXFx0XFx0XFx0XFx0ICAgTUNESV9RV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjg1OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMF9TSVpFKSAtIDE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTg2LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtODktXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjkwOlxcdGlmIChNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX1NJWkUpICE9IDApIHtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTEtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5MjpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy05My1cXHRcXHRyZXNbZGV2X3BhcmFtcy1cXHUwMDNlcmVzX2NvdW50XS5lbmQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzo5NDpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04xX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtOTUtXFx0XFx0XFx0XFx0ICAgTUNESV9RV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjk2OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMV9TSVpFKSAtIDE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTk3LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTAwLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDE6XFx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjJfU0laRSkgIT0gMCkge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMDItXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDM6XFx0XFx0XFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OMl9CQVNFKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA0LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmVuZCA9XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEwNTpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA2LVxcdFxcdFxcdFxcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMDc6XFx0XFx0XFx0XFx0XFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04yX1NJWkUpIC0gMTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTA4LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTExLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTI6XFx0aWYgKE1DRElfUVdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NTUlPX1JFR0lPTjNfU0laRSkgIT0gMCkge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMTMtXFx0XFx0cmVzW2Rldl9wYXJhbXMtXFx1MDAzZXJlc19jb3VudF0uc3RhcnQgPVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTQ6XFx0XFx0XFx0TUNESV9RV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX01NSU9fUkVHSU9OM19CQVNFKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE1LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmVuZCA9XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjExNjpcXHRcXHRcXHRNQ0RJX1FXT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX0JBU0UpICtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE3LVxcdFxcdFxcdFxcdCAgIE1DRElfUVdPUkQob3V0YnVmLFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMTg6XFx0XFx0XFx0XFx0XFx0ICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfTU1JT19SRUdJT04zX1NJWkUpIC0gMTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTE5LVxcdFxcdHJlc1tkZXZfcGFyYW1zLVxcdTAwM2VyZXNfY291bnRdLmZsYWdzID0gSU9SRVNPVVJDRV9NRU07XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTIyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMjM6XFx0ZGV2X3BhcmFtcy1cXHUwMDNldmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZiwgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfVkVORE9SX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI0OlxcdGRldl9wYXJhbXMtXFx1MDAzZWRldmljZSA9IE1DRElfV09SRChvdXRidWYsIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX0RFVklDRV9JRCk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTEyNS1cXHRkZXZfcGFyYW1zLVxcdTAwM2VzdWJzeXNfdmVuZG9yID0gTUNESV9XT1JEKG91dGJ1ZixcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTI2OlxcdFxcdFxcdFxcdFxcdCAgICAgIENEWF9CVVNfR0VUX0RFVklDRV9DT05GSUdfT1VUX1NVQlNZU19WRU5ET1JfSUQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMjctXFx0ZGV2X3BhcmFtcy1cXHUwMDNlc3Vic3lzX2RldmljZSA9IE1DRElfV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEyODpcXHRcXHRcXHRcXHRcXHQgICAgICBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9TVUJTWVNfREVWSUNFX0lEKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTI5LVxcdGRldl9wYXJhbXMtXFx1MDAzZWNsYXNzID0gTUNESV9EV09SRChvdXRidWYsXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjEzMDpcXHRcXHRcXHRcXHQgICAgICAgQ0RYX0JVU19HRVRfREVWSUNFX0NPTkZJR19PVVRfREVWSUNFX0NMQVNTKSBcXHUwMDI2IDB4RkZGRkZGO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzE6XFx0ZGV2X3BhcmFtcy1cXHUwMDNlcmV2aXNpb24gPSBNQ0RJX0JZVEUob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9ERVZJQ0VfUkVWSVNJT04pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzI6XFx0ZGV2X3BhcmFtcy1cXHUwMDNlbnVtX21zaSA9IE1DRElfRFdPUkQob3V0YnVmLCBDRFhfQlVTX0dFVF9ERVZJQ0VfQ09ORklHX09VVF9NU0lfQ09VTlQpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzMtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM9MTM3PWludCBjZHhfbWNkaV9idXNfZW5hYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xMzgte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxMzk6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfVVBfSU5fTEVOKTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTQwLVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0MS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmM6MTQyOlxcdE1DRElfU0VUX0RXT1JEKGluYnVmLCBDRFhfQlVTX1VQX0lOX0JVUywgYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jOjE0MzpcXHRyZXQgPSBjZHhfbWNkaV9ycGMoY2R4LCBNQ19DTURfQ0RYX0JVU19VUCwgaW5idWYsIHNpemVvZihpbmJ1ZiksXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE0NC1cXHRcXHRcXHQgICBOVUxMLCAwLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYz0xNDk9aW50IGNkeF9tY2RpX2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfbWNkaSAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTAte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTE6XFx0TUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0NEWF9CVVNfRE9XTl9JTl9MRU4pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYy0xNTItXFx0aW50IHJldDtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL21jZGlfZnVuY3Rpb25zLmMtMTUzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTQ6XFx0TUNESV9TRVRfRFdPUkQoaW5idWYsIENEWF9CVVNfRE9XTl9JTl9CVVMsIGJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvbWNkaV9mdW5jdGlvbnMuYzoxNTU6XFx0cmV0ID0gY2R4X21jZGlfcnBjKGNkeCwgTUNfQ01EX0NEWF9CVVNfRE9XTiwgaW5idWYsIHNpemVvZihpbmJ1ZiksXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9tY2RpX2Z1bmN0aW9ucy5jLTE1Ni1cXHRcXHRcXHQgICBOVUxMLCAwLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jPTE2MTU9dTMyIHI2MDBfZ3B1X2NoZWNrX3NvZnRfcmVzZXQoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3I2MDAuYy0xNjY3LVxcdGlmIChHXzAwMEU1MF9NQ0JfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWl9CVVNZKHRtcCkgfFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jOjE2Njg6XFx0ICAgIEdfMDAwRTUwX01DRFlfQlVTWSh0bXApIHwgR18wMDBFNTBfTUNEWF9CVVNZKHRtcCkgfFxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcjYwMC5jLTE2NjktXFx0ICAgIEdfMDAwRTUwX01DRFdfQlVTWSh0bXApKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oLTE4MzMtI2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFlfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDExKSBcXHUwMDI2IDEpXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oOjE4MzQ6I2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFhfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDEyKSBcXHUwMDI2IDEpXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yNjAwZC5oLTE4MzUtI2RlZmluZVxcdFxcdEdfMDAwRTUwX01DRFdfQlVTWSh4KVxcdFxcdFxcdCgoKHgpIFxcdTAwM2VcXHUwMDNlIDEzKSBcXHUwMDI2IDEpXFxuLS1cXG5kcml2ZXJzL2lvbW11L2lvbW11LmM9MTg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKiBjb25zdCBpb21tdV9idXNlc1tdID0ge1xcbi0tXFxuZHJpdmVycy9pb21tdS9pb21tdS5jLTE5OS0jZW5kaWZcXG5kcml2ZXJzL2lvbW11L2lvbW11LmM6MjAwOiNpZmRlZiBDT05GSUdfQ0RYX0JVU1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0yMDEtXFx0XFx1MDAyNmNkeF9idXNfdHlwZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZz04PWNvbmZpZyBWRklPX0NEWFxcbmRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIENEWCBidXMgZGV2aWNlc1xcXCJcXG5kcml2ZXJzL3ZmaW8vY2R4L0tjb25maWc6MTA6XFx0ZGVwZW5kcyBvbiBDRFhfQlVTXFxuZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnLTExLVxcdHNlbGVjdCBFVkVOVEZEXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0zNjE9TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJWRklPIGZvciBDRFggZGV2aWNlcyAtIFVzZXIgTGV2ZWwgbWV0YS1kcml2ZXJcXFwiKTtcXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozNjI6TU9EVUxFX0lNUE9SVF9OUyhcXFwiQ0RYX0JVU1xcXCIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTgtXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjk6I2lmbmRlZiBfQ0RYX0JVU19IX1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxMDojZGVmaW5lIF9DRFhfQlVTX0hfXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTExLVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTE4LSNkZWZpbmUgQ0RYX0NPTlRST0xMRVJfSURfU0hJRlQgNFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxOTojZGVmaW5lIENEWF9CVVNfTlVNX01BU0sgMHhGXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTI4MT1zdGF0aWMgaW5saW5lIHZvaWQgY2R4X2Rpc2FibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTI4Ni1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmg6Mjg3OiNlbmRpZiAvKiBfQ0RYX0JVU19IXyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo0My4zMTI2NTA4NjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNDc3MDE4NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkludmVzdGlnYXRpbmcgQ0RYIENvbnRyb2xsZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyBhcmUgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyBhcyBgY2R4X2NvbnRyb2xsZXJgIGluc3RhbmNlcy4gVGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIGlzIHRvIGxldmVyYWdlIG15IG9sZCBmcmllbmQsIGBncmVwYC4gSSdsbCBydW4gYSBzZWFyY2ggc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcmAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBsaXN0IG9mIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlYmFzZSB3aGVyZSB0aGlzIHJlZ2lzdHJhdGlvbiBpcyBoYXBwZW5pbmcuIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIHVuZGVyc3RhbmQgd2hpY2ggc3BlY2lmaWMgZHJpdmVycyBhcmUgbWFuYWdpbmcgdGhlc2UgY29udHJvbGxlcnMgYW5kIHdoYXQgdGhlaXIgcmVzcGVjdGl2ZSByb2xlcyBhcmUuIFRoaXMgZ2l2ZXMgbWUgYSBzdGFydGluZyBwb2ludCBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIGlmIG5lZWRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4MDMsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo0NS43ODk2NzU3MzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjYxNDAwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmM9ODg5PUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9idXNfYWRkLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtODkwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg5MTppbnQgY2R4X3JlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY2R4LmMtODkyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkxMy19XFxuZHJpdmVycy9jZHgvY2R4LmM6OTE0OkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4Lmg9MzE9c3RydWN0IGNkeF9kZXZfcGFyYW1zIHtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTQ5LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5oOjUwOiAqIGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyIC0gUmVnaXN0ZXIgYSBDRFggY29udHJvbGxlciBhbmQgaXRzIHBvcnRzXFxuZHJpdmVycy9jZHgvY2R4LmgtNTEtICpcXHRcXHRvbiB0aGUgQ0RYIGJ1cy5cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTU1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XFxuZHJpdmVycy9jZHgvY2R4LmgtNTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9NDY9dm9pZCBjZHhfcnBtc2dfcG9zdF9wcm9iZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00OC1cXHQvKiBSZWdpc3RlciBDRFggY29udHJvbGxlciB3aXRoIENEWCBidXMgZHJpdmVyICovXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ5OlxcdGlmIChjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihjZHgpKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01MC1cXHRcXHRkZXZfZXJyKGNkeC1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIENEWCBjb250cm9sbGVyXFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6NDguMDE1ODI4NTIzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxNjk5Nzg4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuY2AgZmlsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbmFsaXR5IHRoYXQgZmlsZSBpcyByZXNwb25zaWJsZSBmb3IgYW5kLCBtb3JlIHNwZWNpZmljYWxseSwgd2hhdCB0aGUgYGNkeGAgY29udHJvbGxlciBpcyBkb2luZy4gQSBnb29kIGZpcnN0IHN0ZXAgd291bGQgYmUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSByZWdpc3RlciBpbml0aWFsaXphdGlvbiBhbmQgdXNhZ2UuIEknbGwgbmVlZCB0byBsb2NhdGUgd2hlcmUgdGhpcyBmaWxlIGlzIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBsYXJnZXIgc3lzdGVtLiBUaW1lIHRvIGZpcmUgdXAgYGdyZXBgIHdpdGhpbiB0aGUgYGRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvYCBkaXJlY3RvcnkgYW5kIHNlZSB3aGF0IHBvcHMgdXAsIHNlYXJjaGluZyBmb3IgbWVudGlvbnMgb2YgdGhlIGBjZHhfY29udHJvbGxlci5jYCBmaWxlLiBIb3BlZnVsbHksIHRoaXMgd2lsbCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBvciBtb2R1bGUgcmVnaXN0cmF0aW9uIHBvaW50cyBhbmQgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGludGVncmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQ2MiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIxOjUwLjE4NTgxMjA4MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE1MDMzMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2R4X2NvbnRyb2xsZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9jZHhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmMtNzgtLyogSURBIGZvciBDRFggY29udHJvbGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBDRFggYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6Nzk6c3RhdGljIERFRklORV9JREEoY2R4X2NvbnRyb2xsZXJfaWRhKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04MC0vKiBMb2NrIHRvIHByb3RlY3QgY29udHJvbGxlciBvcHMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MTpzdGF0aWMgREVGSU5FX01VVEVYKGNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgyLS8qIERlYnVnZnMgZGlyIGZvciBjZHggYnVzICovXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz05NT1pbnQgY2R4X2Rldl9yZXNldChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy05Ny1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy05OS1cXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZyA9IHswfTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTE0Nj1zdGF0aWMgaW50IGNkeF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNDktXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTUwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTIyMz1pbnQgY2R4X3NldF9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjI0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMjU6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjI2LVxcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MjM5PWludCBjZHhfY2xlYXJfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTI0MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI0Mi1cXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTMwMj1zdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMDUtXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA2OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cXHRpbnQgZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0zMzc9c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM0MC1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzozNDE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9MzQ5PXN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzUyLVxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTQtXFx0dTMyIGlucHV0X2lkID0gY2R4X2Rldi1cXHUwMDNlcmVxX2lkO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDU5LVxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ2MDpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy00NjEtXFx0Ym9vbCBlbmFibGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz01NzU9c3RhdGljIHNzaXplX3QgcmVzY2FuX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTc3LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Nzg6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTc5LVxcdHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNTg3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU4ODpcXHRndWFyZChtdXRleCkoXFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU4OS1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTc1Nj1pbnQgY2R4X2RldmljZV9hZGQoc3RydWN0IGNkeF9kZXZfcGFyYW1zICpkZXZfcGFyYW1zKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTc1Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NzU4OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gZGV2X3BhcmFtcy1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc1OS1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTg0Mj1FWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfZGV2aWNlX2FkZCwgXFxcIkNEWF9CVVNfQ09OVFJPTExFUlxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg0My1cXG5kcml2ZXJzL2NkeC9jZHguYzo4NDQ6c3RydWN0IGRldmljZSAqY2R4X2J1c19hZGQoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgsIHU4IGJ1c19udW0pXFxuZHJpdmVycy9jZHgvY2R4LmMtODQ1LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTg4OT1FWFBPUlRfU1lNQk9MX05TX0dQTChjZHhfYnVzX2FkZCwgXFxcIkNEWF9CVVNfQ09OVFJPTExFUlxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg5MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo4OTE6aW50IGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTg5Mi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy04OTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6ODk1OlxcdHJldCA9IGlkYV9hbGxvY19yYW5nZShcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfaWRhLCAwLCAgTUFYX0NEWF9DT05UUk9MTEVSUyAtIDEsIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg5Ni1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtOTAyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkwMzpcXHRtdXRleF9sb2NrKFxcdTAwMjZjZHhfY29udHJvbGxlcl9sb2NrKTtcXG5kcml2ZXJzL2NkeC9jZHguYy05MDQtXFx0Y2R4LVxcdTAwM2VpZCA9IHJldDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkwOS1cXHRjZHgtXFx1MDAzZWNvbnRyb2xsZXJfcmVnaXN0ZXJlZCA9IHRydWU7XFxuZHJpdmVycy9jZHgvY2R4LmM6OTEwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTExLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9OTE0PUVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9yZWdpc3Rlcl9jb250cm9sbGVyLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTE1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkxNjp2b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY2R4LmMtOTE3LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTkyMC1cXG5kcml2ZXJzL2NkeC9jZHguYzo5MjE6XFx0bXV0ZXhfbG9jayhcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTIyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtOTI0LVxcdGRldmljZV9mb3JfZWFjaF9jaGlsZChjZHgtXFx1MDAzZWRldiwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYzo5MjU6XFx0aWRhX2ZyZWUoXFx1MDAyNmNkeF9jb250cm9sbGVyX2lkYSwgY2R4LVxcdTAwM2VpZCk7XFxuZHJpdmVycy9jZHgvY2R4LmMtOTI2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjkyNzpcXHRtdXRleF91bmxvY2soXFx1MDAyNmNkeF9jb250cm9sbGVyX2xvY2spO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTkyOC19XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaD0zMT1zdHJ1Y3QgY2R4X2Rldl9wYXJhbXMge1xcbmRyaXZlcnMvY2R4L2NkeC5oOjMyOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5oLTMzLVxcdHN0cnVjdCBkZXZpY2UgKnBhcmVudDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTU1LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5oOjU2OmludCBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcihzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCk7XFxuZHJpdmVycy9jZHgvY2R4LmgtNTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC02MS0gKi9cXG5kcml2ZXJzL2NkeC9jZHguaDo2Mjp2b2lkIGNkeF91bnJlZ2lzdGVyX2NvbnRyb2xsZXIoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbmRyaXZlcnMvY2R4L2NkeC5oLTYzLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4Lmg9NzM9aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcyk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguaC04My0gKi9cXG5kcml2ZXJzL2NkeC9jZHguaDo4NDpzdHJ1Y3QgZGV2aWNlICpjZHhfYnVzX2FkZChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCwgdTggYnVzX251bSk7XFxuZHJpdmVycy9jZHgvY2R4LmgtODUtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9Mzk9c3RhdGljIHZvaWQgY2R4X21zaV93cml0ZV9pcnFfdW5sb2NrKHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNDItXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKG1zaV9kZXNjLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo0MzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtNDQtXFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmM9Njg9aW50IGNkeF9lbmFibGVfbXNpKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy02OS17XFxuZHJpdmVycy9jZHgvY2R4X21zaS5jOjcwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYy03MS1cXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYz04ND12b2lkIGNkeF9kaXNhYmxlX21zaShzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldilcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtODUte1xcbmRyaXZlcnMvY2R4L2NkeF9tc2kuYzo4NjpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHhfbXNpLmMtODctXFx0c3RydWN0IGNkeF9kZXZpY2VfY29uZmlnIGRldl9jb25maWc7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL01ha2VmaWxlPTg9b2JqLSQoQ09ORklHX0NEWF9DT05UUk9MTEVSKSArPSBjZHgtY29udHJvbGxlci5vXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9NYWtlZmlsZTo5OmNkeC1jb250cm9sbGVyLW9ianMgOj0gY2R4X2NvbnRyb2xsZXIubyBjZHhfcnBtc2cubyBtY2RpLm8gbWNkaV9mdW5jdGlvbnMub1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTEyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxMzojaW5jbHVkZSBcXFwiY2R4X2NvbnRyb2xsZXIuaFxcXCJcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMTQtI2luY2x1ZGUgXFxcIi4uL2NkeC5oXFxcIlxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTMxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY2R4X21jZGlfb3BzIG1jZGlfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTM1LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzozNjpzdGF0aWMgaW50IGNkeF9idXNfZW5hYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0zNy17XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDAtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQxOnN0YXRpYyBpbnQgY2R4X2J1c19kaXNhYmxlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LCB1OCBidXNfbnVtKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy00Mi17XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNDUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jOjQ2OnZvaWQgY2R4X3JwbXNnX3Bvc3RfcHJvYmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTQ3LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy01Mi1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6NTM6dm9pZCBjZHhfcnBtc2dfcHJlX3JlbW92ZShzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeClcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtNTQte1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTU4LVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo1OTpzdGF0aWMgaW50IGNkeF9jb25maWd1cmVfZGV2aWNlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4LFxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy02MC1cXHRcXHRcXHRcXHR1OCBidXNfbnVtLCB1OCBkZXZfbnVtLFxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTkyLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzo5MzpzdGF0aWMgaW50IGNkeF9zY2FuX2RldmljZXMoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTk0LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYz0xNjQ9c3RhdGljIGludCB4bG54X2NkeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNjUte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNjY6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHg7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE2Ny1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jPTIyMj1zdGF0aWMgdm9pZCB4bG54X2NkeF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmMtMjIzLXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM6MjI0OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIyNS1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpID0gY2R4LVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5oLTEzLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaDoxNDp2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmgtMTUtXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5oOjE2OnZvaWQgY2R4X3JwbXNnX3ByZV9yZW1vdmUoc3RydWN0IGNkeF9jb250cm9sbGVyICpjZHgpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuaC0xNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUtI2luY2x1ZGUgXFxcIi4uL2NkeC5oXFxcIlxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTY6I2luY2x1ZGUgXFxcImNkeF9jb250cm9sbGVyLmhcXFwiXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNy0jaW5jbHVkZSBcXFwibWNkaV9mdW5jdGlvbnMuaFxcXCJcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9NDY9c3RhdGljIGludCBjZHhfYXR0YWNoX3RvX3Jwcm9jKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTQ4LVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqcjVfY29yZV9ub2RlO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6NDk6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTUwLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTg1PXN0YXRpYyB2b2lkIGNkeF9kZXRhY2hfdG9fcjUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTg2LXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjg3OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy04OC1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYz05Nz1zdGF0aWMgaW50IGNkeF9ycG1zZ19jYihzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldiwgdm9pZCAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtOTkte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTAwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNnJwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTAxLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTExPXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19wb3N0X3Byb2JlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTEyLXtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjExMzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeF9jO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTE0LVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jPTEyMT1zdGF0aWMgaW50IGNkeF9ycG1zZ19wcm9iZShzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTIzLVxcdHN0cnVjdCBycG1zZ19jaGFubmVsX2luZm8gY2hpbmZvID0gezB9O1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTI0OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2M7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjUtXFx0c3RydWN0IGNkeF9tY2RpICpjZHhfbWNkaTtcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTEyNi1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jOjEyNzpcXHRjZHhfYyA9IChzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKiljZHhfcnBtc2dfaWRfdGFibGVbMF0uZHJpdmVyX2RhdGE7XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xMjgtXFx0Y2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTQ5PXN0YXRpYyB2b2lkIGNkeF9ycG1zZ19yZW1vdmUoc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYpXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYy0xNTAte1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM6MTUxOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4X2MgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNnJwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmMtMTUyLVxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHhfYy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X3JwbXNnLmM9MTY5PWludCBjZHhfc2V0dXBfcnBtc2coc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3MC17XFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfcnBtc2cuYzoxNzE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHhfYztcXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9ycG1zZy5jLTE3Mi1cXHRzdHJ1Y3QgY2R4X21jZGkgKmNkeF9tY2RpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo1MC4yMzczMjI2NjlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzE3NjA2Mjc0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDRFggRGVlcCBEaXZlKipcblxuT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgaGVyZS4gQ0RYLi4uIHJpZ2h0LiBDb21wb3NhYmxlIERNQSBzdWJzeXN0ZW0gYnVzLiBUaGF0IHJpbmdzIGEgYmVsbCDigJMgZGVmaW5pdGVseSBpbiB0aGUgQU1EL1hpbGlueCBGUEdBL1NvQyBlY29zeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgdGhhdCBjcnVjaWFsIGxpbmsgYmV0d2VlbiBWZXJzYWwgQUNBUC9GUEdBIGRldmljZXMgYW5kIHRoZSBSNSBjb3JlLCByZWx5aW5nIG9uIG1lY2hhbmlzbXMgbGlrZSBycG1zZy9yZW1vdGVwcm9jLiBJJ20gdGhpbmtpbmcgb2YgY29tbXVuaWNhdGlvbiB2aWEgcGxhdGZvcm0gZGV2aWNlcyBsaWtlIGB4bG54LHZlcnNhbC1uZXQtY2R4YCBvciByZWxhdGVkIGRldmljZXMuXG5cblRpbWUgdG8gY29uZmlybSBteSBpbml0aWFsIGh5cG90aGVzaXMuIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSBub3cuIEknbGwgc3RhcnQgd2l0aCB0aG9zZSBgS2NvbmZpZ2AgZmlsZXMg4oCTIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL0tjb25maWdgIGFuZCBgZHJpdmVycy9jZHgvS2NvbmZpZ2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgZXhhY3RseSB3aGF0IGNvbXBvbmVudHMgYXJlIGludm9sdmVkIGFuZCBob3cgdGhpcyBzeXN0ZW0gaXMgYXJjaGl0ZWN0ZWQuIFRoYXQgaXMgd2hlcmUgdGhlIGtleSBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo1My40MTMzODk2NDNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk4NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgQ0RYIGJ1cyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHQjIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXFxuICAgNjpcXHQjXFxuICAgNzpcXHRcXG4gICA4OlxcdGNvbmZpZyBDRFhfQlVTXFxuICAgOTpcXHRcXHRib29sIFxcXCJDRFggQnVzIGRyaXZlclxcXCJcXG4gIDEwOlxcdFxcdGRlcGVuZHMgb24gT0YgXFx1MDAyNlxcdTAwMjYgQVJNNjQgfHwgQ09NUElMRV9URVNUXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgIERyaXZlciB0byBlbmFibGUgQ29tcG9zYWJsZSBETUEgVHJhbnNmZXIoQ0RYKSBCdXMuIENEWCBidXNcXG4gIDEzOlxcdFxcdCAgZXhwb3NlcyBGYWJyaWMgZGV2aWNlcyB3aGljaCB1c2VzIGNvbXBvc2FibGUgRE1BIElQIHRvIHRoZVxcbiAgMTQ6XFx0XFx0ICBBUFUuIENEWCBidXMgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIHNjYW5uaW5nIGFuZCBwcm9iaW5nXFxuICAxNTpcXHRcXHQgIG9mIENEWCBkZXZpY2VzLiBDRFggZGV2aWNlcyBhcmUgbWVtb3J5IG1hcHBlZCBvbiBzeXN0ZW0gYnVzXFxuICAxNjpcXHRcXHQgIGZvciBlbWJlZGRlZCBDUFVzLiBDRFggYnVzIHVzZXMgQ0RYIGNvbnRyb2xsZXIgYW5kIGZpcm13YXJlXFxuICAxNzpcXHRcXHQgIHRvIHNjYW4gdGhlc2UgQ0RYIGRldmljZXMuXFxuICAxODpcXHRcXG4gIDE5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo1My40MTM0NjE5NzNaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzMzNzc4NzMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ0RYX0JVUyBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYENEWF9CVVNgIGNvbmZpZ3VyYXRpb24uIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXMgdGhhdCBgZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgQVJNNjQgfHwgQ09NUElMRV9URVNUYCBkaXJlY3RpdmUuIFRoYXQncyBjcnVjaWFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGl0IHJlcXVpcmluZyBlaXRoZXIgdGhlIHByZXNlbmNlIG9mIHRoZSBEZXZpY2UgVHJlZSwgYmVpbmcgb24gYW4gQVJNNjQgYXJjaGl0ZWN0dXJlLCBvciB0aGUgYENPTVBJTEVfVEVTVGAgb3B0aW9uIGJlaW5nIGFjdGl2ZS4gRWFjaCBvZiB0aGVzZSBjb25kaXRpb25zIGNoYW5nZXMgdGhlIGNvbnRleHQuIFxuXG5UaGVuLCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyBvZiBgQ0RYX0JVU2AsIEkgc2hvdWxkIHJlYWxseSBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2AuIEl0IGlzIGxpa2VseSB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIGNsZWFybHkgbGFpZCBvdXQgdGhlcmUsIHdoaWNoIEkgY2FuIHVzZSB0byBpbmZlciB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MzE0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMTo1Ni43NTEyNjA4NDVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIENEWCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChDKSAyMDIyLTIwMjMsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy5cXG4gICA2OlxcdCNcXG4gICA3OlxcdFxcbiAgIDg6XFx0aWYgQ0RYX0JVU1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjb25maWcgQ0RYX0NPTlRST0xMRVJcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJDRFggYnVzIGNvbnRyb2xsZXJcXFwiXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG4gIDEzOlxcdFxcdHNlbGVjdCBSRU1PVEVQUk9DXFxuICAxNDpcXHRcXHRzZWxlY3QgUlBNU0dcXG4gIDE1OlxcdFxcdGhlbHBcXG4gIDE2OlxcdFxcdCAgQ0RYIGNvbnRyb2xsZXIgZHJpdmVzIHRoZSBDRFggYnVzLiBJdCBpbnRlcmFjdHMgd2l0aFxcbiAgMTc6XFx0XFx0ICBmaXJtd2FyZSB0byBnZXQgdGhlIGhhcmR3YXJlIGRldmljZXMgYW5kIHJlZ2lzdGVycyB3aXRoXFxuICAxODpcXHRcXHQgIHRoZSBDRFggYnVzLiBTYXkgWSB0byBlbmFibGUgdGhlIENEWCBoYXJkd2FyZSBkcml2ZXIuXFxuICAxOTpcXHRcXG4gIDIwOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDIxOlxcdFxcbiAgMjI6XFx0ZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjE6NTYuNzUxMzU2NDU1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU5MTk2NTEwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDRFggRGV2aWNlIEludGVncmF0aW9uKipcblxuT2theSwgc28gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgZGVmaW5pdGVseSBgYW1kNjRgLCBvciB4ODZfNjQsIHdoaWNoIGlzIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhpcyBgQ0RYX0JVU2AgZGVwZW5kZW5jeS4gSXQgc2VlbXMgbGlrZSBpdCdzIHRpZWQgdG8gYE9GIFx1MDAyNlx1MDAyNiBBUk02NCB8fCBDT01QSUxFX1RFU1RgLiBUaGF0J3MgaW50ZXJlc3RpbmcuIFRoZSBxdWVzdGlvbiBpcywgY2FuIGEgQ0RYIGRldmljZSAqZXZlciogcmVhbGlzdGljYWxseSBiZSByZWdpc3RlcmVkIG9yIGV2ZW4gY3JlYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvbiBgYW1kNjRgLCBvciBhbnkgY29tbW9uIFZNLCBldmVuIGlmIGBDT05GSUdfQ09NUElMRV9URVNUYCBpcyBlbmFibGVkPyBUaGF0J3MgYSBrZXkgcXVlc3Rpb24gaGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByYWN0aWNhbGl0aWVzLlxuXG5NeSBtYWluIHBvaW50IG9mIGNvbmZ1c2lvbiBzdGVtcyBmcm9tIG5vdCBrbm93aW5nICpob3cqIGEgQ0RYIGRldmljZSBpcyBjcmVhdGVkIHRvIGJlZ2luIHdpdGguIFdoYXQncyB0aGUgdHJpZ2dlcmluZyBtZWNoYW5pc20/IExldCBtZSBkcmlsbCBkb3duIGFuZCBleGFtaW5lIHRoZSBgY2R4X2RldmljZV9hZGRgIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIGNhbGwgc2l0ZXMgYW5kIHVuZGVyc3RhbmQgYWxsIHRoZSB3YXlzIGRldmljZXMgYXJlIGFjdHVhbGx5IGFkZGVkIHRvIHRoZSBDRFggYnVzLiBUaGF0IHdpbGwgaWxsdW1pbmF0ZSB0aGUgd2hvbGUgcHJvY2Vzcy4gSSdsbCBmb2N1cyBvbiBgY2R4X2RldmljZV9hZGRgIGFuZCBldmVyeSBzaW5nbGUgY2FsbGVyIG9mIHRoYXQgZnVuY3Rpb24uIFRoYXQncyB0aGUgY29yZSBvZiB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODA4LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MDIuNjcxMDEzNjY2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzQzNTg1OTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeF9kZXZpY2VfYWRkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY2R4L2NkeC5jPTcyNz1zdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03NTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NzU2OmludCBjZHhfZGV2aWNlX2FkZChzdHJ1Y3QgY2R4X2Rldl9wYXJhbXMgKmRldl9wYXJhbXMpXFxuZHJpdmVycy9jZHgvY2R4LmMtNzU3LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTg0MS19XFxuZHJpdmVycy9jZHgvY2R4LmM6ODQyOkVYUE9SVF9TWU1CT0xfTlNfR1BMKGNkeF9kZXZpY2VfYWRkLCBcXFwiQ0RYX0JVU19DT05UUk9MTEVSXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtODQzLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4Lmg9NjI9dm9pZCBjZHhfdW5yZWdpc3Rlcl9jb250cm9sbGVyKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5oLTY0LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5oOjY1OiAqIGNkeF9kZXZpY2VfYWRkIC0gQWRkIGEgQ0RYIGRldmljZS4gVGhpcyBmdW5jdGlvbiBhZGRzIGEgQ0RYIGRldmljZVxcbmRyaXZlcnMvY2R4L2NkeC5oLTY2LSAqXFx0XFx0b24gdGhlIENEWCBidXMgYXMgcGVyIHRoZSBkZXZpY2UgcGFyYW1ldGVycyBwcm92aWRlZFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmgtNzItICovXFxuZHJpdmVycy9jZHgvY2R4Lmg6NzM6aW50IGNkeF9kZXZpY2VfYWRkKHN0cnVjdCBjZHhfZGV2X3BhcmFtcyAqZGV2X3BhcmFtcyk7XFxuZHJpdmVycy9jZHgvY2R4LmgtNzQtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9OTM9c3RhdGljIGludCBjZHhfc2Nhbl9kZXZpY2VzKHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4KVxcbi0tXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTE0MS1cXHRcXHRcXHQvKiBBZGQgdGhlIGRldmljZSB0byB0aGUgY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoxNDI6XFx0XFx0XFx0cmV0ID0gY2R4X2RldmljZV9hZGQoXFx1MDAyNmRldl9wYXJhbXMpO1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYy0xNDMtXFx0XFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMjowNS4wMTQ2MTIwNzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDc3Mzk0MTM2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aW9uIGludG8gY2R4X2RldmljZV9hZGQqKlxuXG5Pa2F5LCBzbyBgY2R4X2RldmljZV9hZGRgIOKAkyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzICpvbmx5KiBjYWxsZWQgYnkgYGNkeF9zY2FuX2RldmljZXNgLCBhbmQgdGhhdCdzIGZvdW5kIHdpdGhpbiBgZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jYC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgcmlnaHQ/IFRvIHJlYWxseSBncmFzcCB3aGF0J3MgaGFwcGVuaW5nLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBjZHhfY29udHJvbGxlcmAgaXMgcHJvYmVkIGluIHRoZSBmaXJzdCBwbGFjZS4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHQgZm9yIHdoZW4gYW5kIHdoeSBgY2R4X2RldmljZV9hZGRgIGdldHMgY2FsbGVkLiBTbywgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGRpdmluZyBpbnRvIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgIGFuZCBzZWUgd2hhdCB0aGUgcHJvYmluZyBzZXR1cCBsb29rcyBsaWtlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODcxMCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjA5Ljc4ODU1ODY1OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ3OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjA6XFx0XFx0LnNjYW5cXHRcXHQ9IGNkeF9zY2FuX2RldmljZXMsXFxuIDE2MTpcXHRcXHQuZGV2X2NvbmZpZ3VyZVxcdD0gY2R4X2NvbmZpZ3VyZV9kZXZpY2UsXFxuIDE2MjpcXHR9O1xcbiAxNjM6XFx0XFxuIDE2NDpcXHRzdGF0aWMgaW50IHhsbnhfY2R4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuIDE2NTpcXHR7XFxuIDE2NjpcXHRcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcXG4gMTY3OlxcdFxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGk7XFxuIDE2ODpcXHRcXHRpbnQgcmV0O1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRjZHhfbWNkaSA9IGt6YWxsb2Nfb2JqKCpjZHhfbWNkaSk7XFxuIDE3MTpcXHRcXHRpZiAoIWNkeF9tY2RpKVxcbiAxNzI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE3MzpcXHRcXG4gMTc0OlxcdFxcdC8qIFN0b3JlIHRoZSBNQ0RJIG9wcyAqL1xcbiAxNzU6XFx0XFx0Y2R4X21jZGktXFx1MDAzZW1jZGlfb3BzID0gXFx1MDAyNm1jZGlfb3BzO1xcbiAxNzY6XFx0XFx0LyogTUNESSBGVzogSW5pdGlhbGl6ZSB0aGUgRlcgcGF0aCAqL1xcbiAxNzc6XFx0XFx0cmV0ID0gY2R4X21jZGlfaW5pdChjZHhfbWNkaSk7XFxuIDE3ODpcXHRcXHRpZiAocmV0KSB7XFxuIDE3OTpcXHRcXHRcXHRkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJldCwgXFxcIk1DREkgSW5pdGlhbGl6YXRpb24gZmFpbGVkXFxcXG5cXFwiKTtcXG4gMTgwOlxcdFxcdFxcdGdvdG8gbWNkaV9pbml0X2ZhaWw7XFxuIDE4MTpcXHRcXHR9XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdGNkeCA9IGt6YWxsb2Nfb2JqKCpjZHgpO1xcbiAxODQ6XFx0XFx0aWYgKCFjZHgpIHtcXG4gMTg1OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuIDE4NjpcXHRcXHRcXHRnb3RvIGNkeF9hbGxvY19mYWlsO1xcbiAxODc6XFx0XFx0fVxcbiAxODg6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgY2R4KTtcXG4gMTg5OlxcdFxcbiAxOTA6XFx0XFx0Y2R4LVxcdTAwM2VkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiAxOTE6XFx0XFx0Y2R4LVxcdTAwM2Vwcml2ID0gY2R4X21jZGk7XFxuIDE5MjpcXHRcXHRjZHgtXFx1MDAzZW9wcyA9IFxcdTAwMjZjZHhfb3BzO1xcbiAxOTM6XFx0XFxuIDE5NDpcXHRcXHQvKiBDcmVhdGUgTVNJIGRvbWFpbiAqL1xcbiAxOTU6XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0dFTkVSSUNfTVNJX0lSUSkpXFxuIDE5NjpcXHRcXHRcXHRjZHgtXFx1MDAzZW1zaV9kb21haW4gPSBjZHhfbXNpX2RvbWFpbl9pbml0KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxOTc6XFx0XFx0aWYgKCFjZHgtXFx1MDAzZW1zaV9kb21haW4pIHtcXG4gMTk4OlxcdFxcdFxcdHJldCA9IGRldl9lcnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgLUVOT0RFViwgXFxcImNkeF9tc2lfZG9tYWluX2luaXQoKSBmYWlsZWRcXFwiKTtcXG4gMTk5OlxcdFxcdFxcdGdvdG8gY2R4X21zaV9mYWlsO1xcbiAyMDA6XFx0XFx0fVxcbiAyMDE6XFx0XFxuIDIwMjpcXHRcXHRyZXQgPSBjZHhfc2V0dXBfcnBtc2cocGRldik7XFxuIDIwMzpcXHRcXHRpZiAocmV0KSB7XFxuIDIwNDpcXHRcXHRcXHRkZXZfZXJyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHJldCwgXFxcIkZhaWxlZCB0byByZWdpc3RlciBDRFggUlBNc2cgdHJhbnNwb3J0XFxcXG5cXFwiKTtcXG4gMjA1OlxcdFxcdFxcdGdvdG8gY2R4X3JwbXNnX2ZhaWw7XFxuIDIwNjpcXHRcXHR9XFxuIDIwNzpcXHRcXG4gMjA4OlxcdFxcdHJldHVybiAwO1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRjZHhfcnBtc2dfZmFpbDpcXG4gMjExOlxcdFxcdGlycV9kb21haW5fcmVtb3ZlKGNkeC1cXHUwMDNlbXNpX2RvbWFpbik7XFxuIDIxMjpcXHRjZHhfbXNpX2ZhaWw6XFxuIDIxMzpcXHRcXHRrZnJlZShjZHgpO1xcbiAyMTQ6XFx0Y2R4X2FsbG9jX2ZhaWw6XFxuIDIxNTpcXHRcXHRjZHhfbWNkaV9maW5pc2goY2R4X21jZGkpO1xcbiAyMTY6XFx0bWNkaV9pbml0X2ZhaWw6XFxuIDIxNzpcXHRcXHRrZnJlZShjZHhfbWNkaSk7XFxuIDIxODpcXHRcXG4gMjE5OlxcdFxcdHJldHVybiByZXQ7XFxuIDIyMDpcXHR9XFxuIDIyMTpcXHRcXG4gMjIyOlxcdHN0YXRpYyB2b2lkIHhsbnhfY2R4X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiAyMjM6XFx0e1xcbiAyMjQ6XFx0XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG4gMjI1OlxcdFxcdHN0cnVjdCBjZHhfbWNkaSAqY2R4X21jZGkgPSBjZHgtXFx1MDAzZXByaXY7XFxuIDIyNjpcXHRcXG4gMjI3OlxcdFxcdGNkeF9kZXN0cm95X3JwbXNnKHBkZXYpO1xcbiAyMjg6XFx0XFxuIDIyOTpcXHRcXHRpcnFfZG9tYWluX3JlbW92ZShjZHgtXFx1MDAzZW1zaV9kb21haW4pO1xcbiAyMzA6XFx0XFx0a2ZyZWUoY2R4KTtcXG4gMjMxOlxcdFxcbiAyMzI6XFx0XFx0Y2R4X21jZGlfZmluaXNoKGNkeF9tY2RpKTtcXG4gMjMzOlxcdFxcdGtmcmVlKGNkeF9tY2RpKTtcXG4gMjM0OlxcdH1cXG4gMjM1OlxcdFxcbiAyMzY6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgY2R4X21hdGNoX3RhYmxlW10gPSB7XFxuIDIzNzpcXHRcXHR7LmNvbXBhdGlibGUgPSBcXFwieGxueCx2ZXJzYWwtbmV0LWNkeFxcXCIsfSxcXG4gMjM4OlxcdFxcdHsgfSxcXG4gMjM5OlxcdH07XFxuIDI0MDpcXHRcXG4gMjQxOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGNkeF9tYXRjaF90YWJsZSk7XFxuIDI0MjpcXHRcXG4gMjQzOlxcdHN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkeF9wZHJpdmVyID0ge1xcbiAyNDQ6XFx0XFx0LmRyaXZlciA9IHtcXG4gMjQ1OlxcdFxcdFxcdCAgIC5uYW1lID0gXFxcImNkeC1jb250cm9sbGVyXFxcIixcXG4gMjQ2OlxcdFxcdFxcdCAgIC5vZl9tYXRjaF90YWJsZSA9IGNkeF9tYXRjaF90YWJsZSxcXG4gMjQ3OlxcdFxcdFxcdCAgIH0sXFxuIDI0ODpcXHRcXHQucHJvYmUgPSB4bG54X2NkeF9wcm9iZSxcXG4gMjQ5OlxcdFxcdC5yZW1vdmUgPSB4bG54X2NkeF9yZW1vdmUsXFxuIDI1MDpcXHR9O1xcbiAyNTE6XFx0XFxuIDI1MjpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGNkeF9wZHJpdmVyKTtcXG4gMjUzOlxcdFxcbiAyNTQ6XFx0TU9EVUxFX0FVVEhPUihcXFwiQU1EIEluYy5cXFwiKTtcXG4gMjU1OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiQ0RYIGNvbnRyb2xsZXIgZm9yIEFNRCBkZXZpY2VzXFxcIik7XFxuIDI1NjpcXHRNT0RVTEVfTElDRU5TRShcXFwiR1BMXFxcIik7XFxuIDI1NzpcXHRNT0RVTEVfSU1QT1JUX05TKFxcXCJDRFhfQlVTX0NPTlRST0xMRVJcXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MDkuNzg4NzM2NTA4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg3NzAxMTU1NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqVkZJTyBDRFggRHJpdmVyIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBWRklPIGRyaXZlciBmb3IgQ0RYIGJ1cyBkZXZpY2VzIOKAkyB0aGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGUgZmlsZSBpbiBxdWVzdGlvbiBpcyBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoYXQgZmlsZSBhbmQgc2VlIHdoYXQgaXQncyBkb2luZy4gYG1haW4uY2AgaXMgdXN1YWxseSB0aGUgY29yZSwgc28gaXQnbGwgcHJvYmFibHkgY29udGFpbiB0aGUgZXNzZW50aWFsIGluaXRpYWxpemF0aW9uLCBkZXZpY2UgaGFuZGxpbmcsIGFuZCBlbnRyeSBwb2ludHMgZm9yIHRoaXMgVkZJTyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGludGVyYWN0aW5nIHdpdGggdGhlIENEWCBidXMgc3BlY2lmaWNhbGx5LCBhbmQgaG93IGl0J3MgZXhwb3NpbmcgdGhhdCB0byB0aGUgVkZJTyBmcmFtZXdvcmsuIEknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2UgaW5pdGlhbGl6YXRpb24gcm91dGluZXMsIGhvdyBpdCBoYW5kbGVzIGRldmljZSBkaXNjb3ZlcnksIGhvdyBpdCBzZXRzIHVwIERNQSBtYXBwaW5ncywgYW5kIGhvdyBpdCBoYW5kbGVzIGludGVycnVwdHMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gaG93IHRoaXMgZHJpdmVyIGZhY2lsaXRhdGVzIHZpcnR1YWxpemVkIGFjY2VzcyB0byBDRFggZGV2aWNlcy4gTGV0J3MgZ2V0IHJlYWRpbmchXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDg5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMjoxOC41NTg4NTQ3NDdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTEwNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIENvcHlyaWdodCAoQykgMjAyMi0yMDIzLCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuXFxuICAgNDpcXHQgKi9cXG4gICA1OlxcdFxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ZmaW8uaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9jZHgvY2R4X2J1cy5oXFx1MDAzZVxcbiAgIDg6XFx0XFxuICAgOTpcXHQjaW5jbHVkZSBcXFwicHJpdmF0ZS5oXFxcIlxcbiAgMTA6XFx0XFxuICAxMTpcXHRzdGF0aWMgaW50IHZmaW9fY2R4X2luaXRfZGV2KHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbiAgMTI6XFx0e1xcbiAgMTM6XFx0XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuICAxNDpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2dmRldi1cXHUwMDNlY2R4X2lycXNfbG9jayk7XFxuICAxNzpcXHRcXHRyZXR1cm4gMDtcXG4gIDE4OlxcdH1cXG4gIDE5OlxcdFxcbiAgMjA6XFx0c3RhdGljIHZvaWQgdmZpb19jZHhfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXFxuICAyMTpcXHR7XFxuICAyMjpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2ID1cXG4gIDIzOlxcdFxcdFxcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UsIHZkZXYpO1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZ2ZGV2LVxcdTAwM2VjZHhfaXJxc19sb2NrKTtcXG4gIDI2OlxcdH1cXG4gIDI3OlxcdFxcbiAgMjg6XFx0c3RhdGljIGludCB2ZmlvX2NkeF9vcGVuX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gIDI5OlxcdHtcXG4gIDMwOlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbiAgMzE6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XFxuICAzMjpcXHRcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoY29yZV92ZGV2LVxcdTAwM2VkZXYpO1xcbiAgMzM6XFx0XFx0aW50IGNvdW50ID0gY2R4X2Rldi1cXHUwMDNlcmVzX2NvdW50O1xcbiAgMzQ6XFx0XFx0aW50IGksIHJldDtcXG4gIDM1OlxcdFxcbiAgMzY6XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9ucyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uLCBjb3VudCxcXG4gIDM3OlxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcXG4gIDM4OlxcdFxcdGlmICghdmRldi1cXHUwMDNlcmVnaW9ucylcXG4gIDM5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgNDA6XFx0XFxuICA0MTpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgY291bnQ7IGkrKykge1xcbiAgNDI6XFx0XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXMgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlcmVzW2ldO1xcbiAgNDM6XFx0XFxuICA0NDpcXHRcXHRcXHR2ZGV2LVxcdTAwM2VyZWdpb25zW2ldLmFkZHIgPSByZXMtXFx1MDAzZXN0YXJ0O1xcbiAgNDU6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS5zaXplID0gcmVzb3VyY2Vfc2l6ZShyZXMpO1xcbiAgNDY6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS50eXBlID0gcmVzLVxcdTAwM2VmbGFncztcXG4gIDQ3OlxcdFxcdFxcdC8qXFxuICA0ODpcXHRcXHRcXHQgKiBPbmx5IHJlZ2lvbnMgYWRkcmVzc2VkIHdpdGggUEFHRSBncmFudWxhcml0eSBtYXkgYmVcXG4gIDQ5OlxcdFxcdFxcdCAqIE1NQVAnZWQgc2VjdXJlbHkuXFxuICA1MDpcXHRcXHRcXHQgKi9cXG4gIDUxOlxcdFxcdFxcdGlmICghKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uYWRkciBcXHUwMDI2IH5QQUdFX01BU0spIFxcdTAwMjZcXHUwMDI2XFxuICA1MjpcXHRcXHRcXHQgICAgISh2ZGV2LVxcdTAwM2VyZWdpb25zW2ldLnNpemUgXFx1MDAyNiB+UEFHRV9NQVNLKSlcXG4gIDUzOlxcdFxcdFxcdFxcdHZkZXYtXFx1MDAzZXJlZ2lvbnNbaV0uZmxhZ3MgfD1cXG4gIDU0OlxcdFxcdFxcdFxcdFxcdFxcdFZGSU9fUkVHSU9OX0lORk9fRkxBR19NTUFQO1xcbiAgNTU6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfUkVBRDtcXG4gIDU2OlxcdFxcdFxcdGlmICghKGNkeF9kZXYtXFx1MDAzZXJlc1tpXS5mbGFncyBcXHUwMDI2IElPUkVTT1VSQ0VfUkVBRE9OTFkpKVxcbiAgNTc6XFx0XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9uc1tpXS5mbGFncyB8PSBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEU7XFxuICA1ODpcXHRcXHR9XFxuICA1OTpcXHRcXHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4gIDYwOlxcdFxcdGlmIChyZXQpIHtcXG4gIDYxOlxcdFxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZXJlZ2lvbnMpO1xcbiAgNjI6XFx0XFx0XFx0dmRldi1cXHUwMDNlcmVnaW9ucyA9IE5VTEw7XFxuICA2MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgNjQ6XFx0XFx0fVxcbiAgNjU6XFx0XFx0cmV0ID0gY2R4X2NsZWFyX21hc3RlcihjZHhfZGV2KTtcXG4gIDY2OlxcdFxcdGlmIChyZXQpXFxuICA2NzpcXHRcXHRcXHR2ZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+Qk1FX1NVUFBPUlQ7XFxuICA2ODpcXHRcXHRlbHNlXFxuICA2OTpcXHRcXHRcXHR2ZGV2LVxcdTAwM2VmbGFncyB8PSBCTUVfU1VQUE9SVDtcXG4gIDcwOlxcdFxcbiAgNzE6XFx0XFx0cmV0dXJuIDA7XFxuICA3MjpcXHR9XFxuICA3MzpcXHRcXG4gIDc0OlxcdHN0YXRpYyB2b2lkIHZmaW9fY2R4X2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gIDc1OlxcdHtcXG4gIDc2OlxcdFxcdHN0cnVjdCB2ZmlvX2NkeF9kZXZpY2UgKnZkZXYgPVxcbiAgNzc6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fY2R4X2RldmljZSwgdmRldik7XFxuICA3ODpcXHRcXG4gIDc5OlxcdFxcdGtmcmVlKHZkZXYtXFx1MDAzZXJlZ2lvbnMpO1xcbiAgODA6XFx0XFx0Y2R4X2Rldl9yZXNldChjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjE4LjU1ODk0ODQ5N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjc3OTk2MDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCdzIGdvaW5nIG9uLCBmb3JtYXR0ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipEaWdnaW5nIGludG8gdGhlIFZGSU8gQ0RYIENvZGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgZGVlcGVyLiBJJ20gZ29pbmcgdG8gaGVhZCBpbnRvIHRoZSBgZHJpdmVycy92ZmlvL2NkeC9tYWluLmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgb2YgdGhlIENEWCAoQ29udGFpbmVyIERpcmVjdCBlWGNoYW5nZSkgaW1wbGVtZW50YXRpb24gd2l0aGluIFZGSU8gKFZpcnR1YWwgRnVuY3Rpb24gSS9PKSBsaWtlbHkgcmVzaWRlcy4gTXkgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGlzIGZpbGUgd2lsbCBjb250YWluIHRoZSBmdW5kYW1lbnRhbCBsb2dpYyBmb3IgaG93IHRoZSBDRFggZGV2aWNlIGlzIGluaXRpYWxpemVkLCBob3cgaXQgaGFuZGxlcyByZXF1ZXN0cywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCBhbmQgaG93IGl0J3MgaW50ZWdyYXRlZCB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcsIG1lbW9yeSBtYXBwaW5nIGZ1bmN0aW9ucywgYW5kIHRoZSBjb3JlIHJlcXVlc3QgZGlzcGF0Y2ggbG9vcC4gSSB3YW50IHRvIHNlZSBob3cgdGhlIHNvZnR3YXJlIGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgd2hhdCBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBDRFggZGV2aWNlLCBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gVW5kZXJzdGFuZGluZyB0aGlzIGBtYWluLmNgIGZpbGUgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBmb3IgZmlndXJpbmcgb3V0IHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUgQ0RYIGltcGxlbWVudGF0aW9uIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIFZGSU8gYXJjaGl0ZWN0dXJlLiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3MgYW5kIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yIGRlYnVnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE5ODksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjIxLjgzNjk0ODkxM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzc0NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL2NkeC9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjQwLFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjQwOlxcdFxcdFxcdHJldHVybiAtRU5PVFRZO1xcbiAyNDE6XFx0XFx0fVxcbiAyNDI6XFx0fVxcbiAyNDM6XFx0XFxuIDI0NDpcXHRzdGF0aWMgaW50IHZmaW9fY2R4X21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19jZHhfcmVnaW9uIHJlZ2lvbixcXG4gMjQ1OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbiAyNDY6XFx0e1xcbiAyNDc6XFx0XFx0dTY0IHNpemUgPSB2bWEtXFx1MDAzZXZtX2VuZCAtIHZtYS1cXHUwMDNldm1fc3RhcnQ7XFxuIDI0ODpcXHRcXHR1NjQgcGdvZmYsIGJhc2U7XFxuIDI0OTpcXHRcXG4gMjUwOlxcdFxcdHBnb2ZmID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDI2XFxuIDI1MTpcXHRcXHRcXHQoKDFVIFxcdTAwM2NcXHUwMDNjIChWRklPX0NEWF9PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKSkgLSAxKTtcXG4gMjUyOlxcdFxcdGJhc2UgPSBwZ29mZiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUO1xcbiAyNTM6XFx0XFxuIDI1NDpcXHRcXHRpZiAoYmFzZSArIHNpemUgXFx1MDAzZSByZWdpb24uc2l6ZSlcXG4gMjU1OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAyNTY6XFx0XFxuIDI1NzpcXHRcXHR2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCA9IHBncHJvdF9kZXZpY2Uodm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QpO1xcbiAyNTg6XFx0XFxuIDI1OTpcXHRcXHRyZXR1cm4gaW9fcmVtYXBfcGZuX3JhbmdlKHZtYSwgdm1hLVxcdTAwM2V2bV9zdGFydCxcXG4gMjYwOlxcdFxcdFxcdFxcdFxcdCAgKHJlZ2lvbi5hZGRyIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQpICsgcGdvZmYsXFxuIDI2MTpcXHRcXHRcXHRcXHRcXHQgIHNpemUsIHZtYS1cXHUwMDNldm1fcGFnZV9wcm90KTtcXG4gMjYyOlxcdH1cXG4gMjYzOlxcdFxcbiAyNjQ6XFx0c3RhdGljIGludCB2ZmlvX2NkeF9tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiAyNjU6XFx0XFx0XFx0XFx0IHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxcbiAyNjY6XFx0e1xcbiAyNjc6XFx0XFx0c3RydWN0IHZmaW9fY2R4X2RldmljZSAqdmRldiA9XFxuIDI2ODpcXHRcXHRcXHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlLCB2ZGV2KTtcXG4gMjY5OlxcdFxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShjb3JlX3ZkZXYtXFx1MDAzZWRldik7XFxuIDI3MDpcXHRcXHR1bnNpZ25lZCBpbnQgaW5kZXg7XFxuIDI3MTpcXHRcXG4gMjcyOlxcdFxcdGluZGV4ID0gdm1hLVxcdTAwM2V2bV9wZ29mZiBcXHUwMDNlXFx1MDAzZSAoVkZJT19DRFhfT0ZGU0VUX1NISUZUIC0gUEFHRV9TSElGVCk7XFxuIDI3MzpcXHRcXG4gMjc0OlxcdFxcdGlmIChpbmRleCBcXHUwMDNlPSBjZHhfZGV2LVxcdTAwM2VyZXNfY291bnQpXFxuIDI3NTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjc2OlxcdFxcbiAyNzc6XFx0XFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfTU1BUCkpXFxuIDI3ODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMjc5OlxcdFxcbiAyODA6XFx0XFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfUkVBRCkgXFx1MDAyNlxcdTAwMjZcXG4gMjgxOlxcdFxcdCAgICAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1JFQUQpKVxcbiAyODI6XFx0XFx0XFx0cmV0dXJuIC1FUEVSTTtcXG4gMjgzOlxcdFxcbiAyODQ6XFx0XFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpIFxcdTAwMjZcXHUwMDI2XFxuIDI4NTpcXHRcXHQgICAgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9XUklURSkpXFxuIDI4NjpcXHRcXHRcXHRyZXR1cm4gLUVQRVJNO1xcbiAyODc6XFx0XFxuIDI4ODpcXHRcXHRyZXR1cm4gdmZpb19jZHhfbW1hcF9tbWlvKHZkZXYtXFx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xcbiAyODk6XFx0fVxcbiAyOTA6XFx0XFxuIDI5MTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2NkeF9vcHMgPSB7XFxuIDI5MjpcXHRcXHQubmFtZVxcdFxcdD0gXFxcInZmaW8tY2R4XFxcIixcXG4gMjkzOlxcdFxcdC5pbml0XFx0XFx0PSB2ZmlvX2NkeF9pbml0X2RldixcXG4gMjk0OlxcdFxcdC5yZWxlYXNlXFx0PSB2ZmlvX2NkeF9yZWxlYXNlX2RldixcXG4gMjk1OlxcdFxcdC5vcGVuX2RldmljZVxcdD0gdmZpb19jZHhfb3Blbl9kZXZpY2UsXFxuIDI5NjpcXHRcXHQuY2xvc2VfZGV2aWNlXFx0PSB2ZmlvX2NkeF9jbG9zZV9kZXZpY2UsXFxuIDI5NzpcXHRcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fY2R4X2lvY3RsLFxcbiAyOTg6XFx0XFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19jZHhfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbiAyOTk6XFx0XFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19jZHhfaW9jdGxfZmVhdHVyZSxcXG4gMzAwOlxcdFxcdC5tbWFwXFx0XFx0PSB2ZmlvX2NkeF9tbWFwLFxcbiAzMDE6XFx0XFx0LmJpbmRfaW9tbXVmZFxcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2JpbmQsXFxuIDMwMjpcXHRcXHQudW5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF91bmJpbmQsXFxuIDMwMzpcXHRcXHQuYXR0YWNoX2lvYXNcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9hdHRhY2hfaW9hcyxcXG4gMzA0OlxcdH07XFxuIDMwNTpcXHRcXG4gMzA2OlxcdHN0YXRpYyBpbnQgdmZpb19jZHhfcHJvYmUoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuIDMwNzpcXHR7XFxuIDMwODpcXHRcXHRzdHJ1Y3QgdmZpb19jZHhfZGV2aWNlICp2ZGV2O1xcbiAzMDk6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNmNkeF9kZXYtXFx1MDAzZWRldjtcXG4gMzEwOlxcdFxcdGludCByZXQ7XFxuIDMxMTpcXHRcXG4gMzEyOlxcdFxcdHZkZXYgPSB2ZmlvX2FsbG9jX2RldmljZSh2ZmlvX2NkeF9kZXZpY2UsIHZkZXYsIGRldixcXG4gMzEzOlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2dmZpb19jZHhfb3BzKTtcXG4gMzE0OlxcdFxcdGlmIChJU19FUlIodmRldikpXFxuIDMxNTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcXG4gMzE2OlxcdFxcbiAzMTc6XFx0XFx0cmV0ID0gdmZpb19yZWdpc3Rlcl9ncm91cF9kZXYoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpO1xcbiAzMTg6XFx0XFx0aWYgKHJldClcXG4gMzE5OlxcdFxcdFxcdGdvdG8gb3V0X3VuaW5pdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MjEuODM3MDg5MjAzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1MzEzNzYzNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBteSBleHBlcnQgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHZmaW9fY2R4YCBEcml2ZXIqKlxuXG5BbHJpZ2h0LCBzbyBgdmZpb19jZHhgIGlzIHRyaWdnZXJlZCwgYXMgZXhwZWN0ZWQsIHdoZW4gYSBgY2R4X2RldmljZWAgc3RydWN0dXJlIGFsaWducyB3aXRoIHRoZSBgdmZpb19jZHhfZHJpdmVyYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiT2theSwgdGhhdCdzIHRoZSBzZXR1cCwgYnV0IHdoYXQncyAqYWN0dWFsbHkqIGhhcHBlbmluZyB3aXRoIHRoaXMgQ0RYIHRoaW5nP1wiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBsYW5kc2NhcGUuXG5cbkZpcnN0LCBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBmb3IgYW55IHNvcnQgb2YgZW11bGF0ZWQgb3IgbW9ja2VkIGltcGxlbWVudGF0aW9ucyBvZiBDRFggYnVzZXMgb3IgZGV2aWNlcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBpdHNlbGYsIGFuZCBvZiBjb3Vyc2UsIFFFTVUgaXMgYSBsb2dpY2FsIHBsYWNlIHRvIGxvb2suIEknbSB0aGlua2luZywgYXJlIHdlIHRhbGtpbmcgYWJvdXQgYSByZWFsLCBwaHlzaWNhbCBkZXZpY2UsIG9yIGlzIHRoaXMgc29tZXRoaW5nIHZpcnR1YWxpemVkLCBvciBwZXJoYXBzIGEgdGVzdCBoYXJuZXNzPyBGaW5kaW5nIG1vY2sgaW1wbGVtZW50YXRpb25zIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlbnQuXG5cblRoZW4sIEknbGwgcGVyZm9ybSBhIGJyb2FkZXIgc2VhcmNoLCBhIGRlZXBlciBkaXZlIGludG8gdGhlIGtlcm5lbCBzb3VyY2UuIEknbSBnb2luZyB0byB0aHJvdyBhIFwiY2R4XCIgc2VhcmNoIHN0cmluZyBhY3Jvc3MgdGhlIHdob2xlIGNvZGViYXNlLiBJIHdhbnQgdG8gaWRlbnRpZnkgYW55IG90aGVyIGNvZGUgdGhhdCdzIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyBlaXRoZXIgYSBDRFggY29udHJvbGxlciBvciBhIENEWCBkZXZpY2UuIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgc3Vic3lzdGVtIGFyY2hpdGVjdHVyZSwgYW5kIGhvdyB0aGUgYHZmaW9fY2R4YCBkcml2ZXIgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBGaW5kaW5nIHRoZSByZWdpc3RyYXRpb24gcG9pbnRzIHdpbGwgbGV0IG1lIHNlZSB3aGVyZSB0aGlzIENEWCB0ZWNobm9sb2d5IG9yaWdpbmF0ZXMgZnJvbSB3aXRoaW4gdGhlIHN5c3RlbS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGhhbmRsZSBvbiBob3cgaXQncyB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzY5MSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MjYuMzY4NDcwMDE3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkxMTA1OTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNkeF9kcml2ZXJfcmVnaXN0ZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9jZHgvY2R4LmM9NjI4PUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzMS1cXHRcXHRcXHQgIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjQ2LX1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NDc6RVhQT1JUX1NZTUJPTF9HUEwoX19jZHhfZHJpdmVyX3JlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NDgtXFxuLS1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYz0zNDg9c3RhdGljIHN0cnVjdCBjZHhfZHJpdmVyIHZmaW9fY2R4X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM1Ny1cXG5kcml2ZXJzL3ZmaW8vY2R4L21haW4uYzozNTg6bW9kdWxlX2RyaXZlcih2ZmlvX2NkeF9kcml2ZXIsIGNkeF9kcml2ZXJfcmVnaXN0ZXIsIGNkeF9kcml2ZXJfdW5yZWdpc3Rlcik7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzU5LVxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTE5OD1zdHJ1Y3QgY2R4X2RyaXZlciB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjEyLS8qIE1hY3JvIHRvIGF2b2lkIGluY2x1ZGUgY2hhaW5pbmcgdG8gZ2V0IFRISVNfTU9EVUxFICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIxMzojZGVmaW5lIGNkeF9kcml2ZXJfcmVnaXN0ZXIoZHJ2KSBcXFxcXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIxNDpcXHRfX2NkeF9kcml2ZXJfcmVnaXN0ZXIoZHJ2LCBUSElTX01PRFVMRSlcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjE1LVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTYtLyoqXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIxNzogKiBfX2NkeF9kcml2ZXJfcmVnaXN0ZXIgLSByZWdpc3RlcnMgYSBDRFggZGV2aWNlIGRyaXZlclxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMTgtICogQGNkeF9kcml2ZXI6IENEWCBkcml2ZXIgdG8gcmVnaXN0ZXJcXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjItICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIyMzppbnQgX19tdXN0X2NoZWNrIF9fY2R4X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcixcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjI0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjI4Ljg1OTU4NzA1MloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDExNjU1NDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy5cblxuKipJbnZlc3RpZ2F0aW5nIGBjZHhfZHJpdmVyYCBVc2FnZSoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIGBjZHhfZHJpdmVyYCBzdHJ1Y3R1cmUgYW5kIGBjZHhfZHJpdmVyX3JlZ2lzdGVyYCBmdW5jdGlvbiBhcmUgYmVpbmcgdXRpbGl6ZWQgdGhyb3VnaG91dCB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgYWxsIHRoZSBvdGhlciBkcml2ZXJzIHRoYXQgYXJlIGVtcGxveWluZyB0aGVzZSBlbGVtZW50cy4gSSdsbCBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY29kZSBzZWFyY2guIFRoZSBtb3N0IGRpcmVjdCBhcHByb2FjaCBpcyBhIGdyZXAgZm9yIGluc3RhbmNlcyBvZiBgc3RydWN0IGNkeF9kcml2ZXJgIGFuZCBgY2R4X2RyaXZlcmAgKGNhc2UtaW5zZW5zaXRpdmUgcGVyaGFwcywgYnV0IGxldCdzIHN0YXJ0IHdpdGggY2FzZSBzZW5zaXRpdmUpIGFjcm9zcyB0aGUgZW50aXJlIGtlcm5lbCBzb3VyY2UgdHJlZS4gVGhpcyBzaG91bGQgcmV2ZWFsIGFsbCByZWxldmFudCBsb2NhdGlvbnMgd2hlcmUgdGhlc2UgYXJlIGRlZmluZWQsIHJlZmVyZW5jZWQsIG9yIHVzZWQuIFRoaXMgZ3JhbnVsYXIgYXBwcm9hY2ggc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSBvdmVydmlldyBvZiB0aGUgZXhpc3RpbmcgZWNvc3lzdGVtIHJlbHlpbmcgb24gdGhpcyBjb25zdHJ1Y3QuIFdpdGggdGhpcyBpbmZvLCBJIGNhbiB0aGVuIGRldGVybWluZSB0aGUgYmVzdCBwYXRoIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzE1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6MzIuODcxMjQ1ODA0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzUwMTg1MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBjZHhfZHJpdmVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY2R4L2NkeC5jPTk1PWludCBjZHhfZGV2X3Jlc2V0KHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk5LVxcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnID0gezB9O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEwMDpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydjtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMDEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTI2Mz1zdGF0aWMgaW50IGNkeF9idXNfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjY1LVxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NjpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZHJ2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNjctXFx0Y29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmZvdW5kX2lkID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTMwMj1zdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAzLXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMDUtXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0zMjg9c3RhdGljIHZvaWQgY2R4X3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzI5LXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMzA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzEtXFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYz0zMzc9c3RhdGljIHZvaWQgY2R4X3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzgte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzOTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM0MC1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM0OT1zdGF0aWMgaW50IGNkeF9kbWFfY29uZmlndXJlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zNTAte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MTpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM1Mi1cXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM3Mz1zdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzc1OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjI4PUVYUE9SVF9TWU1CT0xfR1BMKGNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzMS1cXHRcXHRcXHQgIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjQ3PUVYUE9SVF9TWU1CT0xfR1BMKF9fY2R4X2RyaXZlcl9yZWdpc3Rlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQ4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0OTp2b2lkIGNkeF9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcilcXG5kcml2ZXJzL2NkeC9jZHguYy02NTAte1xcbi0tXFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmM9MzQ2PU1PRFVMRV9ERVZJQ0VfVEFCTEUoY2R4LCB2ZmlvX2NkeF90YWJsZSk7XFxuZHJpdmVycy92ZmlvL2NkeC9tYWluLmMtMzQ3LVxcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jOjM0ODpzdGF0aWMgc3RydWN0IGNkeF9kcml2ZXIgdmZpb19jZHhfZHJpdmVyID0ge1xcbmRyaXZlcnMvdmZpby9jZHgvbWFpbi5jLTM0OS1cXHQucHJvYmVcXHRcXHQ9IHZmaW9fY2R4X3Byb2JlLFxcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oPTE0Mz1zdHJ1Y3QgY2R4X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTgxLS8qKlxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxODI6ICogc3RydWN0IGNkeF9kcml2ZXIgLSBDRFggZGV2aWNlIGRyaXZlclxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xODMtICogQGRyaXZlcjogR2VuZXJpYyBkZXZpY2UgZHJpdmVyXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMTk3LSAqL1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoxOTg6c3RydWN0IGNkeF9kcml2ZXIge1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0xOTktXFx0c3RydWN0IGRldmljZV9kcml2ZXIgZHJpdmVyO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIwOS0jZGVmaW5lIHRvX2NkeF9kcml2ZXIoX2RydikgXFxcXFxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMTA6XFx0Y29udGFpbmVyX29mX2NvbnN0KF9kcnYsIHN0cnVjdCBjZHhfZHJpdmVyLCBkcml2ZXIpXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oLTIxMS1cXG4tLVxcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMjItICovXFxuaW5jbHVkZS9saW51eC9jZHgvY2R4X2J1cy5oOjIyMzppbnQgX19tdXN0X2NoZWNrIF9fY2R4X2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RyaXZlcixcXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjI0LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcik7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NkeC9jZHhfYnVzLmgtMjMwLSAqL1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaDoyMzE6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpO1xcbmluY2x1ZGUvbGludXgvY2R4L2NkeF9idXMuaC0yMzItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjM1LjIyMTQ0NDQzWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwOTg4MjM5ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZGSU8tQ0RYIERyaXZlcioqXG5cbk9rYXksIGhlcmUncyBob3cgSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcy4gTXkgc3RhcnRpbmcgcG9pbnQgaXMgdGhlIGB2ZmlvX2NkeF9kcml2ZXJgLCB3aGljaCBpcyByZWdpc3RlcmVkIHdoZW4gdGhlIGB2ZmlvLWNkeGAgbW9kdWxlIGxvYWRzLiBNYWtlcyBwZXJmZWN0IHNlbnNlLiBIb3dldmVyLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVsbCBwYXRoIHRvIGhvdyBhIGZ1bmN0aW9uIGxpa2UgYHZmaW9fY2R4X21tYXBfbW1pb2AsIG9yIGFueSBvZiB0aGUgYHZmaW9fY2R4XypgIGZ1bmN0aW9ucywgYWN0dWFsbHkgZ2V0cyAqY2FsbGVkKi4gVGhlIGNyaXRpY2FsIHBhdGggc2VlbXMgdG8gYmUgdGhhdCBhIGBjZHhfZGV2aWNlYCBoYXMgdG8gZXhpc3QgYW5kIGJlIGJvdW5kIHRvIGB2ZmlvLWNkeGAuIFRoZW4sIGEgdXNlci1zcGFjZSBwcm9jZXNzIG11c3Qgb3BlbiB0aGUgVkZJTyBkZXZpY2UgYW5kIGNhbGwgYG1tYXAoKWAuIFRoYXQncyB0aGUgZXhwZWN0ZWQgdXNhZ2UuXG5cbk5vdywgSSBuZWVkIHRvIGtub3cgaWYgSSBjYW4gZXZlbiBjcmVhdGUgYSBgY2R4X2RldmljZWAgaW4gdGhlIGFic2VuY2Ugb2YgYWN0dWFsIGhhcmR3YXJlLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBzaG91bGQgYmUgcG9zc2libGUgZm9yIHRlc3RpbmcgYW5kIGVtdWxhdGlvbiBwdXJwb3Nlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgZHJpdmVycy9jZHgvY2R4LmNgIGZpbGUgdG8gc2VlIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBjcmVhdGVkLiBTcGVjaWZpY2FsbHksIEknbSBjaGVja2luZyBpZiB0aGVyZSdzIGFueSBzeXNmcyBpbnRlcmZhY2UgdGhhdCBhbGxvd3MgdGhlIGNyZWF0aW9uIG9yIFwibW9ja2luZ1wiIG9mIENEWCBkZXZpY2VzLCBvciBpZiB0aGVpciBjcmVhdGlvbiBpcyBlbnRpcmVseSBkZXBlbmRlbnQgb24gYSBgY2R4X2NvbnRyb2xsZXJgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gaW4gYGRyaXZlcnMvY2R4L2NkeC5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY1NTEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6NDYuMjA5NjkxMDE0WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI1MjQxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZHhfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvY2R4L2NkeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNjY1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2NkeC9jZHguYy02Ny0jaW5jbHVkZSBcXHUwMDNjbGludXgvaWRyLmhcXHUwMDNlXFxuZHJpdmVycy9jZHgvY2R4LmM6Njg6I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2NkeC9jZHhfYnVzLmhcXHUwMDNlXFxuZHJpdmVycy9jZHgvY2R4LmMtNjktI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvbW11LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03OC0vKiBJREEgZm9yIENEWCBjb250cm9sbGVycyByZWdpc3RlcmVkIHdpdGggdGhlIENEWCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo3OTpzdGF0aWMgREVGSU5FX0lEQShjZHhfY29udHJvbGxlcl9pZGEpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTgwLS8qIExvY2sgdG8gcHJvdGVjdCBjb250cm9sbGVyIG9wcyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjgxOnN0YXRpYyBERUZJTkVfTVVURVgoY2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtODItLyogRGVidWdmcyBkaXIgZm9yIGNkeCBidXMgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzo4MzpzdGF0aWMgc3RydWN0IGRlbnRyeSAqY2R4X2RlYnVnZnNfZGlyO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg0LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTg1PXN0YXRpYyBjaGFyICpjb21wYXRfbm9kZV9uYW1lID0gXFxcInhsbngsdmVyc2FsLW5ldC1jZHhcXFwiO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTg2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjg3OnN0YXRpYyB2b2lkIGNkeF9kZXN0cm95X3Jlc19hdHRyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2LCBpbnQgbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy04OC1cXG5kcml2ZXJzL2NkeC9jZHguYy04OS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzo5MDogKiBjZHhfZGV2X3Jlc2V0IC0gUmVzZXQgYSBDRFggZGV2aWNlXFxuZHJpdmVycy9jZHgvY2R4LmMtOTEtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtOTQtICovXFxuZHJpdmVycy9jZHgvY2R4LmM6OTU6aW50IGNkeF9kZXZfcmVzZXQoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTk2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo5NzpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo5ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzo5OTpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZyA9IHswfTtcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDA6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnY7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAxLVxcdGludCByZXQ7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTAyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjEwMzpcXHRjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTA0LVxcdC8qIE5vdGlmeSBkcml2ZXIgdGhhdCBkZXZpY2UgaXMgYmVpbmcgcmVzZXQgKi9cXG5kcml2ZXJzL2NkeC9jZHguYzoxMDU6XFx0aWYgKGNkeF9kcnYgXFx1MDAyNlxcdTAwMjYgY2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVzZXRfcHJlcGFyZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xMDctXFxuZHJpdmVycy9jZHgvY2R4LmMtMTA4LVxcdGRldl9jb25maWcudHlwZSA9IENEWF9ERVZfUkVTRVRfQ09ORjtcXG5kcml2ZXJzL2NkeC9jZHguYzoxMDk6XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjExMDpcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTExLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMTQtXFx0LyogTm90aWZ5IGRyaXZlciB0aGF0IGRldmljZSByZXNldCBpcyBjb21wbGV0ZSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjExNTpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VyZXNldF9kb25lKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjExNjpcXHRcXHRjZHhfZHJ2LVxcdTAwM2VyZXNldF9kb25lKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTExNy1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTExOS19XFxuZHJpdmVycy9jZHgvY2R4LmM6MTIwOkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9kZXZfcmVzZXQpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTEyMS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xMjItLyoqXFxuZHJpdmVycy9jZHgvY2R4LmM6MTIzOiAqIHJlc2V0X2NkeF9kZXZpY2UgLSBSZXNldCBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0xMjQtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTMwLSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjEzMTpzdGF0aWMgaW50IHJlc2V0X2NkeF9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzMi17XFxuZHJpdmVycy9jZHgvY2R4LmM6MTMzOlxcdHJldHVybiBjZHhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMTM0LX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTEzNi0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoxMzc6ICogY2R4X3VucmVnaXN0ZXJfZGV2aWNlIC0gVW5yZWdpc3RlciBhIENEWCBkZXZpY2VcXG5kcml2ZXJzL2NkeC9jZHguYy0xMzgtICogQGRldjogQ0RYIGRldmljZVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQwLSAqXFx0ICBidXQgaXMgcmVxdWlyZWQgaGVyZSBhcyB0aGUgYnVzX2Zvcl9lYWNoX2RldigpIEFQSSBleHBlY3RzXFxuZHJpdmVycy9jZHgvY2R4LmM6MTQxOiAqXFx0ICB0aGUgcGFzc2VkIGZ1bmN0aW9uIChjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpIHRvIGhhdmUgdGhpc1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE0Mi0gKlxcdCAgYXMgYW4gYXJndW1lbnQuXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNDUtICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MTQ2OnN0YXRpYyBpbnQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2NkeC9jZHguYy0xNDctXFx0XFx0XFx0XFx0IHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTQ4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoxNDk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MTUwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1MS1cXG5kcml2ZXJzL2NkeC9jZHguYzoxNTI6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cykge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1MzpcXHRcXHRkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NDpcXHRcXHRpZiAoY2R4X2Rldi1cXHUwMDNlZW5hYmxlZCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MTU1OlxcdFxcdFxcdGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1Ni1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1NzpcXHRcXHRjZHhfZGVzdHJveV9yZXNfYXR0cihjZHhfZGV2LCBNQVhfQ0RYX0RFVl9SRVNPVVJDRVMpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE1ODpcXHRcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoY2R4X2Rldi1cXHUwMDNlZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE1OS1cXHR9XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0xNjEtXFx0LypcXG5kcml2ZXJzL2NkeC9jZHguYzoxNjI6XFx0ICogRG8gbm90IGZyZWUgY2R4X2RldiBoZXJlIGFzIGl0IHdvdWxkIGJlIGZyZWVkIGluXFxuZHJpdmVycy9jZHgvY2R4LmM6MTYzOlxcdCAqIGNkeF9kZXZpY2VfcmVsZWFzZSgpIGNhbGxlZCBmcm9tIHdpdGhpbiBwdXRfZGV2aWNlKCkuXFxuZHJpdmVycy9jZHgvY2R4LmMtMTY0LVxcdCAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NTpcXHRkZXZpY2VfZGVsKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE2NjpcXHRwdXRfZGV2aWNlKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE2Ny1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoxNzE6c3RhdGljIHZvaWQgY2R4X3VucmVnaXN0ZXJfZGV2aWNlcyhjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cylcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzIte1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE3My1cXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE3NDpcXHRidXNfZm9yX2VhY2hfZGV2KGJ1cywgTlVMTCwgTlVMTCwgY2R4X3VucmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0xNzUtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMTc3LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE3ODogKiBjZHhfbWF0Y2hfb25lX2RldmljZSAtIFRlbGwgaWYgYSBDRFggZGV2aWNlIHN0cnVjdHVyZSBoYXMgYSBtYXRjaGluZ1xcbmRyaXZlcnMvY2R4L2NkeC5jLTE3OS0gKlxcdFxcdFxcdCAgQ0RYIGRldmljZSBpZCBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE4Mi0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4MzogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg0LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NTpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoxODY6Y2R4X21hdGNoX29uZV9kZXZpY2UoY29uc3Qgc3RydWN0IGNkeF9kZXZpY2VfaWQgKmlkLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjE4NzpcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMTg4LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTE5OS0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzoyMDA6ICogY2R4X21hdGNoX2lkIC0gU2VlIGlmIGEgQ0RYIGRldmljZSBtYXRjaGVzIGEgZ2l2ZW4gY2R4X2lkIHRhYmxlXFxuZHJpdmVycy9jZHgvY2R4LmMtMjAxLSAqIEBpZHM6IGFycmF5IG9mIENEWCBkZXZpY2UgSUQgc3RydWN0dXJlcyB0byBzZWFyY2ggaW5cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNC0gKiBVc2VkIGJ5IGEgZHJpdmVyIHRvIGNoZWNrIHdoZXRoZXIgYSBDRFggZGV2aWNlIGlzIGluIGl0cyBsaXN0IG9mXFxuZHJpdmVycy9jZHgvY2R4LmM6MjA1OiAqIHN1cHBvcnRlZCBkZXZpY2VzLiBSZXR1cm5zIHRoZSBtYXRjaGluZyBjZHhfZGV2aWNlX2lkIHN0cnVjdHVyZSBvclxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNi0gKiBOVUxMIGlmIHRoZXJlIGlzIG5vIG1hdGNoLlxcbmRyaXZlcnMvY2R4L2NkeC5jLTIwNy0gKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjIwODogKiBSZXR1cm46IG1hdGNoaW5nIGNkeF9kZXZpY2VfaWQgc3RydWN0dXJlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gbWF0Y2guXFxuZHJpdmVycy9jZHgvY2R4LmMtMjA5LSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIxMDpzdGF0aWMgaW5saW5lIGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICpcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTE6Y2R4X21hdGNoX2lkKGNvbnN0IHN0cnVjdCBjZHhfZGV2aWNlX2lkICppZHMsIHN0cnVjdCBjZHhfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjEyLXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIxNC1cXHRcXHR3aGlsZSAoaWRzLVxcdTAwM2V2ZW5kb3IgfHwgaWRzLVxcdTAwM2VkZXZpY2UpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzoyMTU6XFx0XFx0XFx0aWYgKGNkeF9tYXRjaF9vbmVfZGV2aWNlKGlkcywgZGV2KSlcXG5kcml2ZXJzL2NkeC9jZHguYy0yMTYtXFx0XFx0XFx0XFx0cmV0dXJuIGlkcztcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyMi1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMjM6aW50IGNkeF9zZXRfbWFzdGVyKHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTIyNC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MjI1OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jOjIyNjpcXHRzdHJ1Y3QgY2R4X2RldmljZV9jb25maWcgZGV2X2NvbmZpZztcXG5kcml2ZXJzL2NkeC9jZHguYy0yMjctXFx0aW50IHJldCA9IC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjMxLVxcdGlmIChjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZSlcXG5kcml2ZXJzL2NkeC9jZHguYzoyMzI6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWRldl9jb25maWd1cmUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjIzMzpcXHRcXHRcXHRcXHRcXHQgICAgICBjZHhfZGV2LVxcdTAwM2VkZXZfbnVtLCBcXHUwMDI2ZGV2X2NvbmZpZyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjM0LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjM2LX1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMzc6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X3NldF9tYXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTIzOC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyMzk6aW50IGNkeF9jbGVhcl9tYXN0ZXIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjQwLXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNDE6XFx0c3RydWN0IGNkeF9jb250cm9sbGVyICpjZHggPSBjZHhfZGV2LVxcdTAwM2VjZHg7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjQyOlxcdHN0cnVjdCBjZHhfZGV2aWNlX2NvbmZpZyBkZXZfY29uZmlnO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI0My1cXHRpbnQgcmV0ID0gLUVPUE5PVFNVUFA7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNDctXFx0aWYgKGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VkZXZfY29uZmlndXJlKVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI0ODpcXHRcXHRyZXQgPSBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlZGV2X2NvbmZpZ3VyZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0sXFxuZHJpdmVycy9jZHgvY2R4LmM6MjQ5OlxcdFxcdFxcdFxcdFxcdCAgICAgIGNkeF9kZXYtXFx1MDAzZWRldl9udW0sIFxcdTAwMjZkZXZfY29uZmlnKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTAtXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNTItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1MzpFWFBPUlRfU1lNQk9MX0dQTChjZHhfY2xlYXJfbWFzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yNTQtXFxuZHJpdmVycy9jZHgvY2R4LmMtMjU1LS8qKlxcbmRyaXZlcnMvY2R4L2NkeC5jOjI1NjogKiBjZHhfYnVzX21hdGNoIC0gZGV2aWNlIHRvIGRyaXZlciBtYXRjaGluZyBjYWxsYmFja1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI1Ny0gKiBAZGV2OiB0aGUgY2R4IGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0yNjItICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MjYzOnN0YXRpYyBpbnQgY2R4X2J1c19tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMjY0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzoyNjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MjY2OlxcdGNvbnN0IHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkcnYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2NzpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqZm91bmRfaWQgPSBOVUxMO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjI2ODpcXHRjb25zdCBzdHJ1Y3QgY2R4X2RldmljZV9pZCAqaWRzO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI2OS1cXHRpbnQgcmV0O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNzE6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy0yNzItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI3My1cXG5kcml2ZXJzL2NkeC9jZHguYzoyNzQ6XFx0aWRzID0gY2R4X2Rydi1cXHUwMDNlbWF0Y2hfaWRfdGFibGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtMjc1LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjgwLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjI4MTpcXHRmb3VuZF9pZCA9IGNkeF9tYXRjaF9pZChpZHMsIGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTI4Mi1cXHRpZiAoIWZvdW5kX2lkKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMjk1LVxcdFxcdGlkcyA9IGZvdW5kX2lkICsgMTtcXG5kcml2ZXJzL2NkeC9jZHguYzoyOTY6XFx0XFx0Zm91bmRfaWQgPSBjZHhfbWF0Y2hfaWQoaWRzLCBjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0yOTctXFx0fSB3aGlsZSAoZm91bmRfaWQpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAxLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMwMjpzdGF0aWMgaW50IGNkeF9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtMzAzLXtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDQ6XFx0c3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcnYgPSB0b19jZHhfZHJpdmVyKGRldi1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozMDU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzA2OlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMwNy1cXHRpbnQgZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMTMtXFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0dFTkVSSUNfTVNJX0lSUSkgXFx1MDAyNlxcdTAwMjYgY2R4LVxcdTAwM2Vtc2lfZG9tYWluKSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzE0OlxcdFxcdGVycm9yID0gbXNpX3NldHVwX2RldmljZV9kYXRhKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMxNS1cXHRcXHRpZiAoZXJyb3IpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zMTgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzE5OlxcdGVycm9yID0gY2R4X2Rydi1cXHUwMDNlcHJvYmUoY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzIwLVxcdGlmIChlcnJvcikge1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzI3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMyODpzdGF0aWMgdm9pZCBjZHhfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2NkeC9jZHguYy0zMjkte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMDpcXHRzdHJ1Y3QgY2R4X2RyaXZlciAqY2R4X2RydiA9IHRvX2NkeF9kcml2ZXIoZGV2LVxcdTAwM2Vkcml2ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjMzMTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy0zMzItXFxuZHJpdmVycy9jZHgvY2R4LmM6MzMzOlxcdGlmIChjZHhfZHJ2IFxcdTAwMjZcXHUwMDI2IGNkeF9kcnYtXFx1MDAzZXJlbW92ZSlcXG5kcml2ZXJzL2NkeC9jZHguYzozMzQ6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlcmVtb3ZlKGNkeF9kZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTMzNS19XFxuZHJpdmVycy9jZHgvY2R4LmMtMzM2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjMzNzpzdGF0aWMgdm9pZCBjZHhfc2h1dGRvd24oc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTMzOC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzM5OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzQwOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM0MTpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNDItXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQzOlxcdGlmIChjZHhfZGV2LVxcdTAwM2Vpc19idXMgXFx1MDAyNlxcdTAwMjYgY2R4X2Rldi1cXHUwMDNlZW5hYmxlZCBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ0OlxcdFxcdGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM0NTpcXHRpZiAoY2R4X2RydiBcXHUwMDI2XFx1MDAyNiBjZHhfZHJ2LVxcdTAwM2VzaHV0ZG93bilcXG5kcml2ZXJzL2NkeC9jZHguYzozNDY6XFx0XFx0Y2R4X2Rydi1cXHUwMDNlc2h1dGRvd24oY2R4X2Rldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzQ3LX1cXG5kcml2ZXJzL2NkeC9jZHguYy0zNDgtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzQ5OnN0YXRpYyBpbnQgY2R4X2RtYV9jb25maWd1cmUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM1MC17XFxuZHJpdmVycy9jZHgvY2R4LmM6MzUxOlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmM6MzUyOlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM1MzpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeCA9IGNkeF9kZXYtXFx1MDAzZWNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYzozNTQ6XFx0dTMyIGlucHV0X2lkID0gY2R4X2Rldi1cXHUwMDNlcmVxX2lkO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTM1NS1cXHRpbnQgcmV0O1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzYyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM2MzpcXHQvKiBAY2R4X2RydiBtYXkgbm90IGJlIHZhbGlkIHdoZW4gd2UncmUgY2FsbGVkIGZyb20gdGhlIElPTU1VIGxheWVyICovXFxuZHJpdmVycy9jZHgvY2R4LmM6MzY0OlxcdGlmICghcmV0IFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlZHJpdmVyIFxcdTAwMjZcXHUwMDI2ICFjZHhfZHJ2LVxcdTAwM2Vkcml2ZXJfbWFuYWdlZF9kbWEpIHtcXG5kcml2ZXJzL2NkeC9jZHguYy0zNjUtXFx0XFx0cmV0ID0gaW9tbXVfZGV2aWNlX3VzZV9kZWZhdWx0X2RvbWFpbihkZXYpO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtMzcyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM3MzpzdGF0aWMgdm9pZCBjZHhfZG1hX2NsZWFudXAoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTM3NC17XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzc1OlxcdHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJ2ID0gdG9fY2R4X2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzc2LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjM3NzpcXHRpZiAoIWNkeF9kcnYtXFx1MDAzZWRyaXZlcl9tYW5hZ2VkX2RtYSlcXG5kcml2ZXJzL2NkeC9jZHguYy0zNzgtXFx0XFx0aW9tbXVfZGV2aWNlX3VudXNlX2RlZmF1bHRfZG9tYWluKGRldik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy0zODEtLyogc2hvdyBjb25maWd1cmF0aW9uIGZpZWxkcyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM4MjojZGVmaW5lIGNkeF9jb25maWdfYXR0cihmaWVsZCwgZm9ybWF0X3N0cmluZylcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzgzLXN0YXRpYyBzc2l6ZV90XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jPTM4ND1maWVsZCMjX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYy0zODUte1xcdFxcXFxcXG5kcml2ZXJzL2NkeC9jZHguYzozODY6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFx0XFxcXFxcbmRyaXZlcnMvY2R4L2NkeC5jOjM4NzpcXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIGZvcm1hdF9zdHJpbmcsIGNkeF9kZXYtXFx1MDAzZWZpZWxkKTtcXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmMtMzg4LX1cXHRcXFxcXFxuZHJpdmVycy9jZHgvY2R4LmM9Mzg5PXN0YXRpYyBERVZJQ0VfQVRUUl9STyhmaWVsZClcXG5kcml2ZXJzL2NkeC9jZHguYy0zOTAtXFxuZHJpdmVycy9jZHgvY2R4LmM6MzkxOmNkeF9jb25maWdfYXR0cih2ZW5kb3IsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5MjpjZHhfY29uZmlnX2F0dHIoZGV2aWNlLCBcXFwiMHglMDR4XFxcXG5cXFwiKTtcXG5kcml2ZXJzL2NkeC9jZHguYzozOTM6Y2R4X2NvbmZpZ19hdHRyKHN1YnN5c3RlbV92ZW5kb3IsIFxcXCIweCUwNHhcXFxcblxcXCIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjM5NDpjZHhfY29uZmlnX2F0dHIoc3Vic3lzdGVtX2RldmljZSwgXFxcIjB4JTA0eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzk1OmNkeF9jb25maWdfYXR0cihyZXZpc2lvbiwgXFxcIjB4JTAyeFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmM6Mzk2OmNkeF9jb25maWdfYXR0cihjbGFzcywgXFxcIjB4JTA2eFxcXFxuXFxcIik7XFxuZHJpdmVycy9jZHgvY2R4LmMtMzk3LVxcbmRyaXZlcnMvY2R4L2NkeC5jPTM5OD1zdGF0aWMgc3NpemVfdCByZW1vdmVfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDEyLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQxMzpcXHRcXHRyZXQgPSBjZHhfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LCBOVUxMKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MTQtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQyMj1zdGF0aWMgc3NpemVfdCByZXNldF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDI0LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0MjU6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDI2LVxcdGJvb2wgdmFsO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDM0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNTpcXHRpZiAoY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQzNi1cXHRcXHQvKiBSZXNldCBhbGwgdGhlIGRldmljZXMgYXR0YWNoZWQgdG8gY2R4IGJ1cyAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQzNzpcXHRcXHRyZXQgPSBkZXZpY2VfZm9yX2VhY2hfY2hpbGQoZGV2LCBOVUxMLCByZXNldF9jZHhfZGV2aWNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00MzgtXFx0ZWxzZVxcbmRyaXZlcnMvY2R4L2NkeC5jOjQzOTpcXHRcXHRyZXQgPSBjZHhfZGV2X3Jlc2V0KGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDQwLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDQ1PXN0YXRpYyBzc2l6ZV90IG1vZGFsaWFzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0Ny17XFxuZHJpdmVycy9jZHgvY2R4LmM6NDQ4OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShkZXYpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ0OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo0NTA6XFx0cmV0dXJuIHNwcmludGYoYnVmLCBcXFwiY2R4OnYlMDRYZCUwNFhzdiUwNFhzZCUwNFhjJTA2WFxcXFxuXFxcIiwgY2R4X2Rldi1cXHUwMDNldmVuZG9yLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjQ1MTpcXHRcXHRcXHRjZHhfZGV2LVxcdTAwM2VkZXZpY2UsIGNkeF9kZXYtXFx1MDAzZXN1YnN5c3RlbV92ZW5kb3IsIGNkeF9kZXYtXFx1MDAzZXN1YnN5c3RlbV9kZXZpY2UsXFxuZHJpdmVycy9jZHgvY2R4LmM6NDUyOlxcdFxcdFxcdGNkeF9kZXYtXFx1MDAzZWNsYXNzKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NTMtfVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDU2PXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNDU4LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo0NTk6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDYwOlxcdHN0cnVjdCBjZHhfY29udHJvbGxlciAqY2R4ID0gY2R4X2Rldi1cXHUwMDNlY2R4O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2MS1cXHRib29sIGVuYWJsZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2Ni1cXG5kcml2ZXJzL2NkeC9jZHguYzo0Njc6XFx0aWYgKGVuYWJsZSA9PSBjZHhfZGV2LVxcdTAwM2VlbmFibGVkKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ2OC1cXHRcXHRyZXR1cm4gY291bnQ7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NzAtXFx0aWYgKGVuYWJsZSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2VuYWJsZSlcXG5kcml2ZXJzL2NkeC9jZHguYzo0NzE6XFx0XFx0cmV0ID0gY2R4LVxcdTAwM2VvcHMtXFx1MDAzZWJ1c19lbmFibGUoY2R4LCBjZHhfZGV2LVxcdTAwM2VidXNfbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00NzItXFx0ZWxzZSBpZiAoIWVuYWJsZSBcXHUwMDI2XFx1MDAyNiBjZHgtXFx1MDAzZW9wcy1cXHUwMDNlYnVzX2Rpc2FibGUpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDczOlxcdFxcdHJldCA9IGNkeC1cXHUwMDNlb3BzLVxcdTAwM2VidXNfZGlzYWJsZShjZHgsIGNkeF9kZXYtXFx1MDAzZWJ1c19udW0pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTQ3NC1cXHRlbHNlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy00NzctXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9jZHgvY2R4LmM6NDc4OlxcdFxcdGNkeF9kZXYtXFx1MDAzZWVuYWJsZWQgPSBlbmFibGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNDc5LVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NDgzPXN0YXRpYyBzc2l6ZV90IGVuYWJsZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZilcXG5kcml2ZXJzL2NkeC9jZHguYy00ODQte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ4NTpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy00ODYtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDg3OlxcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXFxcIiV1XFxcXG5cXFwiLCBjZHhfZGV2LVxcdTAwM2VlbmFibGVkKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00ODgtfVxcbmRyaXZlcnMvY2R4L2NkeC5jPTQ4OT1zdGF0aWMgREVWSUNFX0FUVFJfUlcoZW5hYmxlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTAtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDkxOnN0YXRpYyB1bW9kZV90IGNkeF9kZXZfYXR0cnNfYXJlX3Zpc2libGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmEsIGludCBuKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5Mi17XFxuZHJpdmVycy9jZHgvY2R4LmMtNDkzLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGtvYmpfdG9fZGV2KGtvYmopO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjQ5NDpcXHRzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldjtcXG5kcml2ZXJzL2NkeC9jZHguYy00OTUtXFxuZHJpdmVycy9jZHgvY2R4LmM6NDk2OlxcdGNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NDk3OlxcdGlmICghY2R4X2Rldi1cXHUwMDNlaXNfYnVzKVxcbmRyaXZlcnMvY2R4L2NkeC5jLTQ5OC1cXHRcXHRyZXR1cm4gYS1cXHUwMDNlbW9kZTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUwMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MDM6c3RhdGljIHVtb2RlX3QgY2R4X2J1c19hdHRyc19hcmVfdmlzaWJsZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYSwgaW50IG4pXFxuZHJpdmVycy9jZHgvY2R4LmMtNTA0LXtcXG5kcml2ZXJzL2NkeC9jZHguYy01MDUtXFx0c3RydWN0IGRldmljZSAqZGV2ID0ga29ial90b19kZXYoa29iaik7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTA2OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUwNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MDg6XFx0Y2R4X2RldiA9IHRvX2NkeF9kZXZpY2UoZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYzo1MDk6XFx0aWYgKGNkeF9kZXYtXFx1MDAzZWlzX2J1cylcXG5kcml2ZXJzL2NkeC9jZHguYy01MTAtXFx0XFx0cmV0dXJuIGEtXFx1MDAzZW1vZGU7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01MTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTE1OnN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjZHhfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTE2LVxcdFxcdTAwMjZkZXZfYXR0cl9yZW1vdmUuYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUyNy1cXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjg6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2Rldl9ncm91cCA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1Mjk6XFx0LmF0dHJzID0gY2R4X2Rldl9hdHRycyxcXG5kcml2ZXJzL2NkeC9jZHguYzo1MzA6XFx0LmlzX3Zpc2libGUgPSBjZHhfZGV2X2F0dHJzX2FyZV92aXNpYmxlLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMS19O1xcbmRyaXZlcnMvY2R4L2NkeC5jLTUzMi1cXG5kcml2ZXJzL2NkeC9jZHguYzo1MzM6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTM0LVxcdFxcdTAwMjZkZXZfYXR0cl9lbmFibGUuYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTUzOC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1Mzk6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgY2R4X2J1c19kZXZfZ3JvdXAgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmM6NTQwOlxcdC5hdHRycyA9IGNkeF9idXNfZGV2X2F0dHJzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0MTpcXHQuaXNfdmlzaWJsZSA9IGNkeF9idXNfYXR0cnNfYXJlX3Zpc2libGUsXFxuZHJpdmVycy9jZHgvY2R4LmMtNTQyLX07XFxuZHJpdmVycy9jZHgvY2R4LmMtNTQzLVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU0NDpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqY2R4X2Rldl9ncm91cHNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NDU6XFx0XFx1MDAyNmNkeF9kZXZfZ3JvdXAsXFxuZHJpdmVycy9jZHgvY2R4LmM6NTQ2OlxcdFxcdTAwMjZjZHhfYnVzX2Rldl9ncm91cCxcXG5kcml2ZXJzL2NkeC9jZHguYy01NDctXFx0TlVMTCxcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU0OS1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NTA6c3RhdGljIGludCBjZHhfZGVidWdfcmVzb3VyY2Vfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9jZHgvY2R4LmMtNTUxLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTI6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSBzLVxcdTAwM2Vwcml2YXRlO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU1My1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU1NS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX0NEWF9ERVZfUkVTT1VSQ0VTOyBpKyspIHtcXG5kcml2ZXJzL2NkeC9jZHguYzo1NTY6XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXMgPSAgXFx1MDAyNmNkeF9kZXYtXFx1MDAzZXJlc1tpXTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NTctXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01NjItfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjU2MzpERUZJTkVfU0hPV19BVFRSSUJVVEUoY2R4X2RlYnVnX3Jlc291cmNlKTtcXG5kcml2ZXJzL2NkeC9jZHguYy01NjQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NTY1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfZGVidWdmc19pbml0KHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2KVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU2Ni17XFxuZHJpdmVycy9jZHgvY2R4LmM6NTY3OlxcdGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRldl9uYW1lKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYpLCBjZHhfZGVidWdmc19kaXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU2ODpcXHRpZiAoSVNfRVJSKGNkeF9kZXYtXFx1MDAzZWRlYnVnZnNfZGlyKSlcXG5kcml2ZXJzL2NkeC9jZHguYy01NjktXFx0XFx0cmV0dXJuO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTU3MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo1NzE6XFx0ZGVidWdmc19jcmVhdGVfZmlsZShcXFwicmVzb3VyY2VcXFwiLCAwNDQ0LCBjZHhfZGV2LVxcdTAwM2VkZWJ1Z2ZzX2RpciwgY2R4X2RldixcXG5kcml2ZXJzL2NkeC9jZHguYzo1NzI6XFx0XFx0XFx0ICAgIFxcdTAwMjZjZHhfZGVidWdfcmVzb3VyY2VfZm9wcyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTczLX1cXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTU3NT1zdGF0aWMgc3NpemVfdCByZXNjYW5fc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01Nzcte1xcbmRyaXZlcnMvY2R4L2NkeC5jOjU3ODpcXHRzdHJ1Y3QgY2R4X2NvbnRyb2xsZXIgKmNkeDtcXG5kcml2ZXJzL2NkeC9jZHguYy01NzktXFx0c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGQ7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy01ODctXFxuZHJpdmVycy9jZHgvY2R4LmM6NTg4OlxcdGd1YXJkKG11dGV4KShcXHUwMDI2Y2R4X2NvbnRyb2xsZXJfbG9jayk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTg5LVxcbmRyaXZlcnMvY2R4L2NkeC5jLTU5MC1cXHQvKiBVbnJlZ2lzdGVyIGFsbCB0aGUgZGV2aWNlcyBvbiB0aGUgYnVzICovXFxuZHJpdmVycy9jZHgvY2R4LmM6NTkxOlxcdGNkeF91bnJlZ2lzdGVyX2RldmljZXMoXFx1MDAyNmNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNTkyLVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmM9NjA4PXN0YXRpYyBCVVNfQVRUUl9XTyhyZXNjYW4pO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYwOS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2MTA6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNkeF9idXNfYXR0cnNbXSA9IHtcXG5kcml2ZXJzL2NkeC9jZHguYy02MTEtXFx0XFx1MDAyNmJ1c19hdHRyX3Jlc2Nhbi5hdHRyLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjEzLX07XFxuZHJpdmVycy9jZHgvY2R4LmM6NjE0OkFUVFJJQlVURV9HUk9VUFMoY2R4X2J1cyk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjE1LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxNjpjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgY2R4X2J1c190eXBlID0ge1xcbmRyaXZlcnMvY2R4L2NkeC5jLTYxNy1cXHQubmFtZVxcdFxcdD0gXFxcImNkeFxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjE4LVxcdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYxOTpcXHQubWF0Y2hcXHRcXHQ9IGNkeF9idXNfbWF0Y2gsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjIwOlxcdC5wcm9iZVxcdFxcdD0gY2R4X3Byb2JlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMTpcXHQucmVtb3ZlXFx0XFx0PSBjZHhfcmVtb3ZlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyMjpcXHQuc2h1dGRvd25cXHQ9IGNkeF9zaHV0ZG93bixcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjM6XFx0LmRtYV9jb25maWd1cmVcXHQ9IGNkeF9kbWFfY29uZmlndXJlLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNDpcXHQuZG1hX2NsZWFudXBcXHQ9IGNkeF9kbWFfY2xlYW51cCxcXG5kcml2ZXJzL2NkeC9jZHguYzo2MjU6XFx0LmJ1c19ncm91cHNcXHQ9IGNkeF9idXNfZ3JvdXBzLFxcbmRyaXZlcnMvY2R4L2NkeC5jOjYyNjpcXHQuZGV2X2dyb3Vwc1xcdD0gY2R4X2Rldl9ncm91cHMsXFxuZHJpdmVycy9jZHgvY2R4LmMtNjI3LX07XFxuZHJpdmVycy9jZHgvY2R4LmM6NjI4OkVYUE9SVF9TWU1CT0xfR1BMKGNkeF9idXNfdHlwZSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjI5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzMDppbnQgX19jZHhfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBjZHhfZHJpdmVyICpjZHhfZHJpdmVyLFxcbmRyaXZlcnMvY2R4L2NkeC5jLTYzMS1cXHRcXHRcXHQgIHN0cnVjdCBtb2R1bGUgKm93bmVyKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjM0LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzNTpcXHRjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcXG5kcml2ZXJzL2NkeC9jZHguYzo2MzY6XFx0Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyLmJ1cyA9IFxcdTAwMjZjZHhfYnVzX3R5cGU7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjM3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjYzODpcXHRlcnJvciA9IGRyaXZlcl9yZWdpc3RlcihcXHUwMDI2Y2R4X2RyaXZlci1cXHUwMDNlZHJpdmVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02MzktXFx0aWYgKGVycm9yKSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjQwLVxcdFxcdHByX2VycihcXFwiZHJpdmVyX3JlZ2lzdGVyKCkgZmFpbGVkIGZvciAlczogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9jZHgvY2R4LmM6NjQxOlxcdFxcdCAgICAgICBjZHhfZHJpdmVyLVxcdTAwM2Vkcml2ZXIubmFtZSwgZXJyb3IpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0Mi1cXHRcXHRyZXR1cm4gZXJyb3I7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NDYtfVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY0NzpFWFBPUlRfU1lNQk9MX0dQTChfX2NkeF9kcml2ZXJfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTY0OC1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NDk6dm9pZCBjZHhfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IGNkeF9kcml2ZXIgKmNkeF9kcml2ZXIpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjUwLXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTE6XFx0ZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmNkeF9kcml2ZXItXFx1MDAzZWRyaXZlcik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjUyLX1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NTM6RVhQT1JUX1NZTUJPTF9HUEwoY2R4X2RyaXZlcl91bnJlZ2lzdGVyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NTQtXFxuZHJpdmVycy9jZHgvY2R4LmM6NjU1OnN0YXRpYyB2b2lkIGNkeF9kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9jZHgvY2R4LmMtNjU2LXtcXG5kcml2ZXJzL2NkeC9jZHguYzo2NTc6XFx0c3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYgPSB0b19jZHhfZGV2aWNlKGRldik7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjU4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY1OTpcXHRrZnJlZShjZHhfZGV2KTtcXG5kcml2ZXJzL2NkeC9jZHguYy02NjAtfVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY2MS1cXG5kcml2ZXJzL2NkeC9jZHguYzo2NjI6c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBjZHhfcGh5c192bV9vcHMgPSB7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjYzLSNpZmRlZiBDT05GSUdfSEFWRV9JT1JFTUFQX1BST1RcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY2OC0vKipcXG5kcml2ZXJzL2NkeC9jZHguYzo2Njk6ICogY2R4X21tYXBfcmVzb3VyY2UgLSBtYXAgYSBDRFggcmVzb3VyY2UgaW50byB1c2VyIG1lbW9yeSBzcGFjZVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY3MC0gKiBAZnA6IEZpbGUgcG9pbnRlci4gTm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbiwgYnV0IHJlcXVpcmVkIHdoZXJlXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02NzktICovXFxuZHJpdmVycy9jZHgvY2R4LmM6NjgwOnN0YXRpYyBpbnQgY2R4X21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZwLCBzdHJ1Y3Qga29iamVjdCAqa29iaixcXG5kcml2ZXJzL2NkeC9jZHguYy02ODEtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgYmluX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTY4My17XFxuZHJpdmVycy9jZHgvY2R4LmM6Njg0OlxcdHN0cnVjdCBjZHhfZGV2aWNlICpjZHhfZGV2ID0gdG9fY2R4X2RldmljZShrb2JqX3RvX2Rldihrb2JqKSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjg1LVxcdGludCBudW0gPSAodW5zaWduZWQgbG9uZylhdHRyLVxcdTAwM2Vwcml2YXRlO1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNjg4LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjY4OTpcXHRyZXMgPSBcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlcmVzW251bV07XFxuZHJpdmVycy9jZHgvY2R4LmMtNjkwLVxcdGlmIChpb21lbV9pc19leGNsdXNpdmUocmVzLVxcdTAwM2VzdGFydCkpXFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy02OTMtXFx0LyogTWFrZSBzdXJlIHRoZSBjYWxsZXIgaXMgbWFwcGluZyBhIHZhbGlkIHJlc291cmNlIGZvciB0aGlzIGRldmljZSAqL1xcbmRyaXZlcnMvY2R4L2NkeC5jOjY5NDpcXHRzaXplID0gKChjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSkgLSAxKSBcXHUwMDNlXFx1MDAzZSBQQUdFX1NISUZUKSArIDE7XFxuZHJpdmVycy9jZHgvY2R4LmMtNjk1LVxcdGlmICh2bWEtXFx1MDAzZXZtX3Bnb2ZmICsgdm1hX3BhZ2VzKHZtYSkgXFx1MDAzZSBzaXplKVxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzAyLVxcdHZtYS1cXHUwMDNldm1fcGFnZV9wcm90ID0gcGdwcm90X2RldmljZSh2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdCk7XFxuZHJpdmVycy9jZHgvY2R4LmM6NzAzOlxcdHZtYS1cXHUwMDNldm1fcGdvZmYgKz0gKGNkeF9yZXNvdXJjZV9zdGFydChjZHhfZGV2LCBudW0pIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvY2R4L2NkeC5jOjcwNDpcXHR2bWEtXFx1MDAzZXZtX29wcyA9IFxcdTAwMjZjZHhfcGh5c192bV9vcHM7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzA1LVxcdHJldHVybiBpb19yZW1hcF9wZm5fcmFuZ2Uodm1hLCB2bWEtXFx1MDAzZXZtX3N0YXJ0LCB2bWEtXFx1MDAzZXZtX3Bnb2ZmLFxcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzA5LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjcxMDpzdGF0aWMgdm9pZCBjZHhfZGVzdHJveV9yZXNfYXR0cihzdHJ1Y3QgY2R4X2RldmljZSAqY2R4X2RldiwgaW50IG51bSlcXG5kcml2ZXJzL2NkeC9jZHguYy03MTEte1xcbi0tXFxuZHJpdmVycy9jZHgvY2R4LmMtNzE3LVxcbmRyaXZlcnMvY2R4L2NkeC5jOjcxODpcXHRcXHRyZXNfYXR0ciA9IGNkeF9kZXYtXFx1MDAzZXJlc19hdHRyW2ldO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTcxOS1cXHRcXHRpZiAocmVzX2F0dHIpIHtcXG5kcml2ZXJzL2NkeC9jZHguYzo3MjA6XFx0XFx0XFx0c3lzZnNfcmVtb3ZlX2Jpbl9maWxlKFxcdTAwMjZjZHhfZGV2LVxcdTAwM2VkZXYua29iaiwgcmVzX2F0dHIpO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTcyMS1cXHRcXHRcXHRrZnJlZShyZXNfYXR0cik7XFxuLS1cXG5kcml2ZXJzL2NkeC9jZHguYy03MjYtI2RlZmluZSBDRFhfUkVTX0FUVFJfTkFNRV9MRU5cXHQxMFxcbmRyaXZlcnMvY2R4L2NkeC5jOjcyNzpzdGF0aWMgaW50IGNkeF9jcmVhdGVfcmVzX2F0dHIoc3RydWN0IGNkeF9kZXZpY2UgKmNkeF9kZXYsIGludCBudW0pXFxuZHJpdmVycy9jZHgvY2R4LmMtNzI4LXtcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jLTc0MC1cXG5kcml2ZXJzL2NkeC9jZHguYzo3NDE6XFx0Y2R4X2Rldi1cXHUwMDNlcmVzX2F0dHJbbnVtXSA9IHJlc19hdHRyO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc0Mi1cXHRzcHJpbnRmKHJlc19hdHRyX25hbWUsIFxcXCJyZXNvdXJjZSVkXFxcIiwgbnVtKTtcXG5kcml2ZXJzL2NkeC9jZHguYy03NDMtXFxuZHJpdmVycy9jZHgvY2R4LmM6NzQ0OlxcdHJlc19hdHRyLVxcdTAwM2VtbWFwID0gY2R4X21tYXBfcmVzb3VyY2U7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzQ1LVxcdHJlc19hdHRyLVxcdTAwM2VhdHRyLm5hbWUgPSByZXNfYXR0cl9uYW1lO1xcbmRyaXZlcnMvY2R4L2NkeC5jLTc0Ni1cXHRyZXNfYXR0ci1cXHUwMDNlYXR0ci5tb2RlID0gMDYwMDtcXG5kcml2ZXJzL2NkeC9jZHguYzo3NDc6XFx0cmVzX2F0dHItXFx1MDAzZXNpemUgPSBjZHhfcmVzb3VyY2VfbGVuKGNkeF9kZXYsIG51bSk7XFxuZHJpdmVycy9jZHgvY2R4LmMtNzQ4LVxcdHJlc19hdHRyLVxcdTAwM2Vwcml2YXRlID0gKHZvaWQgKikodW5zaWduZWQgbG9uZyludW07XFxuZHJpdmVycy9jZHgvY2R4LmM6NzQ5OlxcdHJldCA9IHN5c2ZzX2NyZWF0ZV9iaW5fZmlsZShcXHUwMDI2Y2R4X2Rldi1cXHUwMDNlZGV2LmtvYmosIHJlc19hdHRyKTtcXG5kcml2ZXJzL2NkeC9jZHguYy03NTAtXFx0aWYgKHJldClcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMjo0Ni4yNjQ5NjAxOVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NzIzNDMzMzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIENEWCBDb250cm9sbGVyIFJlZ2lzdHJhdGlvbiBhbmQgRW11bGF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhlIENEWCBjb250cm9sbGVyIHJlZ2lzdHJhdGlvbiBiZWdpbnMgd2l0aGluIGBkcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmNgLiBUaGUgYHhsbnhfY2R4X3Byb2JlYCBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgYnkgYSBwbGF0Zm9ybSBkZXZpY2UgbWF0Y2ggZm9yIGBcInhsbngsdmVyc2FsLW5ldC1jZHhcImAuIEl0IHRoZW4gZXN0YWJsaXNoZXMgYSBjb25uZWN0aW9uIHRvIGEgcmVtb3RlcHJvYyBpbnN0YW5jZSAoc3BlY2lmaWNhbGx5LCBgcjVfY29yZV9ub2RlYCkuIFRoaXMgaW52b2x2ZXMgc2V0dGluZyB1cCBhbiBSUE1TRyBkcml2ZXIuIE9uY2UgdGhlIFJQTVNHIGNoYW5uZWwgYmVjb21lcyBvcGVyYXRpb25hbCwgYGNkeF9ycG1zZ19wcm9iZWAgaXMgaW52b2tlZCwgd2hpY2ggdGhlbiBzY2hlZHVsZXMgYGNkeF9ycG1zZ19wb3N0X3Byb2JlX3dvcmtgLCB1bHRpbWF0ZWx5IGxlYWRpbmcgdG8gYGNkeF9ycG1zZ19wb3N0X3Byb2JlYCBhbmQsIGZpbmFsbHksIGBjZHhfcmVnaXN0ZXJfY29udHJvbGxlcmAuIENvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUgcnVubmluZyBvbiB0aGUgVmVyc2FsIEFDQVAgUjUgY29yZSBoYXBwZW5zIHZpYSBNQ0RJIChyZW1vdGVwcm9jIG1haWxib3gvcnBtc2cpIGR1cmluZyBlaXRoZXIgYHJlc2Nhbl9zdG9yZWAgb3IgYGNkeF9zY2FuX2RldmljZXNgLCB3aGljaCBhcmUgdXNlZCB0byBlbnVtZXJhdGUgYnVzZXMgYW5kIGRldmljZXMuXG5cbk5vdywgYSBjcml0aWNhbCBwb2ludDogKip0aGVyZSdzIG5vIHNvZnR3YXJlIGVtdWxhdG9yIGZvciB0aGUgQ0RYIGNvbnRyb2xsZXIgb3IgYW55IG9mIGl0cyBhc3NvY2lhdGVkIGRldmljZXMgd2l0aGluIFFFTVUsIEdDRSwgb3IgZXZlbiB0aGUgbWFpbmxpbmUgTGludXgga2VybmVsLioqIFRoaXMgbWFrZXMgdGhpbmdzIGRpZmZpY3VsdC4gRnVydGhlcm1vcmUsIHRoZSBhcmNoaXRlY3R1cmUgaW4gcXVlc3Rpb24gaGVyZSBpcyBgYW1kNjRgLCB3aGlsZSB0aGUgYENEWF9CVVNgIGZ1bmN0aW9uYWxpdHkgYXBwZWFycyB0byBkZXBlbmQgb24gYSBjb21iaW5hdGlvbiBvZiBgT0YgXHUwMDI2XHUwMDI2IEFSTTY0IHx8IENPTVBJTEVfVEVTVGAuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIFZlcnNhbCBBQ0FQL0NEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBBUk02NCBTb0MgRlBHQSBoYXJkd2FyZSBhbmQgbmVlZHMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGZpcm13YXJlIChNQ0RJIGNvbW11bmljYXRpb24gd2l0aCB0aGUgUjUgY29yZSkgdG8gb3BlcmF0ZS5cblxuQ29uc2lkZXJpbmcgdGhlIGdpdmVuIGluc3RydWN0aW9ucywgc3BlY2lmaWNhbGx5IFNlY3Rpb24gMiwgd2hlcmUgd2UncmUgbG9va2luZyBmb3Igc2NlbmFyaW9zIHdoZXJlIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCB0d28gY3JpdGVyaWEgaW1tZWRpYXRlbHkgc3RhbmQgb3V0LlxuXG4qICAgKipTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6KiogQ0RYIGZhbGxzIHNxdWFyZWx5IGludG8gdGhpcyBjYXRlZ29yeS4gSXQgcmVxdWlyZXMgYSBWZXJzYWwgQUNBUCBTb0MsIGEgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0gd2l0aCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBpbnRlcmFjdGlvbnMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbiogICAqKlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoqKiBUaGUgY29kZSdzIGRlcGVuZGVuY2Ugb24gdGhlIEFSTTY0IGFyY2hpdGVjdHVyZSwgY291cGxlZCB3aXRoIGl0cyByZWxpYW5jZSBvbiBzcGVjaWZpYyBmaXJtd2FyZSBhbmQgaGFyZHdhcmUsIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcmVhY2ggdGhlc2UgZXhlY3V0aW9uIHBhdGhzIG9uIGFtZDY0IHN5c3RlbXMuXG5cblRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBpZiB0aGVyZSdzICphbnkqIHdheSB0byBpbnN0YW50aWF0ZSB0aGUgQ0RYIGNvbnRyb2xsZXIgb24gYW1kNjQgb3Igd2l0aGluIHN0YW5kYXJkIFFFTVUuIEFyZSB0aGVyZSBhbnkgcGxhdGZvcm0gZGV2aWNlcyBvciBtb2NrIGRyaXZlcnMgdGhhdCBtaWdodCBzaW11bGF0ZSB0aGUgQ0RYIGJlaGF2aW9yPyBJIG5lZWQgdG8gc2VhcmNoIGZvciBgXCJ2ZXJzYWwtbmV0LWNkeFwiYCBvciBhbnkgb3RoZXIgQ0RYLXJlbGF0ZWQga2V5d29yZHMgdG8gbWFrZSBzdXJlIHRoZXJlJ3Mgbm90aGluZyB0aGF0IEknbSBtaXNzaW5nLiBHaXZlbiBteSBjdXJyZW50IHVuZGVyc3RhbmRpbmcsIEkgYW0gaGlnaGx5IGNvbmZpZGVudCB0aGF0IHRoaXMgcGF0aCBpcyBub3Qgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIHJlcXVpcmVtZW50cyBJIHdhcyBnaXZlbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgyODEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTQ6MjI6NTIuOTg4Mzk4NTUxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjY0NTA0MTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZlcnNhbC1uZXQtY2R4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sLTMtLS0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWw6NDokaWQ6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9zY2hlbWFzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtNS0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sPTM3PXByb3BlcnRpZXM6XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtMzgtICBjb21wYXRpYmxlOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sOjM5OiAgICBjb25zdDogeGxueCx2ZXJzYWwtbmV0LWNkeFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sLTQwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWw9NzA9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbC03Mi0gICAgY2R4IHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYnVzL3hsbngsdmVyc2FsLW5ldC1jZHgueWFtbDo3MzogICAgICAgIGNvbXBhdGlibGUgPSBcXFwieGxueCx2ZXJzYWwtbmV0LWNkeFxcXCI7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2J1cy94bG54LHZlcnNhbC1uZXQtY2R4LnlhbWwtNzQtICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFxcdTAwM2MxXFx1MDAzZTtcXG4tLVxcbk1BSU5UQUlORVJTPTEwNTg9UzpcXHRNYWludGFpbmVkXFxuTUFJTlRBSU5FUlM6MTA1OTpGOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMveGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sXFxuTUFJTlRBSU5FUlMtMTA2MC1GOlxcdGRyaXZlcnMvY2R4LypcXG4tLVxcbmRyaXZlcnMvY2R4L2NkeC5jPTgzPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpjZHhfZGVidWdmc19kaXI7XFxuZHJpdmVycy9jZHgvY2R4LmMtODQtXFxuZHJpdmVycy9jZHgvY2R4LmM6ODU6c3RhdGljIGNoYXIgKmNvbXBhdF9ub2RlX25hbWUgPSBcXFwieGxueCx2ZXJzYWwtbmV0LWNkeFxcXCI7XFxuZHJpdmVycy9jZHgvY2R4LmMtODYtXFxuLS1cXG5kcml2ZXJzL2NkeC9jb250cm9sbGVyL2NkeF9jb250cm9sbGVyLmM9MjM2PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkeF9tYXRjaF90YWJsZVtdID0ge1xcbmRyaXZlcnMvY2R4L2NvbnRyb2xsZXIvY2R4X2NvbnRyb2xsZXIuYzoyMzc6XFx0ey5jb21wYXRpYmxlID0gXFxcInhsbngsdmVyc2FsLW5ldC1jZHhcXFwiLH0sXFxuZHJpdmVycy9jZHgvY29udHJvbGxlci9jZHhfY29udHJvbGxlci5jLTIzOC1cXHR7IH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIyOjU1LjI1MjkwODk1M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQ0OTk4NjYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgVGFyZ2V0IENvZGUgYW5kIEZ1enppbmcgRmVhc2liaWxpdHkqKlxuXG5Pa2F5LCBhZnRlciB0aGlzIHRob3JvdWdoIHJldmlldywgSSdtIGFic29sdXRlbHkgY2VydGFpbi4gRXZlcnl0aGluZyBwb2ludHMgZGlyZWN0bHkgdG8gYW4gQU1EL1hpbGlueCBWZXJzYWwgRlBHQSAvIEFSTTY0IHBsYXRmb3JtLiBUaGlzIGlzbid0IGp1c3QgYSBnZW5lcmljIEFSTTY0IHRoaW5nOyBpdCByZXF1aXJlcyBwaHlzaWNhbCBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIGhhcmR3YXJlIHdpdGggUjUgZmlybXdhcmUgY29tbXVuaWNhdGlvbi4gRXZlbiB0aG91Z2ggdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYGFtZDY0YCBpbml0aWFsbHksIHRoZSByZXF1aXJlbWVudCBpcyBzdGlsbCBwaHlzaWNhbCBoYXJkd2FyZS5cblxuU3BlY2lmaWNhbGx5LCB0aGF0IGB2ZmlvX2NkeF9tbWFwX21taW9gIGZ1bmN0aW9uIGluIGBkcml2ZXJzL3ZmaW8vY2R4L21haW4uY2Ag4oCTIGl0J3Mgb25seSBldmVyIGNhbGxlZCB0aHJvdWdoIHRoZSBgbW1hcGAgY2FsbGJhY2sgb2YgdGhlIGB2ZmlvLWNkeGAgZHJpdmVyLiBBbmQgdGhhdCBkcml2ZXIgaXMgKm9ubHkqIHJlZ2lzdGVyZWQgZm9yIENEWCBkZXZpY2VzLCB3aGljaCBhcmUgZW5hYmxlZCBieSBgQ09ORklHX1ZGSU9fQ0RYYCBhbmQgYENPTkZJR19DRFhfQlVTYC4gWW91IGNhbid0IGp1c3Qgc3BpbiB0aGlzIHVwIGluIFFFTVUgb3IgR0NFLiBXaXRob3V0IHRoYXQgcGh5c2ljYWwgQ0RYIGhhcmR3YXJlLCB3aXRob3V0IHRoZSBjb250cm9sbGVyIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcywgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSBvdXIgYHNldC1yZXN1bHRzYCBmaWVsZHMuIFllcCwgYFdvcnRoRnV6emluZ2AgaXMgdW5lcXVpdm9jYWxseSBgZmFsc2VgLiBUaGUgYFJlYXNvbmluZ2Agc2hvdWxkIGJlIGNyeXN0YWwgY2xlYXIuIFRoZSBgRm9jdXNTeW1ib2xzYD8gRW1wdHkuIE5vIGZvY3VzIHN5bWJvbHMuIEFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgPyBBbHNvIGVtcHR5LiBQZXJmZWN0LlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIHRvb2wgY2FsbCBmb3JtYXR0aW5nLiBPa2F5LCBgRm9jdXNTeW1ib2xzOiBbXWAsIGBFbmFibGVDb25maWdzOiBbXWAsIGFuZCB0aGUgYFJlYXNvbmluZ2A6IFwiVGhlIG1vZGlmaWVkIGZ1bmN0aW9uIHZmaW9fY2R4X21tYXBfbW1pbyBpcyBwYXJ0IG9mIHRoZSBWRklPIENEWCBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKSwgd2hpY2ggc3VwcG9ydHMgQU1EL1hpbGlueCBWZXJzYWwgQ0RYIGJ1cyBkZXZpY2VzLiBDRFggYnVzIGRldmljZXMgcmVxdWlyZSBwaHlzaWNhbCBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIGhhcmR3YXJlIGFuZCBBUk02NCBmaXJtd2FyZSBjb21tdW5pY2F0aW9uIChNQ0RJIG92ZXIgcnBtc2cpLCB3aGljaCBjYW5ub3QgYmUgZW11bGF0ZWQgb3IgaW5zdGFudGlhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoZS5nLiBRRU1VIG9uIGFtZDY0KS4gSGVuY2UsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIiBUaGF0J3MgZ29vZC5cblxuQWxyaWdodCwgdGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMDU0LCJPdXRwdXRUb2tlbnMiOjE0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxNDoyMzowNy43MDI5MDE3MjlaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBtb2RpZmllZCBmdW5jdGlvbiB2ZmlvX2NkeF9tbWFwX21taW8gaXMgcGFydCBvZiB0aGUgVkZJTyBDRFggYnVzIGRyaXZlciAoZHJpdmVycy92ZmlvL2NkeC9tYWluLmMpLiBUaGUgQ0RYIGJ1cyBpcyBzcGVjaWZpYyB0byBBTUQvWGlsaW54IFZlcnNhbCBBQ0FQIHBsYXRmb3JtcyBhbmQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUvZmlybXdhcmUgKHJwbXNnL01DREkgY29tbXVuaWNhdGlvbiB3aXRoIGFuIFI1IG1hbmFnZW1lbnQgY29udHJvbGxlcikgdG8gZGlzY292ZXIgYW5kIHJlZ2lzdGVyIENEWCBkZXZpY2VzLiBCZWNhdXNlIHRoZXJlIGFyZSBubyBlbXVsYXRlZCBDRFggY29udHJvbGxlcnMgb3IgZGV2aWNlcyBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VIGVudmlyb25tZW50cyAocGFydGljdWxhcmx5IG9uIGFtZDY0KSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgZnVuY3Rpb24gdmZpb19jZHhfbW1hcF9tbWlvIGlzIHBhcnQgb2YgdGhlIFZGSU8gQ0RYIGJ1cyBkcml2ZXIgKGRyaXZlcnMvdmZpby9jZHgvbWFpbi5jKS4gVGhlIENEWCBidXMgaXMgc3BlY2lmaWMgdG8gQU1EL1hpbGlueCBWZXJzYWwgQUNBUCBwbGF0Zm9ybXMgYW5kIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlL2Zpcm13YXJlIChycG1zZy9NQ0RJIGNvbW11bmljYXRpb24gd2l0aCBhbiBSNSBtYW5hZ2VtZW50IGNvbnRyb2xsZXIpIHRvIGRpc2NvdmVyIGFuZCByZWdpc3RlciBDRFggZGV2aWNlcy4gQmVjYXVzZSB0aGVyZSBhcmUgbm8gZW11bGF0ZWQgQ0RYIGNvbnRyb2xsZXJzIG9yIGRldmljZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudHMgKHBhcnRpY3VsYXJseSBvbiBhbWQ2NCksIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE0OjIzOjA3LjcwMjk0MzQzOVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflows7gpv[1] Phase: Running StartedAt: 2026-09-04 14:23:19 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflows7gpv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 14:23:19 +0000 UTC FinishedAt: 2026-09-04 14:23:23 +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,}