Name: series-workflow45jx2 Phase: Failed StartedAt: 2026-08-19 08:44:14 +0000 UTC FinishedAt: 2026-08-19 08:47:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45jx2[0] Phase: Succeeded StartedAt: 2026-08-19 08:44:14 +0000 UTC FinishedAt: 2026-08-19 08:46:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45jx2[0].run-triage Phase: Succeeded StartedAt: 2026-08-19 08:44:14 +0000 UTC FinishedAt: 2026-08-19 08:46:45 +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+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB2ZmlvLWZzbC1tY2AgZHJpdmVyLCB3aGljaCBpcyBhIFZGSU8gZHJpdmVyIGZvciBwYXNzaW5nIHRocm91Z2ggRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMgZGV2aWNlcyBmb3VuZCBvbiBwaHlzaWNhbCBOWFAgUW9ySVEgU29Dcy4gU3RhbmRhcmQgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoaXMgaGFyZHdhcmUgYnVzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGNyZWF0ZSB2aXJ0dWFsIGZzbC1tYyBkZXZpY2VzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGluIGB2ZmlvX2ZzbF9tY19tbWFwYCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NjZmMWQyOGQ4NmNkYjQwMGQ4NzgzZWM2MjEyMzhlYTIyNmI3ZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NTo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbmluZGV4IGI0YzM5NTgyMDFiMjUuLjg1ZjQ3OWRiOTM2YzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xuQEAgLTQwNyw2ICYjNDM7NDA3LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbiBcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbiYjNDM7XHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxuJiM0MztcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4mIzQzO1xuIFx0dm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IG1jX2RldjtcbiBcbiBcdHJldHVybiB2ZmlvX2ZzbF9tY19tbWFwX21taW8odmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB2ZmlvLWZzbC1tY2AgZHJpdmVyLCB3aGljaCBpcyBhIFZGSU8gZHJpdmVyIGZvciBwYXNzaW5nIHRocm91Z2ggRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMgZGV2aWNlcyBmb3VuZCBvbiBwaHlzaWNhbCBOWFAgUW9ySVEgU29Dcy4gU3RhbmRhcmQgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoaXMgaGFyZHdhcmUgYnVzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGNyZWF0ZSB2aXJ0dWFsIGZzbC1tYyBkZXZpY2VzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGluIGB2ZmlvX2ZzbF9tY19tbWFwYCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE2NjZmMWQyOGQ4NmNkYjQwMGQ4NzgzZWM2MjEyMzhlYTIyNmI3ZDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NTo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYwppbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jCkBAIC00MDcsNiAmIzQzOzQwNywxMCBAQCBzdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsCiAJCQkmYW1wOyZhbXA7ICh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX1dSSVRFKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJLyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovCiYjNDM7CWlmICghKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLmZsYWdzICZhbXA7IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpCiYjNDM7CQl2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTsKJiM0MzsKIAl2bWEtJmd0O3ZtX3ByaXZhdGVfZGF0YSA9IG1jX2RldjsKIAogCXJldHVybiB2ZmlvX2ZzbF9tY19tbWFwX21taW8odmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0sIHZtYSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVkZJTyBQYXRjaCBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIGEgY2hlY2sgd2l0aGluIGB2ZmlvX2ZzbF9tY19tbWFwYC4gVGhlIGNoZWNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYXR0ZW1wdGluZyB0byBwcmV2ZW50IHJlYWQtb25seSByZWdpb25zIGZyb20gYmVpbmcgdXBncmFkZWQgdG8gd3JpdGFibGUgb25lcyB0aHJvdWdoIGBtcHJvdGVjdCgpYC4gUHJldHR5IHN0YW5kYXJkIG1pdGlnYXRpb24sIGJ1dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgc2lnbmlmaWNhbnQgdGhpcyBjaGFuZ2UgYWN0dWFsbHkgaXMuCgpNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O2NhbiB0aGlzIGV2ZW4gYmUgaGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsuIFRoZSBjb2RlIHJlZmVyZW5jZXMgdGhlIEZyZWVzY2FsZSBNQyBidXMsIG9yIGBmc2wtbWNgLCB3aGljaCBJIGtub3cgaXMgaGFyZHdhcmUgc3BlY2lmaWMgdG8gTlhQIFFvcklRIFNvQ3MgbGlrZSB0aG9zZSB1c2luZyBEUEFBMi4gU2luY2UgVkZJTyBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgZm9yIGhhcmR3YXJlIHBhc3MtdGhyb3VnaCwgSSB3b25kZXIsIGlzIHRoaXMgaGFyZHdhcmUgYWN0dWFsbHkgZW11bGF0ZWQgYnkgUUVNVT8gSWYgbm90LCB0aGVuIHRoaXMgcGF0Y2ggaXMgbGVzcyBjcml0aWNhbCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgc2NlbmFyaW8sIGl0IHdvdWxkIG9ubHkgYmUgcmVsZXZhbnQgaW4gcGh5c2ljYWwgc2V0dXBzLgoKSWYgdGhlIGhhcmR3YXJlICppcyogZW11bGF0ZWQsIHRoZW4gdGhhdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyB0aGlzIGFyZWEuIFRoZSBmYWN0IHRoYXQgdGhlIGNvZGUgc3BlY2lmaWNhbGx5IHJlZmVycyB0byBhICYjMzQ7dmZpby0mIzM0OyBkcml2ZXIgc3VnZ2VzdHMgdGhhdCBpdCYjMzk7cyBtZWFudCBmb3IgcGFzc2luZyB0aHJvdWdoIHBoeXNpY2FsIGZzbC1tYyBkZXZpY2VzLiBTdGlsbCwgd29ydGggZXhwbG9yaW5nIGlmIHRoZXJlIGFyZSBwb3RlbnRpYWwgdmlydHVhbGl6ZWQgYXR0YWNrIHN1cmZhY2VzLgoKSeKAmWxsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGZzbC1tYyBkcml2ZXIuIFRoYXQgc2hvdWxkIHRlbGwgbWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBhYm91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvciBpZiB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBlbXVsYXRlZCBjb21wb25lbnRzIHRoYXQgY291bGQgbWFrZSB0aGlzIHBhdGggaW50ZXJlc3RpbmcuIFRpbWUgdG8gZGlnIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkZJT19GU0xfTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnPTE9bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy0zLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnOjQ6Y29uZmlnIFZGSU9fRlNMX01DXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNS1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgTGFuZHNjYXBlIG9mIEludGVyZGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyBhbHdheXMgdG8gbWFwIHRoZSB0ZXJyaXRvcnksIHNvIHRvIHNwZWFrLiBCZWZvcmUgZGl2aW5nIGludG8gdGhlIHNwZWNpZmljcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGRlcGVuZGVuY2llcyBhdCBwbGF5LiBJJiMzOTttIG5vdCBqdXN0IHRoaW5raW5nIGFib3V0IHRoZSBvYnZpb3VzLCBzdXJmYWNlLWxldmVsIGNvbm5lY3Rpb25zOyBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlICp1bmRlcmx5aW5nKiByZWxhdGlvbnNoaXBzIOKAkyB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMsIHRoZSBwb3RlbnRpYWwgZm9yIGNhc2NhZGluZyBlZmZlY3RzLCB0aGUgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cy4gV2hhdCBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyB0aGF0IHRoaXMgaGluZ2VzIG9uPyBXaGF0IGV4dGVybmFsIGZhY3RvcnMgY291bGQgaW50cm9kdWNlIHZhcmlhbmNlPyBXaGVyZSBhcmUgdGhlIHBvdGVudGlhbCBzaW5nbGUgcG9pbnRzIG9mIGZhaWx1cmUsIHRoZSBjaG9rZXBvaW50cz8gSSBuZWVkIHRvIGJ1aWxkIGEgY29tcHJlaGVuc2l2ZSBkZXBlbmRlbmN5IGdyYXBoIGluIG15IG1pbmQsIG9yIGF0IGxlYXN0IGEgaGlnaC1sZXZlbCByZXByZXNlbnRhdGlvbiBvZiBpdCwgYmVmb3JlIEkgY2FuIG1ha2UgYW55IG1lYW5pbmdmdWwgcHJvZ3Jlc3MuIFVuZGVyc3RhbmRpbmcgdGhlc2UgcmVsYXRpb25zaGlwcyBpcyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwIHRvIGFudGljaXBhdGUgdGhlIGRvbWlubyBlZmZlY3QgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHdoZW4gYSBzeXN0ZW0gaXMgaW4gdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1wmIzM0O1xuICAgMjpcdFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXG4gICAzOlx0XG4gICA0Olx0Y29uZmlnIFZGSU9fRlNMX01DXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIFFvcklRIERQQUEyIGZzbC1tYyBidXMgZGV2aWNlc1wmIzM0O1xuICAgNjpcdFx0c2VsZWN0IEVWRU5URkRcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgRHJpdmVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgVkZJTyBRb3JJUSBEUEFBMiBmc2wtbWNcbiAgIDk6XHRcdCAgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcy4gVGhpcyBpcyByZXF1aXJlZCB0byBwYXNzdGhyb3VnaFxuICAxMDpcdFx0ICBmc2wtbWMgYnVzIGRldmljZXMgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxuICAxMTpcdFxuICAxMjpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMTM6XHRcbiAgMTQ6XHRlbmRtZW51XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIERlcGVuZGVuY3kgb24gRlNMX01DX0JVUyoqCgpPa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIGhpbmdlcyBvbiB0aGUgc3RhdGUgb2YgYEZTTF9NQ19CVVNgLiBUaGF0JiMzOTtzIHRoZSBrZXkgdmFyaWFibGUgaGVyZS4gV2UgbmVlZCB0byBpbW1lZGlhdGVseSBkZXRlcm1pbmUgdGhlIHZhbHVlIG9yIGNvbmRpdGlvbiBvZiBgRlNMX01DX0JVU2AgdG8gcHJvY2VlZCB3aXRoIGFueSBtZWFuaW5nZnVsIGFuYWx5c2lzIG9yIG5leHQgc3RlcHMuIFRoaXMgYmVjb21lcyB0aGUgaW1tZWRpYXRlIGZvY3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9NQ19CVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDI4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkxvY2F0aW5nIGBGU0xfTUNfQlVTYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFdoZXJlIGlzIGBGU0xfTUNfQlVTYCBkZWZpbmVkIG9yIGRlY2xhcmVkIGluIHRoaXMgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB2YXJpYWJsZSBvciBidXMgaXMgaW5zdGFudGlhdGVkLCBpbml0aWFsaXplZCwgYW5kIHVsdGltYXRlbHksIHVzZWQuIElzIGl0IGEgaGFyZHdhcmUgYWRkcmVzcywgYSBzb2Z0d2FyZSBjb25zdHJ1Y3QsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY29udGV4dCBpcyBrZXkuIFdoYXQgcGFydCBvZiB0aGUgc3lzdGVtIGFtIEkgZGVhbGluZyB3aXRoPyBJcyB0aGlzIHdpdGhpbiBhIHNwZWNpZmljIElQIGNvcmUsIHBhcnQgb2YgdGhlIHN5c3RlbS1vbi1jaGlwIGludGVyY29ubmVjdCwgb3Igc29tZXRoaW5nIHJlc2lkaW5nIGF0IGEgaGlnaGVyIGxldmVsIG9mIGFic3RyYWN0aW9uPyBJcyB0aGlzIGNvbWluZyBmcm9tIHRoZSBib290bG9hZGVyLCB0aGUga2VybmVsLCBvciBhbiBhcHBsaWNhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGlkZW50aWZpZXIgYmFjayB0byBpdHMgc291cmNlLCBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB1c2VkLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9NQ19CVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjg6Y29uZmlnIEZTTF9NQ19CVVNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTktXHRib29sIFwmIzM0O1FvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NDUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmVhZGluZyB0aGUgcHJvdmlkZWQgdGV4dDoKCioqRGl2aW5nIGludG8gdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKgoKT2theSwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBgZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGRyaXZlcnMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbHJlYWR5IGhhdmUgYSBwcmV0dHkgZ29vZCBpZGVhIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciDigJMgdGhpbmdzIGxpa2U6CgoqICAgKipPcHRpb25zIGZvciBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlIG92ZXJhbGwgTUMgZHJpdmVyIGZyYW1ld29yay4qKiBUaGlzIGlzIHR5cGljYWxseSB0aGUgdG9wLWxldmVsIHN5bWJvbCwgdGhlIGdhdGVrZWVwZXIgZm9yIGFsbCB0aGUgTUMtcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0ZTTF9NQ2Agb3IgYEZTTF9NQ19EUklWRVJTYC4KKiAgICoqQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBpbmRpdmlkdWFsIE1DIGRldmljZXMgb3Igc3ViLWRyaXZlcnMuKiogV2UgYXJlIGluIHRoZSBmc2wtbWMgZGlyZWN0b3J5LCBzbywgZ2l2ZW4gaXRzIGNvbW1vbiBvcmdhbml6YXRpb24sIEkgZXhwZWN0IHRvIHNlZSBzcGVjaWZpYyBvcHRpb25zIGZvciBkaWZmZXJlbnQgTUMgaGFyZHdhcmUgZGV2aWNlcyBvciBmZWF0dXJlcywgcGVyaGFwcyBzdHJ1Y3R1cmVkIGhpZXJhcmNoaWNhbGx5LiBUaGVzZSB3b3VsZCBsaWtlbHkgYmUgZ3VhcmRlZCBieSB0aGUgdG9wLWxldmVsIHN5bWJvbCBvciBvdGhlciByZWxldmFudCBkZXBlbmRlbmNpZXMuIEZvciBleGFtcGxlLCBzcGVjaWZpYyBkZXZpY2UgdHlwZXMgKGxpa2UgRXRoZXJuZXQsIERNQSwgZXRjLikgdXNpbmcgdGhlIE1DIGZyYW1ld29yay4KKiAgICoqRGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50IE1DIGNvbXBvbmVudHMuKiogSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgaW50ZXItcmVsYXRlZC4gQXJlIHRoZXJlIGNsZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSB2YXJpb3VzIGRldmljZSBzdWItZHJpdmVycz8gQXJlIGNlcnRhaW4gb3B0aW9ucyBvbmx5IGF2YWlsYWJsZSBpZiBvdGhlcnMgYXJlIGVuYWJsZWQ/IFRoaXMgaXMgd2hlcmUgSSBjYW4gZ2V0IGEgc2Vuc2Ugb2YgaG93IG1vZHVsYXIgYW5kIHdlbGwtZGVzaWduZWQgdGhlIGNvbmZpZ3VyYXRpb24gaXMuCiogICAqKkRlZmF1bHQgdmFsdWVzIGFuZCBoZWxwIHRleHQuKiogSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBvcHRpb25zIGFuZCB0aGUgZXhwbGFuYXRvcnkgdGV4dC4gRG8gdGhlIGRlZmF1bHRzIG1ha2Ugc2Vuc2U/IElzIHRoZSBoZWxwIHRleHQgY2xlYXIgYW5kIGluZm9ybWF0aXZlPyBHb29kIEtjb25maWcgZmlsZXMgcHJvdmlkZSBlbm91Z2ggZ3VpZGFuY2UgdG8gbWFrZSBhbiBpbmZvcm1lZCBjaG9pY2Ugd2l0aG91dCBiZWluZyBvdmVyd2hlbG1pbmcuCiogICAqKkFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBhcmNoaXRlY3R1cmUgb3Iga2VybmVsIHZlcnNpb24uKiogSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhcyB0aGUgRlNMIE1DIGZyYW1ld29yayBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBhbmQgaGFyZHdhcmUgcmV2aXNpb25zLiBBbHNvLCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY29tcGF0aWJpbGl0eSBzaGltcyBvciBvcHRpb25zIHJlbGF0ZWQgdG8gZGlmZmVyZW50IGtlcm5lbCB2ZXJzaW9ucy4KCkkmIzM5O2xsIGJlIHJlYWRpbmcgdGhpcyB3aXRoIGFuIGV5ZSB0b3dhcmQgaWRlbnRpZnlpbmcgYW55IGFyZWFzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGNvdWxkIGJlIGltcHJvdmVkIGZvciBjbGFyaXR5LCBtYWludGFpbmFiaWxpdHksIG9yIHBlcmZvcm1hbmNlLiBJJiMzOTttIGFsc28gY29uc2lkZXJpbmcgcG90ZW50aWFsIGZ1dHVyZSBlbmhhbmNlbWVudHMgb3IgbW9kaWZpY2F0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IGZvciBteSBjdXJyZW50IHdvcmsgb3IgcHJvamVjdHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIERQQUEyIGZzbC1tYyBidXNcbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgRlNMX01DX0JVU1xuICAgOTpcdFx0Ym9vbCBcJiMzNDtRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclwmIzM0O1xuICAxMDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTEFZRVJTQ0FQRSB8fCAoQ09NUElMRV9URVNUIFx1MDAyNlx1MDAyNiAoQVJNIHx8IEFSTTY0IHx8IFg4Nl9MT0NBTF9BUElDIHx8IFBQQykpKVxuICAxMTpcdFx0c2VsZWN0IEdFTkVSSUNfTVNJX0lSUVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBEcml2ZXIgdG8gZW5hYmxlIHRoZSBidXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBRb3JJUSBEUEFBMlxuICAxNDpcdFx0ICBhcmNoaXRlY3R1cmUuICBUaGUgZnNsLW1jIGJ1cyBkcml2ZXIgaGFuZGxlcyBkaXNjb3Zlcnkgb2ZcbiAgMTU6XHRcdCAgRFBBQTIgb2JqZWN0cyAod2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIExpbnV4IGRldmljZXMpIGFuZFxuICAxNjpcdFx0ICBiaW5kaW5nIG9iamVjdHMgdG8gZHJpdmVycy5cbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgRlNMX01DX1VBUElfU1VQUE9SVFxuICAxOTpcdFx0Ym9vbCBcJiMzNDtNYW5hZ2VtZW50IENvbXBsZXggKE1DKSB1c2Vyc3BhY2Ugc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRlNMXF9NQ1xfQlVTIERyaXZlciBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoZSBgRlNMX01DX0JVU2AgZHJpdmVyIGhpbmdlcyBvbiBgT0ZgLCBgQVJDSF9MQVlFUlNDQVBFYCwgb3IgYENPTVBJTEVfVEVTVGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyBhIGhhcmR3YXJlIGJ1cyBkcml2ZXIgdGFpbG9yZWQgZm9yIEZyZWVzY2FsZSYjMzk7cyBRb3JJUSBEUEFBMiBhcmNoaXRlY3R1cmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlIGZ1enogdGhpcyB0aGluZyBlZmZlY3RpdmVseSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PwoKVGhlIGNvcmUgY2hhbGxlbmdlIGlzIFFFTVUmIzM5O3MgaW5jb21wbGV0ZSBlbXVsYXRpb24gb2YgdGhlIEZyZWVzY2FsZSBNQyBidXMgKGBmc2wtbWNgKS4gSXQmIzM5O3Mgbm90IHNldCB1cCBpbiBhIHdheSB0aGF0IGFsbG93cyB1cyB0byBpbnN0YW50aWF0ZSBhbmQgcGFzcyBkZXZpY2VzIHRocm91Z2ggVkZJTyB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSB2ZXJ5IHNwZWNpZmljIGJvYXJkIGVtdWxhdGlvbi4gRXZlbiBpZiBzdWNoIGVtdWxhdGlvbiAqZG9lcyogZXhpc3QsIHN5emthbGxlciBjdXJyZW50bHkgbGFja3MgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIHRoZXNlIGRldmljZXMgb3IgaW50ZXJmYWNlIHdpdGggdGhlbSB1bmxlc3MgdGhleSYjMzk7cmUgcHVyZWx5IHNvZnR3YXJlIGVtdWxhdGVkLgoKV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGhhcmR3YXJlLXNwZWNpZmljIFZGSU8gZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHBhc3NpbmcgdGhyb3VnaCBhY3R1YWwgcGh5c2ljYWwgRnJlZXNjYWxlIE1DIGRldmljZXMuIFRoaXMgcHV0cyBpdCBzcXVhcmVseSBpbiB0aGUgY2F0ZWdvcnkgb2YgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG11Y2ggbGlrZSB0aGUgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIEkmIzM5O20gdGhpbmtpbmcgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuCgpCZWZvcmUgSSB3cml0ZSBpdCBvZmYgY29tcGxldGVseSwgdGhvdWdoLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBMZXQgbWUgcXVpY2tseSBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdG8gc2VlIGlmIHRoZXJlJiMzOTtzICphbnkqIGZvcm0gb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZvciBgZnNsLW1jYCB0aGF0IEkgbWlnaHQgaGF2ZSBtaXNzZWQuIElmIHRoZXJlJiMzOTtzIGEga2VybmVsIG1vZHVsZSwgaXQmIzM5O3Mgd29ydGggc2VlaW5nIGhvdyBjb21wbGV0ZSB0aGF0IGVtdWxhdGlvbiBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnNsLW1jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0yLSNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjM6IyBEUEFBMiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy00LSNcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZz04PWNvbmZpZyBGU0xfTUNfQlVTXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzo5Olx0Ym9vbCBcJiMzNDtRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTAtXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXHUwMDI2XHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTMtXHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzoxNDpcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0xNS1cdCAgRFBBQTIgb2JqZWN0cyAod2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIExpbnV4IGRldmljZXMpIGFuZFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZT03PW9iai0kKENPTkZJR19GU0xfTUNfQlVTKSAmIzQzOz0gbWMtYnVzLWRyaXZlci5vXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtOC1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZTo5Om1jLWJ1cy1kcml2ZXItb2JqcyA6PSBmc2wtbWMtYnVzLm8gXFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZS0xMC1cdFx0ICAgICAgbWMtc3lzLm8gXFxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMTUtXHRcdCAgICAgIGRwcmMtZHJpdmVyLm8gXFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToxNjpcdFx0ICAgICAgZnNsLW1jLWFsbG9jYXRvci5vIFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTc6XHRcdCAgICAgIGZzbC1tYy1tc2kubyBcXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTE4LVx0XHQgICAgICBkcG1jcC5vIFxcXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTIxLSMgTUMgdXNlcnNwYWNlIHN1cHBvcnRcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRlNMX01DX1VBUElfU1VQUE9SVCkgJiM0Mzs9IGZzbC1tYy11YXBpLm9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jLTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jOjk6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL2RwYnAuYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYy04LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwY29uLmM6OTojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYy04LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwbWNwLmM6OTojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE2OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTY4PXN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzktICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgwOiAqIEBtY19idXNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIERQUkMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MS0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgb2JqZWN0cyBjdXJyZW50bHlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xMjM9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19kZXZpY2VfbG9va3VwKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzNi0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTM3OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgZm9yIGEgZ2l2ZW4gTUMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMzgtICogQG9ial9kZXNjOiBwb2ludGVyIHRvIHRoZSBNQyBvYmplY3QmIzM5O3MgZGVzY3JpcHRvciBpbiB0aGUgTUNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzOS0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQwOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gdW5wbHVnZ2VkIHRvIHBsdWdnZWQsIHRoZSBmc2wtbWNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE0MS0gKiBkZXZpY2UgaXMgYm91bmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZGV2aWNlIGRyaXZlci5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE0MjogKiBJZiB0aGUgcGx1Z2dlZCBzdGF0ZSBoYXMgY2hhbmdlZCBmcm9tIHBsdWdnZWQgdG8gdW5wbHVnZ2VkLCB0aGUgZnNsLW1jXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDMtICogZGV2aWNlIGlzIHVuYm91bmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgZHJpdmVyLlxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTE2OT1zdGF0aWMgdm9pZCBmc2xfbWNfb2JqX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTkyLSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxOTM6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5NC0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIGRldmljZSBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgZGV2aWNlcyBjdXJyZW50bHlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yMDI9c3RhdGljIHZvaWQgZHByY19hZGRfbmV3X2RldmljZXMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjI4LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoyMjk6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIzMC0gKiBAYWxsb2NfaW50ZXJydXB0czogaWYgdHJ1ZSB0aGUgZnVuY3Rpb24gYWxsb2NhdGVzIHRoZSBpbnRlcnJ1cHQgcG9vbCxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yNDU9aW50IGRwcmNfc2Nhbl9vYmplY3RzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTM1Ni0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MzU3OiAqIEBtY19idXNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIERQUkMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTgtICogQGFsbG9jX2ludGVycnVwdHM6IGlmIHRydWUgdGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgaW50ZXJydXB0IHBvb2wsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NTcyPXN0YXRpYyBpbnQgZHByY19zZXR1cF9pcnEoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02MDEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjYwMjogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIGEgRFBSQ1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAzLSAqXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NzExPUVYUE9SVF9TWU1CT0xfR1BMKGRwcmNfc2V0dXApO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcxNS0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzE2OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgYSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTctICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz03NTg9c3RhdGljIHZvaWQgZHByY190ZWFyZG93bl9pcnEoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjc3MjogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzMtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz04MTU9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19jbGVhbnVwKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MTktICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgyMDogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjEtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jLTktXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jOjEwOiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtMTEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yLS8qXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM6ICogZnNsLW1jIG9iamVjdCBhbGxvY2F0b3IgZHJpdmVyXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEyLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxMzojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0xNT1zdGF0aWMgYm9vbCBfX211c3RfY2hlY2sgZnNsX21jX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yMy0gKiBmc2xfbWNfcmVzb3VyY2VfcG9vbF9hZGRfZGV2aWNlIC0gYWRkIGFsbG9jYXRhYmxlIG9iamVjdCB0byBhIHJlc291cmNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI0OiAqIHBvb2wgb2YgYSBnaXZlbiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2OiAqIEBtY19idXM6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBidXNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjctICogQHBvb2xfdHlwZTogcG9vbCB0eXBlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI4OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yOS0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzA9c3RhdGljIGludCBfX211c3RfY2hlY2sgZnNsX21jX3Jlc291cmNlX3Bvb2xfYWRkX2RldmljZShzdHJ1Y3QgZnNsX21jX2J1c1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtOTEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6OTI6ICogQG1jX2RldjogcG9pbnRlciB0byBhbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkzLSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjk0OiAqIEl0IHBlcm1hbmVudGx5IHJlbW92ZXMgYW4gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZSBmcm9tIHRoZSByZXNvdXJjZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy05NS0gKiBwb29sLiBJdCYjMzk7cyBhbiBlcnJvciBpZiB0aGUgZGV2aWNlIGlzIGluIHVzZS5cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNTYtLyoqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1NzogKiBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlIC0gQWxsb2NhdGVzIGFuIGZzbC1tYyBvYmplY3Qgb2YgdGhlIGdpdmVuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1ODogKiBwb29sIHR5cGUgZnJvbSBhIGdpdmVuIGZzbC1tYyBidXMgaW5zdGFuY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjU5LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2MDogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIHdoaWNoIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjYxLSAqIGFsbG9jYXRlZCBvYmplY3Rcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMyNC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI1OiAqIGZzbF9tY19vYmplY3RfZnJlZSAtIFJldHVybnMgYW4gZnNsLW1jIG9iamVjdCB0byB0aGUgcmVzb3VyY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI2LSAqIHBvb2wgd2hlcmUgaXQgY2FtZSBmcm9tLlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozMjc6ICogQG1jX2FkZXY6IFBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzQzPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19vYmplY3RfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTEtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzUyOiAqIEluaXRpYWxpemUgdGhlIGludGVycnVwdCBwb29sIGFzc29jaWF0ZWQgd2l0aCBhbiBmc2wtbWMgYnVzLlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTMtICogSXQgYWxsb2NhdGVzIGEgYmxvY2sgb2YgSVJRcyBmcm9tIHRoZSBHSUMtSVRTLlxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NDExPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19wb3B1bGF0ZV9pcnFfcG9vbCk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00MTMtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDE0OiAqIFRlYXJkb3duIHRoZSBpbnRlcnJ1cHQgcG9vbCBhc3NvY2lhdGVkIHdpdGggYW4gZnNsLW1jIGJ1cy5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE1LSAqIEl0IGZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgdG8gdGhlIHBvb2wsIGJhY2sgdG8gdGhlIEdJQy1JVFMuXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00Mzg9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2NsZWFudXBfaXJxX3Bvb2wpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDQwLS8qXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjQ0MTogKiBBbGxvY2F0ZSB0aGUgSVJRcyByZXF1aXJlZCBieSBhIGdpdmVuIGZzbC1tYyBkZXZpY2UuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0Mi0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTUwNj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfYWxsb2NhdGVfaXJxcyk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MDgtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTA5OiAqIEZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgZm9yIGFuIGZzbC1tYyBkZXZpY2UuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTU2Mj1zdGF0aWMgaW50IGZzbF9tY19hbGxvY2F0b3JfcHJvYmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU4NS1cdGRldl9kYmcoXHUwMDI2bWNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTg2Olx0XHRcJiMzNDtBbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlIGJvdW5kIHRvIGZzbF9tY19hbGxvY2F0b3IgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTg3LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz01OTQ9c3RhdGljIHZvaWQgZnNsX21jX2FsbG9jYXRvcl9yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNC1cdGRldl9kYmcoXHUwMDI2bWNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NjA1Olx0XHRcJiMzNDtBbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlIHVuYm91bmQgZnJvbSBmc2xfbWNfYWxsb2NhdG9yIGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNi19XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMC1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE6I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtmc2wtbWM6IFwmIzM0OyBmbXRcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTItXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjY6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjgtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mjk6ICogRGVmYXVsdCBETUEgbWFzayBmb3IgZGV2aWNlcyBvbiBhIGZzbC1tYyBidXNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzAtICovXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMz1zdGF0aWMgc3RydWN0IGZzbF9tY192ZXJzaW9uIG1jX3ZlcnNpb247XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zNi0gKiBzdHJ1Y3QgZnNsX21jIC0gUHJpdmF0ZSBkYXRhIG9mIGEgXCYjMzQ7ZnNsLHFvcmlxLW1jXCYjMzQ7IHBsYXRmb3JtIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozNzogKiBAcm9vdF9tY19idXNfZGV2OiBmc2wtbWMgZGV2aWNlIHJlcHJlc2VudGluZyB0aGUgcm9vdCBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM4LSAqIEBudW1fdHJhbnNsYXRpb25fcmFuZ2VzOiBudW1iZXIgb2YgZW50cmllcyBpbiBhZGRyX3RyYW5zbGF0aW9uX3Jhbmdlc1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9ODA9c3RhdGljIHBoeXNfYWRkcl90IG1jX3BvcnRhbF9iYXNlX3BoeXNfYWRkcjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTgzLSAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg0OiAqIEBkZXY6IHRoZSBmc2wtbWMgZGV2aWNlIHRvIG1hdGNoIGFnYWluc3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODU6ICogQGRydjogdGhlIGRldmljZSBkcml2ZXIgdG8gc2VhcmNoIGZvciBtYXRjaGluZyBmc2wtbWMgb2JqZWN0IHR5cGVcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODYtICogc3RydWN0dXJlc1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNDItXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjE0MzpcdGlmIChhZGRfdWV2ZW50X3ZhcihlbnYsIFwmIzM0O01PREFMSUFTPWZzbC1tYzp2JTA4WGQlc1wmIzM0OyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQ0LVx0XHRcdCAgIG1jX2Rldi1cdTAwM2VvYmpfZGVzYy52ZW5kb3IsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjE4LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTk6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O2ZzbC1tYzp2JTA4WGQlc1xcblwmIzM0OywgbWNfZGV2LVx1MDAzZW9ial9kZXNjLnZlbmRvcixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjIwLVx0XHRcdG1jX2Rldi1cdTAwM2VvYmpfZGVzYy50eXBlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMyNj1jb25zdCBzdHJ1Y3QgYnVzX3R5cGUgZnNsX21jX2J1c190eXBlID0ge1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjc6XHQubmFtZSA9IFwmIzM0O2ZzbC1tY1wmIzM0OyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI4LVx0LmRyaXZlcl9vdmVycmlkZSA9IHRydWUsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00OTk9c3RhdGljIGludCBtY19nZXRfdmVyc2lvbihzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTUyOC0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo1Mjk6ICogUmV0dXJuOlx0bWMgdmVyc2lvbiB3aGVuIGNhbGxlZCBhZnRlciBmc2wtbWMtYnVzIHByb2JlOyBOVUxMIG90aGVyd2lzZS5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTMwLSAqL1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NjMyPXN0YXRpYyBpbnQgZnNsX21jX2RldmljZV9nZXRfbW1pb19yZWdpb25zKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTAtXHRcdHJlZ2lvbnNbaV0uZW5kID0gcmVnaW9uc1tpXS5zdGFydCAmIzQzOyByZWdpb25fZGVzYy5zaXplIC0gMTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzExOlx0XHRyZWdpb25zW2ldLm5hbWUgPSBcJiMzNDtmc2wtbWMgb2JqZWN0IE1NSU8gcmVnaW9uXCYjMzQ7O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTItXHRcdHJlZ2lvbnNbaV0uZmxhZ3MgPSByZWdpb25fZGVzYy5mbGFncyBcdTAwMjYgSU9SRVNPVVJDRV9CSVRTO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NDktLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUwOiAqIEFkZCBhIG5ld2x5IGRpc2NvdmVyZWQgZnNsLW1jIGRldmljZSB0byBiZSB2aXNpYmxlIGluIExpbnV4XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1MS0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4NC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ni0gKiBMaW51eFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODctICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg4OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gYW4gZnNsLW1jIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODktICovXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz05MDA9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldixcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkzNi1cdCAqIGludGVycm9nYXRpbmcgdGhlIGZpcm13YXJlLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gdGhlIGRldmljZSB3YXMgbm90XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjkzNzpcdCAqIHlldCBkaXNjb3ZlcmVkIGJ5IHRoZSBmc2wtbWMgYnVzLCB0aHVzIHRoZSBsb29rdXAgcmV0dXJuZWQgTlVMTC5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM4LVx0ICogRm9yY2UgYSByZXNjYW4gb2YgdGhlIGRldmljZXMgaW4gdGhpcyBjb250YWluZXIgYW5kIHJldHJ5IHRoZSBsb29rdXAuXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDA1PXN0YXRpYyBpbnQgZnNsX21jX2Zpcm13YXJlX2NoZWNrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDEzLVx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMDE0Olx0XHRcdFwmIzM0O2ZzbC1tYzogRFBMIHByb2Nlc3Npbmcgd2FzIG5vdCBzdGFydGVkLCBEUEFBMiB3aWxsIG5vdCB3b3JrIVxcblwmIzM0Oyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTUtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjAtXHRcdGRldl9kYmcoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjE6XHRcdFx0XCYjMzQ7ZnNsLW1jOiBEUEwgcHJvY2Vzc2luZyBpbiBwcm9ncmVzcywgZGVmZXIgcHJvYmVcXG5cJiMzNDspO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDIyLVx0XHRyZXR1cm4gLUVQUk9CRV9ERUZFUjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjctXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjg6XHRcdFx0XCYjMzQ7ZnNsLW1jOiBNQyBib290IGNvbXBsZXRlZCB3aXRoIGVycm9yIDB4JXhcXG5cJiMzNDssIG1jcyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjktXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTUtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjE2OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTctXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NTgyPXN0cnVjdCBmc2xfbWNfdWFwaSB7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNTkxLSAqIHN0cnVjdCBmc2xfbWNfYnVzIC0gbG9naWNhbCBidXMgdGhhdCBjb3JyZXNwb25kcyB0byBhIHBoeXNpY2FsIERQUkNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjU5MjogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIGZvciB0aGUgYnVzIGRldmljZSBpdHNlbGYuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC01OTMtICogQHJlc291cmNlX3Bvb2xzOiBhcnJheSBvZiByZXNvdXJjZSBwb29scyAob25lIHBvb2wgcGVyIHJlc291cmNlIHR5cGUpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy11YXBpLmMtMTMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYzoxNDojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xNS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvbWMtaW8uYy05LVxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmM6MTA6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmMtMTEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jLTE2LVxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1zeXMuYy0xOC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jLTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jOjk6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL29iai1hcGkuYy0xMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNjIKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogNjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gdGhlIHZmaW8tZnNsLW1jIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGB2ZmlvLWZzbC1tY2AgZHJpdmVyLCBhbmQgaXQmIzM5O3MgY2xlYXIgdGhpcyBjb2RlIHBhdGggaXNuJiMzOTt0IHJlYWNoYWJsZSBpbiB0aGUgd2F5IHdlJiMzOTtyZSBjdXJyZW50bHkgdGVzdGluZy4gVGhlIGBmc2wtbWNgIGJ1cyBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIHRoaW5nLCBzcGVjaWZpY2FsbHkgdGllZCB0byBOWFAmIzM5O3MgUW9ySVEgU29Dcy4gSXQgdXNlcyBgcGxhdGZvcm1fZGV2aWNlYCBpbnRlcm5hbGx5LCBidXQgaXRzIGRldmljZSBub2RlcyBhcmUgZGVmaW5lZCBpbiB0aGUgZGV2aWNlIHRyZWUgYXMgYCYjMzQ7ZnNsLHFvcmlxLW1jJiMzNDtgLiBUaGUgaXNzdWUgaXMsIHRoZXJlJiMzOTtzIG5vIHdheSB0byBlbXVsYXRlIHRoaXMgaW4gc3RhbmRhcmQgUUVNVS4gSSYjMzk7dmUgZ29uZSB0aHJvdWdoIHRoZSBRRU1VIGNvZGUsIGFuZCB0aGVyZSYjMzk7cyBub3RoaW5nIHRoZXJlIGZvciB0aGUgYGZzbC1tY2AgYnVzLiBTaW1pbGFybHksIHRoZSBrZXJuZWwgZG9lc24mIzM5O3QgaGF2ZSBhbnkga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gZnJhbWV3b3JrIGZvciBpdCBlaXRoZXIsIG5vdGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLgoKVGhlIGNvZGUgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYCwgaXMgdGhlIFZGSU8gZHJpdmVyIGRlc2lnbmVkIGZvciBwYXNzaW5nIHRocm91Z2ggYGZzbC1tY2AgZGV2aWNlcy4gVG8gbWFrZSB0aGF0IHdvcmssIHdlJiMzOTtkIG5lZWQgYW4gYWN0dWFsIGBmc2wtbWNgIGRldmljZSB0byBiaW5kIHRvIHRoZSBWRklPIGRyaXZlci4gSG93ZXZlciwgd2UgY2FuJiMzOTt0IGNyZWF0ZSB0aG9zZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyBuZWl0aGVyIGluIEdDRSBub3Igd2l0aCB0aGUgUUVNVSBjb25maWd1cmF0aW9uIHN5emthbGxlciBpcyB1c2luZy4gV2UgZG9uJiMzOTt0IGhhdmUgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgd2UgZG9uJiMzOTt0IGhhdmUgYW55IHNvZnR3YXJlIHNpbXVsYXRpb24gb2YgdGhlIGJ1cy4KCkxldCYjMzk7cyBsb29rIG1vcmUgY2xvc2VseSBhdCB0aGUgY2FsbCBwYXRoOiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgdmZpb19mc2xfbWNfbW1hcGAgZnVuY3Rpb24uIFZGSU8gZGV2aWNlcyBhcmUgY3JlYXRlZCBieSBiaW5kaW5nIGEgcGh5c2ljYWwgZGV2aWNlIHRvIHRoZSBWRklPIGRyaXZlci4gSW4gdGhlIGNhc2Ugb2YgYGZzbC1tY2AsIHRoZSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBhcyBhbiBgZnNsX21jX2RyaXZlcmAuIFRvIHByb2JlIHRoaXMgZHJpdmVyLCBhbiBgZnNsX21jX2RldmljZWAgbXVzdCBleGlzdCBvbiB0aGUgYGZzbC1tY2AgYnVzIGFuZCBiZSBib3VuZCB0byB0aGlzIGRyaXZlci4gU2luY2Ugd2UgY2FuJiMzOTt0IGNyZWF0ZSBhbnkgYGZzbF9tY19kZXZpY2VgIGluIG91ciBjdXJyZW50IHRlc3QgZW52aXJvbm1lbnQgKG5vIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiksIHRoZSBgdmZpb19mc2xfbWNfcHJvYmVgIHdpbGwgbmV2ZXIgZXZlbiBiZSBjYWxsZWQuIENvbnNlcXVlbnRseSwgbm8gVkZJTyBkZXZpY2UgaXMgZXZlciBjcmVhdGVkLgoKU28sIHNpbmNlIHRoZSBwcm9iZSB3b24mIzM5O3QgYmUgY2FsbGVkLCB0aGUgZHJpdmVyIG5ldmVyIGJpbmRzLCBhbmQgdGhlIFZGSU8gZGV2aWNlIHdpbGwgbmV2ZXIgZXhpc3QsIHRoaXMgbWVhbnMgYHZmaW9fZnNsX21jX21tYXBgIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGZvciB0aGlzIGNvZGUgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgZnNsLW1jIGJ1cywgd2hpY2ggcmVxdWlyZXMgYSBwaHlzaWNhbCBRb3JJUSBTb0MgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGJ5IGFueSBrZXJuZWwgZW11bGF0aW9uIGZyYW1ld29ya3MuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gdGhpcyBkcml2ZXIgaXMgaW5hY2Nlc3NpYmxlIGluIG91ciB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHZmaW8tZnNsLW1jYCBkcml2ZXIsIHdoaWNoIGlzIGEgVkZJTyBkcml2ZXIgZm9yIHBhc3NpbmcgdGhyb3VnaCBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIHBoeXNpY2FsIE5YUCBRb3JJUSBTb0NzLiBTdGFuZGFyZCBRRU1VIGRvZXMgbm90IGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBidXMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdG8gY3JlYXRlIHZpcnR1YWwgZnNsLW1jIGRldmljZXMuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYHZmaW9fZnNsX21jX21tYXBgIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHZmaW8tZnNsLW1jYCBkcml2ZXIsIHdoaWNoIGlzIGEgVkZJTyBkcml2ZXIgZm9yIHBhc3NpbmcgdGhyb3VnaCBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIHBoeXNpY2FsIE5YUCBRb3JJUSBTb0NzLiBTdGFuZGFyZCBRRU1VIGRvZXMgbm90IGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBidXMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdG8gY3JlYXRlIHZpcnR1YWwgZnNsLW1jIGRldmljZXMuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYHZmaW9fZnNsX21jX21tYXBgIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDU6NDEuOTE3MTYyNTkxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAyNTc5ODYzMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHZmaW8tZnNsLW1jYCBkcml2ZXIsIHdoaWNoIGlzIGEgVkZJTyBkcml2ZXIgZm9yIHBhc3NpbmcgdGhyb3VnaCBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIHBoeXNpY2FsIE5YUCBRb3JJUSBTb0NzLiBTdGFuZGFyZCBRRU1VIGRvZXMgbm90IGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBidXMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdG8gY3JlYXRlIHZpcnR1YWwgZnNsLW1jIGRldmljZXMuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYHZmaW9fZnNsX21jX21tYXBgIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NTo0MS45MTcxNzA5MTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODcxODA2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNjY2ZjFkMjhkODZjZGI0MDBkODc4M2VjNjIxMjM4ZWEyMjZiN2Q3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDE5IDA4OjQ1OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xcbmluZGV4IGI0YzM5NTgyMDFiMjUuLjg1ZjQ3OWRiOTM2YzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuKysrIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuQEAgLTQwNyw2ICs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiBcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xcbiBcXG4gXFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDU6NDMuMjA1MjQ1MDM0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzg5Njk4ODg2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdmZpby1mc2wtbWNgIGRyaXZlciwgd2hpY2ggaXMgYSBWRklPIGRyaXZlciBmb3IgcGFzc2luZyB0aHJvdWdoIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMgZm91bmQgb24gcGh5c2ljYWwgTlhQIFFvcklRIFNvQ3MuIFN0YW5kYXJkIFFFTVUgZG9lcyBub3QgZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGJ1cywgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBjcmVhdGUgdmlydHVhbCBmc2wtbWMgZGV2aWNlcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgdmZpb19mc2xfbWNfbW1hcGAgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE2NjZmMWQyOGQ4NmNkYjQwMGQ4NzgzZWM2MjEyMzhlYTIyNmI3ZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NTo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xuaW5kZXggYjRjMzk1ODIwMWIyNS4uODVmNDc5ZGI5MzZjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xuKysrIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5AQCAtNDA3LDYgKzQwNywxMCBAQCBzdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbitcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4rXHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuK1xuIFx0dm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IG1jX2RldjtcbiBcbiBcdHJldHVybiB2ZmlvX2ZzbF9tY19tbWFwX21taW8odmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ1OjQzLjIwNTI0OTEyNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5OTI1MjE3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkZJTyBQYXRjaCBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGEgY2hlY2sgd2l0aGluIGB2ZmlvX2ZzbF9tY19tbWFwYC4gVGhlIGNoZWNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaXQncyBhdHRlbXB0aW5nIHRvIHByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbnMgZnJvbSBiZWluZyB1cGdyYWRlZCB0byB3cml0YWJsZSBvbmVzIHRocm91Z2ggYG1wcm90ZWN0KClgLiBQcmV0dHkgc3RhbmRhcmQgbWl0aWdhdGlvbiwgYnV0IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBzaWduaWZpY2FudCB0aGlzIGNoYW5nZSBhY3R1YWxseSBpcy5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgXCJjYW4gdGhpcyBldmVuIGJlIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiLiBUaGUgY29kZSByZWZlcmVuY2VzIHRoZSBGcmVlc2NhbGUgTUMgYnVzLCBvciBgZnNsLW1jYCwgd2hpY2ggSSBrbm93IGlzIGhhcmR3YXJlIHNwZWNpZmljIHRvIE5YUCBRb3JJUSBTb0NzIGxpa2UgdGhvc2UgdXNpbmcgRFBBQTIuIFNpbmNlIFZGSU8gZHJpdmVycyBhcmUgZ2VuZXJhbGx5IGZvciBoYXJkd2FyZSBwYXNzLXRocm91Z2gsIEkgd29uZGVyLCBpcyB0aGlzIGhhcmR3YXJlIGFjdHVhbGx5IGVtdWxhdGVkIGJ5IFFFTVU/IElmIG5vdCwgdGhlbiB0aGlzIHBhdGNoIGlzIGxlc3MgY3JpdGljYWwgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIHNjZW5hcmlvLCBpdCB3b3VsZCBvbmx5IGJlIHJlbGV2YW50IGluIHBoeXNpY2FsIHNldHVwcy5cblxuSWYgdGhlIGhhcmR3YXJlICppcyogZW11bGF0ZWQsIHRoZW4gdGhhdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyB0aGlzIGFyZWEuIFRoZSBmYWN0IHRoYXQgdGhlIGNvZGUgc3BlY2lmaWNhbGx5IHJlZmVycyB0byBhIFwidmZpby1cIiBkcml2ZXIgc3VnZ2VzdHMgdGhhdCBpdCdzIG1lYW50IGZvciBwYXNzaW5nIHRocm91Z2ggcGh5c2ljYWwgZnNsLW1jIGRldmljZXMuIFN0aWxsLCB3b3J0aCBleHBsb3JpbmcgaWYgdGhlcmUgYXJlIHBvdGVudGlhbCB2aXJ0dWFsaXplZCBhdHRhY2sgc3VyZmFjZXMuXG5cbknigJlsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBmc2wtbWMgZHJpdmVyLiBUaGF0IHNob3VsZCB0ZWxsIG1lIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgYWJvdXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3IgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZW11bGF0ZWQgY29tcG9uZW50cyB0aGF0IGNvdWxkIG1ha2UgdGhpcyBwYXRoIGludGVyZXN0aW5nLiBUaW1lIHRvIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NTo1MC4xOTc3NzQ3MTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY2ODA2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fRlNMX01DXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc9MT1tZW51IFxcXCJWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy0zLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZzo0OmNvbmZpZyBWRklPX0ZTTF9NQ1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy01LVxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIFFvcklRIERQQUEyIGZzbC1tYyBidXMgZGV2aWNlc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDU6NTAuMjY0NDYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyMTg5ODE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgTGFuZHNjYXBlIG9mIEludGVyZGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGFsd2F5cyB0byBtYXAgdGhlIHRlcnJpdG9yeSwgc28gdG8gc3BlYWsuIEJlZm9yZSBkaXZpbmcgaW50byB0aGUgc3BlY2lmaWNzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuZGFtZW50YWwgZGVwZW5kZW5jaWVzIGF0IHBsYXkuIEknbSBub3QganVzdCB0aGlua2luZyBhYm91dCB0aGUgb2J2aW91cywgc3VyZmFjZS1sZXZlbCBjb25uZWN0aW9uczsgSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlICp1bmRlcmx5aW5nKiByZWxhdGlvbnNoaXBzIOKAkyB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMsIHRoZSBwb3RlbnRpYWwgZm9yIGNhc2NhZGluZyBlZmZlY3RzLCB0aGUgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cy4gV2hhdCBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyB0aGF0IHRoaXMgaGluZ2VzIG9uPyBXaGF0IGV4dGVybmFsIGZhY3RvcnMgY291bGQgaW50cm9kdWNlIHZhcmlhbmNlPyBXaGVyZSBhcmUgdGhlIHBvdGVudGlhbCBzaW5nbGUgcG9pbnRzIG9mIGZhaWx1cmUsIHRoZSBjaG9rZXBvaW50cz8gSSBuZWVkIHRvIGJ1aWxkIGEgY29tcHJlaGVuc2l2ZSBkZXBlbmRlbmN5IGdyYXBoIGluIG15IG1pbmQsIG9yIGF0IGxlYXN0IGEgaGlnaC1sZXZlbCByZXByZXNlbnRhdGlvbiBvZiBpdCwgYmVmb3JlIEkgY2FuIG1ha2UgYW55IG1lYW5pbmdmdWwgcHJvZ3Jlc3MuIFVuZGVyc3RhbmRpbmcgdGhlc2UgcmVsYXRpb25zaGlwcyBpcyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwIHRvIGFudGljaXBhdGUgdGhlIGRvbWlubyBlZmZlY3QgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHdoZW4gYSBzeXN0ZW0gaXMgaW4gdXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODA1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NTo1My45ODYzNjE3NTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRtZW51IFxcXCJWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1xcXCJcXG4gICAyOlxcdFxcdGRlcGVuZHMgb24gRlNMX01DX0JVU1xcbiAgIDM6XFx0XFxuICAgNDpcXHRjb25maWcgVkZJT19GU0xfTUNcXG4gICA1OlxcdFxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIFFvcklRIERQQUEyIGZzbC1tYyBidXMgZGV2aWNlc1xcXCJcXG4gICA2OlxcdFxcdHNlbGVjdCBFVkVOVEZEXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIERyaXZlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFZGSU8gUW9ySVEgRFBBQTIgZnNsLW1jXFxuICAgOTpcXHRcXHQgIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMuIFRoaXMgaXMgcmVxdWlyZWQgdG8gcGFzc3Rocm91Z2hcXG4gIDEwOlxcdFxcdCAgZnNsLW1jIGJ1cyBkZXZpY2VzIHVzaW5nIHRoZSBWRklPIGZyYW1ld29yay5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRlbmRtZW51XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ1OjUzLjk4NjQxNjk5OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMDU5Mzk0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY3kgb24gRlNMX01DX0JVUyoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoaXMgaGluZ2VzIG9uIHRoZSBzdGF0ZSBvZiBgRlNMX01DX0JVU2AuIFRoYXQncyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIFdlIG5lZWQgdG8gaW1tZWRpYXRlbHkgZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvciBjb25kaXRpb24gb2YgYEZTTF9NQ19CVVNgIHRvIHByb2NlZWQgd2l0aCBhbnkgbWVhbmluZ2Z1bCBhbmFseXNpcyBvciBuZXh0IHN0ZXBzLiBUaGlzIGJlY29tZXMgdGhlIGltbWVkaWF0ZSBmb2N1cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDU6NTYuOTkyMzU5MjU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3Njk2Mzk3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNMX01DX0JVU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NTo1Ny4wODAwODA2NjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU2MjUwMjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqTG9jYXRpbmcgYEZTTF9NQ19CVVNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFdoZXJlIGlzIGBGU0xfTUNfQlVTYCBkZWZpbmVkIG9yIGRlY2xhcmVkIGluIHRoaXMgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB2YXJpYWJsZSBvciBidXMgaXMgaW5zdGFudGlhdGVkLCBpbml0aWFsaXplZCwgYW5kIHVsdGltYXRlbHksIHVzZWQuIElzIGl0IGEgaGFyZHdhcmUgYWRkcmVzcywgYSBzb2Z0d2FyZSBjb25zdHJ1Y3QsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY29udGV4dCBpcyBrZXkuIFdoYXQgcGFydCBvZiB0aGUgc3lzdGVtIGFtIEkgZGVhbGluZyB3aXRoPyBJcyB0aGlzIHdpdGhpbiBhIHNwZWNpZmljIElQIGNvcmUsIHBhcnQgb2YgdGhlIHN5c3RlbS1vbi1jaGlwIGludGVyY29ubmVjdCwgb3Igc29tZXRoaW5nIHJlc2lkaW5nIGF0IGEgaGlnaGVyIGxldmVsIG9mIGFic3RyYWN0aW9uPyBJcyB0aGlzIGNvbWluZyBmcm9tIHRoZSBib290bG9hZGVyLCB0aGUga2VybmVsLCBvciBhbiBhcHBsaWNhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGlkZW50aWZpZXIgYmFjayB0byBpdHMgc291cmNlLCBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGhvdyBpdCdzIGRlZmluZWQgYW5kIHVzZWQuIExldCdzIHN0YXJ0IGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NjowMC4xMzYzMzMxMjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODU2MjgxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZTTF9NQ19CVVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTctXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWc6ODpjb25maWcgRlNMX01DX0JVU1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTktXFx0Ym9vbCBcXFwiUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ2OjAxLjkyMTk2NzYyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzYyMzc3OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJlYWRpbmcgdGhlIHByb3ZpZGVkIHRleHQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBGcmVlc2NhbGUgKG5vdyBOWFApIE11bHRpLUNvcmUgKE1DKSBkcml2ZXJzLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgaWRlYSBvZiB3aGF0IEknbSBsb29raW5nIGZvciDigJMgdGhpbmdzIGxpa2U6XG5cbiogICAqKk9wdGlvbnMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgb3ZlcmFsbCBNQyBkcml2ZXIgZnJhbWV3b3JrLioqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sLCB0aGUgZ2F0ZWtlZXBlciBmb3IgYWxsIHRoZSBNQy1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIEknbGwgYmUgbG9va2luZyBmb3Igc29tZXRoaW5nIGxpa2UgYENPTkZJR19GU0xfTUNgIG9yIGBGU0xfTUNfRFJJVkVSU2AuXG4qICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGluZGl2aWR1YWwgTUMgZGV2aWNlcyBvciBzdWItZHJpdmVycy4qKiBXZSBhcmUgaW4gdGhlIGZzbC1tYyBkaXJlY3RvcnksIHNvLCBnaXZlbiBpdHMgY29tbW9uIG9yZ2FuaXphdGlvbiwgSSBleHBlY3QgdG8gc2VlIHNwZWNpZmljIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBNQyBoYXJkd2FyZSBkZXZpY2VzIG9yIGZlYXR1cmVzLCBwZXJoYXBzIHN0cnVjdHVyZWQgaGllcmFyY2hpY2FsbHkuIFRoZXNlIHdvdWxkIGxpa2VseSBiZSBndWFyZGVkIGJ5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sIG9yIG90aGVyIHJlbGV2YW50IGRlcGVuZGVuY2llcy4gRm9yIGV4YW1wbGUsIHNwZWNpZmljIGRldmljZSB0eXBlcyAobGlrZSBFdGhlcm5ldCwgRE1BLCBldGMuKSB1c2luZyB0aGUgTUMgZnJhbWV3b3JrLlxuKiAgICoqRGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50IE1DIGNvbXBvbmVudHMuKiogSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgaW50ZXItcmVsYXRlZC4gQXJlIHRoZXJlIGNsZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSB2YXJpb3VzIGRldmljZSBzdWItZHJpdmVycz8gQXJlIGNlcnRhaW4gb3B0aW9ucyBvbmx5IGF2YWlsYWJsZSBpZiBvdGhlcnMgYXJlIGVuYWJsZWQ/IFRoaXMgaXMgd2hlcmUgSSBjYW4gZ2V0IGEgc2Vuc2Ugb2YgaG93IG1vZHVsYXIgYW5kIHdlbGwtZGVzaWduZWQgdGhlIGNvbmZpZ3VyYXRpb24gaXMuXG4qICAgKipEZWZhdWx0IHZhbHVlcyBhbmQgaGVscCB0ZXh0LioqIEknbSBhbHNvIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBvcHRpb25zIGFuZCB0aGUgZXhwbGFuYXRvcnkgdGV4dC4gRG8gdGhlIGRlZmF1bHRzIG1ha2Ugc2Vuc2U/IElzIHRoZSBoZWxwIHRleHQgY2xlYXIgYW5kIGluZm9ybWF0aXZlPyBHb29kIEtjb25maWcgZmlsZXMgcHJvdmlkZSBlbm91Z2ggZ3VpZGFuY2UgdG8gbWFrZSBhbiBpbmZvcm1lZCBjaG9pY2Ugd2l0aG91dCBiZWluZyBvdmVyd2hlbG1pbmcuXG4qICAgKipBbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gYXJjaGl0ZWN0dXJlIG9yIGtlcm5lbCB2ZXJzaW9uLioqIEknbSBhbnRpY2lwYXRpbmcgc29tZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhcyB0aGUgRlNMIE1DIGZyYW1ld29yayBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBhbmQgaGFyZHdhcmUgcmV2aXNpb25zLiBBbHNvLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjb21wYXRpYmlsaXR5IHNoaW1zIG9yIG9wdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQga2VybmVsIHZlcnNpb25zLlxuXG5JJ2xsIGJlIHJlYWRpbmcgdGhpcyB3aXRoIGFuIGV5ZSB0b3dhcmQgaWRlbnRpZnlpbmcgYW55IGFyZWFzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGNvdWxkIGJlIGltcHJvdmVkIGZvciBjbGFyaXR5LCBtYWludGFpbmFiaWxpdHksIG9yIHBlcmZvcm1hbmNlLiBJJ20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgZnV0dXJlIGVuaGFuY2VtZW50cyBvciBtb2RpZmljYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgd29yayBvciBwcm9qZWN0cy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IVxuXG5cbiIsIklucHV0VG9rZW5zIjozNzQ1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDY6MDYuMjg0MzQ4MDA0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MDIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgRFBBQTIgZnNsLW1jIGJ1c1xcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0IyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgRlNMX01DX0JVU1xcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkcml2ZXJcXFwiXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xBWUVSU0NBUEUgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiAoQVJNIHx8IEFSTTY0IHx8IFg4Nl9MT0NBTF9BUElDIHx8IFBQQykpKVxcbiAgMTE6XFx0XFx0c2VsZWN0IEdFTkVSSUNfTVNJX0lSUVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBEcml2ZXIgdG8gZW5hYmxlIHRoZSBidXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBRb3JJUSBEUEFBMlxcbiAgMTQ6XFx0XFx0ICBhcmNoaXRlY3R1cmUuICBUaGUgZnNsLW1jIGJ1cyBkcml2ZXIgaGFuZGxlcyBkaXNjb3Zlcnkgb2ZcXG4gIDE1OlxcdFxcdCAgRFBBQTIgb2JqZWN0cyAod2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIExpbnV4IGRldmljZXMpIGFuZFxcbiAgMTY6XFx0XFx0ICBiaW5kaW5nIG9iamVjdHMgdG8gZHJpdmVycy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIEZTTF9NQ19VQVBJX1NVUFBPUlRcXG4gIDE5OlxcdFxcdGJvb2wgXFxcIk1hbmFnZW1lbnQgQ29tcGxleCAoTUMpIHVzZXJzcGFjZSBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ2OjA2LjI4NDczMTU2NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzQxNDA1NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZTTFxcX01DXFxfQlVTIERyaXZlciBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlIGBGU0xfTUNfQlVTYCBkcml2ZXIgaGluZ2VzIG9uIGBPRmAsIGBBUkNIX0xBWUVSU0NBUEVgLCBvciBgQ09NUElMRV9URVNUYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGlzIGlzIGEgaGFyZHdhcmUgYnVzIGRyaXZlciB0YWlsb3JlZCBmb3IgRnJlZXNjYWxlJ3MgUW9ySVEgRFBBQTIgYXJjaGl0ZWN0dXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBmdXp6IHRoaXMgdGhpbmcgZWZmZWN0aXZlbHkgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD9cblxuVGhlIGNvcmUgY2hhbGxlbmdlIGlzIFFFTVUncyBpbmNvbXBsZXRlIGVtdWxhdGlvbiBvZiB0aGUgRnJlZXNjYWxlIE1DIGJ1cyAoYGZzbC1tY2ApLiBJdCdzIG5vdCBzZXQgdXAgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdXMgdG8gaW5zdGFudGlhdGUgYW5kIHBhc3MgZGV2aWNlcyB0aHJvdWdoIFZGSU8gdW5sZXNzIHRoZXJlJ3Mgc29tZSB2ZXJ5IHNwZWNpZmljIGJvYXJkIGVtdWxhdGlvbi4gRXZlbiBpZiBzdWNoIGVtdWxhdGlvbiAqZG9lcyogZXhpc3QsIHN5emthbGxlciBjdXJyZW50bHkgbGFja3MgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIHRoZXNlIGRldmljZXMgb3IgaW50ZXJmYWNlIHdpdGggdGhlbSB1bmxlc3MgdGhleSdyZSBwdXJlbHkgc29mdHdhcmUgZW11bGF0ZWQuXG5cbldlJ3JlIGRlYWxpbmcgd2l0aCBhIGhhcmR3YXJlLXNwZWNpZmljIFZGSU8gZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHBhc3NpbmcgdGhyb3VnaCBhY3R1YWwgcGh5c2ljYWwgRnJlZXNjYWxlIE1DIGRldmljZXMuIFRoaXMgcHV0cyBpdCBzcXVhcmVseSBpbiB0aGUgY2F0ZWdvcnkgb2YgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG11Y2ggbGlrZSB0aGUgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIEknbSB0aGlua2luZyBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YC5cblxuQmVmb3JlIEkgd3JpdGUgaXQgb2ZmIGNvbXBsZXRlbHksIHRob3VnaCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucy4gTGV0IG1lIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSBpZiB0aGVyZSdzICphbnkqIGZvcm0gb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZvciBgZnNsLW1jYCB0aGF0IEkgbWlnaHQgaGF2ZSBtaXNzZWQuIElmIHRoZXJlJ3MgYSBrZXJuZWwgbW9kdWxlLCBpdCdzIHdvcnRoIHNlZWluZyBob3cgY29tcGxldGUgdGhhdCBlbXVsYXRpb24gaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NjoxMi42MjYxMzk3MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTM2MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbC1tY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTItI1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjM6IyBEUEFBMiBmc2wtbWMgYnVzXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNC0jXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZz04PWNvbmZpZyBGU0xfTUNfQlVTXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWc6OTpcXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0xMC1cXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xBWUVSU0NBUEUgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiAoQVJNIHx8IEFSTTY0IHx8IFg4Nl9MT0NBTF9BUElDIHx8IFBQQykpKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTMtXFx0ICBEcml2ZXIgdG8gZW5hYmxlIHRoZSBidXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBRb3JJUSBEUEFBMlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjE0OlxcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTUtXFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfRlNMX01DX0JVUykgKz0gbWMtYnVzLWRyaXZlci5vXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTgtXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlOjk6bWMtYnVzLWRyaXZlci1vYmpzIDo9IGZzbC1tYy1idXMubyBcXFxcXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTEwLVxcdFxcdCAgICAgIG1jLXN5cy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZS0xNS1cXHRcXHQgICAgICBkcHJjLWRyaXZlci5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTY6XFx0XFx0ICAgICAgZnNsLW1jLWFsbG9jYXRvci5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTc6XFx0XFx0ICAgICAgZnNsLW1jLW1zaS5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMTgtXFx0XFx0ICAgICAgZHBtY3AubyBcXFxcXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMjEtIyBNQyB1c2Vyc3BhY2Ugc3VwcG9ydFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRlNMX01DX1VBUElfU1VQUE9SVCkgKz0gZnNsLW1jLXVhcGkub1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwYnAuYy04LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcGJwLmM6OTojaW5jbHVkZSBcXFwiZnNsLW1jLXByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwY29uLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYzo5OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcGNvbi5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwbWNwLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYzo5OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcG1jcC5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTUtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTY6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz02OD1zdGF0aWMgaW50IF9fZnNsX21jX2RldmljZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzktICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4MDogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTgxLSAqIEBvYmpfZGVzY19hcnJheTogYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzIGZvciBjaGlsZCBvYmplY3RzIGN1cnJlbnRseVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTIzPXN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZGV2aWNlX2xvb2t1cChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzNi0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEzNzogKiBAbWNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIGZvciBhIGdpdmVuIE1DIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzOC0gKiBAb2JqX2Rlc2M6IHBvaW50ZXIgdG8gdGhlIE1DIG9iamVjdCdzIGRlc2NyaXB0b3IgaW4gdGhlIE1DXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTM5LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQwOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gdW5wbHVnZ2VkIHRvIHBsdWdnZWQsIHRoZSBmc2wtbWNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDEtICogZGV2aWNlIGlzIGJvdW5kIHRvIHRoZSBjb3JyZXNwb25kaW5nIGRldmljZSBkcml2ZXIuXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQyOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gcGx1Z2dlZCB0byB1bnBsdWdnZWQsIHRoZSBmc2wtbWNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDMtICogZGV2aWNlIGlzIHVuYm91bmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgZHJpdmVyLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTY5PXN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5Mi0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE5MzogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5NC0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIGRldmljZSBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgZGV2aWNlcyBjdXJyZW50bHlcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTIwMj1zdGF0aWMgdm9pZCBkcHJjX2FkZF9uZXdfZGV2aWNlcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIyOC0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjIyOTogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIzMC0gKiBAYWxsb2NfaW50ZXJydXB0czogaWYgdHJ1ZSB0aGUgZnVuY3Rpb24gYWxsb2NhdGVzIHRoZSBpbnRlcnJ1cHQgcG9vbCxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTI0NT1pbnQgZHByY19zY2FuX29iamVjdHMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTYtICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzozNTc6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTgtICogQGFsbG9jX2ludGVycnVwdHM6IGlmIHRydWUgdGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgaW50ZXJydXB0IHBvb2wsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz01NzI9c3RhdGljIGludCBkcHJjX3NldHVwX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NjAyOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgYSBEUFJDXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAzLSAqXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz03MTE9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19zZXR1cCk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTUtICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3MTY6ICogQG1jX2RldjogUG9pbnRlciB0byBmc2wtbWMgZGV2aWNlIHJlcHJlc2VudGluZyBhIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTctICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTc1OD1zdGF0aWMgdm9pZCBkcHJjX3RlYXJkb3duX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzcxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzcyOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzMtICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTgxNT1FWFBPUlRfU1lNQk9MX0dQTChkcHJjX2NsZWFudXApO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODE5LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6ODIwOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjEtICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtOS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jOjEwOiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtMTEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTItLypcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM6ICogZnNsLW1jIG9iamVjdCBhbGxvY2F0b3IgZHJpdmVyXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00LSAqXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEyLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MTM6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xNC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTE1PXN0YXRpYyBib29sIF9fbXVzdF9jaGVjayBmc2xfbWNfaXNfYWxsb2NhdGFibGUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjMtICogZnNsX21jX3Jlc291cmNlX3Bvb2xfYWRkX2RldmljZSAtIGFkZCBhbGxvY2F0YWJsZSBvYmplY3QgdG8gYSByZXNvdXJjZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MjQ6ICogcG9vbCBvZiBhIGdpdmVuIGZzbC1tYyBidXNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNjogKiBAbWNfYnVzOiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgYnVzXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNy0gKiBAcG9vbF90eXBlOiBwb29sIHR5cGVcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI4OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjktICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zMD1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBmc2xfbWNfcmVzb3VyY2VfcG9vbF9hZGRfZGV2aWNlKHN0cnVjdCBmc2xfbWNfYnVzXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo5MjogKiBAbWNfZGV2OiBwb2ludGVyIHRvIGFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkzLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo5NDogKiBJdCBwZXJtYW5lbnRseSByZW1vdmVzIGFuIGFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2UgZnJvbSB0aGUgcmVzb3VyY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTk1LSAqIHBvb2wuIEl0J3MgYW4gZXJyb3IgaWYgdGhlIGRldmljZSBpcyBpbiB1c2UuXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1Ni0vKipcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1NzogKiBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlIC0gQWxsb2NhdGVzIGFuIGZzbC1tYyBvYmplY3Qgb2YgdGhlIGdpdmVuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNTg6ICogcG9vbCB0eXBlIGZyb20gYSBnaXZlbiBmc2wtbWMgYnVzIGluc3RhbmNlXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNTktICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2MDogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIHdoaWNoIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI2MS0gKiBhbGxvY2F0ZWQgb2JqZWN0XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI1OiAqIGZzbF9tY19vYmplY3RfZnJlZSAtIFJldHVybnMgYW4gZnNsLW1jIG9iamVjdCB0byB0aGUgcmVzb3VyY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMyNi0gKiBwb29sIHdoZXJlIGl0IGNhbWUgZnJvbS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjMyNzogKiBAbWNfYWRldjogUG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zNDM9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX29iamVjdF9mcmVlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzUxLS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozNTI6ICogSW5pdGlhbGl6ZSB0aGUgaW50ZXJydXB0IHBvb2wgYXNzb2NpYXRlZCB3aXRoIGFuIGZzbC1tYyBidXMuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTMtICogSXQgYWxsb2NhdGVzIGEgYmxvY2sgb2YgSVJRcyBmcm9tIHRoZSBHSUMtSVRTLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00MTE9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX3BvcHVsYXRlX2lycV9wb29sKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDEzLS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0MTQ6ICogVGVhcmRvd24gdGhlIGludGVycnVwdCBwb29sIGFzc29jaWF0ZWQgd2l0aCBhbiBmc2wtbWMgYnVzLlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE1LSAqIEl0IGZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgdG8gdGhlIHBvb2wsIGJhY2sgdG8gdGhlIEdJQy1JVFMuXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTQzOD1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfY2xlYW51cF9pcnFfcG9vbCk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0MC0vKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDQxOiAqIEFsbG9jYXRlIHRoZSBJUlFzIHJlcXVpcmVkIGJ5IGEgZ2l2ZW4gZnNsLW1jIGRldmljZS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0Mi0gKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTA2PUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19hbGxvY2F0ZV9pcnFzKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTA4LS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1MDk6ICogRnJlZXMgdGhlIElSUXMgdGhhdCB3ZXJlIGFsbG9jYXRlZCBmb3IgYW4gZnNsLW1jIGRldmljZS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTYyPXN0YXRpYyBpbnQgZnNsX21jX2FsbG9jYXRvcl9wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01ODUtXFx0ZGV2X2RiZyhcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1ODY6XFx0XFx0XFxcIkFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2UgYm91bmQgdG8gZnNsX21jX2FsbG9jYXRvciBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU4Ny1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTk0PXN0YXRpYyB2b2lkIGZzbF9tY19hbGxvY2F0b3JfcmVtb3ZlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNC1cXHRkZXZfZGJnKFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjYwNTpcXHRcXHRcXFwiQWxsb2NhdGFibGUgZnNsLW1jIGRldmljZSB1bmJvdW5kIGZyb20gZnNsX21jX2FsbG9jYXRvciBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNi19XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE6I2RlZmluZSBwcl9mbXQoZm10KSBcXFwiZnNsLW1jOiBcXFwiIGZtdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTItXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI1LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjY6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI4LS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyOTogKiBEZWZhdWx0IERNQSBtYXNrIGZvciBkZXZpY2VzIG9uIGEgZnNsLW1jIGJ1c1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzAtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMzPXN0YXRpYyBzdHJ1Y3QgZnNsX21jX3ZlcnNpb24gbWNfdmVyc2lvbjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzYtICogc3RydWN0IGZzbF9tYyAtIFByaXZhdGUgZGF0YSBvZiBhIFxcXCJmc2wscW9yaXEtbWNcXFwiIHBsYXRmb3JtIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mzc6ICogQHJvb3RfbWNfYnVzX2RldjogZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIHJvb3QgRFBSQ1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzgtICogQG51bV90cmFuc2xhdGlvbl9yYW5nZXM6IG51bWJlciBvZiBlbnRyaWVzIGluIGFkZHJfdHJhbnNsYXRpb25fcmFuZ2VzXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTgwPXN0YXRpYyBwaHlzX2FkZHJfdCBtY19wb3J0YWxfYmFzZV9waHlzX2FkZHI7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTgzLSAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4NDogKiBAZGV2OiB0aGUgZnNsLW1jIGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4NTogKiBAZHJ2OiB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWFyY2ggZm9yIG1hdGNoaW5nIGZzbC1tYyBvYmplY3QgdHlwZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODYtICogc3RydWN0dXJlc1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3VldmVudChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQyLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTQzOlxcdGlmIChhZGRfdWV2ZW50X3ZhcihlbnYsIFxcXCJNT0RBTElBUz1mc2wtbWM6diUwOFhkJXNcXFwiLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQ0LVxcdFxcdFxcdCAgIG1jX2Rldi1cXHUwMDNlb2JqX2Rlc2MudmVuZG9yLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yMTgtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTk6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiZnNsLW1jOnYlMDhYZCVzXFxcXG5cXFwiLCBtY19kZXYtXFx1MDAzZW9ial9kZXNjLnZlbmRvcixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIyMC1cXHRcXHRcXHRtY19kZXYtXFx1MDAzZW9ial9kZXNjLnR5cGUpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMjY9Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjMyNzpcXHQubmFtZSA9IFxcXCJmc2wtbWNcXFwiLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI4LVxcdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00OTk9c3RhdGljIGludCBtY19nZXRfdmVyc2lvbihzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTI4LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo1Mjk6ICogUmV0dXJuOlxcdG1jIHZlcnNpb24gd2hlbiBjYWxsZWQgYWZ0ZXIgZnNsLW1jLWJ1cyBwcm9iZTsgTlVMTCBvdGhlcndpc2UuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy01MzAtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTYzMj1zdGF0aWMgaW50IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2LFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTAtXFx0XFx0cmVnaW9uc1tpXS5lbmQgPSByZWdpb25zW2ldLnN0YXJ0ICsgcmVnaW9uX2Rlc2Muc2l6ZSAtIDE7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3MTE6XFx0XFx0cmVnaW9uc1tpXS5uYW1lID0gXFxcImZzbC1tYyBvYmplY3QgTU1JTyByZWdpb25cXFwiO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzEyLVxcdFxcdHJlZ2lvbnNbaV0uZmxhZ3MgPSByZWdpb25fZGVzYy5mbGFncyBcXHUwMDI2IElPUkVTT1VSQ0VfQklUUztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc0OS0vKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUwOiAqIEFkZCBhIG5ld2x5IGRpc2NvdmVyZWQgZnNsLW1jIGRldmljZSB0byBiZSB2aXNpYmxlIGluIExpbnV4XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODYtICogTGludXhcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ny0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg4OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gYW4gZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg5LSAqL1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz05MDA9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM2LVxcdCAqIGludGVycm9nYXRpbmcgdGhlIGZpcm13YXJlLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gdGhlIGRldmljZSB3YXMgbm90XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5Mzc6XFx0ICogeWV0IGRpc2NvdmVyZWQgYnkgdGhlIGZzbC1tYyBidXMsIHRodXMgdGhlIGxvb2t1cCByZXR1cm5lZCBOVUxMLlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM4LVxcdCAqIEZvcmNlIGEgcmVzY2FuIG9mIHRoZSBkZXZpY2VzIGluIHRoaXMgY29udGFpbmVyIGFuZCByZXRyeSB0aGUgbG9va3VwLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDA1PXN0YXRpYyBpbnQgZnNsX21jX2Zpcm13YXJlX2NoZWNrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTMtXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTAxNDpcXHRcXHRcXHRcXFwiZnNsLW1jOiBEUEwgcHJvY2Vzc2luZyB3YXMgbm90IHN0YXJ0ZWQsIERQQUEyIHdpbGwgbm90IHdvcmshXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTUtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDIwLVxcdFxcdGRldl9kYmcoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjE6XFx0XFx0XFx0XFxcImZzbC1tYzogRFBMIHByb2Nlc3NpbmcgaW4gcHJvZ3Jlc3MsIGRlZmVyIHByb2JlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjItXFx0XFx0cmV0dXJuIC1FUFJPQkVfREVGRVI7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjctXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTAyODpcXHRcXHRcXHRcXFwiZnNsLW1jOiBNQyBib290IGNvbXBsZXRlZCB3aXRoIGVycm9yIDB4JXhcXFxcblxcXCIsIG1jcyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDI5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xNS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjE2OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD01ODI9c3RydWN0IGZzbF9tY191YXBpIHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTU5MS0gKiBzdHJ1Y3QgZnNsX21jX2J1cyAtIGxvZ2ljYWwgYnVzIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBwaHlzaWNhbCBEUFJDXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NTkyOiAqIEBtY19kZXY6IGZzbC1tYyBkZXZpY2UgZm9yIHRoZSBidXMgZGV2aWNlIGl0c2VsZi5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC01OTMtICogQHJlc291cmNlX3Bvb2xzOiBhcnJheSBvZiByZXNvdXJjZSBwb29scyAob25lIHBvb2wgcGVyIHJlc291cmNlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xMy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYzoxNDojaW5jbHVkZSBcXFwiZnNsLW1jLXByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xNS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1pby5jLTktXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmM6MTA6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmMtMTEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvbWMtc3lzLmMtMTYtXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jOjE3OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1zeXMuYy0xOC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9vYmotYXBpLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jOjk6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL29iai1hcGkuYy0xMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDY6MTIuNjczMDgxOTY2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1MDIwMTg3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBpbiB0aGUgdmZpby1mc2wtbWMgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGB2ZmlvLWZzbC1tY2AgZHJpdmVyLCBhbmQgaXQncyBjbGVhciB0aGlzIGNvZGUgcGF0aCBpc24ndCByZWFjaGFibGUgaW4gdGhlIHdheSB3ZSdyZSBjdXJyZW50bHkgdGVzdGluZy4gVGhlIGBmc2wtbWNgIGJ1cyBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIHRoaW5nLCBzcGVjaWZpY2FsbHkgdGllZCB0byBOWFAncyBRb3JJUSBTb0NzLiBJdCB1c2VzIGBwbGF0Zm9ybV9kZXZpY2VgIGludGVybmFsbHksIGJ1dCBpdHMgZGV2aWNlIG5vZGVzIGFyZSBkZWZpbmVkIGluIHRoZSBkZXZpY2UgdHJlZSBhcyBgXCJmc2wscW9yaXEtbWNcImAuIFRoZSBpc3N1ZSBpcywgdGhlcmUncyBubyB3YXkgdG8gZW11bGF0ZSB0aGlzIGluIHN0YW5kYXJkIFFFTVUuIEkndmUgZ29uZSB0aHJvdWdoIHRoZSBRRU1VIGNvZGUsIGFuZCB0aGVyZSdzIG5vdGhpbmcgdGhlcmUgZm9yIHRoZSBgZnNsLW1jYCBidXMuIFNpbWlsYXJseSwgdGhlIGtlcm5lbCBkb2Vzbid0IGhhdmUgYW55IGtpbmQgb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBmb3IgaXQgZWl0aGVyLCBub3RoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYC5cblxuVGhlIGNvZGUgd2UncmUgbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCBpcyB0aGUgVkZJTyBkcml2ZXIgZGVzaWduZWQgZm9yIHBhc3NpbmcgdGhyb3VnaCBgZnNsLW1jYCBkZXZpY2VzLiBUbyBtYWtlIHRoYXQgd29yaywgd2UnZCBuZWVkIGFuIGFjdHVhbCBgZnNsLW1jYCBkZXZpY2UgdG8gYmluZCB0byB0aGUgVkZJTyBkcml2ZXIuIEhvd2V2ZXIsIHdlIGNhbid0IGNyZWF0ZSB0aG9zZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyBuZWl0aGVyIGluIEdDRSBub3Igd2l0aCB0aGUgUUVNVSBjb25maWd1cmF0aW9uIHN5emthbGxlciBpcyB1c2luZy4gV2UgZG9uJ3QgaGF2ZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCB3ZSBkb24ndCBoYXZlIGFueSBzb2Z0d2FyZSBzaW11bGF0aW9uIG9mIHRoZSBidXMuXG5cbkxldCdzIGxvb2sgbW9yZSBjbG9zZWx5IGF0IHRoZSBjYWxsIHBhdGg6IFdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYHZmaW9fZnNsX21jX21tYXBgIGZ1bmN0aW9uLiBWRklPIGRldmljZXMgYXJlIGNyZWF0ZWQgYnkgYmluZGluZyBhIHBoeXNpY2FsIGRldmljZSB0byB0aGUgVkZJTyBkcml2ZXIuIEluIHRoZSBjYXNlIG9mIGBmc2wtbWNgLCB0aGUgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgYXMgYW4gYGZzbF9tY19kcml2ZXJgLiBUbyBwcm9iZSB0aGlzIGRyaXZlciwgYW4gYGZzbF9tY19kZXZpY2VgIG11c3QgZXhpc3Qgb24gdGhlIGBmc2wtbWNgIGJ1cyBhbmQgYmUgYm91bmQgdG8gdGhpcyBkcml2ZXIuIFNpbmNlIHdlIGNhbid0IGNyZWF0ZSBhbnkgYGZzbF9tY19kZXZpY2VgIGluIG91ciBjdXJyZW50IHRlc3QgZW52aXJvbm1lbnQgKG5vIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiksIHRoZSBgdmZpb19mc2xfbWNfcHJvYmVgIHdpbGwgbmV2ZXIgZXZlbiBiZSBjYWxsZWQuIENvbnNlcXVlbnRseSwgbm8gVkZJTyBkZXZpY2UgaXMgZXZlciBjcmVhdGVkLlxuXG5Tbywgc2luY2UgdGhlIHByb2JlIHdvbid0IGJlIGNhbGxlZCwgdGhlIGRyaXZlciBuZXZlciBiaW5kcywgYW5kIHRoZSBWRklPIGRldmljZSB3aWxsIG5ldmVyIGV4aXN0LCB0aGlzIG1lYW5zIGB2ZmlvX2ZzbF9tY19tbWFwYCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLiBJJ20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGZvciB0aGlzIGNvZGUgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgZnNsLW1jIGJ1cywgd2hpY2ggcmVxdWlyZXMgYSBwaHlzaWNhbCBRb3JJUSBTb0MgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGJ5IGFueSBrZXJuZWwgZW11bGF0aW9uIGZyYW1ld29ya3MuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gdGhpcyBkcml2ZXIgaXMgaW5hY2Nlc3NpYmxlIGluIG91ciB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNjIsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ2OjIyLjE3NTEwNDE1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdmZpby1mc2wtbWNgIGRyaXZlciwgd2hpY2ggaXMgYSBWRklPIGRyaXZlciBmb3IgcGFzc2luZyB0aHJvdWdoIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMgZm91bmQgb24gcGh5c2ljYWwgTlhQIFFvcklRIFNvQ3MuIFN0YW5kYXJkIFFFTVUgZG9lcyBub3QgZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGJ1cywgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBjcmVhdGUgdmlydHVhbCBmc2wtbWMgZGV2aWNlcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgdmZpb19mc2xfbWNfbW1hcGAgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdmZpby1mc2wtbWNgIGRyaXZlciwgd2hpY2ggaXMgYSBWRklPIGRyaXZlciBmb3IgcGFzc2luZyB0aHJvdWdoIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMgZm91bmQgb24gcGh5c2ljYWwgTlhQIFFvcklRIFNvQ3MuIFN0YW5kYXJkIFFFTVUgZG9lcyBub3QgZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGJ1cywgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBjcmVhdGUgdmlydHVhbCBmc2wtbWMgZGV2aWNlcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgdmZpb19mc2xfbWNfbW1hcGAgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ2OjIyLjE3NTEzNjAwOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow45jx2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-19 08:44:14 +0000 UTC FinishedAt: 2026-08-19 08:46:23 +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+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB2ZmlvLWZzbC1tY2AgZHJpdmVyLCB3aGljaCBpcyBhIFZGSU8gZHJpdmVyIGZvciBwYXNzaW5nIHRocm91Z2ggRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMgZGV2aWNlcyBmb3VuZCBvbiBwaHlzaWNhbCBOWFAgUW9ySVEgU29Dcy4gU3RhbmRhcmQgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoaXMgaGFyZHdhcmUgYnVzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGNyZWF0ZSB2aXJ0dWFsIGZzbC1tYyBkZXZpY2VzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGluIGB2ZmlvX2ZzbF9tY19tbWFwYCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE2NjZmMWQyOGQ4NmNkYjQwMGQ4NzgzZWM2MjEyMzhlYTIyNmI3ZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NTo0MCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbmluZGV4IGI0YzM5NTgyMDFiMjUuLjg1ZjQ3OWRiOTM2YzYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xuQEAgLTQwNyw2ICYjNDM7NDA3LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbiBcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbiYjNDM7XHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbiYjNDM7XHRpZiAoISh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLmZsYWdzIFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxuJiM0MztcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4mIzQzO1xuIFx0dm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IG1jX2RldjtcbiBcbiBcdHJldHVybiB2ZmlvX2ZzbF9tY19tbWFwX21taW8odmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGB2ZmlvLWZzbC1tY2AgZHJpdmVyLCB3aGljaCBpcyBhIFZGSU8gZHJpdmVyIGZvciBwYXNzaW5nIHRocm91Z2ggRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMgZGV2aWNlcyBmb3VuZCBvbiBwaHlzaWNhbCBOWFAgUW9ySVEgU29Dcy4gU3RhbmRhcmQgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoaXMgaGFyZHdhcmUgYnVzLCBhbmQgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBpbiB0aGUga2VybmVsIHRvIGNyZWF0ZSB2aXJ0dWFsIGZzbC1tYyBkZXZpY2VzLiBDb25zZXF1ZW50bHksIHRoZSBtb2RpZmllZCBjb2RlIGluIGB2ZmlvX2ZzbF9tY19tbWFwYCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE2NjZmMWQyOGQ4NmNkYjQwMGQ4NzgzZWM2MjEyMzhlYTIyNmI3ZDcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NTo0MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYwppbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jCkBAIC00MDcsNiAmIzQzOzQwNywxMCBAQCBzdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsCiAJCQkmYW1wOyZhbXA7ICh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IFZNX1dSSVRFKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJLyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovCiYjNDM7CWlmICghKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLmZsYWdzICZhbXA7IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpCiYjNDM7CQl2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTsKJiM0MzsKIAl2bWEtJmd0O3ZtX3ByaXZhdGVfZGF0YSA9IG1jX2RldjsKIAogCXJldHVybiB2ZmlvX2ZzbF9tY19tbWFwX21taW8odmRldi0mZ3Q7cmVnaW9uc1tpbmRleF0sIHZtYSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVkZJTyBQYXRjaCBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWRkaW5nIGEgY2hlY2sgd2l0aGluIGB2ZmlvX2ZzbF9tY19tbWFwYC4gVGhlIGNoZWNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaXQmIzM5O3MgYXR0ZW1wdGluZyB0byBwcmV2ZW50IHJlYWQtb25seSByZWdpb25zIGZyb20gYmVpbmcgdXBncmFkZWQgdG8gd3JpdGFibGUgb25lcyB0aHJvdWdoIGBtcHJvdGVjdCgpYC4gUHJldHR5IHN0YW5kYXJkIG1pdGlnYXRpb24sIGJ1dCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgc2lnbmlmaWNhbnQgdGhpcyBjaGFuZ2UgYWN0dWFsbHkgaXMuCgpNeSBmaXJzdCB0aG91Z2h0IGlzLCAmIzM0O2NhbiB0aGlzIGV2ZW4gYmUgaGl0IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/JiMzNDsuIFRoZSBjb2RlIHJlZmVyZW5jZXMgdGhlIEZyZWVzY2FsZSBNQyBidXMsIG9yIGBmc2wtbWNgLCB3aGljaCBJIGtub3cgaXMgaGFyZHdhcmUgc3BlY2lmaWMgdG8gTlhQIFFvcklRIFNvQ3MgbGlrZSB0aG9zZSB1c2luZyBEUEFBMi4gU2luY2UgVkZJTyBkcml2ZXJzIGFyZSBnZW5lcmFsbHkgZm9yIGhhcmR3YXJlIHBhc3MtdGhyb3VnaCwgSSB3b25kZXIsIGlzIHRoaXMgaGFyZHdhcmUgYWN0dWFsbHkgZW11bGF0ZWQgYnkgUUVNVT8gSWYgbm90LCB0aGVuIHRoaXMgcGF0Y2ggaXMgbGVzcyBjcml0aWNhbCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgc2NlbmFyaW8sIGl0IHdvdWxkIG9ubHkgYmUgcmVsZXZhbnQgaW4gcGh5c2ljYWwgc2V0dXBzLgoKSWYgdGhlIGhhcmR3YXJlICppcyogZW11bGF0ZWQsIHRoZW4gdGhhdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyB0aGlzIGFyZWEuIFRoZSBmYWN0IHRoYXQgdGhlIGNvZGUgc3BlY2lmaWNhbGx5IHJlZmVycyB0byBhICYjMzQ7dmZpby0mIzM0OyBkcml2ZXIgc3VnZ2VzdHMgdGhhdCBpdCYjMzk7cyBtZWFudCBmb3IgcGFzc2luZyB0aHJvdWdoIHBoeXNpY2FsIGZzbC1tYyBkZXZpY2VzLiBTdGlsbCwgd29ydGggZXhwbG9yaW5nIGlmIHRoZXJlIGFyZSBwb3RlbnRpYWwgdmlydHVhbGl6ZWQgYXR0YWNrIHN1cmZhY2VzLgoKSeKAmWxsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdGhlIGZzbC1tYyBkcml2ZXIuIFRoYXQgc2hvdWxkIHRlbGwgbWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBhYm91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBvciBpZiB0aGVyZSBhcmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBlbXVsYXRlZCBjb21wb25lbnRzIHRoYXQgY291bGQgbWFrZSB0aGlzIHBhdGggaW50ZXJlc3RpbmcuIFRpbWUgdG8gZGlnIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVkZJT19GU0xfTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnPTE9bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy0zLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnOjQ6Y29uZmlnIFZGSU9fRlNMX01DXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNS1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgwNQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgTGFuZHNjYXBlIG9mIEludGVyZGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyBhbHdheXMgdG8gbWFwIHRoZSB0ZXJyaXRvcnksIHNvIHRvIHNwZWFrLiBCZWZvcmUgZGl2aW5nIGludG8gdGhlIHNwZWNpZmljcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIGRlcGVuZGVuY2llcyBhdCBwbGF5LiBJJiMzOTttIG5vdCBqdXN0IHRoaW5raW5nIGFib3V0IHRoZSBvYnZpb3VzLCBzdXJmYWNlLWxldmVsIGNvbm5lY3Rpb25zOyBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlICp1bmRlcmx5aW5nKiByZWxhdGlvbnNoaXBzIOKAkyB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMsIHRoZSBwb3RlbnRpYWwgZm9yIGNhc2NhZGluZyBlZmZlY3RzLCB0aGUgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cy4gV2hhdCBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyB0aGF0IHRoaXMgaGluZ2VzIG9uPyBXaGF0IGV4dGVybmFsIGZhY3RvcnMgY291bGQgaW50cm9kdWNlIHZhcmlhbmNlPyBXaGVyZSBhcmUgdGhlIHBvdGVudGlhbCBzaW5nbGUgcG9pbnRzIG9mIGZhaWx1cmUsIHRoZSBjaG9rZXBvaW50cz8gSSBuZWVkIHRvIGJ1aWxkIGEgY29tcHJlaGVuc2l2ZSBkZXBlbmRlbmN5IGdyYXBoIGluIG15IG1pbmQsIG9yIGF0IGxlYXN0IGEgaGlnaC1sZXZlbCByZXByZXNlbnRhdGlvbiBvZiBpdCwgYmVmb3JlIEkgY2FuIG1ha2UgYW55IG1lYW5pbmdmdWwgcHJvZ3Jlc3MuIFVuZGVyc3RhbmRpbmcgdGhlc2UgcmVsYXRpb25zaGlwcyBpcyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwIHRvIGFudGljaXBhdGUgdGhlIGRvbWlubyBlZmZlY3QgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHdoZW4gYSBzeXN0ZW0gaXMgaW4gdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1wmIzM0O1xuICAgMjpcdFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXG4gICAzOlx0XG4gICA0Olx0Y29uZmlnIFZGSU9fRlNMX01DXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIFFvcklRIERQQUEyIGZzbC1tYyBidXMgZGV2aWNlc1wmIzM0O1xuICAgNjpcdFx0c2VsZWN0IEVWRU5URkRcbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgRHJpdmVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgVkZJTyBRb3JJUSBEUEFBMiBmc2wtbWNcbiAgIDk6XHRcdCAgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcy4gVGhpcyBpcyByZXF1aXJlZCB0byBwYXNzdGhyb3VnaFxuICAxMDpcdFx0ICBmc2wtbWMgYnVzIGRldmljZXMgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxuICAxMTpcdFxuICAxMjpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMTM6XHRcbiAgMTQ6XHRlbmRtZW51XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI2NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIERlcGVuZGVuY3kgb24gRlNMX01DX0JVUyoqCgpPa2F5LCBzbyB0aGUgY29yZSBvZiB0aGlzIGhpbmdlcyBvbiB0aGUgc3RhdGUgb2YgYEZTTF9NQ19CVVNgLiBUaGF0JiMzOTtzIHRoZSBrZXkgdmFyaWFibGUgaGVyZS4gV2UgbmVlZCB0byBpbW1lZGlhdGVseSBkZXRlcm1pbmUgdGhlIHZhbHVlIG9yIGNvbmRpdGlvbiBvZiBgRlNMX01DX0JVU2AgdG8gcHJvY2VlZCB3aXRoIGFueSBtZWFuaW5nZnVsIGFuYWx5c2lzIG9yIG5leHQgc3RlcHMuIFRoaXMgYmVjb21lcyB0aGUgaW1tZWRpYXRlIGZvY3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9NQ19CVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDI4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkxvY2F0aW5nIGBGU0xfTUNfQlVTYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFdoZXJlIGlzIGBGU0xfTUNfQlVTYCBkZWZpbmVkIG9yIGRlY2xhcmVkIGluIHRoaXMgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB2YXJpYWJsZSBvciBidXMgaXMgaW5zdGFudGlhdGVkLCBpbml0aWFsaXplZCwgYW5kIHVsdGltYXRlbHksIHVzZWQuIElzIGl0IGEgaGFyZHdhcmUgYWRkcmVzcywgYSBzb2Z0d2FyZSBjb25zdHJ1Y3QsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY29udGV4dCBpcyBrZXkuIFdoYXQgcGFydCBvZiB0aGUgc3lzdGVtIGFtIEkgZGVhbGluZyB3aXRoPyBJcyB0aGlzIHdpdGhpbiBhIHNwZWNpZmljIElQIGNvcmUsIHBhcnQgb2YgdGhlIHN5c3RlbS1vbi1jaGlwIGludGVyY29ubmVjdCwgb3Igc29tZXRoaW5nIHJlc2lkaW5nIGF0IGEgaGlnaGVyIGxldmVsIG9mIGFic3RyYWN0aW9uPyBJcyB0aGlzIGNvbWluZyBmcm9tIHRoZSBib290bG9hZGVyLCB0aGUga2VybmVsLCBvciBhbiBhcHBsaWNhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGlkZW50aWZpZXIgYmFjayB0byBpdHMgc291cmNlLCBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB1c2VkLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9NQ19CVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjg6Y29uZmlnIEZTTF9NQ19CVVNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTktXHRib29sIFwmIzM0O1FvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NDUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmVhZGluZyB0aGUgcHJvdmlkZWQgdGV4dDoKCioqRGl2aW5nIGludG8gdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKgoKT2theSwgdGltZSB0byBjcmFjayBvcGVuIHRoZSBgZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWdgIGZpbGUuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGRyaXZlcnMuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbHJlYWR5IGhhdmUgYSBwcmV0dHkgZ29vZCBpZGVhIG9mIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciDigJMgdGhpbmdzIGxpa2U6CgoqICAgKipPcHRpb25zIGZvciBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlIG92ZXJhbGwgTUMgZHJpdmVyIGZyYW1ld29yay4qKiBUaGlzIGlzIHR5cGljYWxseSB0aGUgdG9wLWxldmVsIHN5bWJvbCwgdGhlIGdhdGVrZWVwZXIgZm9yIGFsbCB0aGUgTUMtcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0ZTTF9NQ2Agb3IgYEZTTF9NQ19EUklWRVJTYC4KKiAgICoqQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBpbmRpdmlkdWFsIE1DIGRldmljZXMgb3Igc3ViLWRyaXZlcnMuKiogV2UgYXJlIGluIHRoZSBmc2wtbWMgZGlyZWN0b3J5LCBzbywgZ2l2ZW4gaXRzIGNvbW1vbiBvcmdhbml6YXRpb24sIEkgZXhwZWN0IHRvIHNlZSBzcGVjaWZpYyBvcHRpb25zIGZvciBkaWZmZXJlbnQgTUMgaGFyZHdhcmUgZGV2aWNlcyBvciBmZWF0dXJlcywgcGVyaGFwcyBzdHJ1Y3R1cmVkIGhpZXJhcmNoaWNhbGx5LiBUaGVzZSB3b3VsZCBsaWtlbHkgYmUgZ3VhcmRlZCBieSB0aGUgdG9wLWxldmVsIHN5bWJvbCBvciBvdGhlciByZWxldmFudCBkZXBlbmRlbmNpZXMuIEZvciBleGFtcGxlLCBzcGVjaWZpYyBkZXZpY2UgdHlwZXMgKGxpa2UgRXRoZXJuZXQsIERNQSwgZXRjLikgdXNpbmcgdGhlIE1DIGZyYW1ld29yay4KKiAgICoqRGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50IE1DIGNvbXBvbmVudHMuKiogSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgaW50ZXItcmVsYXRlZC4gQXJlIHRoZXJlIGNsZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSB2YXJpb3VzIGRldmljZSBzdWItZHJpdmVycz8gQXJlIGNlcnRhaW4gb3B0aW9ucyBvbmx5IGF2YWlsYWJsZSBpZiBvdGhlcnMgYXJlIGVuYWJsZWQ/IFRoaXMgaXMgd2hlcmUgSSBjYW4gZ2V0IGEgc2Vuc2Ugb2YgaG93IG1vZHVsYXIgYW5kIHdlbGwtZGVzaWduZWQgdGhlIGNvbmZpZ3VyYXRpb24gaXMuCiogICAqKkRlZmF1bHQgdmFsdWVzIGFuZCBoZWxwIHRleHQuKiogSSYjMzk7bSBhbHNvIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBvcHRpb25zIGFuZCB0aGUgZXhwbGFuYXRvcnkgdGV4dC4gRG8gdGhlIGRlZmF1bHRzIG1ha2Ugc2Vuc2U/IElzIHRoZSBoZWxwIHRleHQgY2xlYXIgYW5kIGluZm9ybWF0aXZlPyBHb29kIEtjb25maWcgZmlsZXMgcHJvdmlkZSBlbm91Z2ggZ3VpZGFuY2UgdG8gbWFrZSBhbiBpbmZvcm1lZCBjaG9pY2Ugd2l0aG91dCBiZWluZyBvdmVyd2hlbG1pbmcuCiogICAqKkFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBiYXNlZCBvbiBhcmNoaXRlY3R1cmUgb3Iga2VybmVsIHZlcnNpb24uKiogSSYjMzk7bSBhbnRpY2lwYXRpbmcgc29tZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhcyB0aGUgRlNMIE1DIGZyYW1ld29yayBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBhbmQgaGFyZHdhcmUgcmV2aXNpb25zLiBBbHNvLCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgY29tcGF0aWJpbGl0eSBzaGltcyBvciBvcHRpb25zIHJlbGF0ZWQgdG8gZGlmZmVyZW50IGtlcm5lbCB2ZXJzaW9ucy4KCkkmIzM5O2xsIGJlIHJlYWRpbmcgdGhpcyB3aXRoIGFuIGV5ZSB0b3dhcmQgaWRlbnRpZnlpbmcgYW55IGFyZWFzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGNvdWxkIGJlIGltcHJvdmVkIGZvciBjbGFyaXR5LCBtYWludGFpbmFiaWxpdHksIG9yIHBlcmZvcm1hbmNlLiBJJiMzOTttIGFsc28gY29uc2lkZXJpbmcgcG90ZW50aWFsIGZ1dHVyZSBlbmhhbmNlbWVudHMgb3IgbW9kaWZpY2F0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IGZvciBteSBjdXJyZW50IHdvcmsgb3IgcHJvamVjdHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIERQQUEyIGZzbC1tYyBidXNcbiAgIDQ6XHQjXG4gICA1Olx0IyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLlxuICAgNjpcdCNcbiAgIDc6XHRcbiAgIDg6XHRjb25maWcgRlNMX01DX0JVU1xuICAgOTpcdFx0Ym9vbCBcJiMzNDtRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclwmIzM0O1xuICAxMDpcdFx0ZGVwZW5kcyBvbiBPRiBcdTAwMjZcdTAwMjYgKEFSQ0hfTEFZRVJTQ0FQRSB8fCAoQ09NUElMRV9URVNUIFx1MDAyNlx1MDAyNiAoQVJNIHx8IEFSTTY0IHx8IFg4Nl9MT0NBTF9BUElDIHx8IFBQQykpKVxuICAxMTpcdFx0c2VsZWN0IEdFTkVSSUNfTVNJX0lSUVxuICAxMjpcdFx0aGVscFxuICAxMzpcdFx0ICBEcml2ZXIgdG8gZW5hYmxlIHRoZSBidXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBRb3JJUSBEUEFBMlxuICAxNDpcdFx0ICBhcmNoaXRlY3R1cmUuICBUaGUgZnNsLW1jIGJ1cyBkcml2ZXIgaGFuZGxlcyBkaXNjb3Zlcnkgb2ZcbiAgMTU6XHRcdCAgRFBBQTIgb2JqZWN0cyAod2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIExpbnV4IGRldmljZXMpIGFuZFxuICAxNjpcdFx0ICBiaW5kaW5nIG9iamVjdHMgdG8gZHJpdmVycy5cbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgRlNMX01DX1VBUElfU1VQUE9SVFxuICAxOTpcdFx0Ym9vbCBcJiMzNDtNYW5hZ2VtZW50IENvbXBsZXggKE1DKSB1c2Vyc3BhY2Ugc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDA4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MDkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRlNMXF9NQ1xfQlVTIERyaXZlciBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoZSBgRlNMX01DX0JVU2AgZHJpdmVyIGhpbmdlcyBvbiBgT0ZgLCBgQVJDSF9MQVlFUlNDQVBFYCwgb3IgYENPTVBJTEVfVEVTVGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIGtub3cgdGhpcyBpcyBhIGhhcmR3YXJlIGJ1cyBkcml2ZXIgdGFpbG9yZWQgZm9yIEZyZWVzY2FsZSYjMzk7cyBRb3JJUSBEUEFBMiBhcmNoaXRlY3R1cmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIHdlIGZ1enogdGhpcyB0aGluZyBlZmZlY3RpdmVseSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PwoKVGhlIGNvcmUgY2hhbGxlbmdlIGlzIFFFTVUmIzM5O3MgaW5jb21wbGV0ZSBlbXVsYXRpb24gb2YgdGhlIEZyZWVzY2FsZSBNQyBidXMgKGBmc2wtbWNgKS4gSXQmIzM5O3Mgbm90IHNldCB1cCBpbiBhIHdheSB0aGF0IGFsbG93cyB1cyB0byBpbnN0YW50aWF0ZSBhbmQgcGFzcyBkZXZpY2VzIHRocm91Z2ggVkZJTyB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSB2ZXJ5IHNwZWNpZmljIGJvYXJkIGVtdWxhdGlvbi4gRXZlbiBpZiBzdWNoIGVtdWxhdGlvbiAqZG9lcyogZXhpc3QsIHN5emthbGxlciBjdXJyZW50bHkgbGFja3MgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIHRoZXNlIGRldmljZXMgb3IgaW50ZXJmYWNlIHdpdGggdGhlbSB1bmxlc3MgdGhleSYjMzk7cmUgcHVyZWx5IHNvZnR3YXJlIGVtdWxhdGVkLgoKV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGhhcmR3YXJlLXNwZWNpZmljIFZGSU8gZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHBhc3NpbmcgdGhyb3VnaCBhY3R1YWwgcGh5c2ljYWwgRnJlZXNjYWxlIE1DIGRldmljZXMuIFRoaXMgcHV0cyBpdCBzcXVhcmVseSBpbiB0aGUgY2F0ZWdvcnkgb2YgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG11Y2ggbGlrZSB0aGUgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIEkmIzM5O20gdGhpbmtpbmcgZHJpdmVycyBsaWtlIGBtbHhzd2AsIGBwZHNfY29yZWAsIGBxZWRgLCBgaW9uaWNgLCBhbmQgYGFtZGdwdWAuCgpCZWZvcmUgSSB3cml0ZSBpdCBvZmYgY29tcGxldGVseSwgdGhvdWdoLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLiBMZXQgbWUgcXVpY2tseSBzZWFyY2ggdGhlIGtlcm5lbCBzb3VyY2UgdG8gc2VlIGlmIHRoZXJlJiMzOTtzICphbnkqIGZvcm0gb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZvciBgZnNsLW1jYCB0aGF0IEkgbWlnaHQgaGF2ZSBtaXNzZWQuIElmIHRoZXJlJiMzOTtzIGEga2VybmVsIG1vZHVsZSwgaXQmIzM5O3Mgd29ydGggc2VlaW5nIGhvdyBjb21wbGV0ZSB0aGF0IGVtdWxhdGlvbiBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnNsLW1jJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0yLSNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjM6IyBEUEFBMiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy00LSNcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZz04PWNvbmZpZyBGU0xfTUNfQlVTXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzo5Olx0Ym9vbCBcJiMzNDtRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTAtXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXHUwMDI2XHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTMtXHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzoxNDpcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0xNS1cdCAgRFBBQTIgb2JqZWN0cyAod2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIExpbnV4IGRldmljZXMpIGFuZFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZT03PW9iai0kKENPTkZJR19GU0xfTUNfQlVTKSAmIzQzOz0gbWMtYnVzLWRyaXZlci5vXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtOC1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZTo5Om1jLWJ1cy1kcml2ZXItb2JqcyA6PSBmc2wtbWMtYnVzLm8gXFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZS0xMC1cdFx0ICAgICAgbWMtc3lzLm8gXFxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMTUtXHRcdCAgICAgIGRwcmMtZHJpdmVyLm8gXFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToxNjpcdFx0ICAgICAgZnNsLW1jLWFsbG9jYXRvci5vIFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTc6XHRcdCAgICAgIGZzbC1tYy1tc2kubyBcXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTE4LVx0XHQgICAgICBkcG1jcC5vIFxcXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTIxLSMgTUMgdXNlcnNwYWNlIHN1cHBvcnRcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRlNMX01DX1VBUElfU1VQUE9SVCkgJiM0Mzs9IGZzbC1tYy11YXBpLm9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jLTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jOjk6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL2RwYnAuYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYy04LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwY29uLmM6OTojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYy04LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwbWNwLmM6OTojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE2OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTY4PXN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzktICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgwOiAqIEBtY19idXNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIERQUkMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MS0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgb2JqZWN0cyBjdXJyZW50bHlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xMjM9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19kZXZpY2VfbG9va3VwKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzNi0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTM3OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgZm9yIGEgZ2l2ZW4gTUMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMzgtICogQG9ial9kZXNjOiBwb2ludGVyIHRvIHRoZSBNQyBvYmplY3QmIzM5O3MgZGVzY3JpcHRvciBpbiB0aGUgTUNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzOS0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQwOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gdW5wbHVnZ2VkIHRvIHBsdWdnZWQsIHRoZSBmc2wtbWNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE0MS0gKiBkZXZpY2UgaXMgYm91bmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZGV2aWNlIGRyaXZlci5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE0MjogKiBJZiB0aGUgcGx1Z2dlZCBzdGF0ZSBoYXMgY2hhbmdlZCBmcm9tIHBsdWdnZWQgdG8gdW5wbHVnZ2VkLCB0aGUgZnNsLW1jXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDMtICogZGV2aWNlIGlzIHVuYm91bmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgZHJpdmVyLlxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTE2OT1zdGF0aWMgdm9pZCBmc2xfbWNfb2JqX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTkyLSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxOTM6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5NC0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIGRldmljZSBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgZGV2aWNlcyBjdXJyZW50bHlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yMDI9c3RhdGljIHZvaWQgZHByY19hZGRfbmV3X2RldmljZXMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjI4LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoyMjk6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIzMC0gKiBAYWxsb2NfaW50ZXJydXB0czogaWYgdHJ1ZSB0aGUgZnVuY3Rpb24gYWxsb2NhdGVzIHRoZSBpbnRlcnJ1cHQgcG9vbCxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yNDU9aW50IGRwcmNfc2Nhbl9vYmplY3RzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTM1Ni0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MzU3OiAqIEBtY19idXNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIERQUkMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTgtICogQGFsbG9jX2ludGVycnVwdHM6IGlmIHRydWUgdGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgaW50ZXJydXB0IHBvb2wsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NTcyPXN0YXRpYyBpbnQgZHByY19zZXR1cF9pcnEoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02MDEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjYwMjogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIGEgRFBSQ1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAzLSAqXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NzExPUVYUE9SVF9TWU1CT0xfR1BMKGRwcmNfc2V0dXApO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcxNS0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzE2OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgYSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTctICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz03NTg9c3RhdGljIHZvaWQgZHByY190ZWFyZG93bl9pcnEoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjc3MjogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzMtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz04MTU9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19jbGVhbnVwKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MTktICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgyMDogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjEtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jLTktXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jOjEwOiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtMTEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yLS8qXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM6ICogZnNsLW1jIG9iamVjdCBhbGxvY2F0b3IgZHJpdmVyXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEyLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxMzojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0xNT1zdGF0aWMgYm9vbCBfX211c3RfY2hlY2sgZnNsX21jX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yMy0gKiBmc2xfbWNfcmVzb3VyY2VfcG9vbF9hZGRfZGV2aWNlIC0gYWRkIGFsbG9jYXRhYmxlIG9iamVjdCB0byBhIHJlc291cmNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI0OiAqIHBvb2wgb2YgYSBnaXZlbiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2OiAqIEBtY19idXM6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBidXNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjctICogQHBvb2xfdHlwZTogcG9vbCB0eXBlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI4OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yOS0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzA9c3RhdGljIGludCBfX211c3RfY2hlY2sgZnNsX21jX3Jlc291cmNlX3Bvb2xfYWRkX2RldmljZShzdHJ1Y3QgZnNsX21jX2J1c1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtOTEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6OTI6ICogQG1jX2RldjogcG9pbnRlciB0byBhbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkzLSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjk0OiAqIEl0IHBlcm1hbmVudGx5IHJlbW92ZXMgYW4gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZSBmcm9tIHRoZSByZXNvdXJjZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy05NS0gKiBwb29sLiBJdCYjMzk7cyBhbiBlcnJvciBpZiB0aGUgZGV2aWNlIGlzIGluIHVzZS5cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNTYtLyoqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1NzogKiBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlIC0gQWxsb2NhdGVzIGFuIGZzbC1tYyBvYmplY3Qgb2YgdGhlIGdpdmVuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1ODogKiBwb29sIHR5cGUgZnJvbSBhIGdpdmVuIGZzbC1tYyBidXMgaW5zdGFuY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjU5LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2MDogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIHdoaWNoIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjYxLSAqIGFsbG9jYXRlZCBvYmplY3Rcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMyNC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI1OiAqIGZzbF9tY19vYmplY3RfZnJlZSAtIFJldHVybnMgYW4gZnNsLW1jIG9iamVjdCB0byB0aGUgcmVzb3VyY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI2LSAqIHBvb2wgd2hlcmUgaXQgY2FtZSBmcm9tLlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozMjc6ICogQG1jX2FkZXY6IFBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzQzPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19vYmplY3RfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTEtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzUyOiAqIEluaXRpYWxpemUgdGhlIGludGVycnVwdCBwb29sIGFzc29jaWF0ZWQgd2l0aCBhbiBmc2wtbWMgYnVzLlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTMtICogSXQgYWxsb2NhdGVzIGEgYmxvY2sgb2YgSVJRcyBmcm9tIHRoZSBHSUMtSVRTLlxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NDExPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19wb3B1bGF0ZV9pcnFfcG9vbCk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00MTMtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDE0OiAqIFRlYXJkb3duIHRoZSBpbnRlcnJ1cHQgcG9vbCBhc3NvY2lhdGVkIHdpdGggYW4gZnNsLW1jIGJ1cy5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE1LSAqIEl0IGZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgdG8gdGhlIHBvb2wsIGJhY2sgdG8gdGhlIEdJQy1JVFMuXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00Mzg9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2NsZWFudXBfaXJxX3Bvb2wpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDQwLS8qXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjQ0MTogKiBBbGxvY2F0ZSB0aGUgSVJRcyByZXF1aXJlZCBieSBhIGdpdmVuIGZzbC1tYyBkZXZpY2UuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0Mi0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTUwNj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfYWxsb2NhdGVfaXJxcyk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MDgtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTA5OiAqIEZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgZm9yIGFuIGZzbC1tYyBkZXZpY2UuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTU2Mj1zdGF0aWMgaW50IGZzbF9tY19hbGxvY2F0b3JfcHJvYmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU4NS1cdGRldl9kYmcoXHUwMDI2bWNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTg2Olx0XHRcJiMzNDtBbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlIGJvdW5kIHRvIGZzbF9tY19hbGxvY2F0b3IgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTg3LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz01OTQ9c3RhdGljIHZvaWQgZnNsX21jX2FsbG9jYXRvcl9yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNC1cdGRldl9kYmcoXHUwMDI2bWNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NjA1Olx0XHRcJiMzNDtBbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlIHVuYm91bmQgZnJvbSBmc2xfbWNfYWxsb2NhdG9yIGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNi19XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMC1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE6I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtmc2wtbWM6IFwmIzM0OyBmbXRcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTItXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjY6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjgtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mjk6ICogRGVmYXVsdCBETUEgbWFzayBmb3IgZGV2aWNlcyBvbiBhIGZzbC1tYyBidXNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzAtICovXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMz1zdGF0aWMgc3RydWN0IGZzbF9tY192ZXJzaW9uIG1jX3ZlcnNpb247XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zNi0gKiBzdHJ1Y3QgZnNsX21jIC0gUHJpdmF0ZSBkYXRhIG9mIGEgXCYjMzQ7ZnNsLHFvcmlxLW1jXCYjMzQ7IHBsYXRmb3JtIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozNzogKiBAcm9vdF9tY19idXNfZGV2OiBmc2wtbWMgZGV2aWNlIHJlcHJlc2VudGluZyB0aGUgcm9vdCBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM4LSAqIEBudW1fdHJhbnNsYXRpb25fcmFuZ2VzOiBudW1iZXIgb2YgZW50cmllcyBpbiBhZGRyX3RyYW5zbGF0aW9uX3Jhbmdlc1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9ODA9c3RhdGljIHBoeXNfYWRkcl90IG1jX3BvcnRhbF9iYXNlX3BoeXNfYWRkcjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTgzLSAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg0OiAqIEBkZXY6IHRoZSBmc2wtbWMgZGV2aWNlIHRvIG1hdGNoIGFnYWluc3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODU6ICogQGRydjogdGhlIGRldmljZSBkcml2ZXIgdG8gc2VhcmNoIGZvciBtYXRjaGluZyBmc2wtbWMgb2JqZWN0IHR5cGVcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODYtICogc3RydWN0dXJlc1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNDItXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjE0MzpcdGlmIChhZGRfdWV2ZW50X3ZhcihlbnYsIFwmIzM0O01PREFMSUFTPWZzbC1tYzp2JTA4WGQlc1wmIzM0OyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQ0LVx0XHRcdCAgIG1jX2Rldi1cdTAwM2VvYmpfZGVzYy52ZW5kb3IsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjE4LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTk6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O2ZzbC1tYzp2JTA4WGQlc1xcblwmIzM0OywgbWNfZGV2LVx1MDAzZW9ial9kZXNjLnZlbmRvcixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjIwLVx0XHRcdG1jX2Rldi1cdTAwM2VvYmpfZGVzYy50eXBlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMyNj1jb25zdCBzdHJ1Y3QgYnVzX3R5cGUgZnNsX21jX2J1c190eXBlID0ge1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjc6XHQubmFtZSA9IFwmIzM0O2ZzbC1tY1wmIzM0OyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI4LVx0LmRyaXZlcl9vdmVycmlkZSA9IHRydWUsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00OTk9c3RhdGljIGludCBtY19nZXRfdmVyc2lvbihzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTUyOC0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo1Mjk6ICogUmV0dXJuOlx0bWMgdmVyc2lvbiB3aGVuIGNhbGxlZCBhZnRlciBmc2wtbWMtYnVzIHByb2JlOyBOVUxMIG90aGVyd2lzZS5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTMwLSAqL1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NjMyPXN0YXRpYyBpbnQgZnNsX21jX2RldmljZV9nZXRfbW1pb19yZWdpb25zKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTAtXHRcdHJlZ2lvbnNbaV0uZW5kID0gcmVnaW9uc1tpXS5zdGFydCAmIzQzOyByZWdpb25fZGVzYy5zaXplIC0gMTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzExOlx0XHRyZWdpb25zW2ldLm5hbWUgPSBcJiMzNDtmc2wtbWMgb2JqZWN0IE1NSU8gcmVnaW9uXCYjMzQ7O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTItXHRcdHJlZ2lvbnNbaV0uZmxhZ3MgPSByZWdpb25fZGVzYy5mbGFncyBcdTAwMjYgSU9SRVNPVVJDRV9CSVRTO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NDktLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUwOiAqIEFkZCBhIG5ld2x5IGRpc2NvdmVyZWQgZnNsLW1jIGRldmljZSB0byBiZSB2aXNpYmxlIGluIExpbnV4XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1MS0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4NC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ni0gKiBMaW51eFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODctICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg4OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gYW4gZnNsLW1jIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODktICovXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz05MDA9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldixcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkzNi1cdCAqIGludGVycm9nYXRpbmcgdGhlIGZpcm13YXJlLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gdGhlIGRldmljZSB3YXMgbm90XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjkzNzpcdCAqIHlldCBkaXNjb3ZlcmVkIGJ5IHRoZSBmc2wtbWMgYnVzLCB0aHVzIHRoZSBsb29rdXAgcmV0dXJuZWQgTlVMTC5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM4LVx0ICogRm9yY2UgYSByZXNjYW4gb2YgdGhlIGRldmljZXMgaW4gdGhpcyBjb250YWluZXIgYW5kIHJldHJ5IHRoZSBsb29rdXAuXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDA1PXN0YXRpYyBpbnQgZnNsX21jX2Zpcm13YXJlX2NoZWNrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDEzLVx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMDE0Olx0XHRcdFwmIzM0O2ZzbC1tYzogRFBMIHByb2Nlc3Npbmcgd2FzIG5vdCBzdGFydGVkLCBEUEFBMiB3aWxsIG5vdCB3b3JrIVxcblwmIzM0Oyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTUtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjAtXHRcdGRldl9kYmcoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjE6XHRcdFx0XCYjMzQ7ZnNsLW1jOiBEUEwgcHJvY2Vzc2luZyBpbiBwcm9ncmVzcywgZGVmZXIgcHJvYmVcXG5cJiMzNDspO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDIyLVx0XHRyZXR1cm4gLUVQUk9CRV9ERUZFUjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjctXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjg6XHRcdFx0XCYjMzQ7ZnNsLW1jOiBNQyBib290IGNvbXBsZXRlZCB3aXRoIGVycm9yIDB4JXhcXG5cJiMzNDssIG1jcyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjktXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTUtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjE2OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTctXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NTgyPXN0cnVjdCBmc2xfbWNfdWFwaSB7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNTkxLSAqIHN0cnVjdCBmc2xfbWNfYnVzIC0gbG9naWNhbCBidXMgdGhhdCBjb3JyZXNwb25kcyB0byBhIHBoeXNpY2FsIERQUkNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjU5MjogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIGZvciB0aGUgYnVzIGRldmljZSBpdHNlbGYuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC01OTMtICogQHJlc291cmNlX3Bvb2xzOiBhcnJheSBvZiByZXNvdXJjZSBwb29scyAob25lIHBvb2wgcGVyIHJlc291cmNlIHR5cGUpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy11YXBpLmMtMTMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYzoxNDojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xNS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvbWMtaW8uYy05LVxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmM6MTA6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmMtMTEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jLTE2LVxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1zeXMuYy0xOC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jLTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jOjk6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL29iai1hcGkuYy0xMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNjIKCQkJCQkJCW91dHB1dDogMTQyCgkJCQkJCQl0aG91Z2h0czogNjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgaW4gdGhlIHZmaW8tZnNsLW1jIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGB2ZmlvLWZzbC1tY2AgZHJpdmVyLCBhbmQgaXQmIzM5O3MgY2xlYXIgdGhpcyBjb2RlIHBhdGggaXNuJiMzOTt0IHJlYWNoYWJsZSBpbiB0aGUgd2F5IHdlJiMzOTtyZSBjdXJyZW50bHkgdGVzdGluZy4gVGhlIGBmc2wtbWNgIGJ1cyBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIHRoaW5nLCBzcGVjaWZpY2FsbHkgdGllZCB0byBOWFAmIzM5O3MgUW9ySVEgU29Dcy4gSXQgdXNlcyBgcGxhdGZvcm1fZGV2aWNlYCBpbnRlcm5hbGx5LCBidXQgaXRzIGRldmljZSBub2RlcyBhcmUgZGVmaW5lZCBpbiB0aGUgZGV2aWNlIHRyZWUgYXMgYCYjMzQ7ZnNsLHFvcmlxLW1jJiMzNDtgLiBUaGUgaXNzdWUgaXMsIHRoZXJlJiMzOTtzIG5vIHdheSB0byBlbXVsYXRlIHRoaXMgaW4gc3RhbmRhcmQgUUVNVS4gSSYjMzk7dmUgZ29uZSB0aHJvdWdoIHRoZSBRRU1VIGNvZGUsIGFuZCB0aGVyZSYjMzk7cyBub3RoaW5nIHRoZXJlIGZvciB0aGUgYGZzbC1tY2AgYnVzLiBTaW1pbGFybHksIHRoZSBrZXJuZWwgZG9lc24mIzM5O3QgaGF2ZSBhbnkga2luZCBvZiBzb2Z0d2FyZSBlbXVsYXRpb24gZnJhbWV3b3JrIGZvciBpdCBlaXRoZXIsIG5vdGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gLgoKVGhlIGNvZGUgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYCwgaXMgdGhlIFZGSU8gZHJpdmVyIGRlc2lnbmVkIGZvciBwYXNzaW5nIHRocm91Z2ggYGZzbC1tY2AgZGV2aWNlcy4gVG8gbWFrZSB0aGF0IHdvcmssIHdlJiMzOTtkIG5lZWQgYW4gYWN0dWFsIGBmc2wtbWNgIGRldmljZSB0byBiaW5kIHRvIHRoZSBWRklPIGRyaXZlci4gSG93ZXZlciwgd2UgY2FuJiMzOTt0IGNyZWF0ZSB0aG9zZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyBuZWl0aGVyIGluIEdDRSBub3Igd2l0aCB0aGUgUUVNVSBjb25maWd1cmF0aW9uIHN5emthbGxlciBpcyB1c2luZy4gV2UgZG9uJiMzOTt0IGhhdmUgdGhlIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgd2UgZG9uJiMzOTt0IGhhdmUgYW55IHNvZnR3YXJlIHNpbXVsYXRpb24gb2YgdGhlIGJ1cy4KCkxldCYjMzk7cyBsb29rIG1vcmUgY2xvc2VseSBhdCB0aGUgY2FsbCBwYXRoOiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgdmZpb19mc2xfbWNfbW1hcGAgZnVuY3Rpb24uIFZGSU8gZGV2aWNlcyBhcmUgY3JlYXRlZCBieSBiaW5kaW5nIGEgcGh5c2ljYWwgZGV2aWNlIHRvIHRoZSBWRklPIGRyaXZlci4gSW4gdGhlIGNhc2Ugb2YgYGZzbC1tY2AsIHRoZSBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBhcyBhbiBgZnNsX21jX2RyaXZlcmAuIFRvIHByb2JlIHRoaXMgZHJpdmVyLCBhbiBgZnNsX21jX2RldmljZWAgbXVzdCBleGlzdCBvbiB0aGUgYGZzbC1tY2AgYnVzIGFuZCBiZSBib3VuZCB0byB0aGlzIGRyaXZlci4gU2luY2Ugd2UgY2FuJiMzOTt0IGNyZWF0ZSBhbnkgYGZzbF9tY19kZXZpY2VgIGluIG91ciBjdXJyZW50IHRlc3QgZW52aXJvbm1lbnQgKG5vIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiksIHRoZSBgdmZpb19mc2xfbWNfcHJvYmVgIHdpbGwgbmV2ZXIgZXZlbiBiZSBjYWxsZWQuIENvbnNlcXVlbnRseSwgbm8gVkZJTyBkZXZpY2UgaXMgZXZlciBjcmVhdGVkLgoKU28sIHNpbmNlIHRoZSBwcm9iZSB3b24mIzM5O3QgYmUgY2FsbGVkLCB0aGUgZHJpdmVyIG5ldmVyIGJpbmRzLCBhbmQgdGhlIFZGSU8gZGV2aWNlIHdpbGwgbmV2ZXIgZXhpc3QsIHRoaXMgbWVhbnMgYHZmaW9fZnNsX21jX21tYXBgIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUuIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGZvciB0aGlzIGNvZGUgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgZnNsLW1jIGJ1cywgd2hpY2ggcmVxdWlyZXMgYSBwaHlzaWNhbCBRb3JJUSBTb0MgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGJ5IGFueSBrZXJuZWwgZW11bGF0aW9uIGZyYW1ld29ya3MuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gdGhpcyBkcml2ZXIgaXMgaW5hY2Nlc3NpYmxlIGluIG91ciB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMDg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHZmaW8tZnNsLW1jYCBkcml2ZXIsIHdoaWNoIGlzIGEgVkZJTyBkcml2ZXIgZm9yIHBhc3NpbmcgdGhyb3VnaCBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIHBoeXNpY2FsIE5YUCBRb3JJUSBTb0NzLiBTdGFuZGFyZCBRRU1VIGRvZXMgbm90IGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBidXMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdG8gY3JlYXRlIHZpcnR1YWwgZnNsLW1jIGRldmljZXMuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYHZmaW9fZnNsX21jX21tYXBgIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHZmaW8tZnNsLW1jYCBkcml2ZXIsIHdoaWNoIGlzIGEgVkZJTyBkcml2ZXIgZm9yIHBhc3NpbmcgdGhyb3VnaCBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIHBoeXNpY2FsIE5YUCBRb3JJUSBTb0NzLiBTdGFuZGFyZCBRRU1VIGRvZXMgbm90IGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBidXMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdG8gY3JlYXRlIHZpcnR1YWwgZnNsLW1jIGRldmljZXMuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYHZmaW9fZnNsX21jX21tYXBgIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAwODo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDU6NDEuOTE3MTYyNTkxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAyNTc5ODYzMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYHZmaW8tZnNsLW1jYCBkcml2ZXIsIHdoaWNoIGlzIGEgVkZJTyBkcml2ZXIgZm9yIHBhc3NpbmcgdGhyb3VnaCBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIHBoeXNpY2FsIE5YUCBRb3JJUSBTb0NzLiBTdGFuZGFyZCBRRU1VIGRvZXMgbm90IGVtdWxhdGUgdGhpcyBoYXJkd2FyZSBidXMsIGFuZCB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZnJhbWV3b3JrIGluIHRoZSBrZXJuZWwgdG8gY3JlYXRlIHZpcnR1YWwgZnNsLW1jIGRldmljZXMuIENvbnNlcXVlbnRseSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gYHZmaW9fZnNsX21jX21tYXBgIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NTo0MS45MTcxNzA5MTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODcxODA2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNjY2ZjFkMjhkODZjZGI0MDBkODc4M2VjNjIxMjM4ZWEyMjZiN2Q3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDE5IDA4OjQ1OjQwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xcbmluZGV4IGI0YzM5NTgyMDFiMjUuLjg1ZjQ3OWRiOTM2YzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuKysrIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuQEAgLTQwNyw2ICs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiBcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xcbiBcXG4gXFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDU6NDMuMjA1MjQ1MDM0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzg5Njk4ODg2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdmZpby1mc2wtbWNgIGRyaXZlciwgd2hpY2ggaXMgYSBWRklPIGRyaXZlciBmb3IgcGFzc2luZyB0aHJvdWdoIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMgZm91bmQgb24gcGh5c2ljYWwgTlhQIFFvcklRIFNvQ3MuIFN0YW5kYXJkIFFFTVUgZG9lcyBub3QgZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGJ1cywgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBjcmVhdGUgdmlydHVhbCBmc2wtbWMgZGV2aWNlcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgdmZpb19mc2xfbWNfbW1hcGAgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE2NjZmMWQyOGQ4NmNkYjQwMGQ4NzgzZWM2MjEyMzhlYTIyNmI3ZDdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAwODo0NTo0MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xuaW5kZXggYjRjMzk1ODIwMWIyNS4uODVmNDc5ZGI5MzZjNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xuKysrIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5AQCAtNDA3LDYgKzQwNywxMCBAQCBzdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4rXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cbitcdGlmICghKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXHUwMDI2IFZGSU9fUkVHSU9OX0lORk9fRkxBR19XUklURSkpXG4rXHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuK1xuIFx0dm1hLVx1MDAzZXZtX3ByaXZhdGVfZGF0YSA9IG1jX2RldjtcbiBcbiBcdHJldHVybiB2ZmlvX2ZzbF9tY19tbWFwX21taW8odmRldi1cdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ1OjQzLjIwNTI0OTEyNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5OTI1MjE3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVkZJTyBQYXRjaCBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGEgY2hlY2sgd2l0aGluIGB2ZmlvX2ZzbF9tY19tbWFwYC4gVGhlIGNoZWNrIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaXQncyBhdHRlbXB0aW5nIHRvIHByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbnMgZnJvbSBiZWluZyB1cGdyYWRlZCB0byB3cml0YWJsZSBvbmVzIHRocm91Z2ggYG1wcm90ZWN0KClgLiBQcmV0dHkgc3RhbmRhcmQgbWl0aWdhdGlvbiwgYnV0IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBzaWduaWZpY2FudCB0aGlzIGNoYW5nZSBhY3R1YWxseSBpcy5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgXCJjYW4gdGhpcyBldmVuIGJlIGhpdCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50P1wiLiBUaGUgY29kZSByZWZlcmVuY2VzIHRoZSBGcmVlc2NhbGUgTUMgYnVzLCBvciBgZnNsLW1jYCwgd2hpY2ggSSBrbm93IGlzIGhhcmR3YXJlIHNwZWNpZmljIHRvIE5YUCBRb3JJUSBTb0NzIGxpa2UgdGhvc2UgdXNpbmcgRFBBQTIuIFNpbmNlIFZGSU8gZHJpdmVycyBhcmUgZ2VuZXJhbGx5IGZvciBoYXJkd2FyZSBwYXNzLXRocm91Z2gsIEkgd29uZGVyLCBpcyB0aGlzIGhhcmR3YXJlIGFjdHVhbGx5IGVtdWxhdGVkIGJ5IFFFTVU/IElmIG5vdCwgdGhlbiB0aGlzIHBhdGNoIGlzIGxlc3MgY3JpdGljYWwgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIHNjZW5hcmlvLCBpdCB3b3VsZCBvbmx5IGJlIHJlbGV2YW50IGluIHBoeXNpY2FsIHNldHVwcy5cblxuSWYgdGhlIGhhcmR3YXJlICppcyogZW11bGF0ZWQsIHRoZW4gdGhhdCBvcGVucyB1cCB0aGUgcG9zc2liaWxpdHkgb2YgZnV6emluZyB0aGlzIGFyZWEuIFRoZSBmYWN0IHRoYXQgdGhlIGNvZGUgc3BlY2lmaWNhbGx5IHJlZmVycyB0byBhIFwidmZpby1cIiBkcml2ZXIgc3VnZ2VzdHMgdGhhdCBpdCdzIG1lYW50IGZvciBwYXNzaW5nIHRocm91Z2ggcGh5c2ljYWwgZnNsLW1jIGRldmljZXMuIFN0aWxsLCB3b3J0aCBleHBsb3JpbmcgaWYgdGhlcmUgYXJlIHBvdGVudGlhbCB2aXJ0dWFsaXplZCBhdHRhY2sgc3VyZmFjZXMuXG5cbknigJlsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBmc2wtbWMgZHJpdmVyLiBUaGF0IHNob3VsZCB0ZWxsIG1lIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgYWJvdXQgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gb3IgaWYgdGhlcmUgYXJlIGFueSBkZXBlbmRlbmNpZXMgb24gb3RoZXIgZW11bGF0ZWQgY29tcG9uZW50cyB0aGF0IGNvdWxkIG1ha2UgdGhpcyBwYXRoIGludGVyZXN0aW5nLiBUaW1lIHRvIGRpZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwODEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NTo1MC4xOTc3NzQ3MTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY2ODA2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fRlNMX01DXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc9MT1tZW51IFxcXCJWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy0zLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZzo0OmNvbmZpZyBWRklPX0ZTTF9NQ1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy01LVxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIFFvcklRIERQQUEyIGZzbC1tYyBidXMgZGV2aWNlc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDU6NTAuMjY0NDYxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcyMTg5ODE4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgTGFuZHNjYXBlIG9mIEludGVyZGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGFsd2F5cyB0byBtYXAgdGhlIHRlcnJpdG9yeSwgc28gdG8gc3BlYWsuIEJlZm9yZSBkaXZpbmcgaW50byB0aGUgc3BlY2lmaWNzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuZGFtZW50YWwgZGVwZW5kZW5jaWVzIGF0IHBsYXkuIEknbSBub3QganVzdCB0aGlua2luZyBhYm91dCB0aGUgb2J2aW91cywgc3VyZmFjZS1sZXZlbCBjb25uZWN0aW9uczsgSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhlICp1bmRlcmx5aW5nKiByZWxhdGlvbnNoaXBzIOKAkyB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMsIHRoZSBwb3RlbnRpYWwgZm9yIGNhc2NhZGluZyBlZmZlY3RzLCB0aGUgYXJjaGl0ZWN0dXJhbCBjb25zdHJhaW50cy4gV2hhdCBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyB0aGF0IHRoaXMgaGluZ2VzIG9uPyBXaGF0IGV4dGVybmFsIGZhY3RvcnMgY291bGQgaW50cm9kdWNlIHZhcmlhbmNlPyBXaGVyZSBhcmUgdGhlIHBvdGVudGlhbCBzaW5nbGUgcG9pbnRzIG9mIGZhaWx1cmUsIHRoZSBjaG9rZXBvaW50cz8gSSBuZWVkIHRvIGJ1aWxkIGEgY29tcHJlaGVuc2l2ZSBkZXBlbmRlbmN5IGdyYXBoIGluIG15IG1pbmQsIG9yIGF0IGxlYXN0IGEgaGlnaC1sZXZlbCByZXByZXNlbnRhdGlvbiBvZiBpdCwgYmVmb3JlIEkgY2FuIG1ha2UgYW55IG1lYW5pbmdmdWwgcHJvZ3Jlc3MuIFVuZGVyc3RhbmRpbmcgdGhlc2UgcmVsYXRpb25zaGlwcyBpcyB0aGUgY3J1Y2lhbCBmaXJzdCBzdGVwIHRvIGFudGljaXBhdGUgdGhlIGRvbWlubyBlZmZlY3QgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHdoZW4gYSBzeXN0ZW0gaXMgaW4gdXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODA1LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NTo1My45ODYzNjE3NTlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzMyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRtZW51IFxcXCJWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1xcXCJcXG4gICAyOlxcdFxcdGRlcGVuZHMgb24gRlNMX01DX0JVU1xcbiAgIDM6XFx0XFxuICAgNDpcXHRjb25maWcgVkZJT19GU0xfTUNcXG4gICA1OlxcdFxcdHRyaXN0YXRlIFxcXCJWRklPIHN1cHBvcnQgZm9yIFFvcklRIERQQUEyIGZzbC1tYyBidXMgZGV2aWNlc1xcXCJcXG4gICA2OlxcdFxcdHNlbGVjdCBFVkVOVEZEXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIERyaXZlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlIFZGSU8gUW9ySVEgRFBBQTIgZnNsLW1jXFxuICAgOTpcXHRcXHQgIChNYW5hZ2VtZW50IENvbXBsZXgpIGRldmljZXMuIFRoaXMgaXMgcmVxdWlyZWQgdG8gcGFzc3Rocm91Z2hcXG4gIDEwOlxcdFxcdCAgZnNsLW1jIGJ1cyBkZXZpY2VzIHVzaW5nIHRoZSBWRklPIGZyYW1ld29yay5cXG4gIDExOlxcdFxcbiAgMTI6XFx0XFx0ICBJZiB5b3UgZG9uJ3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRlbmRtZW51XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ1OjUzLjk4NjQxNjk5OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMDU5Mzk0ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY3kgb24gRlNMX01DX0JVUyoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIG9mIHRoaXMgaGluZ2VzIG9uIHRoZSBzdGF0ZSBvZiBgRlNMX01DX0JVU2AuIFRoYXQncyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIFdlIG5lZWQgdG8gaW1tZWRpYXRlbHkgZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvciBjb25kaXRpb24gb2YgYEZTTF9NQ19CVVNgIHRvIHByb2NlZWQgd2l0aCBhbnkgbWVhbmluZ2Z1bCBhbmFseXNpcyBvciBuZXh0IHN0ZXBzLiBUaGlzIGJlY29tZXMgdGhlIGltbWVkaWF0ZSBmb2N1cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDU6NTYuOTkyMzU5MjU5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3Njk2Mzk3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNMX01DX0JVU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NTo1Ny4wODAwODA2NjZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU2MjUwMjM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6XG5cbioqTG9jYXRpbmcgYEZTTF9NQ19CVVNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFdoZXJlIGlzIGBGU0xfTUNfQlVTYCBkZWZpbmVkIG9yIGRlY2xhcmVkIGluIHRoaXMgY29udGV4dD8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyB2YXJpYWJsZSBvciBidXMgaXMgaW5zdGFudGlhdGVkLCBpbml0aWFsaXplZCwgYW5kIHVsdGltYXRlbHksIHVzZWQuIElzIGl0IGEgaGFyZHdhcmUgYWRkcmVzcywgYSBzb2Z0d2FyZSBjb25zdHJ1Y3QsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgY29udGV4dCBpcyBrZXkuIFdoYXQgcGFydCBvZiB0aGUgc3lzdGVtIGFtIEkgZGVhbGluZyB3aXRoPyBJcyB0aGlzIHdpdGhpbiBhIHNwZWNpZmljIElQIGNvcmUsIHBhcnQgb2YgdGhlIHN5c3RlbS1vbi1jaGlwIGludGVyY29ubmVjdCwgb3Igc29tZXRoaW5nIHJlc2lkaW5nIGF0IGEgaGlnaGVyIGxldmVsIG9mIGFic3RyYWN0aW9uPyBJcyB0aGlzIGNvbWluZyBmcm9tIHRoZSBib290bG9hZGVyLCB0aGUga2VybmVsLCBvciBhbiBhcHBsaWNhdGlvbj8gVW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGlkZW50aWZpZXIgYmFjayB0byBpdHMgc291cmNlLCBhbmQgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGhvdyBpdCdzIGRlZmluZWQgYW5kIHVzZWQuIExldCdzIHN0YXJ0IGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MjgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NjowMC4xMzYzMzMxMjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODU2MjgxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZTTF9NQ19CVVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTctXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWc6ODpjb25maWcgRlNMX01DX0JVU1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTktXFx0Ym9vbCBcXFwiUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ2OjAxLjkyMTk2NzYyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzYyMzc3OTM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHJlYWRpbmcgdGhlIHByb3ZpZGVkIHRleHQ6XG5cbioqRGl2aW5nIGludG8gdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGNyYWNrIG9wZW4gdGhlIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBGcmVlc2NhbGUgKG5vdyBOWFApIE11bHRpLUNvcmUgKE1DKSBkcml2ZXJzLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBoYXZlIGEgcHJldHR5IGdvb2QgaWRlYSBvZiB3aGF0IEknbSBsb29raW5nIGZvciDigJMgdGhpbmdzIGxpa2U6XG5cbiogICAqKk9wdGlvbnMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgb3ZlcmFsbCBNQyBkcml2ZXIgZnJhbWV3b3JrLioqIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sLCB0aGUgZ2F0ZWtlZXBlciBmb3IgYWxsIHRoZSBNQy1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuIEknbGwgYmUgbG9va2luZyBmb3Igc29tZXRoaW5nIGxpa2UgYENPTkZJR19GU0xfTUNgIG9yIGBGU0xfTUNfRFJJVkVSU2AuXG4qICAgKipDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGluZGl2aWR1YWwgTUMgZGV2aWNlcyBvciBzdWItZHJpdmVycy4qKiBXZSBhcmUgaW4gdGhlIGZzbC1tYyBkaXJlY3RvcnksIHNvLCBnaXZlbiBpdHMgY29tbW9uIG9yZ2FuaXphdGlvbiwgSSBleHBlY3QgdG8gc2VlIHNwZWNpZmljIG9wdGlvbnMgZm9yIGRpZmZlcmVudCBNQyBoYXJkd2FyZSBkZXZpY2VzIG9yIGZlYXR1cmVzLCBwZXJoYXBzIHN0cnVjdHVyZWQgaGllcmFyY2hpY2FsbHkuIFRoZXNlIHdvdWxkIGxpa2VseSBiZSBndWFyZGVkIGJ5IHRoZSB0b3AtbGV2ZWwgc3ltYm9sIG9yIG90aGVyIHJlbGV2YW50IGRlcGVuZGVuY2llcy4gRm9yIGV4YW1wbGUsIHNwZWNpZmljIGRldmljZSB0eXBlcyAobGlrZSBFdGhlcm5ldCwgRE1BLCBldGMuKSB1c2luZyB0aGUgTUMgZnJhbWV3b3JrLlxuKiAgICoqRGVwZW5kZW5jaWVzIGFuZCByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50IE1DIGNvbXBvbmVudHMuKiogSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgaW50ZXItcmVsYXRlZC4gQXJlIHRoZXJlIGNsZWFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRoZSB2YXJpb3VzIGRldmljZSBzdWItZHJpdmVycz8gQXJlIGNlcnRhaW4gb3B0aW9ucyBvbmx5IGF2YWlsYWJsZSBpZiBvdGhlcnMgYXJlIGVuYWJsZWQ/IFRoaXMgaXMgd2hlcmUgSSBjYW4gZ2V0IGEgc2Vuc2Ugb2YgaG93IG1vZHVsYXIgYW5kIHdlbGwtZGVzaWduZWQgdGhlIGNvbmZpZ3VyYXRpb24gaXMuXG4qICAgKipEZWZhdWx0IHZhbHVlcyBhbmQgaGVscCB0ZXh0LioqIEknbSBhbHNvIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHRoZSBvcHRpb25zIGFuZCB0aGUgZXhwbGFuYXRvcnkgdGV4dC4gRG8gdGhlIGRlZmF1bHRzIG1ha2Ugc2Vuc2U/IElzIHRoZSBoZWxwIHRleHQgY2xlYXIgYW5kIGluZm9ybWF0aXZlPyBHb29kIEtjb25maWcgZmlsZXMgcHJvdmlkZSBlbm91Z2ggZ3VpZGFuY2UgdG8gbWFrZSBhbiBpbmZvcm1lZCBjaG9pY2Ugd2l0aG91dCBiZWluZyBvdmVyd2hlbG1pbmcuXG4qICAgKipBbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYmFzZWQgb24gYXJjaGl0ZWN0dXJlIG9yIGtlcm5lbCB2ZXJzaW9uLioqIEknbSBhbnRpY2lwYXRpbmcgc29tZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhcyB0aGUgRlNMIE1DIGZyYW1ld29yayBpcyBkZXNpZ25lZCBmb3Igc3BlY2lmaWMgYXJjaGl0ZWN0dXJlcyBhbmQgaGFyZHdhcmUgcmV2aXNpb25zLiBBbHNvLCBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBjb21wYXRpYmlsaXR5IHNoaW1zIG9yIG9wdGlvbnMgcmVsYXRlZCB0byBkaWZmZXJlbnQga2VybmVsIHZlcnNpb25zLlxuXG5JJ2xsIGJlIHJlYWRpbmcgdGhpcyB3aXRoIGFuIGV5ZSB0b3dhcmQgaWRlbnRpZnlpbmcgYW55IGFyZWFzIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGNvdWxkIGJlIGltcHJvdmVkIGZvciBjbGFyaXR5LCBtYWludGFpbmFiaWxpdHksIG9yIHBlcmZvcm1hbmNlLiBJJ20gYWxzbyBjb25zaWRlcmluZyBwb3RlbnRpYWwgZnV0dXJlIGVuaGFuY2VtZW50cyBvciBtb2RpZmljYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgZm9yIG15IGN1cnJlbnQgd29yayBvciBwcm9qZWN0cy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290IVxuXG5cbiIsIklucHV0VG9rZW5zIjozNzQ1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDY6MDYuMjg0MzQ4MDA0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4MDIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgRFBBQTIgZnNsLW1jIGJ1c1xcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0IyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0XFxuICAgODpcXHRjb25maWcgRlNMX01DX0JVU1xcbiAgIDk6XFx0XFx0Ym9vbCBcXFwiUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkcml2ZXJcXFwiXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xBWUVSU0NBUEUgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiAoQVJNIHx8IEFSTTY0IHx8IFg4Nl9MT0NBTF9BUElDIHx8IFBQQykpKVxcbiAgMTE6XFx0XFx0c2VsZWN0IEdFTkVSSUNfTVNJX0lSUVxcbiAgMTI6XFx0XFx0aGVscFxcbiAgMTM6XFx0XFx0ICBEcml2ZXIgdG8gZW5hYmxlIHRoZSBidXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBRb3JJUSBEUEFBMlxcbiAgMTQ6XFx0XFx0ICBhcmNoaXRlY3R1cmUuICBUaGUgZnNsLW1jIGJ1cyBkcml2ZXIgaGFuZGxlcyBkaXNjb3Zlcnkgb2ZcXG4gIDE1OlxcdFxcdCAgRFBBQTIgb2JqZWN0cyAod2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIExpbnV4IGRldmljZXMpIGFuZFxcbiAgMTY6XFx0XFx0ICBiaW5kaW5nIG9iamVjdHMgdG8gZHJpdmVycy5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIEZTTF9NQ19VQVBJX1NVUFBPUlRcXG4gIDE5OlxcdFxcdGJvb2wgXFxcIk1hbmFnZW1lbnQgQ29tcGxleCAoTUMpIHVzZXJzcGFjZSBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ2OjA2LjI4NDczMTU2NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzQxNDA1NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZTTFxcX01DXFxfQlVTIERyaXZlciBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlIGBGU0xfTUNfQlVTYCBkcml2ZXIgaGluZ2VzIG9uIGBPRmAsIGBBUkNIX0xBWUVSU0NBUEVgLCBvciBgQ09NUElMRV9URVNUYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyB0aGlzIGlzIGEgaGFyZHdhcmUgYnVzIGRyaXZlciB0YWlsb3JlZCBmb3IgRnJlZXNjYWxlJ3MgUW9ySVEgRFBBQTIgYXJjaGl0ZWN0dXJlLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBmdXp6IHRoaXMgdGhpbmcgZWZmZWN0aXZlbHkgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD9cblxuVGhlIGNvcmUgY2hhbGxlbmdlIGlzIFFFTVUncyBpbmNvbXBsZXRlIGVtdWxhdGlvbiBvZiB0aGUgRnJlZXNjYWxlIE1DIGJ1cyAoYGZzbC1tY2ApLiBJdCdzIG5vdCBzZXQgdXAgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdXMgdG8gaW5zdGFudGlhdGUgYW5kIHBhc3MgZGV2aWNlcyB0aHJvdWdoIFZGSU8gdW5sZXNzIHRoZXJlJ3Mgc29tZSB2ZXJ5IHNwZWNpZmljIGJvYXJkIGVtdWxhdGlvbi4gRXZlbiBpZiBzdWNoIGVtdWxhdGlvbiAqZG9lcyogZXhpc3QsIHN5emthbGxlciBjdXJyZW50bHkgbGFja3MgdGhlIGNhcGFiaWxpdHkgdG8gY3JlYXRlIHRoZXNlIGRldmljZXMgb3IgaW50ZXJmYWNlIHdpdGggdGhlbSB1bmxlc3MgdGhleSdyZSBwdXJlbHkgc29mdHdhcmUgZW11bGF0ZWQuXG5cbldlJ3JlIGRlYWxpbmcgd2l0aCBhIGhhcmR3YXJlLXNwZWNpZmljIFZGSU8gZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIHBhc3NpbmcgdGhyb3VnaCBhY3R1YWwgcGh5c2ljYWwgRnJlZXNjYWxlIE1DIGRldmljZXMuIFRoaXMgcHV0cyBpdCBzcXVhcmVseSBpbiB0aGUgY2F0ZWdvcnkgb2YgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIG11Y2ggbGlrZSB0aGUgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMuIEknbSB0aGlua2luZyBkcml2ZXJzIGxpa2UgYG1seHN3YCwgYHBkc19jb3JlYCwgYHFlZGAsIGBpb25pY2AsIGFuZCBgYW1kZ3B1YC5cblxuQmVmb3JlIEkgd3JpdGUgaXQgb2ZmIGNvbXBsZXRlbHksIHRob3VnaCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9ucy4gTGV0IG1lIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSBpZiB0aGVyZSdzICphbnkqIGZvcm0gb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZvciBgZnNsLW1jYCB0aGF0IEkgbWlnaHQgaGF2ZSBtaXNzZWQuIElmIHRoZXJlJ3MgYSBrZXJuZWwgbW9kdWxlLCBpdCdzIHdvcnRoIHNlZWluZyBob3cgY29tcGxldGUgdGhhdCBlbXVsYXRpb24gaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQwODo0NjoxMi42MjYxMzk3MjJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2OTM2MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbC1tY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTItI1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjM6IyBEUEFBMiBmc2wtbWMgYnVzXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNC0jXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZz04PWNvbmZpZyBGU0xfTUNfQlVTXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWc6OTpcXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0xMC1cXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xBWUVSU0NBUEUgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiAoQVJNIHx8IEFSTTY0IHx8IFg4Nl9MT0NBTF9BUElDIHx8IFBQQykpKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTMtXFx0ICBEcml2ZXIgdG8gZW5hYmxlIHRoZSBidXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBRb3JJUSBEUEFBMlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjE0OlxcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTUtXFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfRlNMX01DX0JVUykgKz0gbWMtYnVzLWRyaXZlci5vXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTgtXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlOjk6bWMtYnVzLWRyaXZlci1vYmpzIDo9IGZzbC1tYy1idXMubyBcXFxcXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTEwLVxcdFxcdCAgICAgIG1jLXN5cy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZS0xNS1cXHRcXHQgICAgICBkcHJjLWRyaXZlci5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTY6XFx0XFx0ICAgICAgZnNsLW1jLWFsbG9jYXRvci5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTc6XFx0XFx0ICAgICAgZnNsLW1jLW1zaS5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMTgtXFx0XFx0ICAgICAgZHBtY3AubyBcXFxcXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMjEtIyBNQyB1c2Vyc3BhY2Ugc3VwcG9ydFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRlNMX01DX1VBUElfU1VQUE9SVCkgKz0gZnNsLW1jLXVhcGkub1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwYnAuYy04LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcGJwLmM6OTojaW5jbHVkZSBcXFwiZnNsLW1jLXByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwY29uLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYzo5OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcGNvbi5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwbWNwLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYzo5OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcG1jcC5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTUtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTY6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz02OD1zdGF0aWMgaW50IF9fZnNsX21jX2RldmljZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzktICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4MDogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTgxLSAqIEBvYmpfZGVzY19hcnJheTogYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzIGZvciBjaGlsZCBvYmplY3RzIGN1cnJlbnRseVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTIzPXN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZGV2aWNlX2xvb2t1cChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzNi0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEzNzogKiBAbWNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIGZvciBhIGdpdmVuIE1DIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzOC0gKiBAb2JqX2Rlc2M6IHBvaW50ZXIgdG8gdGhlIE1DIG9iamVjdCdzIGRlc2NyaXB0b3IgaW4gdGhlIE1DXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTM5LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQwOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gdW5wbHVnZ2VkIHRvIHBsdWdnZWQsIHRoZSBmc2wtbWNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDEtICogZGV2aWNlIGlzIGJvdW5kIHRvIHRoZSBjb3JyZXNwb25kaW5nIGRldmljZSBkcml2ZXIuXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQyOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gcGx1Z2dlZCB0byB1bnBsdWdnZWQsIHRoZSBmc2wtbWNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDMtICogZGV2aWNlIGlzIHVuYm91bmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgZHJpdmVyLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTY5PXN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5Mi0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE5MzogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5NC0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIGRldmljZSBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgZGV2aWNlcyBjdXJyZW50bHlcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTIwMj1zdGF0aWMgdm9pZCBkcHJjX2FkZF9uZXdfZGV2aWNlcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIyOC0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjIyOTogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIzMC0gKiBAYWxsb2NfaW50ZXJydXB0czogaWYgdHJ1ZSB0aGUgZnVuY3Rpb24gYWxsb2NhdGVzIHRoZSBpbnRlcnJ1cHQgcG9vbCxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTI0NT1pbnQgZHByY19zY2FuX29iamVjdHMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTYtICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzozNTc6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTgtICogQGFsbG9jX2ludGVycnVwdHM6IGlmIHRydWUgdGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgaW50ZXJydXB0IHBvb2wsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz01NzI9c3RhdGljIGludCBkcHJjX3NldHVwX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NjAyOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgYSBEUFJDXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAzLSAqXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz03MTE9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19zZXR1cCk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTUtICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3MTY6ICogQG1jX2RldjogUG9pbnRlciB0byBmc2wtbWMgZGV2aWNlIHJlcHJlc2VudGluZyBhIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTctICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTc1OD1zdGF0aWMgdm9pZCBkcHJjX3RlYXJkb3duX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzcxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzcyOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzMtICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTgxNT1FWFBPUlRfU1lNQk9MX0dQTChkcHJjX2NsZWFudXApO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODE5LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6ODIwOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjEtICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtOS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jOjEwOiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtMTEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTItLypcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM6ICogZnNsLW1jIG9iamVjdCBhbGxvY2F0b3IgZHJpdmVyXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00LSAqXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEyLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MTM6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xNC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTE1PXN0YXRpYyBib29sIF9fbXVzdF9jaGVjayBmc2xfbWNfaXNfYWxsb2NhdGFibGUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjMtICogZnNsX21jX3Jlc291cmNlX3Bvb2xfYWRkX2RldmljZSAtIGFkZCBhbGxvY2F0YWJsZSBvYmplY3QgdG8gYSByZXNvdXJjZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MjQ6ICogcG9vbCBvZiBhIGdpdmVuIGZzbC1tYyBidXNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNjogKiBAbWNfYnVzOiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgYnVzXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNy0gKiBAcG9vbF90eXBlOiBwb29sIHR5cGVcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI4OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjktICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zMD1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBmc2xfbWNfcmVzb3VyY2VfcG9vbF9hZGRfZGV2aWNlKHN0cnVjdCBmc2xfbWNfYnVzXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo5MjogKiBAbWNfZGV2OiBwb2ludGVyIHRvIGFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkzLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo5NDogKiBJdCBwZXJtYW5lbnRseSByZW1vdmVzIGFuIGFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2UgZnJvbSB0aGUgcmVzb3VyY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTk1LSAqIHBvb2wuIEl0J3MgYW4gZXJyb3IgaWYgdGhlIGRldmljZSBpcyBpbiB1c2UuXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1Ni0vKipcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1NzogKiBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlIC0gQWxsb2NhdGVzIGFuIGZzbC1tYyBvYmplY3Qgb2YgdGhlIGdpdmVuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNTg6ICogcG9vbCB0eXBlIGZyb20gYSBnaXZlbiBmc2wtbWMgYnVzIGluc3RhbmNlXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNTktICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2MDogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIHdoaWNoIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI2MS0gKiBhbGxvY2F0ZWQgb2JqZWN0XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI1OiAqIGZzbF9tY19vYmplY3RfZnJlZSAtIFJldHVybnMgYW4gZnNsLW1jIG9iamVjdCB0byB0aGUgcmVzb3VyY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMyNi0gKiBwb29sIHdoZXJlIGl0IGNhbWUgZnJvbS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjMyNzogKiBAbWNfYWRldjogUG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zNDM9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX29iamVjdF9mcmVlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzUxLS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozNTI6ICogSW5pdGlhbGl6ZSB0aGUgaW50ZXJydXB0IHBvb2wgYXNzb2NpYXRlZCB3aXRoIGFuIGZzbC1tYyBidXMuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTMtICogSXQgYWxsb2NhdGVzIGEgYmxvY2sgb2YgSVJRcyBmcm9tIHRoZSBHSUMtSVRTLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00MTE9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX3BvcHVsYXRlX2lycV9wb29sKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDEzLS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0MTQ6ICogVGVhcmRvd24gdGhlIGludGVycnVwdCBwb29sIGFzc29jaWF0ZWQgd2l0aCBhbiBmc2wtbWMgYnVzLlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE1LSAqIEl0IGZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgdG8gdGhlIHBvb2wsIGJhY2sgdG8gdGhlIEdJQy1JVFMuXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTQzOD1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfY2xlYW51cF9pcnFfcG9vbCk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0MC0vKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDQxOiAqIEFsbG9jYXRlIHRoZSBJUlFzIHJlcXVpcmVkIGJ5IGEgZ2l2ZW4gZnNsLW1jIGRldmljZS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0Mi0gKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTA2PUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19hbGxvY2F0ZV9pcnFzKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTA4LS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1MDk6ICogRnJlZXMgdGhlIElSUXMgdGhhdCB3ZXJlIGFsbG9jYXRlZCBmb3IgYW4gZnNsLW1jIGRldmljZS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTYyPXN0YXRpYyBpbnQgZnNsX21jX2FsbG9jYXRvcl9wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01ODUtXFx0ZGV2X2RiZyhcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1ODY6XFx0XFx0XFxcIkFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2UgYm91bmQgdG8gZnNsX21jX2FsbG9jYXRvciBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU4Ny1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTk0PXN0YXRpYyB2b2lkIGZzbF9tY19hbGxvY2F0b3JfcmVtb3ZlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNC1cXHRkZXZfZGJnKFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjYwNTpcXHRcXHRcXFwiQWxsb2NhdGFibGUgZnNsLW1jIGRldmljZSB1bmJvdW5kIGZyb20gZnNsX21jX2FsbG9jYXRvciBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNi19XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE6I2RlZmluZSBwcl9mbXQoZm10KSBcXFwiZnNsLW1jOiBcXFwiIGZtdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTItXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI1LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjY6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI4LS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyOTogKiBEZWZhdWx0IERNQSBtYXNrIGZvciBkZXZpY2VzIG9uIGEgZnNsLW1jIGJ1c1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzAtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMzPXN0YXRpYyBzdHJ1Y3QgZnNsX21jX3ZlcnNpb24gbWNfdmVyc2lvbjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzYtICogc3RydWN0IGZzbF9tYyAtIFByaXZhdGUgZGF0YSBvZiBhIFxcXCJmc2wscW9yaXEtbWNcXFwiIHBsYXRmb3JtIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mzc6ICogQHJvb3RfbWNfYnVzX2RldjogZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIHJvb3QgRFBSQ1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzgtICogQG51bV90cmFuc2xhdGlvbl9yYW5nZXM6IG51bWJlciBvZiBlbnRyaWVzIGluIGFkZHJfdHJhbnNsYXRpb25fcmFuZ2VzXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTgwPXN0YXRpYyBwaHlzX2FkZHJfdCBtY19wb3J0YWxfYmFzZV9waHlzX2FkZHI7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTgzLSAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4NDogKiBAZGV2OiB0aGUgZnNsLW1jIGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4NTogKiBAZHJ2OiB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWFyY2ggZm9yIG1hdGNoaW5nIGZzbC1tYyBvYmplY3QgdHlwZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODYtICogc3RydWN0dXJlc1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3VldmVudChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQyLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTQzOlxcdGlmIChhZGRfdWV2ZW50X3ZhcihlbnYsIFxcXCJNT0RBTElBUz1mc2wtbWM6diUwOFhkJXNcXFwiLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQ0LVxcdFxcdFxcdCAgIG1jX2Rldi1cXHUwMDNlb2JqX2Rlc2MudmVuZG9yLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yMTgtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTk6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiZnNsLW1jOnYlMDhYZCVzXFxcXG5cXFwiLCBtY19kZXYtXFx1MDAzZW9ial9kZXNjLnZlbmRvcixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIyMC1cXHRcXHRcXHRtY19kZXYtXFx1MDAzZW9ial9kZXNjLnR5cGUpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMjY9Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjMyNzpcXHQubmFtZSA9IFxcXCJmc2wtbWNcXFwiLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI4LVxcdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00OTk9c3RhdGljIGludCBtY19nZXRfdmVyc2lvbihzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTI4LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo1Mjk6ICogUmV0dXJuOlxcdG1jIHZlcnNpb24gd2hlbiBjYWxsZWQgYWZ0ZXIgZnNsLW1jLWJ1cyBwcm9iZTsgTlVMTCBvdGhlcndpc2UuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy01MzAtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTYzMj1zdGF0aWMgaW50IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2LFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTAtXFx0XFx0cmVnaW9uc1tpXS5lbmQgPSByZWdpb25zW2ldLnN0YXJ0ICsgcmVnaW9uX2Rlc2Muc2l6ZSAtIDE7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3MTE6XFx0XFx0cmVnaW9uc1tpXS5uYW1lID0gXFxcImZzbC1tYyBvYmplY3QgTU1JTyByZWdpb25cXFwiO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzEyLVxcdFxcdHJlZ2lvbnNbaV0uZmxhZ3MgPSByZWdpb25fZGVzYy5mbGFncyBcXHUwMDI2IElPUkVTT1VSQ0VfQklUUztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc0OS0vKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUwOiAqIEFkZCBhIG5ld2x5IGRpc2NvdmVyZWQgZnNsLW1jIGRldmljZSB0byBiZSB2aXNpYmxlIGluIExpbnV4XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODYtICogTGludXhcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ny0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg4OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gYW4gZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg5LSAqL1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz05MDA9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM2LVxcdCAqIGludGVycm9nYXRpbmcgdGhlIGZpcm13YXJlLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gdGhlIGRldmljZSB3YXMgbm90XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5Mzc6XFx0ICogeWV0IGRpc2NvdmVyZWQgYnkgdGhlIGZzbC1tYyBidXMsIHRodXMgdGhlIGxvb2t1cCByZXR1cm5lZCBOVUxMLlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM4LVxcdCAqIEZvcmNlIGEgcmVzY2FuIG9mIHRoZSBkZXZpY2VzIGluIHRoaXMgY29udGFpbmVyIGFuZCByZXRyeSB0aGUgbG9va3VwLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDA1PXN0YXRpYyBpbnQgZnNsX21jX2Zpcm13YXJlX2NoZWNrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTMtXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTAxNDpcXHRcXHRcXHRcXFwiZnNsLW1jOiBEUEwgcHJvY2Vzc2luZyB3YXMgbm90IHN0YXJ0ZWQsIERQQUEyIHdpbGwgbm90IHdvcmshXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTUtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDIwLVxcdFxcdGRldl9kYmcoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjE6XFx0XFx0XFx0XFxcImZzbC1tYzogRFBMIHByb2Nlc3NpbmcgaW4gcHJvZ3Jlc3MsIGRlZmVyIHByb2JlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjItXFx0XFx0cmV0dXJuIC1FUFJPQkVfREVGRVI7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjctXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTAyODpcXHRcXHRcXHRcXFwiZnNsLW1jOiBNQyBib290IGNvbXBsZXRlZCB3aXRoIGVycm9yIDB4JXhcXFxcblxcXCIsIG1jcyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDI5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xNS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjE2OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD01ODI9c3RydWN0IGZzbF9tY191YXBpIHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTU5MS0gKiBzdHJ1Y3QgZnNsX21jX2J1cyAtIGxvZ2ljYWwgYnVzIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBwaHlzaWNhbCBEUFJDXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NTkyOiAqIEBtY19kZXY6IGZzbC1tYyBkZXZpY2UgZm9yIHRoZSBidXMgZGV2aWNlIGl0c2VsZi5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC01OTMtICogQHJlc291cmNlX3Bvb2xzOiBhcnJheSBvZiByZXNvdXJjZSBwb29scyAob25lIHBvb2wgcGVyIHJlc291cmNlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xMy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYzoxNDojaW5jbHVkZSBcXFwiZnNsLW1jLXByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xNS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1pby5jLTktXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmM6MTA6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmMtMTEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvbWMtc3lzLmMtMTYtXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jOjE3OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1zeXMuYy0xOC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9vYmotYXBpLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jOjk6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL29iai1hcGkuYy0xMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMDg6NDY6MTIuNjczMDgxOTY2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1MDIwMTg3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5yZWFjaGFibGUgQ29kZSBpbiB0aGUgdmZpby1mc2wtbWMgRHJpdmVyKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIGB2ZmlvLWZzbC1tY2AgZHJpdmVyLCBhbmQgaXQncyBjbGVhciB0aGlzIGNvZGUgcGF0aCBpc24ndCByZWFjaGFibGUgaW4gdGhlIHdheSB3ZSdyZSBjdXJyZW50bHkgdGVzdGluZy4gVGhlIGBmc2wtbWNgIGJ1cyBpcyBhIHBoeXNpY2FsIGhhcmR3YXJlIHRoaW5nLCBzcGVjaWZpY2FsbHkgdGllZCB0byBOWFAncyBRb3JJUSBTb0NzLiBJdCB1c2VzIGBwbGF0Zm9ybV9kZXZpY2VgIGludGVybmFsbHksIGJ1dCBpdHMgZGV2aWNlIG5vZGVzIGFyZSBkZWZpbmVkIGluIHRoZSBkZXZpY2UgdHJlZSBhcyBgXCJmc2wscW9yaXEtbWNcImAuIFRoZSBpc3N1ZSBpcywgdGhlcmUncyBubyB3YXkgdG8gZW11bGF0ZSB0aGlzIGluIHN0YW5kYXJkIFFFTVUuIEkndmUgZ29uZSB0aHJvdWdoIHRoZSBRRU1VIGNvZGUsIGFuZCB0aGVyZSdzIG5vdGhpbmcgdGhlcmUgZm9yIHRoZSBgZnNsLW1jYCBidXMuIFNpbWlsYXJseSwgdGhlIGtlcm5lbCBkb2Vzbid0IGhhdmUgYW55IGtpbmQgb2Ygc29mdHdhcmUgZW11bGF0aW9uIGZyYW1ld29yayBmb3IgaXQgZWl0aGVyLCBub3RoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYC5cblxuVGhlIGNvZGUgd2UncmUgbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCBpcyB0aGUgVkZJTyBkcml2ZXIgZGVzaWduZWQgZm9yIHBhc3NpbmcgdGhyb3VnaCBgZnNsLW1jYCBkZXZpY2VzLiBUbyBtYWtlIHRoYXQgd29yaywgd2UnZCBuZWVkIGFuIGFjdHVhbCBgZnNsLW1jYCBkZXZpY2UgdG8gYmluZCB0byB0aGUgVkZJTyBkcml2ZXIuIEhvd2V2ZXIsIHdlIGNhbid0IGNyZWF0ZSB0aG9zZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IOKAkyBuZWl0aGVyIGluIEdDRSBub3Igd2l0aCB0aGUgUUVNVSBjb25maWd1cmF0aW9uIHN5emthbGxlciBpcyB1c2luZy4gV2UgZG9uJ3QgaGF2ZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCB3ZSBkb24ndCBoYXZlIGFueSBzb2Z0d2FyZSBzaW11bGF0aW9uIG9mIHRoZSBidXMuXG5cbkxldCdzIGxvb2sgbW9yZSBjbG9zZWx5IGF0IHRoZSBjYWxsIHBhdGg6IFdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYHZmaW9fZnNsX21jX21tYXBgIGZ1bmN0aW9uLiBWRklPIGRldmljZXMgYXJlIGNyZWF0ZWQgYnkgYmluZGluZyBhIHBoeXNpY2FsIGRldmljZSB0byB0aGUgVkZJTyBkcml2ZXIuIEluIHRoZSBjYXNlIG9mIGBmc2wtbWNgLCB0aGUgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgYXMgYW4gYGZzbF9tY19kcml2ZXJgLiBUbyBwcm9iZSB0aGlzIGRyaXZlciwgYW4gYGZzbF9tY19kZXZpY2VgIG11c3QgZXhpc3Qgb24gdGhlIGBmc2wtbWNgIGJ1cyBhbmQgYmUgYm91bmQgdG8gdGhpcyBkcml2ZXIuIFNpbmNlIHdlIGNhbid0IGNyZWF0ZSBhbnkgYGZzbF9tY19kZXZpY2VgIGluIG91ciBjdXJyZW50IHRlc3QgZW52aXJvbm1lbnQgKG5vIGhhcmR3YXJlIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiksIHRoZSBgdmZpb19mc2xfbWNfcHJvYmVgIHdpbGwgbmV2ZXIgZXZlbiBiZSBjYWxsZWQuIENvbnNlcXVlbnRseSwgbm8gVkZJTyBkZXZpY2UgaXMgZXZlciBjcmVhdGVkLlxuXG5Tbywgc2luY2UgdGhlIHByb2JlIHdvbid0IGJlIGNhbGxlZCwgdGhlIGRyaXZlciBuZXZlciBiaW5kcywgYW5kIHRoZSBWRklPIGRldmljZSB3aWxsIG5ldmVyIGV4aXN0LCB0aGlzIG1lYW5zIGB2ZmlvX2ZzbF9tY19tbWFwYCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlLiBJJ20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIGZvciB0aGlzIGNvZGUgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgZnNsLW1jIGJ1cywgd2hpY2ggcmVxdWlyZXMgYSBwaHlzaWNhbCBRb3JJUSBTb0MgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIGJ5IGFueSBrZXJuZWwgZW11bGF0aW9uIGZyYW1ld29ya3MuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaW4gdGhpcyBkcml2ZXIgaXMgaW5hY2Nlc3NpYmxlIGluIG91ciB2aXJ0dWFsaXplZCB0ZXN0IGVudmlyb25tZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIzNjIsIk91dHB1dFRva2VucyI6MTQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ2OjIyLjE3NTEwNDE1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdmZpby1mc2wtbWNgIGRyaXZlciwgd2hpY2ggaXMgYSBWRklPIGRyaXZlciBmb3IgcGFzc2luZyB0aHJvdWdoIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMgZm91bmQgb24gcGh5c2ljYWwgTlhQIFFvcklRIFNvQ3MuIFN0YW5kYXJkIFFFTVUgZG9lcyBub3QgZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGJ1cywgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBjcmVhdGUgdmlydHVhbCBmc2wtbWMgZGV2aWNlcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgdmZpb19mc2xfbWNfbW1hcGAgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBgdmZpby1mc2wtbWNgIGRyaXZlciwgd2hpY2ggaXMgYSBWRklPIGRyaXZlciBmb3IgcGFzc2luZyB0aHJvdWdoIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMgZm91bmQgb24gcGh5c2ljYWwgTlhQIFFvcklRIFNvQ3MuIFN0YW5kYXJkIFFFTVUgZG9lcyBub3QgZW11bGF0ZSB0aGlzIGhhcmR3YXJlIGJ1cywgYW5kIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmcmFtZXdvcmsgaW4gdGhlIGtlcm5lbCB0byBjcmVhdGUgdmlydHVhbCBmc2wtbWMgZGV2aWNlcy4gQ29uc2VxdWVudGx5LCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgdmZpb19mc2xfbWNfbW1hcGAgaXMgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDA4OjQ2OjIyLjE3NTEzNjAwOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow45jx2[1] Phase: Running StartedAt: 2026-08-19 08:46:45 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow45jx2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-19 08:46:45 +0000 UTC FinishedAt: 2026-08-19 08:46:55 +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,}