Name: series-workflowgvgb5 Phase: Failed StartedAt: 2026-07-10 15:59:07 +0000 UTC FinishedAt: 2026-07-10 16:23:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgvgb5[0] Phase: Succeeded StartedAt: 2026-07-10 15:59:07 +0000 UTC FinishedAt: 2026-07-10 16:22:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgvgb5[0].run-triage Phase: Succeeded StartedAt: 2026-07-10 15:59:07 +0000 UTC FinishedAt: 2026-07-10 16:22:51 +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+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiOTJhNThmODRmNjU0NTgzODY2ZTAxMTk1MGRiYjFlYzc0NDc1MzE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTY6MjA6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi5mYTAxMTM1OTdjOTc4OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbkBAIC01MjUsNiAmIzQzOzUyNSwzMSBAQCBzdGF0aWMgaW50IGludGVsX3NldF9yZWdfYWNjZXNzKGNvbnN0IHN0cnVjdCBwbWNfc2VyZGVzX3JlZ3MgKnJlZ3MsIGludCBtYXhfcmVnc1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzOy8qIFJldHVybiB0cnVlIGlmIHRoZSBTZXJEZXMgbGFuZSByYXRlIG11c3QgY2hhbmdlIHRvIHNlcnZlIEBpbnRlcmZhY2UuXG4mIzQzOyAqIElmIHRoZSBjdXJyZW50IHJhdGUgY2Fubm90IGJlIGRldGVybWluZWQsIHJlY29uZmlndXJlIGFzIGJlZm9yZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2LFxuJiM0MztcdFx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHUzMiBjdXJfcmF0ZSwgd2FudF9yYXRlO1xuJiM0MztcdGludCBkYXRhO1xuJiM0MztcbiYjNDM7XHRpZiAoIWludGVsX3ByaXYtXHUwMDNlbWRpb19hZGhvY19hZGRyKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdGRhdGEgPSBtZGlvYnVzX3JlYWQocHJpdi1cdTAwM2VtaWksIGludGVsX3ByaXYtXHUwMDNlbWRpb19hZGhvY19hZGRyLFxuJiM0MztcdFx0XHQgICAgU0VSREVTX0dDUjApO1xuJiM0MztcdGlmIChkYXRhIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdGN1cl9yYXRlID0gKGRhdGEgXHUwMDI2IFNFUkRFU19SQVRFX01BU0spIFx1MDAzZVx1MDAzZSBTRVJERVNfUkFURV9QQ0lFX1NISUZUO1xuJiM0MztcdHdhbnRfcmF0ZSA9IGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYID9cbiYjNDM7XHRcdFx0U0VSREVTX1JBVEVfUENJRV9HRU4yIDogU0VSREVTX1JBVEVfUENJRV9HRU4xO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY3VyX3JhdGUgIT0gd2FudF9yYXRlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0XHQgICAgdm9pZCAqaW50ZWxfZGF0YSxcbiBcdFx0XHQgICAgdW5zaWduZWQgaW50IG1vZGUsXG5AQCAtNTM2LDYgJiM0Mzs1NjEsOSBAQCBzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRpbnQgbWF4X3JlZ3MgPSAwO1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0aWYgKCFpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcocHJpdiwgaW50ZWxfcHJpdiwgaW50ZXJmYWNlKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdHJldCA9IGludGVsX3Rzbl9sYW5lX2lzX2F2YWlsYWJsZShuZGV2LCBpbnRlbF9wcml2KTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXYsIFwmIzM0O05vIFRTTiBsYW5lIGF2YWlsYWJsZSB0byBzZXQgdGhlIHJlZ2lzdGVycy5cXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI5MmE1OGY4NGY2NTQ1ODM4NjZlMDExOTUwZGJiMWVjNzQ0NzUzMTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxNjoyMDowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi5mYTAxMTM1OTdjOTc4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCkBAIC01MjUsNiAmIzQzOzUyNSwzMSBAQCBzdGF0aWMgaW50IGludGVsX3NldF9yZWdfYWNjZXNzKGNvbnN0IHN0cnVjdCBwbWNfc2VyZGVzX3JlZ3MgKnJlZ3MsIGludCBtYXhfcmVncwogCXJldHVybiByZXQ7CiB9CiAKJiM0MzsvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgU2VyRGVzIGxhbmUgcmF0ZSBtdXN0IGNoYW5nZSB0byBzZXJ2ZSBAaW50ZXJmYWNlLgomIzQzOyAqIElmIHRoZSBjdXJyZW50IHJhdGUgY2Fubm90IGJlIGRldGVybWluZWQsIHJlY29uZmlndXJlIGFzIGJlZm9yZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgYm9vbCBpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkJc3RydWN0IGludGVsX3ByaXZfZGF0YSAqaW50ZWxfcHJpdiwKJiM0MzsJCQkJCXBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwl1MzIgY3VyX3JhdGUsIHdhbnRfcmF0ZTsKJiM0MzsJaW50IGRhdGE7CiYjNDM7CiYjNDM7CWlmICghaW50ZWxfcHJpdi0mZ3Q7bWRpb19hZGhvY19hZGRyKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CWRhdGEgPSBtZGlvYnVzX3JlYWQocHJpdi0mZ3Q7bWlpLCBpbnRlbF9wcml2LSZndDttZGlvX2FkaG9jX2FkZHIsCiYjNDM7CQkJICAgIFNFUkRFU19HQ1IwKTsKJiM0MzsJaWYgKGRhdGEgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CWN1cl9yYXRlID0gKGRhdGEgJmFtcDsgU0VSREVTX1JBVEVfTUFTSykgJmd0OyZndDsgU0VSREVTX1JBVEVfUENJRV9TSElGVDsKJiM0MzsJd2FudF9yYXRlID0gaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVggPwomIzQzOwkJCVNFUkRFU19SQVRFX1BDSUVfR0VOMiA6IFNFUkRFU19SQVRFX1BDSUVfR0VOMTsKJiM0MzsKJiM0MzsJcmV0dXJuIGN1cl9yYXRlICE9IHdhbnRfcmF0ZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCQkgICAgdm9pZCAqaW50ZWxfZGF0YSwKIAkJCSAgICB1bnNpZ25lZCBpbnQgbW9kZSwKQEAgLTUzNiw2ICYjNDM7NTYxLDkgQEAgc3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCWludCBtYXhfcmVncyA9IDA7CiAJaW50IHJldCA9IDA7CiAKJiM0MzsJaWYgKCFpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcocHJpdiwgaW50ZWxfcHJpdiwgaW50ZXJmYWNlKSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwogCXJldCA9IGludGVsX3Rzbl9sYW5lX2lzX2F2YWlsYWJsZShuZGV2LCBpbnRlbF9wcml2KTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQluZXRkZXZfaW5mbyhwcml2LSZndDtkZXYsICYjMzQ7Tm8gVFNOIGxhbmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgcmVnaXN0ZXJzLlxuJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjY5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBJbnRlbCBTVE1NQUMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jYC4gVGhleSYjMzk7dmUgYWRkZWQgdGhpcyBuZXcgZnVuY3Rpb24sIGBpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWdgLCBhbmQgdGhleSYjMzk7cmUgY2FsbGluZyBpdCBmcm9tIGBpbnRlbF9tYWNfZmluaXNoYC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBzdG1tYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCBwbGF0Zm9ybXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gYXNzZXNzIGl0cyByZWxldmFuY2UgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJcyB0aGlzIGNvZGUgcGF0aCBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsIHNldHVwPwoKTGV0JiMzOTtzIHNlZSwgYGR3bWFjLWludGVsLmNgIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgSW50ZWwgRFdNQUMsIHRoYXQmIzM5O3MgRGVzaWduV2FyZSBNQUMuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd29uZGVyIGFib3V0IGZ1enppbmcuIFBDSSBkcml2ZXJzIGZvciBoYXJkd2FyZS1zcGVjaWZpYyBkZXZpY2VzIG9mdGVuIHBvc2UgY2hhbGxlbmdlcyBmb3IgZnV6emluZywgdW5sZXNzIHdlIGhhdmUgcHJvcGVyIFBDSSBlbXVsYXRpb24gb3IgaXQgaXMgZ2VuZXJpYyBlbm91Z2guIEkgbmVlZCB0byBkaWcgaW50byBgZHdtYWMtaW50ZWwuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB0cmlnZ2VyaW5nIGV4ZWN1dGlvbiBvZiB0aGlzIG5ldyBmdW5jdGlvbiB0byBldmFsdWF0ZSBob3cgYWNjZXNzaWJsZSBpdCBpcy4gSSYjMzk7bSBnb2luZyB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHdvcnRod2hpbGUgcGxhY2UgdG8gZm9jdXMgcmVzb3VyY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTMxPXN0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU1MzpzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1NC1cdFx0XHQgICAgdm9pZCAqaW50ZWxfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Mz1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzkxLVx0cGxhdC1cdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzkyOlx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzkzLVx0cGxhdC1cdTAwM2VjbGtfcHRwX3JhdGUgPSAyMDQ4MDAwMDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDk9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NTYtXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NTc6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04OTg9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDUtXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MDY6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIwPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDI4LVx0cGxhdC1cdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTAyOTpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMzAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU0NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBmb3IgSW50ZWwgRWxraGFydCBMYWtlIGFuZCBBbGRlciBMYWtlLU4gUGxhdGZvcm1zKioKCk9rYXksIHNvIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEludGVsJiMzOTtzIEVsa2hhcnQgTGFrZSAoRUhMKSBhbmQgQWxkZXIgTGFrZS1OIChBREwtTikgcGxhdGZvcm1zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IFBDSSBJRHMgaXQmIzM5O3MgcmVnaXN0ZXJpbmcgYW5kIGJpbmRpbmcgdG8/IEtub3dpbmcgdGhhdCBpcyBjcnVjaWFsLiBDYW4gd2UgZnV6eiB0aGlzIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXImIzM5O3MgZ290IHRoYXQgYHN5el9wY2lfZGV2aWNlX3NldHVwYCBjYWxsLCB3aGljaCBpcyBpbmNyZWRpYmx5IHVzZWZ1bCBmb3IgZW11bGF0aW5nIFBDSSBkZXZpY2VzLCByaWdodD8KClNvLCB0aGUgbmV4dCBzdGVwLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRyaXZlciYjMzk7cyBjb2RlIGFuZCBwaW5wb2ludCB0aG9zZSBQQ0kgSURzLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IGlmIGBzeXpfcGNpX2RldmljZV9zZXR1cGAgY2FuIGV2ZW4gaW50ZXJhY3Qgd2l0aCB0aGlzIHRoaW5nLCBhbmQgaWYgc28sIGhvdyBlZmZlY3RpdmVseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kZXZpY2VfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2MD1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjE6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzU4PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkxLVx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFFVQVJLLCBcdTAwMjZxdWFya19pbmZvKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QgaGVyZS4KCioqQW5hbHl6aW5nIFN5emthbGxlciBhbmQgTmV0d29yayBEZXZpY2UgRHJpdmVyIEludGVyYWN0aW9uKioKClJpZ2h0LCBzbyBTeXprYWxsZXIgY2FuIGVtdWxhdGUgUENJIGRldmljZXMsIHdoaWNoIGlzIGdyZWF0LCB0aGFua3MgdG8gYHN5el9wY2lfZGV2aWNlX3NldHVwYC4gQnV0IHRoZSByZWFsIGludGVyZXN0aW5nIHBhcnQgaGVyZSBpcyBob3cgdGhlIGVtdWxhdGVkIGRldmljZSBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbnMsIHNwZWNpZmljYWxseSBQSFlzIGFuZCBNRElPIGJ1c2VzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcHJvYmUgYW5kIHNlZSBpZiB3ZSBjYW4gcmVhY2ggYGludGVsX21hY19maW5pc2hgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IGZ1bmN0aW9uIG5hbWUgcmluZ3MgYSBiZWxsLCBJJiMzOTt2ZSBzZWVuIGl0IGJlZm9yZSB3aGVuIGRlYnVnZ2luZyBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVycy4KCk5vdywgd2hlcmUgaXMgYGludGVsX21hY19maW5pc2hgIGNhbGxlZCBmcm9tPyBQcmV0dHkgc3VyZSBpdCYjMzk7cyBidXJpZWQgc29tZXdoZXJlIGluIHRoZSBgc3RtbWFjYCBjb3JlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgc3RtbWFjYCBjb2RlIGFuZCBmaW5kIHRoZSBjYWxsIHNpdGVzLiBHb3R0YSB0cmFjZSBiYWNrIHRob3NlIGZ1bmN0aW9uIGNhbGxzIHRvIHNlZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIGlkZW50aWZ5IHBvc3NpYmxlIGVudHJ5IHBvaW50cy4gVGhpcyBjb3VsZCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgaWYgd2UgY2FuIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGF0IGRyaXZlciYjMzk7cyBsaWZlY3ljbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjX2ZpbmlzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTUzMT1zdGF0aWMgYm9vbCBpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1NTM6c3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NTQtXHRcdFx0ICAgIHZvaWQgKmludGVsX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03ODM9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5MS1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc5MjpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5My1cdHBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlID0gMjA0ODAwMDAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODQ5PXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODU2LVx0cGxhdC1cdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODU3Olx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODk4PXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTA1LVx0cGxhdC1cdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTA2Olx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTAyMD1zdGF0aWMgaW50IGFkbG5fc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyOC1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjk6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9NjExPXN0YXRpYyB2b2lkIHFjb21fZXRocW9zX3NlcmRlc19wb3dlcmRvd24oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy02MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jOjYxOTpzdGF0aWMgaW50IGV0aHFvc19tYWNfZmluaXNoX3NlcmRlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjIwLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTcyMS1cdFx0cGxhdF9kYXQtXHUwMDNlZml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3NnbWlpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3MjI6XHRcdHBsYXRfZGF0LVx1MDAzZW1hY19maW5pc2ggPSBldGhxb3NfbWFjX2ZpbmlzaF9zZXJkZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTcyMy1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMDM3PXN0YXRpYyB2b2lkIHN0bW1hY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNDM6c3RhdGljIGludCBzdG1tYWNfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDQtXHRcdFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTA0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0OTpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWFjX2ZpbmlzaClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA1MDpcdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1hY19maW5pc2gobmRldiwgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWJzcF9wcml2LCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDUxLVx0XHRcdFx0ICAgICAgIGludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMjY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIHN0bW1hY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMjY3LVx0Lm1hY19jb25maWcgPSBzdG1tYWNfbWFjX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTI2ODpcdC5tYWNfZmluaXNoID0gc3RtbWFjX21hY19maW5pc2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEyNjktXHQubWFjX2xpbmtfZG93biA9IHN0bW1hY19tYWNfbGlua19kb3duLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtYWNfZmluaXNoYCBDYWxsYmFjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbWFjX2ZpbmlzaGAgY2FsbGJhY2suIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBzdG1tYWNfbWFjX2ZpbmlzaGAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSBgcGh5bGlua19tYWNfb3BzYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgZHVyaW5nIHBoeWxpbmsgY29uZmlndXJhdGlvbiDigJMgYmFzaWNhbGx5IHdoZW5ldmVyIHRoZSBsaW5rIHN0YXR1cyBjaGFuZ2VzLCBsaWtlIHdoZW4gdGhlIGludGVyZmFjZSBjb21lcyB1cCBvciBnb2VzIGRvd24sIG9yIG1heWJlIGlmIHRoZXJlJiMzOTtzIGFuIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGNoYW5nZS4gTWFrZXMgc2Vuc2UuCgpUbyBldmVuIGdldCB0byB0aGlzIGBtYWNfZmluaXNoYCBmdW5jdGlvbiwgdGhlIGBkd21hYy1pbnRlbGAgZHJpdmVyIG5lZWRzIHRvIHByb2JlIHN1Y2Nlc3NmdWxseS4gVGhhdCYjMzk7cyBrZXkuIFNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCBkb2VzIHRoZSBgZHdtYWMtaW50ZWxgIGRyaXZlciAqbmVlZCogdG8gYmUgcHJlc2VudCB0byBwcm9iZSB3aXRob3V0IGZhaWxpbmc/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnN0cmFpbnRzIG9mIHRoZSBgZHdtYWMtaW50ZWxgIGRyaXZlciwgYmVjYXVzZSBpZiB0aGUgZHJpdmVyIHdvbiYjMzk7dCBsb2FkLCB0aGlzIGVudGlyZSBjYWxsYmFjayBtZWNoYW5pc20gaXMgbW9vdC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBgZHdtYWMtaW50ZWxgIHByb2JlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnRlbF9ldGhfcGNpX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyMzE9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI0OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI0OTogKiBpbnRlbF9ldGhfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNTAtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjA6c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjYxLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTQtXHQuaWRfdGFibGUgPSBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE1Olx0LnByb2JlID0gaW50ZWxfZXRoX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNi1cdC5yZW1vdmUgPSBpbnRlbF9ldGhfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgaW50ZWxfZXRoX3BjaV9wcm9iZWAgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gYGludGVsX2V0aF9wY2lfcHJvYmVgIGNhbGxzIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gc3l6a2FsbGVyIHJlbGlhYmx5IGVtdWxhdGUgdGhlIFBDSSBkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXM/ICBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aGF0IHN5emthbGxlciB1c2VzLCBsaWtlIFFFTVUuICAKClN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgLCBidXQgdGhhdCBkb2VzbiYjMzk7dCBtZWFuIGl0IGRpcmVjdGx5IGluamVjdHMgKmFyYml0cmFyeSogUENJIGRldmljZXMuIFRoZSBkb2N1bWVudGF0aW9uIHNheXMgdG8gZXhjbHVkZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogc3l6a2FsbGVyIGhhbmRsZXMgUENJIGRldmljZSBpbmplY3Rpb24uICBNeSBtZW1vcnkgaXMgYSBsaXR0bGUgaGF6eTsgZG9lcyBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgIHJlbHkgb24gYSBRRU1VLXNwZWNpZmljIGVtdWxhdGlvbj8gSXQgc2VlbXMgbGlrZSBpdCYjMzk7cyBhIGJpdCBvZiBhIGh5YnJpZC4gRm9yIFVTQiwgSSBrbm93IGl0IHVzZXMgYHZoY2lgLCBmb3IgV2ktRmksIGl0IHVzZXMgYG1hYzgwMjExX2h3c2ltYCwgZm9yIGlucHV0LCBgdWlucHV0YCwgYnV0IHRoZXJlJiMzOTtzIG5vIGVxdWl2YWxlbnQgZ2VuZXJpYyBzb2Z0d2FyZSBlbXVsYXRvciBpbiB0aGUga2VybmVsIHRoYXQgSSYjMzk7bSBhd2FyZSBvZiBmb3IgUENJIGRldmljZXMsIG90aGVyIHRoYW4gbWF5YmUgYHBjaS1zdHViYCBvciBgdmZpb2AgLSBidXQgdGhlc2UgZG9uJiMzOTt0ICpjcmVhdGUqIHZpcnR1YWwgZGV2aWNlcyBmcm9tIHNjcmF0Y2guIFRoZXkgcGFzcyB0aHJvdWdoIGV4aXN0aW5nIGhhcmR3YXJlLgoKU28sIHJlYWxpc3RpY2FsbHksIHN5emthbGxlciBwcm9iYWJseSByZWxpZXMgb24gUUVNVSYjMzk7cyBlbXVsYXRlZCBkZXZpY2VzLCBvciBtYXliZSBmdXp6ZXMgdGhlIFBDSSBzdWJzeXN0ZW0gaW4gYW5vdGhlciB3YXkuICBJIG5lZWQgdG8gY29uZmlybSBpZiBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgIHJlYWxseSBpbmplY3RzIGFueXRoaW5nICpuZXcqIG9yIGlmIGl0JiMzOTtzIG1vcmUgYWJvdXQgY29uZmlndXJpbmcgZXhpc3Rpbmcgb25lcy4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgdW5yZWFjaGFibGUgY29kZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBJZiBgZHdtYWMtaW50ZWxgIGlzIGEgdmVyeSBzcGVjaWZpYyBJbnRlbCBkcml2ZXIsIGxpa2UgZm9yIEVsa2hhcnQgTGFrZSBTb0NzLCBhbmQgUUVNVSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgdGhhdCAqc3BlY2lmaWMqIERXTUFDIFBDSSBkZXZpY2UsIHRoZW4gSSYjMzk7bSBwcm9iYWJseSB3YXN0aW5nIG15IHRpbWUuCgpMZXQmIzM5O3MgY2hlY2sgUUVNVSYjMzk7cyBzdXBwb3J0ZWQgbmV0d29yayBkZXZpY2VzLiBJIGtub3cgaXQgc3VwcG9ydHMgdGhlIHVzdWFsIHN1c3BlY3RzOiBgaWdiYCwgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCBzbyBvbi4gQnV0LCBJIGRvbiYjMzk7dCBzZWUgYGR3bWFjLWludGVsYCBsaXN0ZWQuIE9rYXksIHdhaXQgYSBtaW51dGUsIEkgKmRvKiBzZWUgYSBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaW4gUUVNVS4gSXQgZW11bGF0ZXMgRGVzaWduV2FyZSBNQUNzLCBidXQgdGhhdCYjMzk7cyBsaWtlbHkgZm9yIHNvbWV0aGluZyBsaWtlIGBGU0xfSU1YNmAsIG5vdCB0aGUgSW50ZWwtc3BlY2lmaWMgUENJIHdyYXBwZXIuCgpVbHRpbWF0ZWx5LCBpZiB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGRlc2lnbmVkIGZvciBhIHNwZWNpZmljIFNvQyAobGlrZSBFbGtoYXJ0IExha2UpLCBpdCYjMzk7cyBoaWdobHkgaW1wcm9iYWJsZSB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgVk0gdW5sZXNzIHRoZXJlJiMzOTtzIGV4cGxpY2l0IGVtdWxhdGlvbiBmb3IgaXQuIEkgbmVlZCB0byBmaW5kIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIHRvIHByb2NlZWQuIEkgaGF2ZSB0byBjaGVjayB0aGUgY29kZWJhc2UgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHdtYWMtaW50ZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX0RXTUFDX0RXQ19RT1NfRVRIKVx0JiM0Mzs9IGR3bWFjLWR3Yy1xb3MtZXRoLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVx0JiM0Mzs9IGR3bWFjLWludGVsLXBsYXQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDEtb2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OMSlcdCYjNDM7PSBkd21hYy1sb29uZ3NvbjEub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUwPW9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVx0JiM0Mzs9IGR3bWFjLWludGVsLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcdCYjNDM7PSBkd21hYy1sb29uZ3Nvbi5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05LSNpbmNsdWRlIFx1MDAzY2FzbS9jcHVpZC9hcGkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDojaW5jbHVkZSBcJiMzNDtkd21hYy1pbnRlbC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExLSNpbmNsdWRlIFwmIzM0O2R3bWFjNC5oXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MjcKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgRFdNQUMgRHJpdmVyJiMzOTtzIFRyaWdnZXIgUG9pbnRzKioKCkFscmlnaHQsIHNvIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaGVyZSBpcyBgQ09ORklHX0RXTUFDX0lOVEVMYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBDYW4gSSB0cmlnZ2VyIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gd2l0aG91dCBoYXZpbmcgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PyBHaXZlbiB0aGF0IHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBteSBpbnN0aW5jdCBzYXlzIG5vLiBMZXQgbWUgY29uZmlybSB0aGlzIGFzc3VtcHRpb24uCgpUaGUgcHJvYmUgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBlbnRyeSBwb2ludCwgaXMgYGludGVsX2V0aF9wY2lfcHJvYmVgLiBOb3csIGZyb20gZXhwZXJpZW5jZSwgSSBrbm93IFBDSSBkcml2ZXJzIGFyZSBpbmhlcmVudGx5IHJlbGlhbnQgb24gdGhlIFBDSSBjb3JlIGRldGVjdGluZyBhIGRldmljZSB3aXRoIG1hdGNoaW5nIElEcy4gVGhlIGBpbnRlbF9ldGhfcGNpX3Byb2JlYCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBvbmx5IHdoZW4gdGhlIFBDSSBzdWJzeXN0ZW0gZGlzY292ZXJzIGEgZGV2aWNlIGl0IHJlY29nbml6ZXMuIFRoZXJlZm9yZSwgd2l0aG91dCB0aGUgY29ycmVjdCBQQ0kgZGV2aWNlIGlkZW50aWZpY2F0aW9uLCBgaW50ZWxfZXRoX3BjaV9wcm9iZWAgd29uJiMzOTt0IGJlIGNhbGxlZCwgYW5kIGNvbnNlcXVlbnRseSwgYGludGVsX21hY19maW5pc2hgIHdvbiYjMzk7dCBiZSB0cmlnZ2VyZWQuIFRoZSBQQ0kgSURzIGFyZSB0aGUgY3JpdGljYWwgcGllY2UgaGVyZSwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSB0aGVtIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50cy4gU28sIGVzc2VudGlhbGx5LCB0aGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgSSBjYW4gc2ltdWxhdGUgZWFzaWx5IHdpdGhvdXQgYSBjb21wbGlhbnQgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnRlbF9ldGhfcGNpX2lkX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzNTg9c3RhdGljIHZvaWQgaW50ZWxfZXRoX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzkwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTEtXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFx1MDAyNnF1YXJrX2luZm8pIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDA5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTA6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxMy1cdC5uYW1lID0gXCYjMzQ7aW50ZWwtZXRoLXBjaVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQxNDpcdC5pZF90YWJsZSA9IGludGVsX2V0aF9wY2lfaWRfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTUtXHQucHJvYmUgPSBpbnRlbF9ldGhfcGNpX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjQ5CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFBDSSBEZXZpY2UgSURzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHNvbWUgUENJIGRldmljZSBkcml2ZXIgY29kZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcyBpczogSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHNwZWNpZmljcyBvZiB3aGF0IHRoaXMgZHJpdmVyIHN1cHBvcnRzLiBTbywgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjaGVja2luZyB3aGF0IGBQQ0lfREVWSUNFX0RBVEFgIGV4cGFuZHMgdG8uIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3MgcHJvYmFibHkgYSBtYWNybyB0aGF0IGhvbGRzIHNvbWUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBkYXRh4oCUdmVuZG9yIElEcywgZGV2aWNlIElEcywgbWF5YmUgZXZlbiBzdWJjbGFzcyBhbmQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIGRldGFpbHMuIFVuZGVyc3RhbmRpbmcgd2hhdCB0aGF0IHN0cnVjdCBhY3R1YWxseSAqaXMqIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlbnRpb24uCgpUaGVuLCBJJiMzOTtsbCB0dXJuIG15IGF0dGVudGlvbiB0byB0aGUgYGludGVsX2V0aF9wY2lfaWRfdGFibGVgLiBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwcmltYXJ5IGxvb2t1cCB0YWJsZSBmb3IgaWRlbnRpZnlpbmcgc3VwcG9ydGVkIGhhcmR3YXJlLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCB0YWJsZSB0byBzZWUgd2hpY2ggc3BlY2lmaWMgSW50ZWwgRXRoZXJuZXQgUENJIGRldmljZXMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gaGFuZGxlLiBUaGF0IHRhYmxlIHdpbGwgZ2l2ZSBtZSBhIHZlcnkgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQgdGhlIHJhbmdlcyBvZiBkZXZpY2VzIHRoZSBkcml2ZXIgc2hvdWxkIG1hbmFnZS4gSSYjMzk7bSBtZW50YWxseSBwaWN0dXJpbmcgaXQgbm93IOKAkyBhIGNvbGxlY3Rpb24gb2YgUENJIElEIHR1cGxlcywgcHJvYmFibHkgd2l0aCBhc3NvY2lhdGVkIGRyaXZlciBkYXRhLiBJdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoaXMgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uYWxpdHkuIE15IHBsYW4gaXMgdG8gbWVudGFsbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgUENJX0RFVklDRV9EQVRBYCB3aXRoIHRoaXMgdGFibGUsIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBwcmV0dHkgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXBwb3J0IGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTM5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMzkwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGludGVsX2V0aF9wY2lfaWRfdGFibGVbXSA9IHtcbjEzOTE6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBRVUFSSywgXHUwMDI2cXVhcmtfaW5mbykgfSxcbjEzOTI6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUkdNSUkxRywgXHUwMDI2ZWhsX3JnbWlpMWdfaW5mbykgfSxcbjEzOTM6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfU0dNSUkxRywgXHUwMDI2ZWhsX3NnbWlpMWdfaW5mbykgfSxcbjEzOTQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfU0dNSUkyRzUsIFx1MDAyNmVobF9zZ21paTFnX2luZm8pIH0sXG4xMzk1Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1BTRTBfUkdNSUkxRywgXHUwMDI2ZWhsX3BzZTBfcmdtaWkxZ19pbmZvKSB9LFxuMTM5NjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9QU0UwX1NHTUlJMUcsIFx1MDAyNmVobF9wc2UwX3NnbWlpMWdfaW5mbykgfSxcbjEzOTc6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUFNFMF9TR01JSTJHNSwgXHUwMDI2ZWhsX3BzZTBfc2dtaWkxZ19pbmZvKSB9LFxuMTM5ODpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9QU0UxX1JHTUlJMUcsIFx1MDAyNmVobF9wc2UxX3JnbWlpMWdfaW5mbykgfSxcbjEzOTk6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUFNFMV9TR01JSTFHLCBcdTAwMjZlaGxfcHNlMV9zZ21paTFnX2luZm8pIH0sXG4xNDAwOlx0XHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1BTRTFfU0dNSUkyRzUsIFx1MDAyNmVobF9wc2UxX3NnbWlpMWdfaW5mbykgfSxcbjE0MDE6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBUR0xfU0dNSUkxRywgXHUwMDI2dGdsX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxuMTQwMjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFRHTEhfU0dNSUkxR18wLCBcdTAwMjZ0Z2xfc2dtaWkxZ19waHkwX2luZm8pIH0sXG4xNDAzOlx0XHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgVEdMSF9TR01JSTFHXzEsIFx1MDAyNnRnbF9zZ21paTFnX3BoeTFfaW5mbykgfSxcbjE0MDQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBBRExTX1NHTUlJMUdfMCwgXHUwMDI2YWRsc19zZ21paTFnX3BoeTBfaW5mbykgfSxcbjE0MDU6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBBRExTX1NHTUlJMUdfMSwgXHUwMDI2YWRsc19zZ21paTFnX3BoeTFfaW5mbykgfSxcbjE0MDY6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBBRExOX1NHTUlJMUcsIFx1MDAyNmFkbG5fc2dtaWkxZ19waHkwX2luZm8pIH0sXG4xNDA3Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUlBMUF9TR01JSTFHLCBcdTAwMjZhZGxuX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxuMTQwODpcdFx0e31cbjE0MDk6XHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc4MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDU4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgZHdtYWMtaW50ZWxgIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcyBgZHdtYWMtaW50ZWxgIGRyaXZlcj8gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgdGhlcmUgaXNuJiMzOTt0IGEgKmdlbmVyaWMqIHN5emthbGxlciBQQ0kgZGV2aWNlIHNldHVwIHN5c2NhbGwuIEkgdmFndWVseSByZW1lbWJlciBzeXprYWxsZXIgZm9jdXNpbmcgb24gVVNCIHZpYSBgc3l6X3VzYl9jb25uZWN0YCwgODAyLjExIHdpdGggYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gLCBhbmQgQmx1ZXRvb3RoIHRocm91Z2ggYHZoY2lgLCBidXQgbm90IGEgYnJvYWQgUENJIGZ1enppbmcgY2FwYWJpbGl0eS4gSXQgbWFrZXMgc2Vuc2UsIHRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyaWMgc29mdHdhcmUgZnJhbWV3b3JrIGZvciBpbmplY3RpbmcgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzIGZyb20gdXNlcnNwYWNlIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUsIHdoaWNoIGlzIHdoeSBpdCBoYXNuJiMzOTt0IGJlZW4gaW1wbGVtZW50ZWQuCgpXYWl0LCB0aGVuIEkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IGBDT05GSUdfUENJX0VORFBPSU5UX1RFU1RgIGFuZCBgcGNpLWVwZi10ZXN0YCwgYnV0IHRoYXQgcmVxdWlyZXMgZGVkaWNhdGVkIGVuZHBvaW50IGhhcmR3YXJlIG9yIHNwZWNpZmljIGVtdWxhdGlvbi4KCkFoLCBidXQgKmRvZXMqIHN5emthbGxlciBoYXZlIFBDSSBmdXp6aW5nLCB0aG91Z2g/IE5vLCB0aGUgdHlwaWNhbCBhcHByb2FjaCBmb3IgUENJIGZ1enppbmcgd2l0aCBzeXprYWxsZXIgaXMgdG8gcnVuIGluIFFFTVUgYW5kIGludGVyYWN0IHdpdGggZW11bGF0ZWQgZGV2aWNlcy4gSXQgaXMgcHJvYmFibHkganVzdCBub3QgZnV6emluZyB1bi1lbXVsYXRlZCBkZXZpY2VzLgoKVGhlIHByb21wdCwgdGhvdWdoLCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBwZW5ueSBkcm9wcy4gVGhlIGBkd21hYy1pbnRlbGAgZHJpdmVyIHRhcmdldHMgdmVyeSBzcGVjaWZpYyBJbnRlbCBTb0NzOiBRdWFyaywgRWxraGFydCBMYWtlLCBUaWdlciBMYWtlLCBBbGRlciBMYWtlLCBSYXB0b3IgTGFrZS4gQW5kIGl0JiMzOTtzIGFuICppbnRlZ3JhdGVkKiBNQUMuIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIGludGVncmF0ZWQgTUFDcywgdGhleSYjMzk7cmUgcGFydCBvZiB0aGUgUENIIG9yIFNvQy4KClNvLCBzaW5jZSBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIHNwZWNpZmljIGludGVncmF0ZWQgSW50ZWwgRXRoZXJuZXQgKEVITC9UR0wvQURMKSwgdGhpcyBjb2RlIGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0Ugc2V0dXAuIEkmIzM5O3ZlIGdvdHRhIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlJiMzOTtzIGFic29sdXRlbHkgbm8gb3RoZXIgd2F5LCBJJiMzOTtsbCByZXZpZXcgdGhlIGNvZGViYXNlIHRvIGNvbmZpcm0gaWYgYGludGVsX21hY19maW5pc2hgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01MzE9c3RhdGljIGJvb2wgaW50ZWxfc2VyZGVzX25lZWRzX3JlY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTUzOnN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTU0LVx0XHRcdCAgICB2b2lkICppbnRlbF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NzgzPXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTEtXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3OTI6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTMtXHRwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSA9IDIwNDgwMDAwMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg0OT1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1Ni1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg1NzpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg5OD1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkwNS1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkwNjpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkwNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjA9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMjgtXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDI5Olx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAzMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2NTkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiBgZHdtYWMtaW50ZWwuY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBwYXRoIGluIGBkd21hYy1pbnRlbC5jYCwgYW5kIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IGRlYWQgY29kZSBpbiBhIHN5emthbGxlciBjb250ZXh0LiBJdCYjMzk7cyBvbmx5IGNhbGxlZCBmcm9tIHdpdGhpbiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgU29Dcy4gU2luY2UgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgYW5kIEkga25vdyB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaXQgaW4gZWl0aGVyIFFFTVUgb3IgdGhlIGtlcm5lbCBpdHNlbGYsIGl0IHNlZW1zIGxpa2UgYSB2aXJ0dWFsIGVudmlyb25tZW50LCBsaWtlIHRoZSBvbmUgc3l6a2FsbGVyIHVzZXMsIGNvdWxkbiYjMzk7dCByZWFjaCBpdC4KCkJ1dCBob2xkIG9uLCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBDb3VsZCB0aGVyZSBiZSBhbiBpbmRpcmVjdCByb3V0ZT8gUGVyaGFwcyBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBgc3RtbWFjX21hY19maW5pc2hgIGlmIHdlIGNvdWxkIHNvbWVob3cgaW5qZWN0IGEgcGxhdGZvcm0gZGV2aWNlPyBObywgdGhhdCYjMzk7cyBub3QgcmlnaHQuCgpSaWdodCwgc28gYGR3bWFjLWludGVsLmNgIGlzIGEgUENJIGRyaXZlci4gSXQgcmVnaXN0ZXJzIHVzaW5nIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYC4gVGhhdCBtZWFucyB0aGUgYHByb2JlYCBmdW5jdGlvbiwgd2hpY2ggaXMgZXNzZW50aWFsIHRvIHNldHRpbmcgdXAgdGhlIGRyaXZlciYjMzk7cyBmdW5jdGlvbnMsIHJlcXVpcmVzIGEgbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRCBpbiBhIFBDSSBkZXZpY2UuIFdpdGhvdXQgdGhlIGNvcnJlY3QgUENJIGRldmljZSwgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZC4gQW5kIHdpdGhvdXQgdGhhdCBjYWxsLCB0aGUgYHBsYXQtJmd0O21hY19maW5pc2hgIHBvaW50ZXIgd29uJiMzOTt0IGJlIHNldCwgYW5kIHRoZXJlZm9yZSBgc3RtbWFjX21hY19maW5pc2hgIHdpbGwgbmV2ZXIgY2FsbCBgaW50ZWxfbWFjX2ZpbmlzaGAuCgpTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSBpbmplY3QgYSBQQ0kgZGV2aWNlIHdpdGggdGhlIHJpZ2h0IElEcyBpbnRvIHRoZSBzeXN0ZW0/IFRoZSBMaW51eCBrZXJuZWwgaGFzIHRoZSBgUENJX1NUVUJgIGRyaXZlciwgYnV0IHRoYXQmIzM5O3Mgbm90IGl0LCBpdCBkb2VzbiYjMzk7dCBjcmVhdGUgdmlydHVhbCBkZXZpY2VzLiBUaGVuIEkgcmVjYWxsZWQgYENPTkZJR19QQ0lfRU5EUE9JTlRgLCB3aGljaCBhbGxvd3MgYSBMaW51eCBzeXN0ZW0gdG8gYWN0IGFzIGEgUENJIGVuZHBvaW50LCBidXQgdGhhdCYjMzk7cyBmb3IgaG9zdC10by1ob3N0IGNvbm5lY3Rpb25zLiBJdCB3b24mIzM5O3QgaGVscCBoZXJlLgoKQXMgZmFyIGFzIEkga25vdywgdGhlcmUgaXNuJiMzOTt0IGEgZ2VuZXJpYyB2aXJ0dWFsIFBDSSBkZXZpY2UgaW5qZWN0b3Igd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgdGhhdCBzeXprYWxsZXIgY2FuIGxldmVyYWdlIHRvIHRyaWdnZXIgcHJvYmVzIG9mIGFyYml0cmFyeSBQQ0kgZHJpdmVycy4gU3l6a2FsbGVyIHJlbGllcyBvbiBRRU1VIGZvciBwcm92aWRpbmcgUENJIGRldmljZXMsIGFuZCBpbiB0aGlzIGNhc2UsIFFFTVUgY2FuJiMzOTt0IHNpbXVsYXRlIHRoaXMuCgpUaGVyZWZvcmUsIGdpdmVuIHdoYXQgSSBrbm93LCBpdCBhcHBlYXJzIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSB1bnJlYWNoYWJsZSB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIGVudmlyb25tZW50LgoKSG1tLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZSBjaGVjayBvbmUgbW9yZSB0aGluZy4uLiBXaGF0IGlmLCBhbmQgdGhpcyBpcyBhIGxvbmcgc2hvdCwgYnV0IHdoYXQgaWYgYGR3bWFjLWludGVsYCBpcyAqYWxzbyogcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlcj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1NTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlBDSSBEcml2ZXIgQ29udW5kcnVtKioKCkFscmlnaHQsIGxldCYjMzk7cyBjbGFyaWZ5IHRoaXMuIFRoZSBpbml0aWFsIHF1ZXN0aW9uIG9yIGNvbnRleHQgc3VnZ2VzdHMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIG9yIHNpbWlsYXIgZGV2aWNlIGRyaXZlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Tm8sIGJhc2VkIG9uIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LCB0aGlzIHNlZW1zIHByZXR0eSBjbGVhcmx5IGEgUENJIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4mIzM0OyBJdCYjMzk7cyBsaWtlbHkgaW50ZXJhY3Rpbmcgd2l0aCBoYXJkd2FyZSBkaXJlY3RseSB0aHJvdWdoIHRoZSBQQ0kgYnVzLgoKQnV0LCBob2xkIG9uLi4uIHRoZSBjb2RlIGluIGBkd21hYy1pbnRlbC1wbGF0LmNgLi4uIHdoYXQmIzM5O3MgdGhhdCBkb2luZz8gSXQmIzM5O3MgbWFraW5nIG1lIHBhdXNlLiBJcyB0aGVyZSBhIHBvc3NpYmxlIGludGVycGxheSBiZXR3ZWVuIGEgZ2VuZXJpYyBEV01BQyAoRGVzaWduV2FyZSBNQUMpIGRyaXZlciBhbmQgSW50ZWwtc3BlY2lmaWMgcGxhdGZvcm0gY29kZT8gTWF5YmUgYSByZS1ldmFsdWF0aW9uIGlzIGluIG9yZGVyLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gcG90ZW50aWFsbHkgb3ZlcmxhcHBpbmcgbW9kdWxlcy4gRG9lcyBpdCBoYW5kbGUgUENJIGFjY2Vzcywgb3IgZG9lcyBpdCBhYnN0cmFjdCBzb21lIG9mIHRoYXQgYXdheT8gTmVlZCB0byBjbGFyaWZ5IHRoZSByb2xlcyBvZiB0aGVzZSBkcml2ZXJzIHdpdGhpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzg0MgoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIHNvIGBpbnRlbF9tYWNfZmluaXNoYCBpcyBleGNsdXNpdmVseSB3aXRoaW4gYGR3bWFjLWludGVsLmNgLiBUaGF0JiMzOTtzIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGxldCBtZSByZS1leGFtaW5lIHRoZSBjcml0ZXJpYTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGlzIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCBTb0NzIOKAkyBFbGtoYXJ0IExha2UsIEFsZGVyIExha2UsIHRoZSB1c3VhbCBzdXNwZWN0cy4gQW5kIG15IGd1dCB0ZWxscyBtZSB0aGlzIGBkd21hYy1pbnRlbC5jYCBjb2RlIHRhcmdldHMgKnRob3NlKiBpbnRlZ3JhdGVkIE1BQ3MgZGlyZWN0bHkuCgpTaW5jZSBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgKnRob3NlIHNwZWNpZmljKiBpbnRlZ3JhdGVkIE1BQ3MsIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gdGhhdCBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBpbiBRRU1VLCB3ZSYjMzk7cmUgbm90IGdvaW5nIHRvIGhpdCB0aGlzIGNvZGUgcGF0aC4gVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGV4cGxhbmF0aW9uIHdpbGwgaGlnaGxpZ2h0IHRoYXQgdGhpcyBwYXRjaCBwZXJ0YWlucyB0byBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIG1vZGlmaWNhdGlvbnMgKGBkd21hYy1pbnRlbC5jYCkgZm9yIEludGVsIFNvQ3MsIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyBpdCBlZmZlY3RpdmVseSB1bmZ1enphYmxlIHdpdGhpbiBhIHN0YW5kYXJkIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMDowOC44NzYzOTcyNDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA0NDUyMDMzMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjA4Ljg3NjQwMTUxM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyODY4MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjkyYTU4Zjg0ZjY1NDU4Mzg2NmUwMTE5NTBkYmIxZWM3NDQ3NTMxNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAxNjoyMDowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi5mYTAxMTM1OTdjOTc4OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbkBAIC01MjUsNiArNTI1LDMxIEBAIHN0YXRpYyBpbnQgaW50ZWxfc2V0X3JlZ19hY2Nlc3MoY29uc3Qgc3RydWN0IHBtY19zZXJkZXNfcmVncyAqcmVncywgaW50IG1heF9yZWdzXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qIFJldHVybiB0cnVlIGlmIHRoZSBTZXJEZXMgbGFuZSByYXRlIG11c3QgY2hhbmdlIHRvIHNlcnZlIEBpbnRlcmZhY2UuXFxuKyAqIElmIHRoZSBjdXJyZW50IHJhdGUgY2Fubm90IGJlIGRldGVybWluZWQsIHJlY29uZmlndXJlIGFzIGJlZm9yZS5cXG4rICovXFxuK3N0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXYsXFxuK1xcdFxcdFxcdFxcdFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuK3tcXG4rXFx0dTMyIGN1cl9yYXRlLCB3YW50X3JhdGU7XFxuK1xcdGludCBkYXRhO1xcbitcXG4rXFx0aWYgKCFpbnRlbF9wcml2LVxcdTAwM2VtZGlvX2FkaG9jX2FkZHIpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0ZGF0YSA9IG1kaW9idXNfcmVhZChwcml2LVxcdTAwM2VtaWksIGludGVsX3ByaXYtXFx1MDAzZW1kaW9fYWRob2NfYWRkcixcXG4rXFx0XFx0XFx0ICAgIFNFUkRFU19HQ1IwKTtcXG4rXFx0aWYgKGRhdGEgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdGN1cl9yYXRlID0gKGRhdGEgXFx1MDAyNiBTRVJERVNfUkFURV9NQVNLKSBcXHUwMDNlXFx1MDAzZSBTRVJERVNfUkFURV9QQ0lFX1NISUZUO1xcbitcXHR3YW50X3JhdGUgPSBpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCA/XFxuK1xcdFxcdFxcdFNFUkRFU19SQVRFX1BDSUVfR0VOMiA6IFNFUkRFU19SQVRFX1BDSUVfR0VOMTtcXG4rXFxuK1xcdHJldHVybiBjdXJfcmF0ZSAhPSB3YW50X3JhdGU7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0ICAgIHZvaWQgKmludGVsX2RhdGEsXFxuIFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG5AQCAtNTM2LDYgKzU2MSw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0aW50IG1heF9yZWdzID0gMDtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbitcXHRpZiAoIWludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhwcml2LCBpbnRlbF9wcml2LCBpbnRlcmZhY2UpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdHJldCA9IGludGVsX3Rzbl9sYW5lX2lzX2F2YWlsYWJsZShuZGV2LCBpbnRlbF9wcml2KTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0bmV0ZGV2X2luZm8ocHJpdi1cXHUwMDNlZGV2LCBcXFwiTm8gVFNOIGxhbmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgcmVnaXN0ZXJzLlxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjA5LjMyMDA0NzMxNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUwMDAxNTQ3MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHdtYWMtaW50ZWwuY2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgdGhlIERlc2lnbldhcmUgTUFDIGludGVncmF0ZWQgaW50byBzcGVjaWZpYyBJbnRlbCBTb0NzIChlLmcuLCBFbGtoYXJ0IExha2UsIEFsZGVyIExha2UpLiBTaW5jZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSBkbyBub3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBJbnRlbCBpbnRlZ3JhdGVkIEV0aGVybmV0IGNvbnRyb2xsZXJzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGluamVjdGlvbiBtZWNoYW5pc20gZm9yIHRoZW0sIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI5MmE1OGY4NGY2NTQ1ODM4NjZlMDExOTUwZGJiMWVjNzQ0NzUzMTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxNjoyMDowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uZmEwMTEzNTk3Yzk3ODkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5AQCAtNTI1LDYgKzUyNSwzMSBAQCBzdGF0aWMgaW50IGludGVsX3NldF9yZWdfYWNjZXNzKGNvbnN0IHN0cnVjdCBwbWNfc2VyZGVzX3JlZ3MgKnJlZ3MsIGludCBtYXhfcmVnc1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rLyogUmV0dXJuIHRydWUgaWYgdGhlIFNlckRlcyBsYW5lIHJhdGUgbXVzdCBjaGFuZ2UgdG8gc2VydmUgQGludGVyZmFjZS5cbisgKiBJZiB0aGUgY3VycmVudCByYXRlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCByZWNvbmZpZ3VyZSBhcyBiZWZvcmUuXG4rICovXG4rc3RhdGljIGJvb2wgaW50ZWxfc2VyZGVzX25lZWRzX3JlY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdFx0c3RydWN0IGludGVsX3ByaXZfZGF0YSAqaW50ZWxfcHJpdixcbitcdFx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbit7XG4rXHR1MzIgY3VyX3JhdGUsIHdhbnRfcmF0ZTtcbitcdGludCBkYXRhO1xuK1xuK1x0aWYgKCFpbnRlbF9wcml2LVx1MDAzZW1kaW9fYWRob2NfYWRkcilcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRkYXRhID0gbWRpb2J1c19yZWFkKHByaXYtXHUwMDNlbWlpLCBpbnRlbF9wcml2LVx1MDAzZW1kaW9fYWRob2NfYWRkcixcbitcdFx0XHQgICAgU0VSREVTX0dDUjApO1xuK1x0aWYgKGRhdGEgXHUwMDNjIDApXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0Y3VyX3JhdGUgPSAoZGF0YSBcdTAwMjYgU0VSREVTX1JBVEVfTUFTSykgXHUwMDNlXHUwMDNlIFNFUkRFU19SQVRFX1BDSUVfU0hJRlQ7XG4rXHR3YW50X3JhdGUgPSBpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCA/XG4rXHRcdFx0U0VSREVTX1JBVEVfUENJRV9HRU4yIDogU0VSREVTX1JBVEVfUENJRV9HRU4xO1xuK1xuK1x0cmV0dXJuIGN1cl9yYXRlICE9IHdhbnRfcmF0ZTtcbit9XG4rXG4gc3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdCAgICB2b2lkICppbnRlbF9kYXRhLFxuIFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbkBAIC01MzYsNiArNTYxLDkgQEAgc3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0aW50IG1heF9yZWdzID0gMDtcbiBcdGludCByZXQgPSAwO1xuIFxuK1x0aWYgKCFpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcocHJpdiwgaW50ZWxfcHJpdiwgaW50ZXJmYWNlKSlcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRyZXQgPSBpbnRlbF90c25fbGFuZV9pc19hdmFpbGFibGUobmRldiwgaW50ZWxfcHJpdik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9pbmZvKHByaXYtXHUwMDNlZGV2LCBcIk5vIFRTTiBsYW5lIGF2YWlsYWJsZSB0byBzZXQgdGhlIHJlZ2lzdGVycy5cXG5cIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMDowOS4zMjAwNDg2MTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTkwMDgwOTM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgSW50ZWwgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNgLiBUaGV5J3ZlIGFkZGVkIHRoaXMgbmV3IGZ1bmN0aW9uLCBgaW50ZWxfc2VyZGVzX25lZWRzX3JlY29uZmlnYCwgYW5kIHRoZXkncmUgY2FsbGluZyBpdCBmcm9tIGBpbnRlbF9tYWNfZmluaXNoYC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYHN0bW1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIEludGVsIHBsYXRmb3Jtcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgaXRzIHJlbGV2YW5jZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHZpcnR1YWwgc2V0dXA/XG5cbkxldCdzIHNlZSwgYGR3bWFjLWludGVsLmNgIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgSW50ZWwgRFdNQUMsIHRoYXQncyBEZXNpZ25XYXJlIE1BQy4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB3b25kZXIgYWJvdXQgZnV6emluZy4gUENJIGRyaXZlcnMgZm9yIGhhcmR3YXJlLXNwZWNpZmljIGRldmljZXMgb2Z0ZW4gcG9zZSBjaGFsbGVuZ2VzIGZvciBmdXp6aW5nLCB1bmxlc3Mgd2UgaGF2ZSBwcm9wZXIgUENJIGVtdWxhdGlvbiBvciBpdCBpcyBnZW5lcmljIGVub3VnaC4gSSBuZWVkIHRvIGRpZyBpbnRvIGBkd21hYy1pbnRlbC5jYCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRyaWdnZXJpbmcgZXhlY3V0aW9uIG9mIHRoaXMgbmV3IGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGhvdyBhY2Nlc3NpYmxlIGl0IGlzLiBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSB3b3J0aHdoaWxlIHBsYWNlIHRvIGZvY3VzIHJlc291cmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjMxLjIyMDg1OTY3OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYxMDcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnRlbF9tYWNfZmluaXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01MzE9c3RhdGljIGJvb2wgaW50ZWxfc2VyZGVzX25lZWRzX3JlY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTUzOnN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1NC1cXHRcXHRcXHQgICAgdm9pZCAqaW50ZWxfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NzgzPXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5MS1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc5MjpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5My1cXHRwbGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUgPSAyMDQ4MDAwMDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg0OT1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODU2LVxcdHBsYXQtXFx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODU3OlxcdHBsYXQtXFx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04OTg9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkwNS1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkwNjpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTAyMD1zdGF0aWMgaW50IGFkbG5fc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDI4LVxcdHBsYXQtXFx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTAyOTpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjMxLjI3OTQ3NDc5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2OTExOTAxOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBmb3IgSW50ZWwgRWxraGFydCBMYWtlIGFuZCBBbGRlciBMYWtlLU4gUGxhdGZvcm1zKipcblxuT2theSwgc28gdGhpcyBpcyBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgSW50ZWwncyBFbGtoYXJ0IExha2UgKEVITCkgYW5kIEFsZGVyIExha2UtTiAoQURMLU4pIHBsYXRmb3Jtcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQgYXJlIHRoZSByZWxldmFudCBQQ0kgSURzIGl0J3MgcmVnaXN0ZXJpbmcgYW5kIGJpbmRpbmcgdG8/IEtub3dpbmcgdGhhdCBpcyBjcnVjaWFsLiBDYW4gd2UgZnV6eiB0aGlzIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXIncyBnb3QgdGhhdCBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgIGNhbGwsIHdoaWNoIGlzIGluY3JlZGlibHkgdXNlZnVsIGZvciBlbXVsYXRpbmcgUENJIGRldmljZXMsIHJpZ2h0P1xuXG5TbywgdGhlIG5leHQgc3RlcCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkcml2ZXIncyBjb2RlIGFuZCBwaW5wb2ludCB0aG9zZSBQQ0kgSURzLiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaWYgYHN5el9wY2lfZGV2aWNlX3NldHVwYCBjYW4gZXZlbiBpbnRlcmFjdCB3aXRoIHRoaXMgdGhpbmcsIGFuZCBpZiBzbywgaG93IGVmZmVjdGl2ZWx5LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU0NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjQ4LjE5MTM3ODQ3MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDMyMTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYwPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjE6XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzU4PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5MS1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMDo0OC4yNTE3MDUzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzI1MTAzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdCBoZXJlLlxuXG4qKkFuYWx5emluZyBTeXprYWxsZXIgYW5kIE5ldHdvcmsgRGV2aWNlIERyaXZlciBJbnRlcmFjdGlvbioqXG5cblJpZ2h0LCBzbyBTeXprYWxsZXIgY2FuIGVtdWxhdGUgUENJIGRldmljZXMsIHdoaWNoIGlzIGdyZWF0LCB0aGFua3MgdG8gYHN5el9wY2lfZGV2aWNlX3NldHVwYC4gQnV0IHRoZSByZWFsIGludGVyZXN0aW5nIHBhcnQgaGVyZSBpcyBob3cgdGhlIGVtdWxhdGVkIGRldmljZSBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbnMsIHNwZWNpZmljYWxseSBQSFlzIGFuZCBNRElPIGJ1c2VzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcHJvYmUgYW5kIHNlZSBpZiB3ZSBjYW4gcmVhY2ggYGludGVsX21hY19maW5pc2hgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IGZ1bmN0aW9uIG5hbWUgcmluZ3MgYSBiZWxsLCBJJ3ZlIHNlZW4gaXQgYmVmb3JlIHdoZW4gZGVidWdnaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXJzLlxuXG5Ob3csIHdoZXJlIGlzIGBpbnRlbF9tYWNfZmluaXNoYCBjYWxsZWQgZnJvbT8gUHJldHR5IHN1cmUgaXQncyBidXJpZWQgc29tZXdoZXJlIGluIHRoZSBgc3RtbWFjYCBjb3JlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgc3RtbWFjYCBjb2RlIGFuZCBmaW5kIHRoZSBjYWxsIHNpdGVzLiBHb3R0YSB0cmFjZSBiYWNrIHRob3NlIGZ1bmN0aW9uIGNhbGxzIHRvIHNlZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIGlkZW50aWZ5IHBvc3NpYmxlIGVudHJ5IHBvaW50cy4gVGhpcyBjb3VsZCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBkcml2ZXIuIExldCdzIHNlZSBpZiB3ZSBjYW4gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoYXQgZHJpdmVyJ3MgbGlmZWN5Y2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTU4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjA6NTIuMzI0MjE3NTAxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDk0MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY19maW5pc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTMxPXN0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU1MzpzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NTQtXFx0XFx0XFx0ICAgIHZvaWQgKmludGVsX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Mz1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTEtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3OTI6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTMtXFx0cGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlID0gMjA0ODAwMDAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDk9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1Ni1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg1NzpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODk4PXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDUtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MDY6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjA9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyOC1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjk6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02MTE9c3RhdGljIHZvaWQgcWNvbV9ldGhxb3Nfc2VyZGVzX3Bvd2VyZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6NjE5OnN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjIwLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzIxLVxcdFxcdHBsYXRfZGF0LVxcdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3MjI6XFx0XFx0cGxhdF9kYXQtXFx1MDAzZW1hY19maW5pc2ggPSBldGhxb3NfbWFjX2ZpbmlzaF9zZXJkZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEwMzc9c3RhdGljIHZvaWQgc3RtbWFjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0MzpzdGF0aWMgaW50IHN0bW1hY19tYWNfZmluaXNoKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDQtXFx0XFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0OTpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX2ZpbmlzaClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNTA6XFx0XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX2ZpbmlzaChuZGV2LCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vic3BfcHJpdiwgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNTEtXFx0XFx0XFx0XFx0ICAgICAgIGludGVyZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEyNjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgc3RtbWFjX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2Ny1cXHQubWFjX2NvbmZpZyA9IHN0bW1hY19tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTI2ODpcXHQubWFjX2ZpbmlzaCA9IHN0bW1hY19tYWNfZmluaXNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2OS1cXHQubWFjX2xpbmtfZG93biA9IHN0bW1hY19tYWNfbGlua19kb3duLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMDo1Mi4zODE3MTY0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MjY0MDQxNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG1hY19maW5pc2hgIENhbGxiYWNrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWFjX2ZpbmlzaGAgY2FsbGJhY2suIEl0J3MgY2FsbGVkIGZyb20gYHN0bW1hY19tYWNfZmluaXNoYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0J3MgcGFydCBvZiB0aGUgYHBoeWxpbmtfbWFjX29wc2Agc3RydWN0dXJlLiBUaGF0IHRlbGxzIG1lIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGR1cmluZyBwaHlsaW5rIGNvbmZpZ3VyYXRpb24g4oCTIGJhc2ljYWxseSB3aGVuZXZlciB0aGUgbGluayBzdGF0dXMgY2hhbmdlcywgbGlrZSB3aGVuIHRoZSBpbnRlcmZhY2UgY29tZXMgdXAgb3IgZ29lcyBkb3duLCBvciBtYXliZSBpZiB0aGVyZSdzIGFuIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGNoYW5nZS4gTWFrZXMgc2Vuc2UuXG5cblRvIGV2ZW4gZ2V0IHRvIHRoaXMgYG1hY19maW5pc2hgIGZ1bmN0aW9uLCB0aGUgYGR3bWFjLWludGVsYCBkcml2ZXIgbmVlZHMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGF0J3Mga2V5LiBTbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoYXQgZG9lcyB0aGUgYGR3bWFjLWludGVsYCBkcml2ZXIgKm5lZWQqIHRvIGJlIHByZXNlbnQgdG8gcHJvYmUgd2l0aG91dCBmYWlsaW5nPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25zdHJhaW50cyBvZiB0aGUgYGR3bWFjLWludGVsYCBkcml2ZXIsIGJlY2F1c2UgaWYgdGhlIGRyaXZlciB3b24ndCBsb2FkLCB0aGlzIGVudGlyZSBjYWxsYmFjayBtZWNoYW5pc20gaXMgbW9vdC4gTGV0J3MgZGlnIGludG8gdGhlIGBkd21hYy1pbnRlbGAgcHJvYmUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDEsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMToxMS42NDU3NzM2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwMzQ2Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludGVsX2V0aF9wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyMzE9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjQ4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI0OTogKiBpbnRlbF9ldGhfcGNpX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjUwLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNTktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjYwOnN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjEtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTQxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaW50ZWxfZXRoX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTQtXFx0LmlkX3RhYmxlID0gaW50ZWxfZXRoX3BjaV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTU6XFx0LnByb2JlID0gaW50ZWxfZXRoX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTYtXFx0LnJlbW92ZSA9IGludGVsX2V0aF9wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMToxMi4wMTYxMjQ4OTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxNzc1Njk0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGludGVsX2V0aF9wY2lfcHJvYmVgIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYGludGVsX2V0aF9wY2lfcHJvYmVgIGNhbGxzIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gc3l6a2FsbGVyIHJlbGlhYmx5IGVtdWxhdGUgdGhlIFBDSSBkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXM/ICBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aGF0IHN5emthbGxlciB1c2VzLCBsaWtlIFFFTVUuICBcblxuU3l6a2FsbGVyICpkb2VzKiBoYXZlIGBzeXpfcGNpX2RldmljZV9zZXR1cGAsIGJ1dCB0aGF0IGRvZXNuJ3QgbWVhbiBpdCBkaXJlY3RseSBpbmplY3RzICphcmJpdHJhcnkqIFBDSSBkZXZpY2VzLiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRvIGV4Y2x1ZGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHN5emthbGxlciBoYW5kbGVzIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiAgTXkgbWVtb3J5IGlzIGEgbGl0dGxlIGhhenk7IGRvZXMgYHN5el9wY2lfZGV2aWNlX3NldHVwYCByZWx5IG9uIGEgUUVNVS1zcGVjaWZpYyBlbXVsYXRpb24/IEl0IHNlZW1zIGxpa2UgaXQncyBhIGJpdCBvZiBhIGh5YnJpZC4gRm9yIFVTQiwgSSBrbm93IGl0IHVzZXMgYHZoY2lgLCBmb3IgV2ktRmksIGl0IHVzZXMgYG1hYzgwMjExX2h3c2ltYCwgZm9yIGlucHV0LCBgdWlucHV0YCwgYnV0IHRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBnZW5lcmljIHNvZnR3YXJlIGVtdWxhdG9yIGluIHRoZSBrZXJuZWwgdGhhdCBJJ20gYXdhcmUgb2YgZm9yIFBDSSBkZXZpY2VzLCBvdGhlciB0aGFuIG1heWJlIGBwY2ktc3R1YmAgb3IgYHZmaW9gIC0gYnV0IHRoZXNlIGRvbid0ICpjcmVhdGUqIHZpcnR1YWwgZGV2aWNlcyBmcm9tIHNjcmF0Y2guIFRoZXkgcGFzcyB0aHJvdWdoIGV4aXN0aW5nIGhhcmR3YXJlLlxuXG5TbywgcmVhbGlzdGljYWxseSwgc3l6a2FsbGVyIHByb2JhYmx5IHJlbGllcyBvbiBRRU1VJ3MgZW11bGF0ZWQgZGV2aWNlcywgb3IgbWF5YmUgZnV6emVzIHRoZSBQQ0kgc3Vic3lzdGVtIGluIGFub3RoZXIgd2F5LiAgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHN5el9wY2lfZGV2aWNlX3NldHVwYCByZWFsbHkgaW5qZWN0cyBhbnl0aGluZyAqbmV3KiBvciBpZiBpdCdzIG1vcmUgYWJvdXQgY29uZmlndXJpbmcgZXhpc3Rpbmcgb25lcy5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byBhdm9pZCB1bnJlYWNoYWJsZSBjb2RlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIElmIGBkd21hYy1pbnRlbGAgaXMgYSB2ZXJ5IHNwZWNpZmljIEludGVsIGRyaXZlciwgbGlrZSBmb3IgRWxraGFydCBMYWtlIFNvQ3MsIGFuZCBRRU1VICpkb2Vzbid0KiBlbXVsYXRlIHRoYXQgKnNwZWNpZmljKiBEV01BQyBQQ0kgZGV2aWNlLCB0aGVuIEknbSBwcm9iYWJseSB3YXN0aW5nIG15IHRpbWUuXG5cbkxldCdzIGNoZWNrIFFFTVUncyBzdXBwb3J0ZWQgbmV0d29yayBkZXZpY2VzLiBJIGtub3cgaXQgc3VwcG9ydHMgdGhlIHVzdWFsIHN1c3BlY3RzOiBgaWdiYCwgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCBzbyBvbi4gQnV0LCBJIGRvbid0IHNlZSBgZHdtYWMtaW50ZWxgIGxpc3RlZC4gT2theSwgd2FpdCBhIG1pbnV0ZSwgSSAqZG8qIHNlZSBhIGBody9uZXQvZGVzaWdud2FyZS5jYCBpbiBRRU1VLiBJdCBlbXVsYXRlcyBEZXNpZ25XYXJlIE1BQ3MsIGJ1dCB0aGF0J3MgbGlrZWx5IGZvciBzb21ldGhpbmcgbGlrZSBgRlNMX0lNWDZgLCBub3QgdGhlIEludGVsLXNwZWNpZmljIFBDSSB3cmFwcGVyLlxuXG5VbHRpbWF0ZWx5LCBpZiB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGRlc2lnbmVkIGZvciBhIHNwZWNpZmljIFNvQyAobGlrZSBFbGtoYXJ0IExha2UpLCBpdCdzIGhpZ2hseSBpbXByb2JhYmxlIHRoYXQgaXQncyBnb2luZyB0byBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIFZNIHVubGVzcyB0aGVyZSdzIGV4cGxpY2l0IGVtdWxhdGlvbiBmb3IgaXQuIEkgbmVlZCB0byBmaW5kIG91dCBpZiB0aGVyZSdzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gdG8gcHJvY2VlZC4gSSBoYXZlIHRvIGNoZWNrIHRoZSBjb2RlYmFzZSB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTk5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIxOjQ5LjE5MzY5NTczNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMzY4Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3bWFjLWludGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT0zOT1vYmotJChDT05GSUdfRFdNQUNfRFdDX1FPU19FVEgpXFx0Kz0gZHdtYWMtZHdjLXFvcy1ldGgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVxcdCs9IGR3bWFjLWludGVsLXBsYXQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQxLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXFx0Kz0gZHdtYWMtbG9vbmdzb24xLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUwPW9iai0kKENPTkZJR19TVE1NQUNfUENJKVxcdCs9IHN0bW1hYy1wY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19EV01BQ19JTlRFTClcXHQrPSBkd21hYy1pbnRlbC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTItb2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OKVxcdCs9IGR3bWFjLWxvb25nc29uLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOS0jaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWlkL2FwaS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA6I2luY2x1ZGUgXFxcImR3bWFjLWludGVsLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMS0jaW5jbHVkZSBcXFwiZHdtYWM0LmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIxOjQ5LjMwNjA2OTU4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODQyNTYwNDIxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEludGVsIERXTUFDIERyaXZlcidzIFRyaWdnZXIgUG9pbnRzKipcblxuQWxyaWdodCwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBoZXJlIGlzIGBDT05GSUdfRFdNQUNfSU5URUxgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IENhbiBJIHRyaWdnZXIgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiB3aXRob3V0IGhhdmluZyB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/IEdpdmVuIHRoYXQgdGhpcyBpcyBhIFBDSSBkcml2ZXIsIG15IGluc3RpbmN0IHNheXMgbm8uIExldCBtZSBjb25maXJtIHRoaXMgYXNzdW1wdGlvbi5cblxuVGhlIHByb2JlIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgZW50cnkgcG9pbnQsIGlzIGBpbnRlbF9ldGhfcGNpX3Byb2JlYC4gTm93LCBmcm9tIGV4cGVyaWVuY2UsIEkga25vdyBQQ0kgZHJpdmVycyBhcmUgaW5oZXJlbnRseSByZWxpYW50IG9uIHRoZSBQQ0kgY29yZSBkZXRlY3RpbmcgYSBkZXZpY2Ugd2l0aCBtYXRjaGluZyBJRHMuIFRoZSBgaW50ZWxfZXRoX3BjaV9wcm9iZWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgb25seSB3aGVuIHRoZSBQQ0kgc3Vic3lzdGVtIGRpc2NvdmVycyBhIGRldmljZSBpdCByZWNvZ25pemVzLiBUaGVyZWZvcmUsIHdpdGhvdXQgdGhlIGNvcnJlY3QgUENJIGRldmljZSBpZGVudGlmaWNhdGlvbiwgYGludGVsX2V0aF9wY2lfcHJvYmVgIHdvbid0IGJlIGNhbGxlZCwgYW5kIGNvbnNlcXVlbnRseSwgYGludGVsX21hY19maW5pc2hgIHdvbid0IGJlIHRyaWdnZXJlZC4gVGhlIFBDSSBJRHMgYXJlIHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlLCBhbmQgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlbSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMuIFNvLCBlc3NlbnRpYWxseSwgdGhpcyBpc24ndCBzb21ldGhpbmcgSSBjYW4gc2ltdWxhdGUgZWFzaWx5IHdpdGhvdXQgYSBjb21wbGlhbnQgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODI3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjI6MDcuNzMxNjc2NDk0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE1OTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnRlbF9ldGhfcGNpX2lkX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzU4PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5MS1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDA5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDEwOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTMtXFx0Lm5hbWUgPSBcXFwiaW50ZWwtZXRoLXBjaVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE0OlxcdC5pZF90YWJsZSA9IGludGVsX2V0aF9wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDE1LVxcdC5wcm9iZSA9IGludGVsX2V0aF9wY2lfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIyOjA3Ljc5Njg0MDE2M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTczNjYyMDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUENJIERldmljZSBJRHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgc29tZSBQQ0kgZGV2aWNlIGRyaXZlciBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzIGlzOiBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgc3BlY2lmaWNzIG9mIHdoYXQgdGhpcyBkcml2ZXIgc3VwcG9ydHMuIFNvLCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY2hlY2tpbmcgd2hhdCBgUENJX0RFVklDRV9EQVRBYCBleHBhbmRzIHRvLiBJJ20gZ3Vlc3NpbmcgaXQncyBwcm9iYWJseSBhIG1hY3JvIHRoYXQgaG9sZHMgc29tZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIGRhdGHigJR2ZW5kb3IgSURzLCBkZXZpY2UgSURzLCBtYXliZSBldmVuIHN1YmNsYXNzIGFuZCBwcm9ncmFtbWluZyBpbnRlcmZhY2UgZGV0YWlscy4gVW5kZXJzdGFuZGluZyB3aGF0IHRoYXQgc3RydWN0IGFjdHVhbGx5ICppcyogaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyJ3MgaW50ZW50aW9uLlxuXG5UaGVuLCBJJ2xsIHR1cm4gbXkgYXR0ZW50aW9uIHRvIHRoZSBgaW50ZWxfZXRoX3BjaV9pZF90YWJsZWAuIEkgZXhwZWN0IHRoaXMgdG8gYmUgdGhlIHByaW1hcnkgbG9va3VwIHRhYmxlIGZvciBpZGVudGlmeWluZyBzdXBwb3J0ZWQgaGFyZHdhcmUuIEknbSBnb2luZyB0byBzY2FuIHRoYXQgdGFibGUgdG8gc2VlIHdoaWNoIHNwZWNpZmljIEludGVsIEV0aGVybmV0IFBDSSBkZXZpY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS4gVGhhdCB0YWJsZSB3aWxsIGdpdmUgbWUgYSB2ZXJ5IHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSB0YXJnZXQgaGFyZHdhcmUgYW5kIHRoZSByYW5nZXMgb2YgZGV2aWNlcyB0aGUgZHJpdmVyIHNob3VsZCBtYW5hZ2UuIEknbSBtZW50YWxseSBwaWN0dXJpbmcgaXQgbm93IOKAkyBhIGNvbGxlY3Rpb24gb2YgUENJIElEIHR1cGxlcywgcHJvYmFibHkgd2l0aCBhc3NvY2lhdGVkIGRyaXZlciBkYXRhLiBJdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhpcyBkcml2ZXIncyBmdW5jdGlvbmFsaXR5LiBNeSBwbGFuIGlzIHRvIG1lbnRhbGx5IGNyb3NzLXJlZmVyZW5jZSB0aGUgYFBDSV9ERVZJQ0VfREFUQWAgd2l0aCB0aGlzIHRhYmxlLCB0aGF0IHNob3VsZCBnaXZlIG1lIGEgcHJldHR5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3VwcG9ydCBsYW5kc2NhcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NDksIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMjoxMS45NzA1MDM5MDJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzkwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XFxuMTM5MTpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbjEzOTI6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9SR01JSTFHLCBcXHUwMDI2ZWhsX3JnbWlpMWdfaW5mbykgfSxcXG4xMzkzOlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfU0dNSUkxRywgXFx1MDAyNmVobF9zZ21paTFnX2luZm8pIH0sXFxuMTM5NDpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1NHTUlJMkc1LCBcXHUwMDI2ZWhsX3NnbWlpMWdfaW5mbykgfSxcXG4xMzk1OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUFNFMF9SR01JSTFHLCBcXHUwMDI2ZWhsX3BzZTBfcmdtaWkxZ19pbmZvKSB9LFxcbjEzOTY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9QU0UwX1NHTUlJMUcsIFxcdTAwMjZlaGxfcHNlMF9zZ21paTFnX2luZm8pIH0sXFxuMTM5NzpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1BTRTBfU0dNSUkyRzUsIFxcdTAwMjZlaGxfcHNlMF9zZ21paTFnX2luZm8pIH0sXFxuMTM5ODpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1BTRTFfUkdNSUkxRywgXFx1MDAyNmVobF9wc2UxX3JnbWlpMWdfaW5mbykgfSxcXG4xMzk5OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUFNFMV9TR01JSTFHLCBcXHUwMDI2ZWhsX3BzZTFfc2dtaWkxZ19pbmZvKSB9LFxcbjE0MDA6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9QU0UxX1NHTUlJMkc1LCBcXHUwMDI2ZWhsX3BzZTFfc2dtaWkxZ19pbmZvKSB9LFxcbjE0MDE6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFRHTF9TR01JSTFHLCBcXHUwMDI2dGdsX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxcbjE0MDI6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFRHTEhfU0dNSUkxR18wLCBcXHUwMDI2dGdsX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxcbjE0MDM6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFRHTEhfU0dNSUkxR18xLCBcXHUwMDI2dGdsX3NnbWlpMWdfcGh5MV9pbmZvKSB9LFxcbjE0MDQ6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEFETFNfU0dNSUkxR18wLCBcXHUwMDI2YWRsc19zZ21paTFnX3BoeTBfaW5mbykgfSxcXG4xNDA1OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBBRExTX1NHTUlJMUdfMSwgXFx1MDAyNmFkbHNfc2dtaWkxZ19waHkxX2luZm8pIH0sXFxuMTQwNjpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgQURMTl9TR01JSTFHLCBcXHUwMDI2YWRsbl9zZ21paTFnX3BoeTBfaW5mbykgfSxcXG4xNDA3OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBSUExQX1NHTUlJMUcsIFxcdTAwMjZhZGxuX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxcbjE0MDg6XFx0XFx0e31cXG4xNDA5OlxcdH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIyOjExLjk3MDU5OTI5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTUyMzQwMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBkd21hYy1pbnRlbGAgQ29kZSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBxdWVzdGlvbiBpczogY2FuIHN5emthbGxlciBmdXp6IHRoaXMgYGR3bWFjLWludGVsYCBkcml2ZXI/IE15IGd1dCByZWFjdGlvbiBpcyB0aGF0IHRoZXJlIGlzbid0IGEgKmdlbmVyaWMqIHN5emthbGxlciBQQ0kgZGV2aWNlIHNldHVwIHN5c2NhbGwuIEkgdmFndWVseSByZW1lbWJlciBzeXprYWxsZXIgZm9jdXNpbmcgb24gVVNCIHZpYSBgc3l6X3VzYl9jb25uZWN0YCwgODAyLjExIHdpdGggYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gLCBhbmQgQmx1ZXRvb3RoIHRocm91Z2ggYHZoY2lgLCBidXQgbm90IGEgYnJvYWQgUENJIGZ1enppbmcgY2FwYWJpbGl0eS4gSXQgbWFrZXMgc2Vuc2UsIHRoZXJlIGlzbid0IGEgZ2VuZXJpYyBzb2Z0d2FyZSBmcmFtZXdvcmsgZm9yIGluamVjdGluZyBhcmJpdHJhcnkgUENJIGRldmljZXMgZnJvbSB1c2Vyc3BhY2Ugd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSwgd2hpY2ggaXMgd2h5IGl0IGhhc24ndCBiZWVuIGltcGxlbWVudGVkLlxuXG5XYWl0LCB0aGVuIEkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IGBDT05GSUdfUENJX0VORFBPSU5UX1RFU1RgIGFuZCBgcGNpLWVwZi10ZXN0YCwgYnV0IHRoYXQgcmVxdWlyZXMgZGVkaWNhdGVkIGVuZHBvaW50IGhhcmR3YXJlIG9yIHNwZWNpZmljIGVtdWxhdGlvbi5cblxuQWgsIGJ1dCAqZG9lcyogc3l6a2FsbGVyIGhhdmUgUENJIGZ1enppbmcsIHRob3VnaD8gTm8sIHRoZSB0eXBpY2FsIGFwcHJvYWNoIGZvciBQQ0kgZnV6emluZyB3aXRoIHN5emthbGxlciBpcyB0byBydW4gaW4gUUVNVSBhbmQgaW50ZXJhY3Qgd2l0aCBlbXVsYXRlZCBkZXZpY2VzLiBJdCBpcyBwcm9iYWJseSBqdXN0IG5vdCBmdXp6aW5nIHVuLWVtdWxhdGVkIGRldmljZXMuXG5cblRoZSBwcm9tcHQsIHRob3VnaCwgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhpcyBpcyB3aGVyZSB0aGUgcGVubnkgZHJvcHMuIFRoZSBgZHdtYWMtaW50ZWxgIGRyaXZlciB0YXJnZXRzIHZlcnkgc3BlY2lmaWMgSW50ZWwgU29DczogUXVhcmssIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgQWxkZXIgTGFrZSwgUmFwdG9yIExha2UuIEFuZCBpdCdzIGFuICppbnRlZ3JhdGVkKiBNQUMuIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIGludGVncmF0ZWQgTUFDcywgdGhleSdyZSBwYXJ0IG9mIHRoZSBQQ0ggb3IgU29DLlxuXG5Tbywgc2luY2UgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIHNwZWNpZmljIGludGVncmF0ZWQgSW50ZWwgRXRoZXJuZXQgKEVITC9UR0wvQURMKSwgdGhpcyBjb2RlIGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0Ugc2V0dXAuIEkndmUgZ290dGEgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUncyBhYnNvbHV0ZWx5IG5vIG90aGVyIHdheSwgSSdsbCByZXZpZXcgdGhlIGNvZGViYXNlIHRvIGNvbmZpcm0gaWYgYGludGVsX21hY19maW5pc2hgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzgwLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjI6MjAuOTIyOTQwOTAyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg0Njk1NjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludGVsX21hY19maW5pc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTMxPXN0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU1MzpzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NTQtXFx0XFx0XFx0ICAgIHZvaWQgKmludGVsX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Mz1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTEtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3OTI6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTMtXFx0cGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlID0gMjA0ODAwMDAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDk9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1Ni1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg1NzpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODk4PXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDUtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MDY6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjA9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyOC1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjk6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDMwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMjoyMi45MDc2NDU0NjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI5OTUwNDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGBkd21hYy1pbnRlbC5jYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBwYXRoIGluIGBkd21hYy1pbnRlbC5jYCwgYW5kIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgZGVhZCBjb2RlIGluIGEgc3l6a2FsbGVyIGNvbnRleHQuIEl0J3Mgb25seSBjYWxsZWQgZnJvbSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIEludGVsIFNvQ3MuIFNpbmNlIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIGFuZCBJIGtub3cgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaXQgaW4gZWl0aGVyIFFFTVUgb3IgdGhlIGtlcm5lbCBpdHNlbGYsIGl0IHNlZW1zIGxpa2UgYSB2aXJ0dWFsIGVudmlyb25tZW50LCBsaWtlIHRoZSBvbmUgc3l6a2FsbGVyIHVzZXMsIGNvdWxkbid0IHJlYWNoIGl0LlxuXG5CdXQgaG9sZCBvbiwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gQ291bGQgdGhlcmUgYmUgYW4gaW5kaXJlY3Qgcm91dGU/IFBlcmhhcHMgaXQncyByZWFjaGFibGUgdGhyb3VnaCBgc3RtbWFjX21hY19maW5pc2hgIGlmIHdlIGNvdWxkIHNvbWVob3cgaW5qZWN0IGEgcGxhdGZvcm0gZGV2aWNlPyBObywgdGhhdCdzIG5vdCByaWdodC5cblxuUmlnaHQsIHNvIGBkd21hYy1pbnRlbC5jYCBpcyBhIFBDSSBkcml2ZXIuIEl0IHJlZ2lzdGVycyB1c2luZyBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAuIFRoYXQgbWVhbnMgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHdoaWNoIGlzIGVzc2VudGlhbCB0byBzZXR0aW5nIHVwIHRoZSBkcml2ZXIncyBmdW5jdGlvbnMsIHJlcXVpcmVzIGEgbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRCBpbiBhIFBDSSBkZXZpY2UuIFdpdGhvdXQgdGhlIGNvcnJlY3QgUENJIGRldmljZSwgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZC4gQW5kIHdpdGhvdXQgdGhhdCBjYWxsLCB0aGUgYHBsYXQtXHUwMDNlbWFjX2ZpbmlzaGAgcG9pbnRlciB3b24ndCBiZSBzZXQsIGFuZCB0aGVyZWZvcmUgYHN0bW1hY19tYWNfZmluaXNoYCB3aWxsIG5ldmVyIGNhbGwgYGludGVsX21hY19maW5pc2hgLlxuXG5TbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSBpbmplY3QgYSBQQ0kgZGV2aWNlIHdpdGggdGhlIHJpZ2h0IElEcyBpbnRvIHRoZSBzeXN0ZW0/IFRoZSBMaW51eCBrZXJuZWwgaGFzIHRoZSBgUENJX1NUVUJgIGRyaXZlciwgYnV0IHRoYXQncyBub3QgaXQsIGl0IGRvZXNuJ3QgY3JlYXRlIHZpcnR1YWwgZGV2aWNlcy4gVGhlbiBJIHJlY2FsbGVkIGBDT05GSUdfUENJX0VORFBPSU5UYCwgd2hpY2ggYWxsb3dzIGEgTGludXggc3lzdGVtIHRvIGFjdCBhcyBhIFBDSSBlbmRwb2ludCwgYnV0IHRoYXQncyBmb3IgaG9zdC10by1ob3N0IGNvbm5lY3Rpb25zLiBJdCB3b24ndCBoZWxwIGhlcmUuXG5cbkFzIGZhciBhcyBJIGtub3csIHRoZXJlIGlzbid0IGEgZ2VuZXJpYyB2aXJ0dWFsIFBDSSBkZXZpY2UgaW5qZWN0b3Igd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgdGhhdCBzeXprYWxsZXIgY2FuIGxldmVyYWdlIHRvIHRyaWdnZXIgcHJvYmVzIG9mIGFyYml0cmFyeSBQQ0kgZHJpdmVycy4gU3l6a2FsbGVyIHJlbGllcyBvbiBRRU1VIGZvciBwcm92aWRpbmcgUENJIGRldmljZXMsIGFuZCBpbiB0aGlzIGNhc2UsIFFFTVUgY2FuJ3Qgc2ltdWxhdGUgdGhpcy5cblxuVGhlcmVmb3JlLCBnaXZlbiB3aGF0IEkga25vdywgaXQgYXBwZWFycyB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgdW5yZWFjaGFibGUgd2l0aGluIHN5emthbGxlcidzIGVudmlyb25tZW50LlxuXG5IbW0sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgZG91YmxlIGNoZWNrIG9uZSBtb3JlIHRoaW5nLi4uIFdoYXQgaWYsIGFuZCB0aGlzIGlzIGEgbG9uZyBzaG90LCBidXQgd2hhdCBpZiBgZHdtYWMtaW50ZWxgIGlzICphbHNvKiByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY1OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMjozMC4yMDcxNTIxNzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODExMzc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjI6MzAuMjc3OTc4NTY2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzc0NTkxNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipQQ0kgRHJpdmVyIENvbnVuZHJ1bSoqXG5cbkFscmlnaHQsIGxldCdzIGNsYXJpZnkgdGhpcy4gVGhlIGluaXRpYWwgcXVlc3Rpb24gb3IgY29udGV4dCBzdWdnZXN0cyBzb21ldGhpbmcgcmVsYXRlZCB0byBhIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXIgb3Igc2ltaWxhciBkZXZpY2UgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJObywgYmFzZWQgb24gd2hhdCBJJ20gbG9va2luZyBhdCwgdGhpcyBzZWVtcyBwcmV0dHkgY2xlYXJseSBhIFBDSSBkcml2ZXIgaW1wbGVtZW50YXRpb24uXCIgSXQncyBsaWtlbHkgaW50ZXJhY3Rpbmcgd2l0aCBoYXJkd2FyZSBkaXJlY3RseSB0aHJvdWdoIHRoZSBQQ0kgYnVzLlxuXG5CdXQsIGhvbGQgb24uLi4gdGhlIGNvZGUgaW4gYGR3bWFjLWludGVsLXBsYXQuY2AuLi4gd2hhdCdzIHRoYXQgZG9pbmc/IEl0J3MgbWFraW5nIG1lIHBhdXNlLiBJcyB0aGVyZSBhIHBvc3NpYmxlIGludGVycGxheSBiZXR3ZWVuIGEgZ2VuZXJpYyBEV01BQyAoRGVzaWduV2FyZSBNQUMpIGRyaXZlciBhbmQgSW50ZWwtc3BlY2lmaWMgcGxhdGZvcm0gY29kZT8gTWF5YmUgYSByZS1ldmFsdWF0aW9uIGlzIGluIG9yZGVyLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBwb3RlbnRpYWxseSBvdmVybGFwcGluZyBtb2R1bGVzLiBEb2VzIGl0IGhhbmRsZSBQQ0kgYWNjZXNzLCBvciBkb2VzIGl0IGFic3RyYWN0IHNvbWUgb2YgdGhhdCBhd2F5PyBOZWVkIHRvIGNsYXJpZnkgdGhlIHJvbGVzIG9mIHRoZXNlIGRyaXZlcnMgd2l0aGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTUzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjI6MzMuNTU1NDM5ODQ4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODc4ODkwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50ZWxfbWFjX2ZpbmlzaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIyOjMzLjYxNDIzNTY4OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA3MzM0MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cbk9rYXksIHNvIGBpbnRlbF9tYWNfZmluaXNoYCBpcyBleGNsdXNpdmVseSB3aXRoaW4gYGR3bWFjLWludGVsLmNgLiBUaGF0J3MgdGhlIGtleSBzdGFydGluZyBwb2ludC5cblxuTm93LCBsZXQgbWUgcmUtZXhhbWluZSB0aGUgY3JpdGVyaWE6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhpcyBpcyBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgU29DcyDigJMgRWxraGFydCBMYWtlLCBBbGRlciBMYWtlLCB0aGUgdXN1YWwgc3VzcGVjdHMuIEFuZCBteSBndXQgdGVsbHMgbWUgdGhpcyBgZHdtYWMtaW50ZWwuY2AgY29kZSB0YXJnZXRzICp0aG9zZSogaW50ZWdyYXRlZCBNQUNzIGRpcmVjdGx5LlxuXG5TaW5jZSBRRU1VIGRvZXNuJ3QgZW11bGF0ZSAqdGhvc2Ugc3BlY2lmaWMqIGludGVncmF0ZWQgTUFDcywgd2UncmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHRoYXQgaXMgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBFdmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaW4gUUVNVSwgd2UncmUgbm90IGdvaW5nIHRvIGhpdCB0aGlzIGNvZGUgcGF0aC4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgZXhwbGFuYXRpb24gd2lsbCBoaWdobGlnaHQgdGhhdCB0aGlzIHBhdGNoIHBlcnRhaW5zIHRvIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgbW9kaWZpY2F0aW9ucyAoYGR3bWFjLWludGVsLmNgKSBmb3IgSW50ZWwgU29DcywgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IGVmZmVjdGl2ZWx5IHVuZnV6emFibGUgd2l0aGluIGEgc3RhbmRhcmQgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODQyLCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMjozOS4zMjE1NzE5OTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHdtYWMtaW50ZWwuY2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgdGhlIERlc2lnbldhcmUgTUFDIGludGVncmF0ZWQgaW50byBzcGVjaWZpYyBJbnRlbCBTb0NzIChlLmcuLCBFbGtoYXJ0IExha2UsIEFsZGVyIExha2UpLiBTaW5jZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSBkbyBub3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBJbnRlbCBpbnRlZ3JhdGVkIEV0aGVybmV0IGNvbnRyb2xsZXJzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGluamVjdGlvbiBtZWNoYW5pc20gZm9yIHRoZW0sIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHdtYWMtaW50ZWwuY2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgdGhlIERlc2lnbldhcmUgTUFDIGludGVncmF0ZWQgaW50byBzcGVjaWZpYyBJbnRlbCBTb0NzIChlLmcuLCBFbGtoYXJ0IExha2UsIEFsZGVyIExha2UpLiBTaW5jZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSBkbyBub3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBJbnRlbCBpbnRlZ3JhdGVkIEV0aGVybmV0IGNvbnRyb2xsZXJzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGluamVjdGlvbiBtZWNoYW5pc20gZm9yIHRoZW0sIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowgvgb5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-10 15:59:07 +0000 UTC FinishedAt: 2026-07-10 16:22:41 +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+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiOTJhNThmODRmNjU0NTgzODY2ZTAxMTk1MGRiYjFlYzc0NDc1MzE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTAgMTY6MjA6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi5mYTAxMTM1OTdjOTc4OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcbkBAIC01MjUsNiAmIzQzOzUyNSwzMSBAQCBzdGF0aWMgaW50IGludGVsX3NldF9yZWdfYWNjZXNzKGNvbnN0IHN0cnVjdCBwbWNfc2VyZGVzX3JlZ3MgKnJlZ3MsIGludCBtYXhfcmVnc1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzOy8qIFJldHVybiB0cnVlIGlmIHRoZSBTZXJEZXMgbGFuZSByYXRlIG11c3QgY2hhbmdlIHRvIHNlcnZlIEBpbnRlcmZhY2UuXG4mIzQzOyAqIElmIHRoZSBjdXJyZW50IHJhdGUgY2Fubm90IGJlIGRldGVybWluZWQsIHJlY29uZmlndXJlIGFzIGJlZm9yZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4mIzQzO1x0XHRcdFx0XHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2LFxuJiM0MztcdFx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiYjNDM7e1xuJiM0MztcdHUzMiBjdXJfcmF0ZSwgd2FudF9yYXRlO1xuJiM0MztcdGludCBkYXRhO1xuJiM0MztcbiYjNDM7XHRpZiAoIWludGVsX3ByaXYtXHUwMDNlbWRpb19hZGhvY19hZGRyKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdGRhdGEgPSBtZGlvYnVzX3JlYWQocHJpdi1cdTAwM2VtaWksIGludGVsX3ByaXYtXHUwMDNlbWRpb19hZGhvY19hZGRyLFxuJiM0MztcdFx0XHQgICAgU0VSREVTX0dDUjApO1xuJiM0MztcdGlmIChkYXRhIFx1MDAzYyAwKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdGN1cl9yYXRlID0gKGRhdGEgXHUwMDI2IFNFUkRFU19SQVRFX01BU0spIFx1MDAzZVx1MDAzZSBTRVJERVNfUkFURV9QQ0lFX1NISUZUO1xuJiM0MztcdHdhbnRfcmF0ZSA9IGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYID9cbiYjNDM7XHRcdFx0U0VSREVTX1JBVEVfUENJRV9HRU4yIDogU0VSREVTX1JBVEVfUENJRV9HRU4xO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gY3VyX3JhdGUgIT0gd2FudF9yYXRlO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbiBcdFx0XHQgICAgdm9pZCAqaW50ZWxfZGF0YSxcbiBcdFx0XHQgICAgdW5zaWduZWQgaW50IG1vZGUsXG5AQCAtNTM2LDYgJiM0Mzs1NjEsOSBAQCBzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRpbnQgbWF4X3JlZ3MgPSAwO1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0aWYgKCFpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcocHJpdiwgaW50ZWxfcHJpdiwgaW50ZXJmYWNlKSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdHJldCA9IGludGVsX3Rzbl9sYW5lX2lzX2F2YWlsYWJsZShuZGV2LCBpbnRlbF9wcml2KTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0bmV0ZGV2X2luZm8ocHJpdi1cdTAwM2VkZXYsIFwmIzM0O05vIFRTTiBsYW5lIGF2YWlsYWJsZSB0byBzZXQgdGhlIHJlZ2lzdGVycy5cXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGI5MmE1OGY4NGY2NTQ1ODM4NjZlMDExOTUwZGJiMWVjNzQ0NzUzMTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxMCAxNjoyMDowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi5mYTAxMTM1OTdjOTc4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jCkBAIC01MjUsNiAmIzQzOzUyNSwzMSBAQCBzdGF0aWMgaW50IGludGVsX3NldF9yZWdfYWNjZXNzKGNvbnN0IHN0cnVjdCBwbWNfc2VyZGVzX3JlZ3MgKnJlZ3MsIGludCBtYXhfcmVncwogCXJldHVybiByZXQ7CiB9CiAKJiM0MzsvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgU2VyRGVzIGxhbmUgcmF0ZSBtdXN0IGNoYW5nZSB0byBzZXJ2ZSBAaW50ZXJmYWNlLgomIzQzOyAqIElmIHRoZSBjdXJyZW50IHJhdGUgY2Fubm90IGJlIGRldGVybWluZWQsIHJlY29uZmlndXJlIGFzIGJlZm9yZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgYm9vbCBpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAomIzQzOwkJCQkJc3RydWN0IGludGVsX3ByaXZfZGF0YSAqaW50ZWxfcHJpdiwKJiM0MzsJCQkJCXBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiYjNDM7ewomIzQzOwl1MzIgY3VyX3JhdGUsIHdhbnRfcmF0ZTsKJiM0MzsJaW50IGRhdGE7CiYjNDM7CiYjNDM7CWlmICghaW50ZWxfcHJpdi0mZ3Q7bWRpb19hZGhvY19hZGRyKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CWRhdGEgPSBtZGlvYnVzX3JlYWQocHJpdi0mZ3Q7bWlpLCBpbnRlbF9wcml2LSZndDttZGlvX2FkaG9jX2FkZHIsCiYjNDM7CQkJICAgIFNFUkRFU19HQ1IwKTsKJiM0MzsJaWYgKGRhdGEgJmx0OyAwKQomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CiYjNDM7CWN1cl9yYXRlID0gKGRhdGEgJmFtcDsgU0VSREVTX1JBVEVfTUFTSykgJmd0OyZndDsgU0VSREVTX1JBVEVfUENJRV9TSElGVDsKJiM0MzsJd2FudF9yYXRlID0gaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVggPwomIzQzOwkJCVNFUkRFU19SQVRFX1BDSUVfR0VOMiA6IFNFUkRFU19SQVRFX1BDSUVfR0VOMTsKJiM0MzsKJiM0MzsJcmV0dXJuIGN1cl9yYXRlICE9IHdhbnRfcmF0ZTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCQkgICAgdm9pZCAqaW50ZWxfZGF0YSwKIAkJCSAgICB1bnNpZ25lZCBpbnQgbW9kZSwKQEAgLTUzNiw2ICYjNDM7NTYxLDkgQEAgc3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LAogCWludCBtYXhfcmVncyA9IDA7CiAJaW50IHJldCA9IDA7CiAKJiM0MzsJaWYgKCFpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcocHJpdiwgaW50ZWxfcHJpdiwgaW50ZXJmYWNlKSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwogCXJldCA9IGludGVsX3Rzbl9sYW5lX2lzX2F2YWlsYWJsZShuZGV2LCBpbnRlbF9wcml2KTsKIAlpZiAocmV0ICZsdDsgMCkgewogCQluZXRkZXZfaW5mbyhwcml2LSZndDtkZXYsICYjMzQ7Tm8gVFNOIGxhbmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgcmVnaXN0ZXJzLlxuJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjY5CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIHRvIHRoZSBJbnRlbCBTVE1NQUMgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jYC4gVGhleSYjMzk7dmUgYWRkZWQgdGhpcyBuZXcgZnVuY3Rpb24sIGBpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWdgLCBhbmQgdGhleSYjMzk7cmUgY2FsbGluZyBpdCBmcm9tIGBpbnRlbF9tYWNfZmluaXNoYC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBzdG1tYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCBwbGF0Zm9ybXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gYXNzZXNzIGl0cyByZWxldmFuY2UgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJcyB0aGlzIGNvZGUgcGF0aCBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsIHNldHVwPwoKTGV0JiMzOTtzIHNlZSwgYGR3bWFjLWludGVsLmNgIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgSW50ZWwgRFdNQUMsIHRoYXQmIzM5O3MgRGVzaWduV2FyZSBNQUMuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgd29uZGVyIGFib3V0IGZ1enppbmcuIFBDSSBkcml2ZXJzIGZvciBoYXJkd2FyZS1zcGVjaWZpYyBkZXZpY2VzIG9mdGVuIHBvc2UgY2hhbGxlbmdlcyBmb3IgZnV6emluZywgdW5sZXNzIHdlIGhhdmUgcHJvcGVyIFBDSSBlbXVsYXRpb24gb3IgaXQgaXMgZ2VuZXJpYyBlbm91Z2guIEkgbmVlZCB0byBkaWcgaW50byBgZHdtYWMtaW50ZWwuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB0cmlnZ2VyaW5nIGV4ZWN1dGlvbiBvZiB0aGlzIG5ldyBmdW5jdGlvbiB0byBldmFsdWF0ZSBob3cgYWNjZXNzaWJsZSBpdCBpcy4gSSYjMzk7bSBnb2luZyB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIHdvcnRod2hpbGUgcGxhY2UgdG8gZm9jdXMgcmVzb3VyY2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTMxPXN0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU1MzpzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1NC1cdFx0XHQgICAgdm9pZCAqaW50ZWxfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Mz1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzkxLVx0cGxhdC1cdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NzkyOlx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNzkzLVx0cGxhdC1cdTAwM2VjbGtfcHRwX3JhdGUgPSAyMDQ4MDAwMDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDk9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NTYtXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NTc6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NTgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04OTg9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDUtXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MDY6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIwPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDI4LVx0cGxhdC1cdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTAyOTpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMzAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU0NgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBmb3IgSW50ZWwgRWxraGFydCBMYWtlIGFuZCBBbGRlciBMYWtlLU4gUGxhdGZvcm1zKioKCk9rYXksIHNvIHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIEludGVsJiMzOTtzIEVsa2hhcnQgTGFrZSAoRUhMKSBhbmQgQWxkZXIgTGFrZS1OIChBREwtTikgcGxhdGZvcm1zLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IFBDSSBJRHMgaXQmIzM5O3MgcmVnaXN0ZXJpbmcgYW5kIGJpbmRpbmcgdG8/IEtub3dpbmcgdGhhdCBpcyBjcnVjaWFsLiBDYW4gd2UgZnV6eiB0aGlzIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXImIzM5O3MgZ290IHRoYXQgYHN5el9wY2lfZGV2aWNlX3NldHVwYCBjYWxsLCB3aGljaCBpcyBpbmNyZWRpYmx5IHVzZWZ1bCBmb3IgZW11bGF0aW5nIFBDSSBkZXZpY2VzLCByaWdodD8KClNvLCB0aGUgbmV4dCBzdGVwLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRyaXZlciYjMzk7cyBjb2RlIGFuZCBwaW5wb2ludCB0aG9zZSBQQ0kgSURzLiBUaGF0JiMzOTtzIHRoZSBrZXkgdG8gZmlndXJpbmcgb3V0IGlmIGBzeXpfcGNpX2RldmljZV9zZXR1cGAgY2FuIGV2ZW4gaW50ZXJhY3Qgd2l0aCB0aGlzIHRoaW5nLCBhbmQgaWYgc28sIGhvdyBlZmZlY3RpdmVseS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9kZXZpY2VfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2MD1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjE6XHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzU4PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzkxLVx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFFVQVJLLCBcdTAwMjZxdWFya19pbmZvKSB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QgaGVyZS4KCioqQW5hbHl6aW5nIFN5emthbGxlciBhbmQgTmV0d29yayBEZXZpY2UgRHJpdmVyIEludGVyYWN0aW9uKioKClJpZ2h0LCBzbyBTeXprYWxsZXIgY2FuIGVtdWxhdGUgUENJIGRldmljZXMsIHdoaWNoIGlzIGdyZWF0LCB0aGFua3MgdG8gYHN5el9wY2lfZGV2aWNlX3NldHVwYC4gQnV0IHRoZSByZWFsIGludGVyZXN0aW5nIHBhcnQgaGVyZSBpcyBob3cgdGhlIGVtdWxhdGVkIGRldmljZSBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbnMsIHNwZWNpZmljYWxseSBQSFlzIGFuZCBNRElPIGJ1c2VzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcHJvYmUgYW5kIHNlZSBpZiB3ZSBjYW4gcmVhY2ggYGludGVsX21hY19maW5pc2hgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IGZ1bmN0aW9uIG5hbWUgcmluZ3MgYSBiZWxsLCBJJiMzOTt2ZSBzZWVuIGl0IGJlZm9yZSB3aGVuIGRlYnVnZ2luZyBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVycy4KCk5vdywgd2hlcmUgaXMgYGludGVsX21hY19maW5pc2hgIGNhbGxlZCBmcm9tPyBQcmV0dHkgc3VyZSBpdCYjMzk7cyBidXJpZWQgc29tZXdoZXJlIGluIHRoZSBgc3RtbWFjYCBjb3JlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgc3RtbWFjYCBjb2RlIGFuZCBmaW5kIHRoZSBjYWxsIHNpdGVzLiBHb3R0YSB0cmFjZSBiYWNrIHRob3NlIGZ1bmN0aW9uIGNhbGxzIHRvIHNlZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIGlkZW50aWZ5IHBvc3NpYmxlIGVudHJ5IHBvaW50cy4gVGhpcyBjb3VsZCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBkcml2ZXIuIExldCYjMzk7cyBzZWUgaWYgd2UgY2FuIGdldCBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGF0IGRyaXZlciYjMzk7cyBsaWZlY3ljbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjX2ZpbmlzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTUzMT1zdGF0aWMgYm9vbCBpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1NTM6c3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NTQtXHRcdFx0ICAgIHZvaWQgKmludGVsX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03ODM9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5MS1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc5MjpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5My1cdHBsYXQtXHUwMDNlY2xrX3B0cF9yYXRlID0gMjA0ODAwMDAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODQ5PXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODU2LVx0cGxhdC1cdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODU3Olx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODU4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODk4PXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTA1LVx0cGxhdC1cdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTA2Olx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTAyMD1zdGF0aWMgaW50IGFkbG5fc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyOC1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjk6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDMwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9NjExPXN0YXRpYyB2b2lkIHFjb21fZXRocW9zX3NlcmRlc19wb3dlcmRvd24oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy02MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jOjYxOTpzdGF0aWMgaW50IGV0aHFvc19tYWNfZmluaXNoX3NlcmRlcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjIwLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTcyMS1cdFx0cGxhdF9kYXQtXHUwMDNlZml4X21hY19zcGVlZCA9IGV0aHFvc19maXhfbWFjX3NwZWVkX3NnbWlpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3MjI6XHRcdHBsYXRfZGF0LVx1MDAzZW1hY19maW5pc2ggPSBldGhxb3NfbWFjX2ZpbmlzaF9zZXJkZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTcyMy1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMDM3PXN0YXRpYyB2b2lkIHN0bW1hY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNDM6c3RhdGljIGludCBzdG1tYWNfbWFjX2ZpbmlzaChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDQtXHRcdFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTA0OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0OTpcdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlbWFjX2ZpbmlzaClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA1MDpcdFx0cHJpdi1cdTAwM2VwbGF0LVx1MDAzZW1hY19maW5pc2gobmRldiwgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZWJzcF9wcml2LCBtb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDUxLVx0XHRcdFx0ICAgICAgIGludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMjY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIHN0bW1hY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMjY3LVx0Lm1hY19jb25maWcgPSBzdG1tYWNfbWFjX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTI2ODpcdC5tYWNfZmluaXNoID0gc3RtbWFjX21hY19maW5pc2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEyNjktXHQubWFjX2xpbmtfZG93biA9IHN0bW1hY19tYWNfbGlua19kb3duLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMDEKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtYWNfZmluaXNoYCBDYWxsYmFjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbWFjX2ZpbmlzaGAgY2FsbGJhY2suIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBzdG1tYWNfbWFjX2ZpbmlzaGAsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhhdCYjMzk7cyBwYXJ0IG9mIHRoZSBgcGh5bGlua19tYWNfb3BzYCBzdHJ1Y3R1cmUuIFRoYXQgdGVsbHMgbWUgdGhpcyBjYWxsYmFjayBpcyB0cmlnZ2VyZWQgZHVyaW5nIHBoeWxpbmsgY29uZmlndXJhdGlvbiDigJMgYmFzaWNhbGx5IHdoZW5ldmVyIHRoZSBsaW5rIHN0YXR1cyBjaGFuZ2VzLCBsaWtlIHdoZW4gdGhlIGludGVyZmFjZSBjb21lcyB1cCBvciBnb2VzIGRvd24sIG9yIG1heWJlIGlmIHRoZXJlJiMzOTtzIGFuIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGNoYW5nZS4gTWFrZXMgc2Vuc2UuCgpUbyBldmVuIGdldCB0byB0aGlzIGBtYWNfZmluaXNoYCBmdW5jdGlvbiwgdGhlIGBkd21hYy1pbnRlbGAgZHJpdmVyIG5lZWRzIHRvIHByb2JlIHN1Y2Nlc3NmdWxseS4gVGhhdCYjMzk7cyBrZXkuIFNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCBkb2VzIHRoZSBgZHdtYWMtaW50ZWxgIGRyaXZlciAqbmVlZCogdG8gYmUgcHJlc2VudCB0byBwcm9iZSB3aXRob3V0IGZhaWxpbmc/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbnN0cmFpbnRzIG9mIHRoZSBgZHdtYWMtaW50ZWxgIGRyaXZlciwgYmVjYXVzZSBpZiB0aGUgZHJpdmVyIHdvbiYjMzk7dCBsb2FkLCB0aGlzIGVudGlyZSBjYWxsYmFjayBtZWNoYW5pc20gaXMgbW9vdC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBgZHdtYWMtaW50ZWxgIHByb2JlIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnRlbF9ldGhfcGNpX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyMzE9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI0OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI0OTogKiBpbnRlbF9ldGhfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNTAtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNTktICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjA6c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjYxLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTQtXHQuaWRfdGFibGUgPSBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE1Olx0LnByb2JlID0gaW50ZWxfZXRoX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxNi1cdC5yZW1vdmUgPSBpbnRlbF9ldGhfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDc4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgaW50ZWxfZXRoX3BjaV9wcm9iZWAgd2l0aCBTeXprYWxsZXIqKgoKT2theSwgc28gYGludGVsX2V0aF9wY2lfcHJvYmVgIGNhbGxzIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gc3l6a2FsbGVyIHJlbGlhYmx5IGVtdWxhdGUgdGhlIFBDSSBkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXM/ICBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aGF0IHN5emthbGxlciB1c2VzLCBsaWtlIFFFTVUuICAKClN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgLCBidXQgdGhhdCBkb2VzbiYjMzk7dCBtZWFuIGl0IGRpcmVjdGx5IGluamVjdHMgKmFyYml0cmFyeSogUENJIGRldmljZXMuIFRoZSBkb2N1bWVudGF0aW9uIHNheXMgdG8gZXhjbHVkZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogc3l6a2FsbGVyIGhhbmRsZXMgUENJIGRldmljZSBpbmplY3Rpb24uICBNeSBtZW1vcnkgaXMgYSBsaXR0bGUgaGF6eTsgZG9lcyBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgIHJlbHkgb24gYSBRRU1VLXNwZWNpZmljIGVtdWxhdGlvbj8gSXQgc2VlbXMgbGlrZSBpdCYjMzk7cyBhIGJpdCBvZiBhIGh5YnJpZC4gRm9yIFVTQiwgSSBrbm93IGl0IHVzZXMgYHZoY2lgLCBmb3IgV2ktRmksIGl0IHVzZXMgYG1hYzgwMjExX2h3c2ltYCwgZm9yIGlucHV0LCBgdWlucHV0YCwgYnV0IHRoZXJlJiMzOTtzIG5vIGVxdWl2YWxlbnQgZ2VuZXJpYyBzb2Z0d2FyZSBlbXVsYXRvciBpbiB0aGUga2VybmVsIHRoYXQgSSYjMzk7bSBhd2FyZSBvZiBmb3IgUENJIGRldmljZXMsIG90aGVyIHRoYW4gbWF5YmUgYHBjaS1zdHViYCBvciBgdmZpb2AgLSBidXQgdGhlc2UgZG9uJiMzOTt0ICpjcmVhdGUqIHZpcnR1YWwgZGV2aWNlcyBmcm9tIHNjcmF0Y2guIFRoZXkgcGFzcyB0aHJvdWdoIGV4aXN0aW5nIGhhcmR3YXJlLgoKU28sIHJlYWxpc3RpY2FsbHksIHN5emthbGxlciBwcm9iYWJseSByZWxpZXMgb24gUUVNVSYjMzk7cyBlbXVsYXRlZCBkZXZpY2VzLCBvciBtYXliZSBmdXp6ZXMgdGhlIFBDSSBzdWJzeXN0ZW0gaW4gYW5vdGhlciB3YXkuICBJIG5lZWQgdG8gY29uZmlybSBpZiBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgIHJlYWxseSBpbmplY3RzIGFueXRoaW5nICpuZXcqIG9yIGlmIGl0JiMzOTtzIG1vcmUgYWJvdXQgY29uZmlndXJpbmcgZXhpc3Rpbmcgb25lcy4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgdW5yZWFjaGFibGUgY29kZSBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBJZiBgZHdtYWMtaW50ZWxgIGlzIGEgdmVyeSBzcGVjaWZpYyBJbnRlbCBkcml2ZXIsIGxpa2UgZm9yIEVsa2hhcnQgTGFrZSBTb0NzLCBhbmQgUUVNVSAqZG9lc24mIzM5O3QqIGVtdWxhdGUgdGhhdCAqc3BlY2lmaWMqIERXTUFDIFBDSSBkZXZpY2UsIHRoZW4gSSYjMzk7bSBwcm9iYWJseSB3YXN0aW5nIG15IHRpbWUuCgpMZXQmIzM5O3MgY2hlY2sgUUVNVSYjMzk7cyBzdXBwb3J0ZWQgbmV0d29yayBkZXZpY2VzLiBJIGtub3cgaXQgc3VwcG9ydHMgdGhlIHVzdWFsIHN1c3BlY3RzOiBgaWdiYCwgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCBzbyBvbi4gQnV0LCBJIGRvbiYjMzk7dCBzZWUgYGR3bWFjLWludGVsYCBsaXN0ZWQuIE9rYXksIHdhaXQgYSBtaW51dGUsIEkgKmRvKiBzZWUgYSBgaHcvbmV0L2Rlc2lnbndhcmUuY2AgaW4gUUVNVS4gSXQgZW11bGF0ZXMgRGVzaWduV2FyZSBNQUNzLCBidXQgdGhhdCYjMzk7cyBsaWtlbHkgZm9yIHNvbWV0aGluZyBsaWtlIGBGU0xfSU1YNmAsIG5vdCB0aGUgSW50ZWwtc3BlY2lmaWMgUENJIHdyYXBwZXIuCgpVbHRpbWF0ZWx5LCBpZiB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGRlc2lnbmVkIGZvciBhIHNwZWNpZmljIFNvQyAobGlrZSBFbGtoYXJ0IExha2UpLCBpdCYjMzk7cyBoaWdobHkgaW1wcm9iYWJsZSB0aGF0IGl0JiMzOTtzIGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIFFFTVUgVk0gdW5sZXNzIHRoZXJlJiMzOTtzIGV4cGxpY2l0IGVtdWxhdGlvbiBmb3IgaXQuIEkgbmVlZCB0byBmaW5kIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIHRvIHByb2NlZWQuIEkgaGF2ZSB0byBjaGVjayB0aGUgY29kZWJhc2UgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZHdtYWMtaW50ZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mzk9b2JqLSQoQ09ORklHX0RXTUFDX0RXQ19RT1NfRVRIKVx0JiM0Mzs9IGR3bWFjLWR3Yy1xb3MtZXRoLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVx0JiM0Mzs9IGR3bWFjLWludGVsLXBsYXQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDEtb2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OMSlcdCYjNDM7PSBkd21hYy1sb29uZ3NvbjEub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUwPW9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVx0JiM0Mzs9IGR3bWFjLWludGVsLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTUyLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcdCYjNDM7PSBkd21hYy1sb29uZ3Nvbi5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05LSNpbmNsdWRlIFx1MDAzY2FzbS9jcHVpZC9hcGkuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDojaW5jbHVkZSBcJiMzNDtkd21hYy1pbnRlbC5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExLSNpbmNsdWRlIFwmIzM0O2R3bWFjNC5oXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MjcKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBicmVha2Rvd24gb2YgdGhpcy4KCioqSW52ZXN0aWdhdGluZyB0aGUgSW50ZWwgRFdNQUMgRHJpdmVyJiMzOTtzIFRyaWdnZXIgUG9pbnRzKioKCkFscmlnaHQsIHNvIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaGVyZSBpcyBgQ09ORklHX0RXTUFDX0lOVEVMYC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzOiBDYW4gSSB0cmlnZ2VyIHRoZSBgaW50ZWxfbWFjX2ZpbmlzaGAgZnVuY3Rpb24gd2l0aG91dCBoYXZpbmcgdGhlIGFjdHVhbCBoYXJkd2FyZSBwcmVzZW50PyBHaXZlbiB0aGF0IHRoaXMgaXMgYSBQQ0kgZHJpdmVyLCBteSBpbnN0aW5jdCBzYXlzIG5vLiBMZXQgbWUgY29uZmlybSB0aGlzIGFzc3VtcHRpb24uCgpUaGUgcHJvYmUgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSBlbnRyeSBwb2ludCwgaXMgYGludGVsX2V0aF9wY2lfcHJvYmVgLiBOb3csIGZyb20gZXhwZXJpZW5jZSwgSSBrbm93IFBDSSBkcml2ZXJzIGFyZSBpbmhlcmVudGx5IHJlbGlhbnQgb24gdGhlIFBDSSBjb3JlIGRldGVjdGluZyBhIGRldmljZSB3aXRoIG1hdGNoaW5nIElEcy4gVGhlIGBpbnRlbF9ldGhfcGNpX3Byb2JlYCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBvbmx5IHdoZW4gdGhlIFBDSSBzdWJzeXN0ZW0gZGlzY292ZXJzIGEgZGV2aWNlIGl0IHJlY29nbml6ZXMuIFRoZXJlZm9yZSwgd2l0aG91dCB0aGUgY29ycmVjdCBQQ0kgZGV2aWNlIGlkZW50aWZpY2F0aW9uLCBgaW50ZWxfZXRoX3BjaV9wcm9iZWAgd29uJiMzOTt0IGJlIGNhbGxlZCwgYW5kIGNvbnNlcXVlbnRseSwgYGludGVsX21hY19maW5pc2hgIHdvbiYjMzk7dCBiZSB0cmlnZ2VyZWQuIFRoZSBQQ0kgSURzIGFyZSB0aGUgY3JpdGljYWwgcGllY2UgaGVyZSwgYW5kIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSB0aGVtIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50cy4gU28sIGVzc2VudGlhbGx5LCB0aGlzIGlzbiYjMzk7dCBzb21ldGhpbmcgSSBjYW4gc2ltdWxhdGUgZWFzaWx5IHdpdGhvdXQgYSBjb21wbGlhbnQgZGV2aWNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpbnRlbF9ldGhfcGNpX2lkX3RhYmxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEzNTg9c3RhdGljIHZvaWQgaW50ZWxfZXRoX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzkwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzOTEtXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFx1MDAyNnF1YXJrX2luZm8pIH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDA5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTA6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxMy1cdC5uYW1lID0gXCYjMzQ7aW50ZWwtZXRoLXBjaVwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTQxNDpcdC5pZF90YWJsZSA9IGludGVsX2V0aF9wY2lfaWRfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTUtXHQucHJvYmUgPSBpbnRlbF9ldGhfcGNpX3Byb2JlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjQ5CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIFBDSSBEZXZpY2UgSURzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHNvbWUgUENJIGRldmljZSBkcml2ZXIgY29kZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcyBpczogSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHNwZWNpZmljcyBvZiB3aGF0IHRoaXMgZHJpdmVyIHN1cHBvcnRzLiBTbywgSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBjaGVja2luZyB3aGF0IGBQQ0lfREVWSUNFX0RBVEFgIGV4cGFuZHMgdG8uIEkmIzM5O20gZ3Vlc3NpbmcgaXQmIzM5O3MgcHJvYmFibHkgYSBtYWNybyB0aGF0IGhvbGRzIHNvbWUgY3JpdGljYWwgY29uZmlndXJhdGlvbiBkYXRh4oCUdmVuZG9yIElEcywgZGV2aWNlIElEcywgbWF5YmUgZXZlbiBzdWJjbGFzcyBhbmQgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIGRldGFpbHMuIFVuZGVyc3RhbmRpbmcgd2hhdCB0aGF0IHN0cnVjdCBhY3R1YWxseSAqaXMqIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlbnRpb24uCgpUaGVuLCBJJiMzOTtsbCB0dXJuIG15IGF0dGVudGlvbiB0byB0aGUgYGludGVsX2V0aF9wY2lfaWRfdGFibGVgLiBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBwcmltYXJ5IGxvb2t1cCB0YWJsZSBmb3IgaWRlbnRpZnlpbmcgc3VwcG9ydGVkIGhhcmR3YXJlLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCB0YWJsZSB0byBzZWUgd2hpY2ggc3BlY2lmaWMgSW50ZWwgRXRoZXJuZXQgUENJIGRldmljZXMgdGhpcyBkcml2ZXIgaXMgZGVzaWduZWQgdG8gaGFuZGxlLiBUaGF0IHRhYmxlIHdpbGwgZ2l2ZSBtZSBhIHZlcnkgcXVpY2sgb3ZlcnZpZXcgb2YgdGhlIHRhcmdldCBoYXJkd2FyZSBhbmQgdGhlIHJhbmdlcyBvZiBkZXZpY2VzIHRoZSBkcml2ZXIgc2hvdWxkIG1hbmFnZS4gSSYjMzk7bSBtZW50YWxseSBwaWN0dXJpbmcgaXQgbm93IOKAkyBhIGNvbGxlY3Rpb24gb2YgUENJIElEIHR1cGxlcywgcHJvYmFibHkgd2l0aCBhc3NvY2lhdGVkIGRyaXZlciBkYXRhLiBJdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoaXMgZHJpdmVyJiMzOTtzIGZ1bmN0aW9uYWxpdHkuIE15IHBsYW4gaXMgdG8gbWVudGFsbHkgY3Jvc3MtcmVmZXJlbmNlIHRoZSBgUENJX0RFVklDRV9EQVRBYCB3aXRoIHRoaXMgdGFibGUsIHRoYXQgc2hvdWxkIGdpdmUgbWUgYSBwcmV0dHkgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXBwb3J0IGxhbmRzY2FwZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTM5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMzkwOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGludGVsX2V0aF9wY2lfaWRfdGFibGVbXSA9IHtcbjEzOTE6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBRVUFSSywgXHUwMDI2cXVhcmtfaW5mbykgfSxcbjEzOTI6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUkdNSUkxRywgXHUwMDI2ZWhsX3JnbWlpMWdfaW5mbykgfSxcbjEzOTM6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfU0dNSUkxRywgXHUwMDI2ZWhsX3NnbWlpMWdfaW5mbykgfSxcbjEzOTQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfU0dNSUkyRzUsIFx1MDAyNmVobF9zZ21paTFnX2luZm8pIH0sXG4xMzk1Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1BTRTBfUkdNSUkxRywgXHUwMDI2ZWhsX3BzZTBfcmdtaWkxZ19pbmZvKSB9LFxuMTM5NjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9QU0UwX1NHTUlJMUcsIFx1MDAyNmVobF9wc2UwX3NnbWlpMWdfaW5mbykgfSxcbjEzOTc6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUFNFMF9TR01JSTJHNSwgXHUwMDI2ZWhsX3BzZTBfc2dtaWkxZ19pbmZvKSB9LFxuMTM5ODpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9QU0UxX1JHTUlJMUcsIFx1MDAyNmVobF9wc2UxX3JnbWlpMWdfaW5mbykgfSxcbjEzOTk6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUFNFMV9TR01JSTFHLCBcdTAwMjZlaGxfcHNlMV9zZ21paTFnX2luZm8pIH0sXG4xNDAwOlx0XHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1BTRTFfU0dNSUkyRzUsIFx1MDAyNmVobF9wc2UxX3NnbWlpMWdfaW5mbykgfSxcbjE0MDE6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBUR0xfU0dNSUkxRywgXHUwMDI2dGdsX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxuMTQwMjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFRHTEhfU0dNSUkxR18wLCBcdTAwMjZ0Z2xfc2dtaWkxZ19waHkwX2luZm8pIH0sXG4xNDAzOlx0XHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgVEdMSF9TR01JSTFHXzEsIFx1MDAyNnRnbF9zZ21paTFnX3BoeTFfaW5mbykgfSxcbjE0MDQ6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBBRExTX1NHTUlJMUdfMCwgXHUwMDI2YWRsc19zZ21paTFnX3BoeTBfaW5mbykgfSxcbjE0MDU6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBBRExTX1NHTUlJMUdfMSwgXHUwMDI2YWRsc19zZ21paTFnX3BoeTFfaW5mbykgfSxcbjE0MDY6XHRcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBBRExOX1NHTUlJMUcsIFx1MDAyNmFkbG5fc2dtaWkxZ19waHkwX2luZm8pIH0sXG4xNDA3Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUlBMUF9TR01JSTFHLCBcdTAwMjZhZGxuX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxuMTQwODpcdFx0e31cbjE0MDk6XHR9O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc4MAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDU4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgZHdtYWMtaW50ZWxgIENvZGUgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyIGZ1enogdGhpcyBgZHdtYWMtaW50ZWxgIGRyaXZlcj8gTXkgZ3V0IHJlYWN0aW9uIGlzIHRoYXQgdGhlcmUgaXNuJiMzOTt0IGEgKmdlbmVyaWMqIHN5emthbGxlciBQQ0kgZGV2aWNlIHNldHVwIHN5c2NhbGwuIEkgdmFndWVseSByZW1lbWJlciBzeXprYWxsZXIgZm9jdXNpbmcgb24gVVNCIHZpYSBgc3l6X3VzYl9jb25uZWN0YCwgODAyLjExIHdpdGggYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gLCBhbmQgQmx1ZXRvb3RoIHRocm91Z2ggYHZoY2lgLCBidXQgbm90IGEgYnJvYWQgUENJIGZ1enppbmcgY2FwYWJpbGl0eS4gSXQgbWFrZXMgc2Vuc2UsIHRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyaWMgc29mdHdhcmUgZnJhbWV3b3JrIGZvciBpbmplY3RpbmcgYXJiaXRyYXJ5IFBDSSBkZXZpY2VzIGZyb20gdXNlcnNwYWNlIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUsIHdoaWNoIGlzIHdoeSBpdCBoYXNuJiMzOTt0IGJlZW4gaW1wbGVtZW50ZWQuCgpXYWl0LCB0aGVuIEkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IGBDT05GSUdfUENJX0VORFBPSU5UX1RFU1RgIGFuZCBgcGNpLWVwZi10ZXN0YCwgYnV0IHRoYXQgcmVxdWlyZXMgZGVkaWNhdGVkIGVuZHBvaW50IGhhcmR3YXJlIG9yIHNwZWNpZmljIGVtdWxhdGlvbi4KCkFoLCBidXQgKmRvZXMqIHN5emthbGxlciBoYXZlIFBDSSBmdXp6aW5nLCB0aG91Z2g/IE5vLCB0aGUgdHlwaWNhbCBhcHByb2FjaCBmb3IgUENJIGZ1enppbmcgd2l0aCBzeXprYWxsZXIgaXMgdG8gcnVuIGluIFFFTVUgYW5kIGludGVyYWN0IHdpdGggZW11bGF0ZWQgZGV2aWNlcy4gSXQgaXMgcHJvYmFibHkganVzdCBub3QgZnV6emluZyB1bi1lbXVsYXRlZCBkZXZpY2VzLgoKVGhlIHByb21wdCwgdGhvdWdoLCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBUaGlzIGlzIHdoZXJlIHRoZSBwZW5ueSBkcm9wcy4gVGhlIGBkd21hYy1pbnRlbGAgZHJpdmVyIHRhcmdldHMgdmVyeSBzcGVjaWZpYyBJbnRlbCBTb0NzOiBRdWFyaywgRWxraGFydCBMYWtlLCBUaWdlciBMYWtlLCBBbGRlciBMYWtlLCBSYXB0b3IgTGFrZS4gQW5kIGl0JiMzOTtzIGFuICppbnRlZ3JhdGVkKiBNQUMuIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIGludGVncmF0ZWQgTUFDcywgdGhleSYjMzk7cmUgcGFydCBvZiB0aGUgUENIIG9yIFNvQy4KClNvLCBzaW5jZSBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIHNwZWNpZmljIGludGVncmF0ZWQgSW50ZWwgRXRoZXJuZXQgKEVITC9UR0wvQURMKSwgdGhpcyBjb2RlIGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0Ugc2V0dXAuIEkmIzM5O3ZlIGdvdHRhIGRvdWJsZS1jaGVjayB0aGF0IHRoZXJlJiMzOTtzIGFic29sdXRlbHkgbm8gb3RoZXIgd2F5LCBJJiMzOTtsbCByZXZpZXcgdGhlIGNvZGViYXNlIHRvIGNvbmZpcm0gaWYgYGludGVsX21hY19maW5pc2hgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEwIDE2OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01MzE9c3RhdGljIGJvb2wgaW50ZWxfc2VyZGVzX25lZWRzX3JlY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTUzOnN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTU0LVx0XHRcdCAgICB2b2lkICppbnRlbF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NzgzPXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTEtXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3OTI6XHRwbGF0LVx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTMtXHRwbGF0LVx1MDAzZWNsa19wdHBfcmF0ZSA9IDIwNDgwMDAwMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg0OT1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1Ni1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg1NzpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg5OD1zdGF0aWMgaW50IGVobF9wc2UxX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkwNS1cdHBsYXQtXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkwNjpcdHBsYXQtXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkwNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjA9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMjgtXHRwbGF0LVx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDI5Olx0cGxhdC1cdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAzMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2NTkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVW5yZWFjaGFibGUgQ29kZSBpbiBgZHdtYWMtaW50ZWwuY2AqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBwYXRoIGluIGBkd21hYy1pbnRlbC5jYCwgYW5kIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IGRlYWQgY29kZSBpbiBhIHN5emthbGxlciBjb250ZXh0LiBJdCYjMzk7cyBvbmx5IGNhbGxlZCBmcm9tIHdpdGhpbiB0aGlzIHNwZWNpZmljIGhhcmR3YXJlIGRyaXZlciBmb3IgSW50ZWwgU29Dcy4gU2luY2UgdGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciwgYW5kIEkga25vdyB0aGVyZSYjMzk7cyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaXQgaW4gZWl0aGVyIFFFTVUgb3IgdGhlIGtlcm5lbCBpdHNlbGYsIGl0IHNlZW1zIGxpa2UgYSB2aXJ0dWFsIGVudmlyb25tZW50LCBsaWtlIHRoZSBvbmUgc3l6a2FsbGVyIHVzZXMsIGNvdWxkbiYjMzk7dCByZWFjaCBpdC4KCkJ1dCBob2xkIG9uLCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBDb3VsZCB0aGVyZSBiZSBhbiBpbmRpcmVjdCByb3V0ZT8gUGVyaGFwcyBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBgc3RtbWFjX21hY19maW5pc2hgIGlmIHdlIGNvdWxkIHNvbWVob3cgaW5qZWN0IGEgcGxhdGZvcm0gZGV2aWNlPyBObywgdGhhdCYjMzk7cyBub3QgcmlnaHQuCgpSaWdodCwgc28gYGR3bWFjLWludGVsLmNgIGlzIGEgUENJIGRyaXZlci4gSXQgcmVnaXN0ZXJzIHVzaW5nIGBwY2lfcmVnaXN0ZXJfZHJpdmVyYC4gVGhhdCBtZWFucyB0aGUgYHByb2JlYCBmdW5jdGlvbiwgd2hpY2ggaXMgZXNzZW50aWFsIHRvIHNldHRpbmcgdXAgdGhlIGRyaXZlciYjMzk7cyBmdW5jdGlvbnMsIHJlcXVpcmVzIGEgbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRCBpbiBhIFBDSSBkZXZpY2UuIFdpdGhvdXQgdGhlIGNvcnJlY3QgUENJIGRldmljZSwgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZC4gQW5kIHdpdGhvdXQgdGhhdCBjYWxsLCB0aGUgYHBsYXQtJmd0O21hY19maW5pc2hgIHBvaW50ZXIgd29uJiMzOTt0IGJlIHNldCwgYW5kIHRoZXJlZm9yZSBgc3RtbWFjX21hY19maW5pc2hgIHdpbGwgbmV2ZXIgY2FsbCBgaW50ZWxfbWFjX2ZpbmlzaGAuCgpTbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSBpbmplY3QgYSBQQ0kgZGV2aWNlIHdpdGggdGhlIHJpZ2h0IElEcyBpbnRvIHRoZSBzeXN0ZW0/IFRoZSBMaW51eCBrZXJuZWwgaGFzIHRoZSBgUENJX1NUVUJgIGRyaXZlciwgYnV0IHRoYXQmIzM5O3Mgbm90IGl0LCBpdCBkb2VzbiYjMzk7dCBjcmVhdGUgdmlydHVhbCBkZXZpY2VzLiBUaGVuIEkgcmVjYWxsZWQgYENPTkZJR19QQ0lfRU5EUE9JTlRgLCB3aGljaCBhbGxvd3MgYSBMaW51eCBzeXN0ZW0gdG8gYWN0IGFzIGEgUENJIGVuZHBvaW50LCBidXQgdGhhdCYjMzk7cyBmb3IgaG9zdC10by1ob3N0IGNvbm5lY3Rpb25zLiBJdCB3b24mIzM5O3QgaGVscCBoZXJlLgoKQXMgZmFyIGFzIEkga25vdywgdGhlcmUgaXNuJiMzOTt0IGEgZ2VuZXJpYyB2aXJ0dWFsIFBDSSBkZXZpY2UgaW5qZWN0b3Igd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgdGhhdCBzeXprYWxsZXIgY2FuIGxldmVyYWdlIHRvIHRyaWdnZXIgcHJvYmVzIG9mIGFyYml0cmFyeSBQQ0kgZHJpdmVycy4gU3l6a2FsbGVyIHJlbGllcyBvbiBRRU1VIGZvciBwcm92aWRpbmcgUENJIGRldmljZXMsIGFuZCBpbiB0aGlzIGNhc2UsIFFFTVUgY2FuJiMzOTt0IHNpbXVsYXRlIHRoaXMuCgpUaGVyZWZvcmUsIGdpdmVuIHdoYXQgSSBrbm93LCBpdCBhcHBlYXJzIHRoaXMgY29kZSBwYXRoIGlzIHNpbXBseSB1bnJlYWNoYWJsZSB3aXRoaW4gc3l6a2FsbGVyJiMzOTtzIGVudmlyb25tZW50LgoKSG1tLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZSBjaGVjayBvbmUgbW9yZSB0aGluZy4uLiBXaGF0IGlmLCBhbmQgdGhpcyBpcyBhIGxvbmcgc2hvdCwgYnV0IHdoYXQgaWYgYGR3bWFjLWludGVsYCBpcyAqYWxzbyogcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlcj8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTAgMTY6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM1NTMKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlBDSSBEcml2ZXIgQ29udW5kcnVtKioKCkFscmlnaHQsIGxldCYjMzk7cyBjbGFyaWZ5IHRoaXMuIFRoZSBpbml0aWFsIHF1ZXN0aW9uIG9yIGNvbnRleHQgc3VnZ2VzdHMgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYSBuZXR3b3JrIGludGVyZmFjZSBjb250cm9sbGVyIG9yIHNpbWlsYXIgZGV2aWNlIGRyaXZlci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7Tm8sIGJhc2VkIG9uIHdoYXQgSSYjMzk7bSBsb29raW5nIGF0LCB0aGlzIHNlZW1zIHByZXR0eSBjbGVhcmx5IGEgUENJIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4mIzM0OyBJdCYjMzk7cyBsaWtlbHkgaW50ZXJhY3Rpbmcgd2l0aCBoYXJkd2FyZSBkaXJlY3RseSB0aHJvdWdoIHRoZSBQQ0kgYnVzLgoKQnV0LCBob2xkIG9uLi4uIHRoZSBjb2RlIGluIGBkd21hYy1pbnRlbC1wbGF0LmNgLi4uIHdoYXQmIzM5O3MgdGhhdCBkb2luZz8gSXQmIzM5O3MgbWFraW5nIG1lIHBhdXNlLiBJcyB0aGVyZSBhIHBvc3NpYmxlIGludGVycGxheSBiZXR3ZWVuIGEgZ2VuZXJpYyBEV01BQyAoRGVzaWduV2FyZSBNQUMpIGRyaXZlciBhbmQgSW50ZWwtc3BlY2lmaWMgcGxhdGZvcm0gY29kZT8gTWF5YmUgYSByZS1ldmFsdWF0aW9uIGlzIGluIG9yZGVyLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28gcG90ZW50aWFsbHkgb3ZlcmxhcHBpbmcgbW9kdWxlcy4gRG9lcyBpdCBoYW5kbGUgUENJIGFjY2Vzcywgb3IgZG9lcyBpdCBhYnN0cmFjdCBzb21lIG9mIHRoYXQgYXdheT8gTmVlZCB0byBjbGFyaWZ5IHRoZSByb2xlcyBvZiB0aGVzZSBkcml2ZXJzIHdpdGhpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludGVsX21hY19maW5pc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzg0MgoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBXb3J0aGluZXNzKioKCk9rYXksIHNvIGBpbnRlbF9tYWNfZmluaXNoYCBpcyBleGNsdXNpdmVseSB3aXRoaW4gYGR3bWFjLWludGVsLmNgLiBUaGF0JiMzOTtzIHRoZSBrZXkgc3RhcnRpbmcgcG9pbnQuCgpOb3csIGxldCBtZSByZS1leGFtaW5lIHRoZSBjcml0ZXJpYTogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSYjMzQ7LiBUaGlzIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciBJbnRlbCBTb0NzIOKAkyBFbGtoYXJ0IExha2UsIEFsZGVyIExha2UsIHRoZSB1c3VhbCBzdXNwZWN0cy4gQW5kIG15IGd1dCB0ZWxscyBtZSB0aGlzIGBkd21hYy1pbnRlbC5jYCBjb2RlIHRhcmdldHMgKnRob3NlKiBpbnRlZ3JhdGVkIE1BQ3MgZGlyZWN0bHkuCgpTaW5jZSBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgKnRob3NlIHNwZWNpZmljKiBpbnRlZ3JhdGVkIE1BQ3MsIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gdGhhdCBpcyBmdW5kYW1lbnRhbGx5IHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSBpbiBRRU1VLCB3ZSYjMzk7cmUgbm90IGdvaW5nIHRvIGhpdCB0aGlzIGNvZGUgcGF0aC4gVGhlcmVmb3JlLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGV4cGxhbmF0aW9uIHdpbGwgaGlnaGxpZ2h0IHRoYXQgdGhpcyBwYXRjaCBwZXJ0YWlucyB0byBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIG1vZGlmaWNhdGlvbnMgKGBkd21hYy1pbnRlbC5jYCkgZm9yIEludGVsIFNvQ3MsIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyBpdCBlZmZlY3RpdmVseSB1bmZ1enphYmxlIHdpdGhpbiBhIHN0YW5kYXJkIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMCAxNjoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMDowOC44NzYzOTcyNDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTA0NDUyMDMzMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBkd21hYy1pbnRlbC5jYCwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQQ0kgZHJpdmVyIGZvciB0aGUgRGVzaWduV2FyZSBNQUMgaW50ZWdyYXRlZCBpbnRvIHNwZWNpZmljIEludGVsIFNvQ3MgKGUuZy4sIEVsa2hhcnQgTGFrZSwgQWxkZXIgTGFrZSkuIFNpbmNlIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFIGRvIG5vdCBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIEludGVsIGludGVncmF0ZWQgRXRoZXJuZXQgY29udHJvbGxlcnMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgaW5qZWN0aW9uIG1lY2hhbmlzbSBmb3IgdGhlbSwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBhbmQgdGVzdCBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjA4Ljg3NjQwMTUxM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyODY4MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjkyYTU4Zjg0ZjY1NDU4Mzg2NmUwMTE5NTBkYmIxZWM3NDQ3NTMxNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAxMCAxNjoyMDowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbmluZGV4IGI4ZDQ2N2JhNmQ3MmQzLi5mYTAxMTM1OTdjOTc4OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1xcbkBAIC01MjUsNiArNTI1LDMxIEBAIHN0YXRpYyBpbnQgaW50ZWxfc2V0X3JlZ19hY2Nlc3MoY29uc3Qgc3RydWN0IHBtY19zZXJkZXNfcmVncyAqcmVncywgaW50IG1heF9yZWdzXFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuKy8qIFJldHVybiB0cnVlIGlmIHRoZSBTZXJEZXMgbGFuZSByYXRlIG11c3QgY2hhbmdlIHRvIHNlcnZlIEBpbnRlcmZhY2UuXFxuKyAqIElmIHRoZSBjdXJyZW50IHJhdGUgY2Fubm90IGJlIGRldGVybWluZWQsIHJlY29uZmlndXJlIGFzIGJlZm9yZS5cXG4rICovXFxuK3N0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuK1xcdFxcdFxcdFxcdFxcdHN0cnVjdCBpbnRlbF9wcml2X2RhdGEgKmludGVsX3ByaXYsXFxuK1xcdFxcdFxcdFxcdFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuK3tcXG4rXFx0dTMyIGN1cl9yYXRlLCB3YW50X3JhdGU7XFxuK1xcdGludCBkYXRhO1xcbitcXG4rXFx0aWYgKCFpbnRlbF9wcml2LVxcdTAwM2VtZGlvX2FkaG9jX2FkZHIpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0ZGF0YSA9IG1kaW9idXNfcmVhZChwcml2LVxcdTAwM2VtaWksIGludGVsX3ByaXYtXFx1MDAzZW1kaW9fYWRob2NfYWRkcixcXG4rXFx0XFx0XFx0ICAgIFNFUkRFU19HQ1IwKTtcXG4rXFx0aWYgKGRhdGEgXFx1MDAzYyAwKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdGN1cl9yYXRlID0gKGRhdGEgXFx1MDAyNiBTRVJERVNfUkFURV9NQVNLKSBcXHUwMDNlXFx1MDAzZSBTRVJERVNfUkFURV9QQ0lFX1NISUZUO1xcbitcXHR3YW50X3JhdGUgPSBpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCA/XFxuK1xcdFxcdFxcdFNFUkRFU19SQVRFX1BDSUVfR0VOMiA6IFNFUkRFU19SQVRFX1BDSUVfR0VOMTtcXG4rXFxuK1xcdHJldHVybiBjdXJfcmF0ZSAhPSB3YW50X3JhdGU7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0XFx0XFx0ICAgIHZvaWQgKmludGVsX2RhdGEsXFxuIFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG5AQCAtNTM2LDYgKzU2MSw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4gXFx0aW50IG1heF9yZWdzID0gMDtcXG4gXFx0aW50IHJldCA9IDA7XFxuIFxcbitcXHRpZiAoIWludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhwcml2LCBpbnRlbF9wcml2LCBpbnRlcmZhY2UpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdHJldCA9IGludGVsX3Rzbl9sYW5lX2lzX2F2YWlsYWJsZShuZGV2LCBpbnRlbF9wcml2KTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4gXFx0XFx0bmV0ZGV2X2luZm8ocHJpdi1cXHUwMDNlZGV2LCBcXFwiTm8gVFNOIGxhbmUgYXZhaWxhYmxlIHRvIHNldCB0aGUgcmVnaXN0ZXJzLlxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjA5LjMyMDA0NzMxNloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUwMDAxNTQ3MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHdtYWMtaW50ZWwuY2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgdGhlIERlc2lnbldhcmUgTUFDIGludGVncmF0ZWQgaW50byBzcGVjaWZpYyBJbnRlbCBTb0NzIChlLmcuLCBFbGtoYXJ0IExha2UsIEFsZGVyIExha2UpLiBTaW5jZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSBkbyBub3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBJbnRlbCBpbnRlZ3JhdGVkIEV0aGVybmV0IGNvbnRyb2xsZXJzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGluamVjdGlvbiBtZWNoYW5pc20gZm9yIHRoZW0sIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGI5MmE1OGY4NGY2NTQ1ODM4NjZlMDExOTUwZGJiMWVjNzQ0NzUzMTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAxMCAxNjoyMDowNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5pbmRleCBiOGQ0NjdiYTZkNzJkMy4uZmEwMTEzNTk3Yzk3ODkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jXG5AQCAtNTI1LDYgKzUyNSwzMSBAQCBzdGF0aWMgaW50IGludGVsX3NldF9yZWdfYWNjZXNzKGNvbnN0IHN0cnVjdCBwbWNfc2VyZGVzX3JlZ3MgKnJlZ3MsIGludCBtYXhfcmVnc1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rLyogUmV0dXJuIHRydWUgaWYgdGhlIFNlckRlcyBsYW5lIHJhdGUgbXVzdCBjaGFuZ2UgdG8gc2VydmUgQGludGVyZmFjZS5cbisgKiBJZiB0aGUgY3VycmVudCByYXRlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLCByZWNvbmZpZ3VyZSBhcyBiZWZvcmUuXG4rICovXG4rc3RhdGljIGJvb2wgaW50ZWxfc2VyZGVzX25lZWRzX3JlY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbitcdFx0XHRcdFx0c3RydWN0IGludGVsX3ByaXZfZGF0YSAqaW50ZWxfcHJpdixcbitcdFx0XHRcdFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbit7XG4rXHR1MzIgY3VyX3JhdGUsIHdhbnRfcmF0ZTtcbitcdGludCBkYXRhO1xuK1xuK1x0aWYgKCFpbnRlbF9wcml2LVx1MDAzZW1kaW9fYWRob2NfYWRkcilcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRkYXRhID0gbWRpb2J1c19yZWFkKHByaXYtXHUwMDNlbWlpLCBpbnRlbF9wcml2LVx1MDAzZW1kaW9fYWRob2NfYWRkcixcbitcdFx0XHQgICAgU0VSREVTX0dDUjApO1xuK1x0aWYgKGRhdGEgXHUwMDNjIDApXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0Y3VyX3JhdGUgPSAoZGF0YSBcdTAwMjYgU0VSREVTX1JBVEVfTUFTSykgXHUwMDNlXHUwMDNlIFNFUkRFU19SQVRFX1BDSUVfU0hJRlQ7XG4rXHR3YW50X3JhdGUgPSBpbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWCA/XG4rXHRcdFx0U0VSREVTX1JBVEVfUENJRV9HRU4yIDogU0VSREVTX1JBVEVfUENJRV9HRU4xO1xuK1xuK1x0cmV0dXJuIGN1cl9yYXRlICE9IHdhbnRfcmF0ZTtcbit9XG4rXG4gc3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0XHRcdCAgICB2b2lkICppbnRlbF9kYXRhLFxuIFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbkBAIC01MzYsNiArNTYxLDkgQEAgc3RhdGljIGludCBpbnRlbF9tYWNfZmluaXNoKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuIFx0aW50IG1heF9yZWdzID0gMDtcbiBcdGludCByZXQgPSAwO1xuIFxuK1x0aWYgKCFpbnRlbF9zZXJkZXNfbmVlZHNfcmVjb25maWcocHJpdiwgaW50ZWxfcHJpdiwgaW50ZXJmYWNlKSlcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRyZXQgPSBpbnRlbF90c25fbGFuZV9pc19hdmFpbGFibGUobmRldiwgaW50ZWxfcHJpdik7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdG5ldGRldl9pbmZvKHByaXYtXHUwMDNlZGV2LCBcIk5vIFRTTiBsYW5lIGF2YWlsYWJsZSB0byBzZXQgdGhlIHJlZ2lzdGVycy5cXG5cIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMDowOS4zMjAwNDg2MTZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMTkwMDgwOTM2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byB0aGUgSW50ZWwgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNgLiBUaGV5J3ZlIGFkZGVkIHRoaXMgbmV3IGZ1bmN0aW9uLCBgaW50ZWxfc2VyZGVzX25lZWRzX3JlY29uZmlnYCwgYW5kIHRoZXkncmUgY2FsbGluZyBpdCBmcm9tIGBpbnRlbF9tYWNfZmluaXNoYC4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYHN0bW1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZm9yIEludGVsIHBsYXRmb3Jtcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgaXRzIHJlbGV2YW5jZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIElzIHRoaXMgY29kZSBwYXRoIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB0eXBpY2FsIHZpcnR1YWwgc2V0dXA/XG5cbkxldCdzIHNlZSwgYGR3bWFjLWludGVsLmNgIGlzIGEgUENJIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvciB0aGUgSW50ZWwgRFdNQUMsIHRoYXQncyBEZXNpZ25XYXJlIE1BQy4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB3b25kZXIgYWJvdXQgZnV6emluZy4gUENJIGRyaXZlcnMgZm9yIGhhcmR3YXJlLXNwZWNpZmljIGRldmljZXMgb2Z0ZW4gcG9zZSBjaGFsbGVuZ2VzIGZvciBmdXp6aW5nLCB1bmxlc3Mgd2UgaGF2ZSBwcm9wZXIgUENJIGVtdWxhdGlvbiBvciBpdCBpcyBnZW5lcmljIGVub3VnaC4gSSBuZWVkIHRvIGRpZyBpbnRvIGBkd21hYy1pbnRlbC5jYCB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHRyaWdnZXJpbmcgZXhlY3V0aW9uIG9mIHRoaXMgbmV3IGZ1bmN0aW9uIHRvIGV2YWx1YXRlIGhvdyBhY2Nlc3NpYmxlIGl0IGlzLiBJJ20gZ29pbmcgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSB3b3J0aHdoaWxlIHBsYWNlIHRvIGZvY3VzIHJlc291cmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2OSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjMxLjIyMDg1OTY3OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODYxMDcwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnRlbF9tYWNfZmluaXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz01MzE9c3RhdGljIGJvb2wgaW50ZWxfc2VyZGVzX25lZWRzX3JlY29uZmlnKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTUzOnN0YXRpYyBpbnQgaW50ZWxfbWFjX2ZpbmlzaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1NC1cXHRcXHRcXHQgICAgdm9pZCAqaW50ZWxfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NzgzPXN0YXRpYyBpbnQgZWhsX3NnbWlpX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5MS1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjc5MjpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTc5My1cXHRwbGF0LVxcdTAwM2VjbGtfcHRwX3JhdGUgPSAyMDQ4MDAwMDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg0OT1zdGF0aWMgaW50IGVobF9wc2UwX3NnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODU2LVxcdHBsYXQtXFx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODU3OlxcdHBsYXQtXFx1MDAzZW1hY19maW5pc2ggPSBpbnRlbF9tYWNfZmluaXNoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODU4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04OTg9c3RhdGljIGludCBlaGxfcHNlMV9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkwNS1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkwNjpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTAyMD1zdGF0aWMgaW50IGFkbG5fc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDI4LVxcdHBsYXQtXFx1MDAzZXNlcmRlc19wb3dlcmRvd24gPSBpbnRlbF9zZXJkZXNfcG93ZXJkb3duO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTAyOTpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwMzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjMxLjI3OTQ3NDc5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2OTExOTAxOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUENJIERyaXZlciBmb3IgSW50ZWwgRWxraGFydCBMYWtlIGFuZCBBbGRlciBMYWtlLU4gUGxhdGZvcm1zKipcblxuT2theSwgc28gdGhpcyBpcyBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgSW50ZWwncyBFbGtoYXJ0IExha2UgKEVITCkgYW5kIEFsZGVyIExha2UtTiAoQURMLU4pIHBsYXRmb3Jtcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQgYXJlIHRoZSByZWxldmFudCBQQ0kgSURzIGl0J3MgcmVnaXN0ZXJpbmcgYW5kIGJpbmRpbmcgdG8/IEtub3dpbmcgdGhhdCBpcyBjcnVjaWFsLiBDYW4gd2UgZnV6eiB0aGlzIHdpdGggU3l6a2FsbGVyPyBTeXprYWxsZXIncyBnb3QgdGhhdCBgc3l6X3BjaV9kZXZpY2Vfc2V0dXBgIGNhbGwsIHdoaWNoIGlzIGluY3JlZGlibHkgdXNlZnVsIGZvciBlbXVsYXRpbmcgUENJIGRldmljZXMsIHJpZ2h0P1xuXG5TbywgdGhlIG5leHQgc3RlcCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkcml2ZXIncyBjb2RlIGFuZCBwaW5wb2ludCB0aG9zZSBQQ0kgSURzLiBUaGF0J3MgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaWYgYHN5el9wY2lfZGV2aWNlX3NldHVwYCBjYW4gZXZlbiBpbnRlcmFjdCB3aXRoIHRoaXMgdGhpbmcsIGFuZCBpZiBzbywgaG93IGVmZmVjdGl2ZWx5LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU0NiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIwOjQ4LjE5MTM3ODQ3MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDMyMTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwY2lfZGV2aWNlX2lkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYwPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjE6XFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzU4PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5MS1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMDo0OC4yNTE3MDUzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNzI1MTAzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdCBoZXJlLlxuXG4qKkFuYWx5emluZyBTeXprYWxsZXIgYW5kIE5ldHdvcmsgRGV2aWNlIERyaXZlciBJbnRlcmFjdGlvbioqXG5cblJpZ2h0LCBzbyBTeXprYWxsZXIgY2FuIGVtdWxhdGUgUENJIGRldmljZXMsIHdoaWNoIGlzIGdyZWF0LCB0aGFua3MgdG8gYHN5el9wY2lfZGV2aWNlX3NldHVwYC4gQnV0IHRoZSByZWFsIGludGVyZXN0aW5nIHBhcnQgaGVyZSBpcyBob3cgdGhlIGVtdWxhdGVkIGRldmljZSBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbnMsIHNwZWNpZmljYWxseSBQSFlzIGFuZCBNRElPIGJ1c2VzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcHJvYmUgYW5kIHNlZSBpZiB3ZSBjYW4gcmVhY2ggYGludGVsX21hY19maW5pc2hgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGF0IGZ1bmN0aW9uIG5hbWUgcmluZ3MgYSBiZWxsLCBJJ3ZlIHNlZW4gaXQgYmVmb3JlIHdoZW4gZGVidWdnaW5nIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXJzLlxuXG5Ob3csIHdoZXJlIGlzIGBpbnRlbF9tYWNfZmluaXNoYCBjYWxsZWQgZnJvbT8gUHJldHR5IHN1cmUgaXQncyBidXJpZWQgc29tZXdoZXJlIGluIHRoZSBgc3RtbWFjYCBjb3JlIG9yIHNvbWV0aGluZyBzaW1pbGFyLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBgc3RtbWFjYCBjb2RlIGFuZCBmaW5kIHRoZSBjYWxsIHNpdGVzLiBHb3R0YSB0cmFjZSBiYWNrIHRob3NlIGZ1bmN0aW9uIGNhbGxzIHRvIHNlZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIGlkZW50aWZ5IHBvc3NpYmxlIGVudHJ5IHBvaW50cy4gVGhpcyBjb3VsZCByZXZlYWwgc29tZSBpbnRlcmVzdGluZyB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgd2l0aGluIHRoZSBkcml2ZXIuIExldCdzIHNlZSBpZiB3ZSBjYW4gZ2V0IGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoYXQgZHJpdmVyJ3MgbGlmZWN5Y2xlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTU4LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjA6NTIuMzI0MjE3NTAxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDk0MjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY19maW5pc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTMxPXN0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU1MzpzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NTQtXFx0XFx0XFx0ICAgIHZvaWQgKmludGVsX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Mz1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTEtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3OTI6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTMtXFx0cGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlID0gMjA0ODAwMDAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDk9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1Ni1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg1NzpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODk4PXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDUtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MDY6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjA9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyOC1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjk6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYz02MTE9c3RhdGljIHZvaWQgcWNvbV9ldGhxb3Nfc2VyZGVzX3Bvd2VyZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgdm9pZCAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6NjE5OnN0YXRpYyBpbnQgZXRocW9zX21hY19maW5pc2hfc2VyZGVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNjIwLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM9Njg0PXN0YXRpYyBpbnQgcWNvbV9ldGhxb3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtNzIxLVxcdFxcdHBsYXRfZGF0LVxcdTAwM2VmaXhfbWFjX3NwZWVkID0gZXRocW9zX2ZpeF9tYWNfc3BlZWRfc2dtaWk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo3MjI6XFx0XFx0cGxhdF9kYXQtXFx1MDAzZW1hY19maW5pc2ggPSBldGhxb3NfbWFjX2ZpbmlzaF9zZXJkZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy03MjMtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEwMzc9c3RhdGljIHZvaWQgc3RtbWFjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0MzpzdGF0aWMgaW50IHN0bW1hY19tYWNfZmluaXNoKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNDQtXFx0XFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xMDQ4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTA0OTpcXHRpZiAocHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX2ZpbmlzaClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjEwNTA6XFx0XFx0cHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNlbWFjX2ZpbmlzaChuZGV2LCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2Vic3BfcHJpdiwgbW9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTEwNTEtXFx0XFx0XFx0XFx0ICAgICAgIGludGVyZmFjZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEyNjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgc3RtbWFjX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2Ny1cXHQubWFjX2NvbmZpZyA9IHN0bW1hY19tYWNfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTI2ODpcXHQubWFjX2ZpbmlzaCA9IHN0bW1hY19tYWNfZmluaXNoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTI2OS1cXHQubWFjX2xpbmtfZG93biA9IHN0bW1hY19tYWNfbGlua19kb3duLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMDo1Mi4zODE3MTY0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5MjY0MDQxNjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG1hY19maW5pc2hgIENhbGxiYWNrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbWFjX2ZpbmlzaGAgY2FsbGJhY2suIEl0J3MgY2FsbGVkIGZyb20gYHN0bW1hY19tYWNfZmluaXNoYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGF0J3MgcGFydCBvZiB0aGUgYHBoeWxpbmtfbWFjX29wc2Agc3RydWN0dXJlLiBUaGF0IHRlbGxzIG1lIHRoaXMgY2FsbGJhY2sgaXMgdHJpZ2dlcmVkIGR1cmluZyBwaHlsaW5rIGNvbmZpZ3VyYXRpb24g4oCTIGJhc2ljYWxseSB3aGVuZXZlciB0aGUgbGluayBzdGF0dXMgY2hhbmdlcywgbGlrZSB3aGVuIHRoZSBpbnRlcmZhY2UgY29tZXMgdXAgb3IgZ29lcyBkb3duLCBvciBtYXliZSBpZiB0aGVyZSdzIGFuIGludGVyZmFjZSBjb25maWd1cmF0aW9uIGNoYW5nZS4gTWFrZXMgc2Vuc2UuXG5cblRvIGV2ZW4gZ2V0IHRvIHRoaXMgYG1hY19maW5pc2hgIGZ1bmN0aW9uLCB0aGUgYGR3bWFjLWludGVsYCBkcml2ZXIgbmVlZHMgdG8gcHJvYmUgc3VjY2Vzc2Z1bGx5LiBUaGF0J3Mga2V5LiBTbywgdGhlIHJlYWwgcXVlc3Rpb24gaXMsIHdoYXQgZG9lcyB0aGUgYGR3bWFjLWludGVsYCBkcml2ZXIgKm5lZWQqIHRvIGJlIHByZXNlbnQgdG8gcHJvYmUgd2l0aG91dCBmYWlsaW5nPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25zdHJhaW50cyBvZiB0aGUgYGR3bWFjLWludGVsYCBkcml2ZXIsIGJlY2F1c2UgaWYgdGhlIGRyaXZlciB3b24ndCBsb2FkLCB0aGlzIGVudGlyZSBjYWxsYmFjayBtZWNoYW5pc20gaXMgbW9vdC4gTGV0J3MgZGlnIGludG8gdGhlIGBkd21hYy1pbnRlbGAgcHJvYmUgZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMDEsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMToxMS42NDU3NzM2MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzcwMzQ2Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludGVsX2V0aF9wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyMzE9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjQ4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTI0OTogKiBpbnRlbF9ldGhfcGNpX3Byb2JlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjUwLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNTktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjYwOnN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjEtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTQxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaW50ZWxfZXRoX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTQtXFx0LmlkX3RhYmxlID0gaW50ZWxfZXRoX3BjaV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0MTU6XFx0LnByb2JlID0gaW50ZWxfZXRoX3BjaV9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTYtXFx0LnJlbW92ZSA9IGludGVsX2V0aF9wY2lfcmVtb3ZlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMToxMi4wMTYxMjQ4OTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxNzc1Njk0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYGludGVsX2V0aF9wY2lfcHJvYmVgIHdpdGggU3l6a2FsbGVyKipcblxuT2theSwgc28gYGludGVsX2V0aF9wY2lfcHJvYmVgIGNhbGxzIGBzdG1tYWNfZHZyX3Byb2JlYC4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gc3l6a2FsbGVyIHJlbGlhYmx5IGVtdWxhdGUgdGhlIFBDSSBkZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXM/ICBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIGRyaXZlciBpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aGF0IHN5emthbGxlciB1c2VzLCBsaWtlIFFFTVUuICBcblxuU3l6a2FsbGVyICpkb2VzKiBoYXZlIGBzeXpfcGNpX2RldmljZV9zZXR1cGAsIGJ1dCB0aGF0IGRvZXNuJ3QgbWVhbiBpdCBkaXJlY3RseSBpbmplY3RzICphcmJpdHJhcnkqIFBDSSBkZXZpY2VzLiBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRvIGV4Y2x1ZGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHN5emthbGxlciBoYW5kbGVzIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiAgTXkgbWVtb3J5IGlzIGEgbGl0dGxlIGhhenk7IGRvZXMgYHN5el9wY2lfZGV2aWNlX3NldHVwYCByZWx5IG9uIGEgUUVNVS1zcGVjaWZpYyBlbXVsYXRpb24/IEl0IHNlZW1zIGxpa2UgaXQncyBhIGJpdCBvZiBhIGh5YnJpZC4gRm9yIFVTQiwgSSBrbm93IGl0IHVzZXMgYHZoY2lgLCBmb3IgV2ktRmksIGl0IHVzZXMgYG1hYzgwMjExX2h3c2ltYCwgZm9yIGlucHV0LCBgdWlucHV0YCwgYnV0IHRoZXJlJ3Mgbm8gZXF1aXZhbGVudCBnZW5lcmljIHNvZnR3YXJlIGVtdWxhdG9yIGluIHRoZSBrZXJuZWwgdGhhdCBJJ20gYXdhcmUgb2YgZm9yIFBDSSBkZXZpY2VzLCBvdGhlciB0aGFuIG1heWJlIGBwY2ktc3R1YmAgb3IgYHZmaW9gIC0gYnV0IHRoZXNlIGRvbid0ICpjcmVhdGUqIHZpcnR1YWwgZGV2aWNlcyBmcm9tIHNjcmF0Y2guIFRoZXkgcGFzcyB0aHJvdWdoIGV4aXN0aW5nIGhhcmR3YXJlLlxuXG5TbywgcmVhbGlzdGljYWxseSwgc3l6a2FsbGVyIHByb2JhYmx5IHJlbGllcyBvbiBRRU1VJ3MgZW11bGF0ZWQgZGV2aWNlcywgb3IgbWF5YmUgZnV6emVzIHRoZSBQQ0kgc3Vic3lzdGVtIGluIGFub3RoZXIgd2F5LiAgSSBuZWVkIHRvIGNvbmZpcm0gaWYgYHN5el9wY2lfZGV2aWNlX3NldHVwYCByZWFsbHkgaW5qZWN0cyBhbnl0aGluZyAqbmV3KiBvciBpZiBpdCdzIG1vcmUgYWJvdXQgY29uZmlndXJpbmcgZXhpc3Rpbmcgb25lcy5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgc2F5cyB0byBhdm9pZCB1bnJlYWNoYWJsZSBjb2RlIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIElmIGBkd21hYy1pbnRlbGAgaXMgYSB2ZXJ5IHNwZWNpZmljIEludGVsIGRyaXZlciwgbGlrZSBmb3IgRWxraGFydCBMYWtlIFNvQ3MsIGFuZCBRRU1VICpkb2Vzbid0KiBlbXVsYXRlIHRoYXQgKnNwZWNpZmljKiBEV01BQyBQQ0kgZGV2aWNlLCB0aGVuIEknbSBwcm9iYWJseSB3YXN0aW5nIG15IHRpbWUuXG5cbkxldCdzIGNoZWNrIFFFTVUncyBzdXBwb3J0ZWQgbmV0d29yayBkZXZpY2VzLiBJIGtub3cgaXQgc3VwcG9ydHMgdGhlIHVzdWFsIHN1c3BlY3RzOiBgaWdiYCwgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCBzbyBvbi4gQnV0LCBJIGRvbid0IHNlZSBgZHdtYWMtaW50ZWxgIGxpc3RlZC4gT2theSwgd2FpdCBhIG1pbnV0ZSwgSSAqZG8qIHNlZSBhIGBody9uZXQvZGVzaWdud2FyZS5jYCBpbiBRRU1VLiBJdCBlbXVsYXRlcyBEZXNpZ25XYXJlIE1BQ3MsIGJ1dCB0aGF0J3MgbGlrZWx5IGZvciBzb21ldGhpbmcgbGlrZSBgRlNMX0lNWDZgLCBub3QgdGhlIEludGVsLXNwZWNpZmljIFBDSSB3cmFwcGVyLlxuXG5VbHRpbWF0ZWx5LCBpZiB0aGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGRlc2lnbmVkIGZvciBhIHNwZWNpZmljIFNvQyAobGlrZSBFbGtoYXJ0IExha2UpLCBpdCdzIGhpZ2hseSBpbXByb2JhYmxlIHRoYXQgaXQncyBnb2luZyB0byBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIFZNIHVubGVzcyB0aGVyZSdzIGV4cGxpY2l0IGVtdWxhdGlvbiBmb3IgaXQuIEkgbmVlZCB0byBmaW5kIG91dCBpZiB0aGVyZSdzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gdG8gcHJvY2VlZC4gSSBoYXZlIHRvIGNoZWNrIHRoZSBjb2RlYmFzZSB0byBiZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTk5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIxOjQ5LjE5MzY5NTczNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMzY4Njg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR3bWFjLWludGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT0zOT1vYmotJChDT05GSUdfRFdNQUNfRFdDX1FPU19FVEgpXFx0Kz0gZHdtYWMtZHdjLXFvcy1ldGgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVxcdCs9IGR3bWFjLWludGVsLXBsYXQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQxLW9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXFx0Kz0gZHdtYWMtbG9vbmdzb24xLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUwPW9iai0kKENPTkZJR19TVE1NQUNfUENJKVxcdCs9IHN0bW1hYy1wY2kub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUxOm9iai0kKENPTkZJR19EV01BQ19JTlRFTClcXHQrPSBkd21hYy1pbnRlbC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTItb2JqLSQoQ09ORklHX0RXTUFDX0xPT05HU09OKVxcdCs9IGR3bWFjLWxvb25nc29uLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOS0jaW5jbHVkZSBcXHUwMDNjYXNtL2NwdWlkL2FwaS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA6I2luY2x1ZGUgXFxcImR3bWFjLWludGVsLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMS0jaW5jbHVkZSBcXFwiZHdtYWM0LmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIxOjQ5LjMwNjA2OTU4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODQyNTYwNDIxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEludGVsIERXTUFDIERyaXZlcidzIFRyaWdnZXIgUG9pbnRzKipcblxuQWxyaWdodCwgc28gdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBoZXJlIGlzIGBDT05GSUdfRFdNQUNfSU5URUxgLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IENhbiBJIHRyaWdnZXIgdGhlIGBpbnRlbF9tYWNfZmluaXNoYCBmdW5jdGlvbiB3aXRob3V0IGhhdmluZyB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQ/IEdpdmVuIHRoYXQgdGhpcyBpcyBhIFBDSSBkcml2ZXIsIG15IGluc3RpbmN0IHNheXMgbm8uIExldCBtZSBjb25maXJtIHRoaXMgYXNzdW1wdGlvbi5cblxuVGhlIHByb2JlIGZ1bmN0aW9uLCB3aGljaCBpcyB0aGUgZW50cnkgcG9pbnQsIGlzIGBpbnRlbF9ldGhfcGNpX3Byb2JlYC4gTm93LCBmcm9tIGV4cGVyaWVuY2UsIEkga25vdyBQQ0kgZHJpdmVycyBhcmUgaW5oZXJlbnRseSByZWxpYW50IG9uIHRoZSBQQ0kgY29yZSBkZXRlY3RpbmcgYSBkZXZpY2Ugd2l0aCBtYXRjaGluZyBJRHMuIFRoZSBgaW50ZWxfZXRoX3BjaV9wcm9iZWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgb25seSB3aGVuIHRoZSBQQ0kgc3Vic3lzdGVtIGRpc2NvdmVycyBhIGRldmljZSBpdCByZWNvZ25pemVzLiBUaGVyZWZvcmUsIHdpdGhvdXQgdGhlIGNvcnJlY3QgUENJIGRldmljZSBpZGVudGlmaWNhdGlvbiwgYGludGVsX2V0aF9wY2lfcHJvYmVgIHdvbid0IGJlIGNhbGxlZCwgYW5kIGNvbnNlcXVlbnRseSwgYGludGVsX21hY19maW5pc2hgIHdvbid0IGJlIHRyaWdnZXJlZC4gVGhlIFBDSSBJRHMgYXJlIHRoZSBjcml0aWNhbCBwaWVjZSBoZXJlLCBhbmQgSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhlbSB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMuIFNvLCBlc3NlbnRpYWxseSwgdGhpcyBpc24ndCBzb21ldGhpbmcgSSBjYW4gc2ltdWxhdGUgZWFzaWx5IHdpdGhvdXQgYSBjb21wbGlhbnQgZGV2aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODI3LCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjI6MDcuNzMxNjc2NDk0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTE1OTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnRlbF9ldGhfcGNpX2lkX3RhYmxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMzU4PXN0YXRpYyB2b2lkIGludGVsX2V0aF9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTM5MDpzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaW50ZWxfZXRoX3BjaV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM5MS1cXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDA5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDEwOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDEyPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTMtXFx0Lm5hbWUgPSBcXFwiaW50ZWwtZXRoLXBjaVxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE0OlxcdC5pZF90YWJsZSA9IGludGVsX2V0aF9wY2lfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDE1LVxcdC5wcm9iZSA9IGludGVsX2V0aF9wY2lfcHJvYmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIyOjA3Ljc5Njg0MDE2M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTczNjYyMDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgUENJIERldmljZSBJRHMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIHRha2luZyBhIGxvb2sgYXQgc29tZSBQQ0kgZGV2aWNlIGRyaXZlciBjb2RlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBwcm9jZXNzIGlzOiBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgc3BlY2lmaWNzIG9mIHdoYXQgdGhpcyBkcml2ZXIgc3VwcG9ydHMuIFNvLCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgY2hlY2tpbmcgd2hhdCBgUENJX0RFVklDRV9EQVRBYCBleHBhbmRzIHRvLiBJJ20gZ3Vlc3NpbmcgaXQncyBwcm9iYWJseSBhIG1hY3JvIHRoYXQgaG9sZHMgc29tZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIGRhdGHigJR2ZW5kb3IgSURzLCBkZXZpY2UgSURzLCBtYXliZSBldmVuIHN1YmNsYXNzIGFuZCBwcm9ncmFtbWluZyBpbnRlcmZhY2UgZGV0YWlscy4gVW5kZXJzdGFuZGluZyB3aGF0IHRoYXQgc3RydWN0IGFjdHVhbGx5ICppcyogaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZHJpdmVyJ3MgaW50ZW50aW9uLlxuXG5UaGVuLCBJJ2xsIHR1cm4gbXkgYXR0ZW50aW9uIHRvIHRoZSBgaW50ZWxfZXRoX3BjaV9pZF90YWJsZWAuIEkgZXhwZWN0IHRoaXMgdG8gYmUgdGhlIHByaW1hcnkgbG9va3VwIHRhYmxlIGZvciBpZGVudGlmeWluZyBzdXBwb3J0ZWQgaGFyZHdhcmUuIEknbSBnb2luZyB0byBzY2FuIHRoYXQgdGFibGUgdG8gc2VlIHdoaWNoIHNwZWNpZmljIEludGVsIEV0aGVybmV0IFBDSSBkZXZpY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS4gVGhhdCB0YWJsZSB3aWxsIGdpdmUgbWUgYSB2ZXJ5IHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSB0YXJnZXQgaGFyZHdhcmUgYW5kIHRoZSByYW5nZXMgb2YgZGV2aWNlcyB0aGUgZHJpdmVyIHNob3VsZCBtYW5hZ2UuIEknbSBtZW50YWxseSBwaWN0dXJpbmcgaXQgbm93IOKAkyBhIGNvbGxlY3Rpb24gb2YgUENJIElEIHR1cGxlcywgcHJvYmFibHkgd2l0aCBhc3NvY2lhdGVkIGRyaXZlciBkYXRhLiBJdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhpcyBkcml2ZXIncyBmdW5jdGlvbmFsaXR5LiBNeSBwbGFuIGlzIHRvIG1lbnRhbGx5IGNyb3NzLXJlZmVyZW5jZSB0aGUgYFBDSV9ERVZJQ0VfREFUQWAgd2l0aCB0aGlzIHRhYmxlLCB0aGF0IHNob3VsZCBnaXZlIG1lIGEgcHJldHR5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3VwcG9ydCBsYW5kc2NhcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NDksIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMjoxMS45NzA1MDM5MDJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTQxMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzkwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlW10gPSB7XFxuMTM5MTpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgUVVBUkssIFxcdTAwMjZxdWFya19pbmZvKSB9LFxcbjEzOTI6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9SR01JSTFHLCBcXHUwMDI2ZWhsX3JnbWlpMWdfaW5mbykgfSxcXG4xMzkzOlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfU0dNSUkxRywgXFx1MDAyNmVobF9zZ21paTFnX2luZm8pIH0sXFxuMTM5NDpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1NHTUlJMkc1LCBcXHUwMDI2ZWhsX3NnbWlpMWdfaW5mbykgfSxcXG4xMzk1OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUFNFMF9SR01JSTFHLCBcXHUwMDI2ZWhsX3BzZTBfcmdtaWkxZ19pbmZvKSB9LFxcbjEzOTY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9QU0UwX1NHTUlJMUcsIFxcdTAwMjZlaGxfcHNlMF9zZ21paTFnX2luZm8pIH0sXFxuMTM5NzpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1BTRTBfU0dNSUkyRzUsIFxcdTAwMjZlaGxfcHNlMF9zZ21paTFnX2luZm8pIH0sXFxuMTM5ODpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgRUhMX1BTRTFfUkdNSUkxRywgXFx1MDAyNmVobF9wc2UxX3JnbWlpMWdfaW5mbykgfSxcXG4xMzk5OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBFSExfUFNFMV9TR01JSTFHLCBcXHUwMDI2ZWhsX3BzZTFfc2dtaWkxZ19pbmZvKSB9LFxcbjE0MDA6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEVITF9QU0UxX1NHTUlJMkc1LCBcXHUwMDI2ZWhsX3BzZTFfc2dtaWkxZ19pbmZvKSB9LFxcbjE0MDE6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFRHTF9TR01JSTFHLCBcXHUwMDI2dGdsX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxcbjE0MDI6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFRHTEhfU0dNSUkxR18wLCBcXHUwMDI2dGdsX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxcbjE0MDM6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIFRHTEhfU0dNSUkxR18xLCBcXHUwMDI2dGdsX3NnbWlpMWdfcGh5MV9pbmZvKSB9LFxcbjE0MDQ6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoSU5URUwsIEFETFNfU0dNSUkxR18wLCBcXHUwMDI2YWRsc19zZ21paTFnX3BoeTBfaW5mbykgfSxcXG4xNDA1OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBBRExTX1NHTUlJMUdfMSwgXFx1MDAyNmFkbHNfc2dtaWkxZ19waHkxX2luZm8pIH0sXFxuMTQwNjpcXHRcXHR7IFBDSV9ERVZJQ0VfREFUQShJTlRFTCwgQURMTl9TR01JSTFHLCBcXHUwMDI2YWRsbl9zZ21paTFnX3BoeTBfaW5mbykgfSxcXG4xNDA3OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKElOVEVMLCBSUExQX1NHTUlJMUcsIFxcdTAwMjZhZGxuX3NnbWlpMWdfcGh5MF9pbmZvKSB9LFxcbjE0MDg6XFx0XFx0e31cXG4xNDA5OlxcdH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIyOjExLjk3MDU5OTI5MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTUyMzQwMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBkd21hYy1pbnRlbGAgQ29kZSBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBxdWVzdGlvbiBpczogY2FuIHN5emthbGxlciBmdXp6IHRoaXMgYGR3bWFjLWludGVsYCBkcml2ZXI/IE15IGd1dCByZWFjdGlvbiBpcyB0aGF0IHRoZXJlIGlzbid0IGEgKmdlbmVyaWMqIHN5emthbGxlciBQQ0kgZGV2aWNlIHNldHVwIHN5c2NhbGwuIEkgdmFndWVseSByZW1lbWJlciBzeXprYWxsZXIgZm9jdXNpbmcgb24gVVNCIHZpYSBgc3l6X3VzYl9jb25uZWN0YCwgODAyLjExIHdpdGggYHN5el84MDIxMV9pbmplY3RfZnJhbWVgIGFuZCBgbWFjODAyMTFfaHdzaW1gLCBhbmQgQmx1ZXRvb3RoIHRocm91Z2ggYHZoY2lgLCBidXQgbm90IGEgYnJvYWQgUENJIGZ1enppbmcgY2FwYWJpbGl0eS4gSXQgbWFrZXMgc2Vuc2UsIHRoZXJlIGlzbid0IGEgZ2VuZXJpYyBzb2Z0d2FyZSBmcmFtZXdvcmsgZm9yIGluamVjdGluZyBhcmJpdHJhcnkgUENJIGRldmljZXMgZnJvbSB1c2Vyc3BhY2Ugd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSwgd2hpY2ggaXMgd2h5IGl0IGhhc24ndCBiZWVuIGltcGxlbWVudGVkLlxuXG5XYWl0LCB0aGVuIEkgcmVtZW1iZXIgc29tZXRoaW5nIGFib3V0IGBDT05GSUdfUENJX0VORFBPSU5UX1RFU1RgIGFuZCBgcGNpLWVwZi10ZXN0YCwgYnV0IHRoYXQgcmVxdWlyZXMgZGVkaWNhdGVkIGVuZHBvaW50IGhhcmR3YXJlIG9yIHNwZWNpZmljIGVtdWxhdGlvbi5cblxuQWgsIGJ1dCAqZG9lcyogc3l6a2FsbGVyIGhhdmUgUENJIGZ1enppbmcsIHRob3VnaD8gTm8sIHRoZSB0eXBpY2FsIGFwcHJvYWNoIGZvciBQQ0kgZnV6emluZyB3aXRoIHN5emthbGxlciBpcyB0byBydW4gaW4gUUVNVSBhbmQgaW50ZXJhY3Qgd2l0aCBlbXVsYXRlZCBkZXZpY2VzLiBJdCBpcyBwcm9iYWJseSBqdXN0IG5vdCBmdXp6aW5nIHVuLWVtdWxhdGVkIGRldmljZXMuXG5cblRoZSBwcm9tcHQsIHRob3VnaCwgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gVGhpcyBpcyB3aGVyZSB0aGUgcGVubnkgZHJvcHMuIFRoZSBgZHdtYWMtaW50ZWxgIGRyaXZlciB0YXJnZXRzIHZlcnkgc3BlY2lmaWMgSW50ZWwgU29DczogUXVhcmssIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgQWxkZXIgTGFrZSwgUmFwdG9yIExha2UuIEFuZCBpdCdzIGFuICppbnRlZ3JhdGVkKiBNQUMuIFFFTVUgZG9lcyAqbm90KiBlbXVsYXRlIHRoZXNlIHNwZWNpZmljIGludGVncmF0ZWQgTUFDcywgdGhleSdyZSBwYXJ0IG9mIHRoZSBQQ0ggb3IgU29DLlxuXG5Tbywgc2luY2UgUUVNVSBkb2Vzbid0IGVtdWxhdGUgdGhlIHNwZWNpZmljIGludGVncmF0ZWQgSW50ZWwgRXRoZXJuZXQgKEVITC9UR0wvQURMKSwgdGhpcyBjb2RlIGlzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgd2l0aGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0Ugc2V0dXAuIEkndmUgZ290dGEgZG91YmxlLWNoZWNrIHRoYXQgdGhlcmUncyBhYnNvbHV0ZWx5IG5vIG90aGVyIHdheSwgSSdsbCByZXZpZXcgdGhlIGNvZGViYXNlIHRvIGNvbmZpcm0gaWYgYGludGVsX21hY19maW5pc2hgIGlzIGNhbGxlZCBmcm9tIGFueXdoZXJlIGVsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzgwLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjI6MjAuOTIyOTQwOTAyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg0Njk1NjgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImludGVsX21hY19maW5pc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTMxPXN0YXRpYyBib29sIGludGVsX3NlcmRlc19uZWVkc19yZWNvbmZpZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTU1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjU1MzpzdGF0aWMgaW50IGludGVsX21hY19maW5pc2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy01NTQtXFx0XFx0XFx0ICAgIHZvaWQgKmludGVsX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Mz1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTEtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3OTI6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03OTMtXFx0cGxhdC1cXHUwMDNlY2xrX3B0cF9yYXRlID0gMjA0ODAwMDAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NDk9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1Ni1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg1NzpcXHRwbGF0LVxcdTAwM2VtYWNfZmluaXNoID0gaW50ZWxfbWFjX2ZpbmlzaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODk4PXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDUtXFx0cGxhdC1cXHUwMDNlc2VyZGVzX3Bvd2VyZG93biA9IGludGVsX3NlcmRlc19wb3dlcmRvd247XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MDY6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEwMjA9c3RhdGljIGludCBhZGxuX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTAyOC1cXHRwbGF0LVxcdTAwM2VzZXJkZXNfcG93ZXJkb3duID0gaW50ZWxfc2VyZGVzX3Bvd2VyZG93bjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwMjk6XFx0cGxhdC1cXHUwMDNlbWFjX2ZpbmlzaCA9IGludGVsX21hY19maW5pc2g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDMwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMjoyMi45MDc2NDU0NjNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzI5OTUwNDUwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipVbnJlYWNoYWJsZSBDb2RlIGluIGBkd21hYy1pbnRlbC5jYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBwYXRoIGluIGBkd21hYy1pbnRlbC5jYCwgYW5kIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0J3MgcHJvYmFibHkgZGVhZCBjb2RlIGluIGEgc3l6a2FsbGVyIGNvbnRleHQuIEl0J3Mgb25seSBjYWxsZWQgZnJvbSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSBkcml2ZXIgZm9yIEludGVsIFNvQ3MuIFNpbmNlIHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIsIGFuZCBJIGtub3cgdGhlcmUncyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaXQgaW4gZWl0aGVyIFFFTVUgb3IgdGhlIGtlcm5lbCBpdHNlbGYsIGl0IHNlZW1zIGxpa2UgYSB2aXJ0dWFsIGVudmlyb25tZW50LCBsaWtlIHRoZSBvbmUgc3l6a2FsbGVyIHVzZXMsIGNvdWxkbid0IHJlYWNoIGl0LlxuXG5CdXQgaG9sZCBvbiwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gQ291bGQgdGhlcmUgYmUgYW4gaW5kaXJlY3Qgcm91dGU/IFBlcmhhcHMgaXQncyByZWFjaGFibGUgdGhyb3VnaCBgc3RtbWFjX21hY19maW5pc2hgIGlmIHdlIGNvdWxkIHNvbWVob3cgaW5qZWN0IGEgcGxhdGZvcm0gZGV2aWNlPyBObywgdGhhdCdzIG5vdCByaWdodC5cblxuUmlnaHQsIHNvIGBkd21hYy1pbnRlbC5jYCBpcyBhIFBDSSBkcml2ZXIuIEl0IHJlZ2lzdGVycyB1c2luZyBgcGNpX3JlZ2lzdGVyX2RyaXZlcmAuIFRoYXQgbWVhbnMgdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHdoaWNoIGlzIGVzc2VudGlhbCB0byBzZXR0aW5nIHVwIHRoZSBkcml2ZXIncyBmdW5jdGlvbnMsIHJlcXVpcmVzIGEgbWF0Y2hpbmcgdmVuZG9yL2RldmljZSBJRCBpbiBhIFBDSSBkZXZpY2UuIFdpdGhvdXQgdGhlIGNvcnJlY3QgUENJIGRldmljZSwgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZC4gQW5kIHdpdGhvdXQgdGhhdCBjYWxsLCB0aGUgYHBsYXQtXHUwMDNlbWFjX2ZpbmlzaGAgcG9pbnRlciB3b24ndCBiZSBzZXQsIGFuZCB0aGVyZWZvcmUgYHN0bW1hY19tYWNfZmluaXNoYCB3aWxsIG5ldmVyIGNhbGwgYGludGVsX21hY19maW5pc2hgLlxuXG5TbywgdGhlIHF1ZXN0aW9uIGJlY29tZXMsIGNhbiB3ZSBpbmplY3QgYSBQQ0kgZGV2aWNlIHdpdGggdGhlIHJpZ2h0IElEcyBpbnRvIHRoZSBzeXN0ZW0/IFRoZSBMaW51eCBrZXJuZWwgaGFzIHRoZSBgUENJX1NUVUJgIGRyaXZlciwgYnV0IHRoYXQncyBub3QgaXQsIGl0IGRvZXNuJ3QgY3JlYXRlIHZpcnR1YWwgZGV2aWNlcy4gVGhlbiBJIHJlY2FsbGVkIGBDT05GSUdfUENJX0VORFBPSU5UYCwgd2hpY2ggYWxsb3dzIGEgTGludXggc3lzdGVtIHRvIGFjdCBhcyBhIFBDSSBlbmRwb2ludCwgYnV0IHRoYXQncyBmb3IgaG9zdC10by1ob3N0IGNvbm5lY3Rpb25zLiBJdCB3b24ndCBoZWxwIGhlcmUuXG5cbkFzIGZhciBhcyBJIGtub3csIHRoZXJlIGlzbid0IGEgZ2VuZXJpYyB2aXJ0dWFsIFBDSSBkZXZpY2UgaW5qZWN0b3Igd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgdGhhdCBzeXprYWxsZXIgY2FuIGxldmVyYWdlIHRvIHRyaWdnZXIgcHJvYmVzIG9mIGFyYml0cmFyeSBQQ0kgZHJpdmVycy4gU3l6a2FsbGVyIHJlbGllcyBvbiBRRU1VIGZvciBwcm92aWRpbmcgUENJIGRldmljZXMsIGFuZCBpbiB0aGlzIGNhc2UsIFFFTVUgY2FuJ3Qgc2ltdWxhdGUgdGhpcy5cblxuVGhlcmVmb3JlLCBnaXZlbiB3aGF0IEkga25vdywgaXQgYXBwZWFycyB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgdW5yZWFjaGFibGUgd2l0aGluIHN5emthbGxlcidzIGVudmlyb25tZW50LlxuXG5IbW0sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgZG91YmxlIGNoZWNrIG9uZSBtb3JlIHRoaW5nLi4uIFdoYXQgaWYsIGFuZCB0aGlzIGlzIGEgbG9uZyBzaG90LCBidXQgd2hhdCBpZiBgZHdtYWMtaW50ZWxgIGlzICphbHNvKiByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyP1xuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY1OSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMjozMC4yMDcxNTIxNzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwODExMzc5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjI6MzAuMjc3OTc4NTY2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzc0NTkxNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipQQ0kgRHJpdmVyIENvbnVuZHJ1bSoqXG5cbkFscmlnaHQsIGxldCdzIGNsYXJpZnkgdGhpcy4gVGhlIGluaXRpYWwgcXVlc3Rpb24gb3IgY29udGV4dCBzdWdnZXN0cyBzb21ldGhpbmcgcmVsYXRlZCB0byBhIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXIgb3Igc2ltaWxhciBkZXZpY2UgZHJpdmVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJObywgYmFzZWQgb24gd2hhdCBJJ20gbG9va2luZyBhdCwgdGhpcyBzZWVtcyBwcmV0dHkgY2xlYXJseSBhIFBDSSBkcml2ZXIgaW1wbGVtZW50YXRpb24uXCIgSXQncyBsaWtlbHkgaW50ZXJhY3Rpbmcgd2l0aCBoYXJkd2FyZSBkaXJlY3RseSB0aHJvdWdoIHRoZSBQQ0kgYnVzLlxuXG5CdXQsIGhvbGQgb24uLi4gdGhlIGNvZGUgaW4gYGR3bWFjLWludGVsLXBsYXQuY2AuLi4gd2hhdCdzIHRoYXQgZG9pbmc/IEl0J3MgbWFraW5nIG1lIHBhdXNlLiBJcyB0aGVyZSBhIHBvc3NpYmxlIGludGVycGxheSBiZXR3ZWVuIGEgZ2VuZXJpYyBEV01BQyAoRGVzaWduV2FyZSBNQUMpIGRyaXZlciBhbmQgSW50ZWwtc3BlY2lmaWMgcGxhdGZvcm0gY29kZT8gTWF5YmUgYSByZS1ldmFsdWF0aW9uIGlzIGluIG9yZGVyLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3byBwb3RlbnRpYWxseSBvdmVybGFwcGluZyBtb2R1bGVzLiBEb2VzIGl0IGhhbmRsZSBQQ0kgYWNjZXNzLCBvciBkb2VzIGl0IGFic3RyYWN0IHNvbWUgb2YgdGhhdCBhd2F5PyBOZWVkIHRvIGNsYXJpZnkgdGhlIHJvbGVzIG9mIHRoZXNlIGRyaXZlcnMgd2l0aGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNTUzLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTBUMTY6MjI6MzMuNTU1NDM5ODQ4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODc4ODkwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50ZWxfbWFjX2ZpbmlzaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEwVDE2OjIyOjMzLjYxNDIzNTY4OFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA3MzM0MjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgV29ydGhpbmVzcyoqXG5cbk9rYXksIHNvIGBpbnRlbF9tYWNfZmluaXNoYCBpcyBleGNsdXNpdmVseSB3aXRoaW4gYGR3bWFjLWludGVsLmNgLiBUaGF0J3MgdGhlIGtleSBzdGFydGluZyBwb2ludC5cblxuTm93LCBsZXQgbWUgcmUtZXhhbWluZSB0aGUgY3JpdGVyaWE6IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWlucyBjb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhpcyBpcyBhIFBDSSBkcml2ZXIsIHNwZWNpZmljYWxseSBmb3IgSW50ZWwgU29DcyDigJMgRWxraGFydCBMYWtlLCBBbGRlciBMYWtlLCB0aGUgdXN1YWwgc3VzcGVjdHMuIEFuZCBteSBndXQgdGVsbHMgbWUgdGhpcyBgZHdtYWMtaW50ZWwuY2AgY29kZSB0YXJnZXRzICp0aG9zZSogaW50ZWdyYXRlZCBNQUNzIGRpcmVjdGx5LlxuXG5TaW5jZSBRRU1VIGRvZXNuJ3QgZW11bGF0ZSAqdGhvc2Ugc3BlY2lmaWMqIGludGVncmF0ZWQgTUFDcywgd2UncmUgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHRoYXQgaXMgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBFdmVuIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgaW4gUUVNVSwgd2UncmUgbm90IGdvaW5nIHRvIGhpdCB0aGlzIGNvZGUgcGF0aC4gVGhlcmVmb3JlLCBJJ20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgZXhwbGFuYXRpb24gd2lsbCBoaWdobGlnaHQgdGhhdCB0aGlzIHBhdGNoIHBlcnRhaW5zIHRvIGhhcmR3YXJlLXNwZWNpZmljIFBDSSBkcml2ZXIgbW9kaWZpY2F0aW9ucyAoYGR3bWFjLWludGVsLmNgKSBmb3IgSW50ZWwgU29DcywgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgbWFraW5nIGl0IGVmZmVjdGl2ZWx5IHVuZnV6emFibGUgd2l0aGluIGEgc3RhbmRhcmQgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODQyLCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMFQxNjoyMjozOS4zMjE1NzE5OTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHdtYWMtaW50ZWwuY2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgdGhlIERlc2lnbldhcmUgTUFDIGludGVncmF0ZWQgaW50byBzcGVjaWZpYyBJbnRlbCBTb0NzIChlLmcuLCBFbGtoYXJ0IExha2UsIEFsZGVyIExha2UpLiBTaW5jZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSBkbyBub3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBJbnRlbCBpbnRlZ3JhdGVkIEV0aGVybmV0IGNvbnRyb2xsZXJzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGluamVjdGlvbiBtZWNoYW5pc20gZm9yIHRoZW0sIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgZHdtYWMtaW50ZWwuY2AsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUENJIGRyaXZlciBmb3IgdGhlIERlc2lnbldhcmUgTUFDIGludGVncmF0ZWQgaW50byBzcGVjaWZpYyBJbnRlbCBTb0NzIChlLmcuLCBFbGtoYXJ0IExha2UsIEFsZGVyIExha2UpLiBTaW5jZSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSBkbyBub3QgZW11bGF0ZSB0aGVzZSBzcGVjaWZpYyBJbnRlbCBpbnRlZ3JhdGVkIEV0aGVybmV0IGNvbnRyb2xsZXJzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUtZW11bGF0ZWQgUENJIGluamVjdGlvbiBtZWNoYW5pc20gZm9yIHRoZW0sIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggYW5kIHRlc3QgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowgvgb5[1] Phase: Running StartedAt: 2026-07-10 16:22:51 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgvgb5[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-10 16:22:51 +0000 UTC FinishedAt: 2026-07-10 16:22:57 +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,}