Name: series-workflowr9ggl Phase: Failed StartedAt: 2026-09-15 10:53:53 +0000 UTC FinishedAt: 2026-09-15 10:57:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr9ggl[0] Phase: Succeeded StartedAt: 2026-09-15 10:53:53 +0000 UTC FinishedAt: 2026-09-15 10:57:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr9ggl[0].run-triage Phase: Succeeded StartedAt: 2026-09-15 10:53:53 +0000 UTC FinishedAt: 2026-09-15 10:57:38 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgWERQIHBvb2wgZW5hYmxlL2Rpc2FibGUgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKGVtYmVkZGVkIFNvQyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJIGNvbnRyb2xsZXJzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBCZWNhdXNlIHRoZSBoYXJkd2FyZSBjYW5ub3QgYmUgcHJvYmVkIHRvIGNyZWF0ZSBhIG5ldF9kZXZpY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODNkM2Y0ZjVkOTZiMmY2YmY0OGM3YzU2NDFkZmQ3NzAyYmVkYmE2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDEwOjU1OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCA2MmMzNDQxOTExZTcxLi45MjhhYTA1YWE4N2Q1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTcxMTgsMTUgJiM0Mzs3MTE4LDE1IEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0dTggY2hhbjtcbiBcbi1cdC8qIEVuc3VyZSB0eCBmdW5jdGlvbiBpcyBub3QgcnVubmluZyAqL1xuLVx0bmV0aWZfdHhfZGlzYWJsZShkZXYpO1xuLVxuIFx0LyogRGlzYWJsZSBOQVBJIHByb2Nlc3MgKi9cbiBcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbiYjNDM7JiM0MzspXG4gXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XG4gXG4mIzQzO1x0LyogRW5zdXJlIHR4IGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nICovXG4mIzQzO1x0bmV0aWZfdHhfZGlzYWJsZShkZXYpO1xuJiM0MztcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmNcbmluZGV4IGQ3ZTRkYjcyMjRiMGMuLjg4M2JkM2ZlODA4OWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xuQEAgLTYsNiAmIzQzOzYsMTYgQEBcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3N0bW1hY194ZHAuaFwmIzM0O1xuIFxuJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfeGRwX3N0b3BfdHhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpucSA9IG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi1cdTAwM2VkZXYsIHF1ZXVlKTtcbiYjNDM7XG4mIzQzO1x0X19uZXRpZl90eF9sb2NrX2JoKG5xKTtcbiYjNDM7XHR0eHFfdHJhbnNfY29uZF91cGRhdGUobnEpO1xuJiM0MztcdG5ldGlmX3R4X3N0b3BfcXVldWUobnEpO1xuJiM0MztcdF9fbmV0aWZfdHhfdW5sb2NrX2JoKG5xKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlKVxuIHtcbkBAIC0zNiw2ICYjNDM7NDYsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKG5lZWRfdXBkYXRlKSB7XG4gXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZjaC1cdTAwM2VyeF9uYXBpKTtcbiBcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmNoLVx1MDAzZXR4X25hcGkpO1xuJiM0MztcdFx0c3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHR9XG5AQCAtNDYsNiAmIzQzOzU3LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHRcdHN0bW1hY19lbmFibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRuYXBpX2VuYWJsZShcdTAwMjZjaC1cdTAwM2VyeHR4X25hcGkpO1xuJiM0MztcdFx0bmV0aWZfdHhfd2FrZV9xdWV1ZShuZXRkZXZfZ2V0X3R4X3F1ZXVlKHByaXYtXHUwMDNlZGV2LCBxdWV1ZSkpO1xuIFxuIFx0XHRlcnIgPSBzdG1tYWNfeHNrX3dha2V1cChwcml2LVx1MDAzZWRldiwgcXVldWUsIFhEUF9XQUtFVVBfUlgpO1xuIFx0XHRpZiAoZXJyKVxuQEAgLTczLDYgJiM0Mzs4NSw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4gXG4gXHRpZiAobmVlZF91cGRhdGUpIHtcbiBcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmNoLVx1MDAzZXJ4dHhfbmFwaSk7XG4mIzQzO1x0XHRzdG1tYWNfeGRwX3N0b3BfdHhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHRcdHN0bW1hY19kaXNhYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3luY2hyb25pemVfcmN1KCk7XG5AQCAtODcsNiAmIzQzOzEwMCw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4gXHRcdHN0bW1hY19lbmFibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRuYXBpX2VuYWJsZShcdTAwMjZjaC1cdTAwM2VyeF9uYXBpKTtcbiBcdFx0bmFwaV9lbmFibGUoXHUwMDI2Y2gtXHUwMDNldHhfbmFwaSk7XG4mIzQzO1x0XHRuZXRpZl90eF93YWtlX3F1ZXVlKG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi1cdTAwM2VkZXYsIHF1ZXVlKSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBYRFAgcG9vbCBlbmFibGUvZGlzYWJsZSBhbmQgcXVldWUgbWFuYWdlbWVudCBmdW5jdGlvbnMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAoZW1iZWRkZWQgU29DIHBsYXRmb3JtIGRldmljZXMgYW5kIHZlbmRvci1zcGVjaWZpYyBQQ0kgY29udHJvbGxlcnMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIEJlY2F1c2UgdGhlIGhhcmR3YXJlIGNhbm5vdCBiZSBwcm9iZWQgdG8gY3JlYXRlIGEgbmV0X2RldmljZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4M2QzZjRmNWQ5NmIyZjZiZjQ4YzdjNTY0MWRmZDc3MDJiZWRiYTY5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMTUgMTA6NTU6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCA2MmMzNDQxOTExZTcxLi45MjhhYTA1YWE4N2Q1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTcxMTgsMTUgJiM0Mzs3MTE4LDE1IEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAl1OCBjaGFuOwogCi0JLyogRW5zdXJlIHR4IGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nICovCi0JbmV0aWZfdHhfZGlzYWJsZShkZXYpOwotCiAJLyogRGlzYWJsZSBOQVBJIHByb2Nlc3MgKi8KIAlzdG1tYWNfZGlzYWJsZV9hbGxfcXVldWVzKHByaXYpOwogCiAJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KQogCQlocnRpbWVyX2NhbmNlbCgmYW1wO3ByaXYtJmd0O2RtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpOwogCiYjNDM7CS8qIEVuc3VyZSB0eCBmdW5jdGlvbiBpcyBub3QgcnVubmluZyAqLwomIzQzOwluZXRpZl90eF9kaXNhYmxlKGRldik7CiYjNDM7CiAJLyogRnJlZSB0aGUgSVJRIGxpbmVzICovCiAJc3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jCmluZGV4IGQ3ZTRkYjcyMjRiMGMuLjg4M2JkM2ZlODA4OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMKQEAgLTYsNiAmIzQzOzYsMTYgQEAKICNpbmNsdWRlICYjMzQ7c3RtbWFjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfeGRwLmgmIzM0OwogCiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKQomIzQzO3sKJiM0MzsJc3RydWN0IG5ldGRldl9xdWV1ZSAqbnEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKHByaXYtJmd0O2RldiwgcXVldWUpOwomIzQzOwomIzQzOwlfX25ldGlmX3R4X2xvY2tfYmgobnEpOwomIzQzOwl0eHFfdHJhbnNfY29uZF91cGRhdGUobnEpOwomIzQzOwluZXRpZl90eF9zdG9wX3F1ZXVlKG5xKTsKJiM0MzsJX19uZXRpZl90eF91bmxvY2tfYmgobnEpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCQkJICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlKQogewpAQCAtMzYsNiAmIzQzOzQ2LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlpZiAobmVlZF91cGRhdGUpIHsKIAkJbmFwaV9kaXNhYmxlKCZhbXA7Y2gtJmd0O3J4X25hcGkpOwogCQluYXBpX2Rpc2FibGUoJmFtcDtjaC0mZ3Q7dHhfbmFwaSk7CiYjNDM7CQlzdG1tYWNfeGRwX3N0b3BfdHhfcXVldWUocHJpdiwgcXVldWUpOwogCQlzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7CiAJCXN0bW1hY19kaXNhYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTsKIAl9CkBAIC00Niw2ICYjNDM7NTcsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQlzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTsKIAkJc3RtbWFjX2VuYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7CiAJCW5hcGlfZW5hYmxlKCZhbXA7Y2gtJmd0O3J4dHhfbmFwaSk7CiYjNDM7CQluZXRpZl90eF93YWtlX3F1ZXVlKG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi0mZ3Q7ZGV2LCBxdWV1ZSkpOwogCiAJCWVyciA9IHN0bW1hY194c2tfd2FrZXVwKHByaXYtJmd0O2RldiwgcXVldWUsIFhEUF9XQUtFVVBfUlgpOwogCQlpZiAoZXJyKQpAQCAtNzMsNiAmIzQzOzg1LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSkKIAogCWlmIChuZWVkX3VwZGF0ZSkgewogCQluYXBpX2Rpc2FibGUoJmFtcDtjaC0mZ3Q7cnh0eF9uYXBpKTsKJiM0MzsJCXN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShwcml2LCBxdWV1ZSk7CiAJCXN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTsKIAkJc3RtbWFjX2Rpc2FibGVfdHhfcXVldWUocHJpdiwgcXVldWUpOwogCQlzeW5jaHJvbml6ZV9yY3UoKTsKQEAgLTg3LDYgJiM0MzsxMDAsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKQogCQlzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTsKIAkJbmFwaV9lbmFibGUoJmFtcDtjaC0mZ3Q7cnhfbmFwaSk7CiAJCW5hcGlfZW5hYmxlKCZhbXA7Y2gtJmd0O3R4X25hcGkpOwomIzQzOwkJbmV0aWZfdHhfd2FrZV9xdWV1ZShuZXRkZXZfZ2V0X3R4X3F1ZXVlKHByaXYtJmd0O2RldiwgcXVldWUpKTsKIAl9CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCB0byBsb29rIGF0LCB0YXJnZXRpbmcgdGhlIGBzdG1tYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBUaGUgbW9kaWZpY2F0aW9ucyBhZmZlY3QgYHN0bW1hY19tYWluLmNgIGFuZCBgc3RtbWFjX3hkcC5jYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCBsZXQmIzM5O3MgZXN0YWJsaXNoIHNvbWUgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjYCBhY3R1YWxseSAqaXMqLiBJcyB0aGlzIGEgZHJpdmVyIGZvciBzb21lIG9ic2N1cmUsIHNwZWNpYWxpemVkIGhhcmR3YXJlLCBvciBpcyBpdCBzb21ldGhpbmcgSSBtaWdodCBlbmNvdW50ZXIgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/IE9yIGV2ZW4gbW9yZSBicm9hZGx5LCBpcyBpdCBhIGRyaXZlciB0aGF0JiMzOTtzIGNvcmUgdG8gYSBwYXJ0aWN1bGFyIFNvQ3Mgb3IgcGxhdGZvcm1zPyBJIG5lZWQgdG8ga25vdyBob3cgZWFzaWx5IEkgY2FuIHJlcGxpY2F0ZSB0aGlzLgoKQWgsIHJpZ2h0LiBTVE1pY3JvZWxlY3Ryb25pY3MgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyLiBUaGF0IGNsYXJpZmllcyAqd2hhdCogaXQgaXMsIG5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCAqaG93KiBpdCYjMzk7cyBpbnN0YW50aWF0ZWQuIElzIGl0IGEgUENJIGRldmljZT8gQSBwbGF0Zm9ybSBkZXZpY2U/IFNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgYEtjb25maWdgIGZpbGVzIGFyZSBnb2luZyB0byBiZSBteSBiZXN0IGZyaWVuZCBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLCBhbmQgYWxzbyBsaWtlbHkgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIEkmIzM5O2xsIHVzZSBncmVwIG9yIEkgY2FuIGp1c3QgdXNlIHRoZSBLY29uZmlnIHRvIHNlYXJjaCB0byBzZWUgZXhhY3RseSBob3cgdGhpcyBkcml2ZXIgaXMgYm91bmQgdG8gdGhlIHN5c3RlbS4gVGhpcyBnaXZlcyBtZSBhIGZyYW1ld29yayB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoIGFuZCBob3cgSSBjYW4gZ28gYWJvdXQgdGVzdGluZyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk5NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDU5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFNUTU1BQyBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIHdoZXRoZXIgb3Igbm90IEkgY2FuIGV2ZW4gKnJlYWNoKiB0aGUgU1RNTUFDIGNvZGUgZm9yIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gYmUgc3VyZSBpdCYjMzk7cyBhY3R1YWxseSBzb21ldGhpbmcgSSBjYW4gdGVzdCBlZmZlY3RpdmVseS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgU1RNTUFDIGhhcmR3YXJlIGVtdWxhdGVkICphbnl3aGVyZSogaW4gUUVNVT8gQW5kLCBnaXZlbiBteSBgYW1kNjRgIHRhcmdldCwgSSBuZWVkIHRvIGtub3cgd2hhdCBldGhlcm5ldCBjb250cm9sbGVycyBRRU1VICpkb2VzKiBlbXVsYXRlIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJIGtub3cgaXQmIzM5O3MgYSBsaXN0LCBidXQgbm9uZSBvZiB0aG9zZSBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBiZWluZyByZWxhdGVkIHRvIHN0bW1hYy4KCkkgaGF2ZSBhIG5hZ2dpbmcgZmVlbGluZyB0aGF0IFFFTVUgbWlnaHQgZW11bGF0ZSBzb21lIERXTUFDIG9yIFNUTU1BQyBkZXZpY2VzIG9uIEFSTSwgcGFydGljdWxhcmx5IEFsbHdpbm5lciBwbGF0Zm9ybXMgKHN1bnhpKSwgYnV0IG15IHRhcmdldCBpcyBgYW1kNjRgLiBFdmVuIGlmIGl0ICpkaWQqIGVtdWxhdGUgaXQgb24gQVJNLCBkb2VzIHN0YW5kYXJkIFFFTVUgb3IgYSBTeXprYWxsZXIgY2x1c3RlciBmb3IgYGFtZDY0YCBldmVuICp1c2UqIFNUTU1BQz8gSSByZWFsbHkgbmVlZCB0byBnZXQgY2xhcml0eSBvbiB0aGF0LgoKSXMgU1RNTUFDIHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlzIHRoZXJlIGEgdmlydHVhbCBkcml2ZXIsIG9yIGEgZHVtbXkgZGV2aWNlIEkgY2FuIHVzZT8gVGhhdCYjMzk7cyBjcml0aWNhbC4gVGltZSB0byByZS1yZWFkIHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURSYjMzQ7IHNlY3Rpb24uIFRoZXkmIzM5O3JlIHZlcnkgY2xlYXI6IGZ1enppbmcgb25seSB3b3JrcyBvbiBjb2RlIHRoYXQgY2FuIGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBWZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSBQQ0llIHN3aXRjaGVzIGFuZCBTbWFydE5JQ3MgYXJlIGV4cGxpY2l0bHkgKmV4Y2x1ZGVkKiBiZWNhdXNlIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBjYXJkcyBub3QgZW11bGF0ZWQgaW4gUUVNVS4gVGhpcyBpcyBhIHZlcnkgaW1wb3J0YW50IHBvaW50IQoKU28sIHdoYXQgKmlzKiBTVE1NQUM/IEl0JiMzOTtzIGEgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgZnJvbSBTVE1pY3JvZWxlY3Ryb25pY3MsIGFsc28gYXNzb2NpYXRlZCB3aXRoIFN5bm9wc3lzIERlc2lnbldhcmUgQ29yZXMgRXRoZXJuZXQgTUFDLiBJdCYjMzk7cyB1c2VkIG9uIFNvQ3MgbGlrZSBTVE0zMiwgQWxsd2lubmVyLCBSb2NrY2hpcCwgQW1sb2dpYywgYW5kIGV2ZW4gSW50ZWwgUXVhcmsvRWxraGFydCBMYWtlL1RpZ2VyIExha2UgKFBDSSBkd21hYywgZXRjLikuIFRoZSBxdWVzdGlvbiBpcywgY2FuIEkgaW5zdGFudGlhdGUgaXQgKndpdGhvdXQqIHRoZSBoYXJkd2FyZT8gQ2FuIFN5emthbGxlciBldmVuIGNyZWF0ZSBhbiBTVE1NQUMgZGV2aWNlPyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgd2F5IHRvIGludGVyYWN0IHdpdGggU1RNTUFDIHVzaW5nIGEgdmlydHVhbCBidXMsIGEgZHVtbXkgZHJpdmVyLCBvciBldmVuIHZpYSBuZXRsaW5rIG9yIGEgcGxhdGZvcm0gZHJpdmVyIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZS4gSSYjMzk7bGwgY2hlY2sgaWYgdGhlcmUmIzM5O3MgYW55IFN5emthbGxlciBgc3l6bGFuZ2AgZGVzY3JpcHRpb25zIGZvciBTVE1NQUMsIG9yIGFueSBtZW50aW9uIG9mIGl0IGluIFN5emthbGxlciBhdCBhbGwuIEZpbmFsbHksIEkmIzM5O2xsIGV4YW1pbmUgdGhlIFNUTU1BQyBNYWtlZmlsZSB0byBzZWUgYWxsIG9mIHRoZSBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG9iai0kKENPTkZJR19TVE1NQUNfRVRIKSAmIzQzOz0gc3RtbWFjLm9cbiAgIDM6XHRzdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuICAgNDpcdFx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXHRcXFxuICAgNTpcdFx0ICAgICAgZHdtYWMxMDBfY29yZS5vIGR3bWFjMTAwX2RtYS5vIGVuaF9kZXNjLm8gbm9ybV9kZXNjLm9cdFxcXG4gICA2Olx0XHQgICAgICBtbWNfY29yZS5vIHN0bW1hY19od3RzdGFtcC5vIHN0bW1hY19wdHAubyBkd21hYzRfZGVzY3Mub1x0XFxcbiAgIDc6XHRcdCAgICAgIGR3bWFjNF9kbWEubyBkd21hYzRfbGliLm8gZHdtYWM0X2NvcmUubyBkd21hYzUubyBod2lmLm8gXFxcbiAgIDg6XHRcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXG4gICA5Olx0XHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXG4gIDEwOlx0XHQgICAgICBzdG1tYWNfcGNzLm8gJChzdG1tYWMteSlcbiAgMTE6XHRcbiAgMTI6XHRzdG1tYWMtJChDT05GSUdfU1RNTUFDX1NFTEZURVNUUykgJiM0Mzs9IHN0bW1hY19zZWxmdGVzdHMub1xuICAxMzpcdFxuICAxNDpcdCMgT3JkZXJpbmcgbWF0dGVycy4gR2VuZXJpYyBkcml2ZXIgbXVzdCBiZSBsYXN0LlxuICAxNTpcdG9iai0kKENPTkZJR19TVE1NQUNfUExBVEZPUk0pXHQmIzQzOz0gc3RtbWFjLXBsYXRmb3JtLm9cbiAgMTY6XHRvYmotJChDT05GSUdfRFdNQUNfQU5BUklPTilcdCYjNDM7PSBkd21hYy1hbmFyaW9uLm9cbiAgMTc6XHRvYmotJChDT05GSUdfRFdNQUNfRUlDNzcwMClcdCYjNDM7PSBkd21hYy1laWM3NzAwLm9cbiAgMTg6XHRvYmotJChDT05GSUdfRFdNQUNfSU5HRU5JQylcdCYjNDM7PSBkd21hYy1pbmdlbmljLm9cbiAgMTk6XHRvYmotJChDT05GSUdfRFdNQUNfSVBRODA2WClcdCYjNDM7PSBkd21hYy1pcHE4MDZ4Lm9cbiAgMjA6XHRvYmotJChDT05GSUdfRFdNQUNfTFBDMThYWClcdCYjNDM7PSBkd21hYy1scGMxOHh4Lm9cbiAgMjE6XHRvYmotJChDT05GSUdfRFdNQUNfTUVESUFURUspXHQmIzQzOz0gZHdtYWMtbWVkaWF0ZWsub1xuICAyMjpcdG9iai0kKENPTkZJR19EV01BQ19NRVNPTilcdCYjNDM7PSBkd21hYy1tZXNvbi5vIGR3bWFjLW1lc29uOGIub1xuICAyMzpcdG9iai0kKENPTkZJR19EV01BQ19OVVZPVE9OKVx0JiM0Mzs9IGR3bWFjLW51dm90b24ub1xuICAyNDpcdG9iai0kKENPTkZJR19EV01BQ19RQ09NX0VUSFFPUylcdCYjNDM7PSBkd21hYy1xY29tLWV0aHFvcy5vXG4gIDI1Olx0b2JqLSQoQ09ORklHX0RXTUFDX1JFTkVTQVNfR0JFVEgpICYjNDM7PSBkd21hYy1yZW5lc2FzLWdiZXRoLm9cbiAgMjY6XHRvYmotJChDT05GSUdfRFdNQUNfUk9DS0NISVApXHQmIzQzOz0gZHdtYWMtcmsub1xuICAyNzpcdG9iai0kKENPTkZJR19EV01BQ19SWk4xKVx0JiM0Mzs9IGR3bWFjLXJ6bjEub1xuICAyODpcdG9iai0kKENPTkZJR19EV01BQ19TMzIpXHRcdCYjNDM7PSBkd21hYy1zMzIub1xuICAyOTpcdG9iai0kKENPTkZJR19EV01BQ19TT0NGUEdBKVx0JiM0Mzs9IGR3bWFjLWFsdHItc29jZnBnYS5vXG4gIDMwOlx0b2JqLSQoQ09ORklHX0RXTUFDX1NPUEhHTylcdCYjNDM7PSBkd21hYy1zb3BoZ28ub1xuICAzMTpcdG9iai0kKENPTkZJR19EV01BQ19TUEFDRU1JVClcdCYjNDM7PSBkd21hYy1zcGFjZW1pdC5vXG4gIDMyOlx0b2JqLSQoQ09ORklHX0RXTUFDX1NUQVJGSVZFKVx0JiM0Mzs9IGR3bWFjLXN0YXJmaXZlLm9cbiAgMzM6XHRvYmotJChDT05GSUdfRFdNQUNfU1RJKVx0XHQmIzQzOz0gZHdtYWMtc3RpLm9cbiAgMzQ6XHRvYmotJChDT05GSUdfRFdNQUNfU1RNMzIpXHQmIzQzOz0gZHdtYWMtc3RtMzIub1xuICAzNTpcdG9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcdCYjNDM7PSBkd21hYy1zdW54aS5vXG4gIDM2Olx0b2JqLSQoQ09ORklHX0RXTUFDX1NVTjhJKVx0JiM0Mzs9IGR3bWFjLXN1bjhpLm9cbiAgMzc6XHRvYmotJChDT05GSUdfRFdNQUNfU1VONTVJKVx0JiM0Mzs9IGR3bWFjLXN1bjU1aS5vXG4gIDM4Olx0b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVx0JiM0Mzs9IGR3bWFjLXRoZWFkLm9cbiAgMzk6XHRvYmotJChDT05GSUdfRFdNQUNfRFdDX1FPU19FVEgpXHQmIzQzOz0gZHdtYWMtZHdjLXFvcy1ldGgub1xuICA0MDpcdG9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVx0JiM0Mzs9IGR3bWFjLWludGVsLXBsYXQub1xuICA0MTpcdG9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24xLm9cbiAgNDI6XHRvYmotJChDT05GSUdfRFdNQUNfR0VORVJJQylcdCYjNDM7PSBkd21hYy1nZW5lcmljLm9cbiAgNDM6XHRvYmotJChDT05GSUdfRFdNQUNfSU1YOClcdCYjNDM7PSBkd21hYy1pbXgub1xuICA0NDpcdG9iai0kKENPTkZJR19EV01BQ19URUdSQSlcdCYjNDM7PSBkd21hYy10ZWdyYS5vXG4gIDQ1Olx0b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVx0JiM0Mzs9IGR3bWFjLXZpc2NvbnRpLm9cbiAgNDY6XHRzdG1tYWMtcGxhdGZvcm0tb2Jqczo9IHN0bW1hY19wbGF0Zm9ybS5vXG4gIDQ3Olx0ZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXG4gIDQ4Olx0XG4gIDQ5Olx0b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXHQmIzQzOz0gc3RtbWFjX2xpYnBjaS5vXG4gIDUwOlx0b2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXHQmIzQzOz0gc3RtbWFjLXBjaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU5NgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBQQ0kgRGV2aWNlIElEIFN1cHBvcnQgaW4gYHN0bW1hYy1wY2kuY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZ2V0IGEgZ3Jhc3Agb24gdGhlIHNwZWNpZmljIFBDSSBkZXZpY2UgSURzIHRoYXQgdGhlIGBzdG1tYWMtcGNpLmNgIGRyaXZlciBpcyBkZXNpZ25lZCB0byBoYW5kbGUuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgbmFtZSwgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgY2hlY2sgZm9yIHRoZSBzcGVjaWZpYyB2ZW5kb3IgYW5kIGRldmljZSBJRHMgaXQmIzM5O3MgY29uZmlndXJlZCB0byByZWNvZ25pemUuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiBmb3IgcXVpY2tseSBhc3Nlc3NpbmcgZHJpdmVyIHN1cHBvcnQuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGlzIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSBpdHMgcmVsZXZhbmNlIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSBJJiMzOTttIHdvcmtpbmcgd2l0aC4gVGltZSB0byBjcmFjayBvcGVuIHRoYXQgZmlsZSBhbmQgZ2V0IHRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgMzpcdCAgVGhpcyBjb250YWlucyB0aGUgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgcGNpIGRyaXZlci5cbiAgIDQ6XHRcbiAgIDU6XHQgIENvcHlyaWdodCAoQykgMjAxMS0yMDEyICBWYXlhdnlhIExhYnMgUHZ0IEx0ZFxuICAgNjpcdFxuICAgNzpcdFxuICAgODpcdCAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXHUwMDNjcmF5YWdvbmRAdmF5YXZ5YWxhYnMuY29tXHUwMDNlXG4gICA5Olx0ICBBdXRob3I6IEdpdXNlcHBlIENhdmFsbGFybyBcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXHUwMDNlXG4gIDEwOlx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgMTE6XHRcbiAgMTI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGstcHJvdmlkZXIuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZG1pLmhcdTAwM2VcbiAgMTU6XHRcbiAgMTY6XHQjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuICAxNzpcdCNpbmNsdWRlIFwmIzM0O3N0bW1hY19saWJwY2kuaFwmIzM0O1xuICAxODpcdFxuICAxOTpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuICAyMDpcdFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuICAyMTpcdH07XG4gIDIyOlx0XG4gIDIzOlx0c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gIDI0Olx0e1xuICAyNTpcdFx0LyogY2xrX2Nzcl9pID0gMjAtMzVNSHogXHUwMDI2IE1EQyA9IGNsa19jc3JfaS8xNiAqL1xuICAyNjpcdFx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG4gIDI3Olx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbiAgMjg6XHRcdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuICAyOTpcdFxuICAzMDpcdFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcbiAgMzE6XHR9XG4gIDMyOlx0XG4gIDMzOlx0c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuICAzNDpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gIDM1Olx0e1xuICAzNjpcdFx0LyogU2V0IGNvbW1vbiBkZWZhdWx0IGRhdGEgZmlyc3QgKi9cbiAgMzc6XHRcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XG4gIDM4Olx0XG4gIDM5Olx0XHRwbGF0LVx1MDAzZWJ1c19pZCA9IDE7XG4gIDQwOlx0XHRwbGF0LVx1MDAzZXBoeV9hZGRyID0gMDtcbiAgNDE6XHRcdHBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xuICA0MjpcdFxuICA0MzpcdFx0cGxhdC1cdTAwM2VkbWFfY2ZnLVx1MDAzZXBibCA9IDMyO1xuICA0NDpcdFx0cGxhdC1cdTAwM2VkbWFfY2ZnLVx1MDAzZXBibHg4ID0gdHJ1ZTtcbiAgNDU6XHRcdC8qIFRPRE86IEFYSSAqL1xuICA0NjpcdFxuICA0NzpcdFx0cmV0dXJuIDA7XG4gIDQ4Olx0fVxuICA0OTpcdFxuICA1MDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbiAgNTE6XHRcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4gIDUyOlx0fTtcbiAgNTM6XHRcbiAgNTQ6XHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuICA1NTpcdFx0XHRcdFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuICA1NjpcdHtcbiAgNTc6XHRcdGludCBpO1xuICA1ODpcdFxuICA1OTpcdFx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcbiAgNjA6XHRcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcbiAgNjE6XHRcdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuICA2MjpcdFx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG4gIDYzOlx0XHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4gIDY0Olx0XG4gIDY1Olx0XHQvKiBTZXQgZGVmYXVsdCBudW1iZXIgb2YgUlggYW5kIFRYIHF1ZXVlcyB0byB1c2UgKi9cbiAgNjY6XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XG4gIDY3Olx0XHRwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2UgPSA0O1xuICA2ODpcdFxuICA2OTpcdFx0cGxhdC1cdTAwM2V0eF9zY2hlZF9hbGdvcml0aG0gPSBNVExfVFhfQUxHT1JJVEhNX1dSUjtcbiAgNzA6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspIHtcbiAgNzE6XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcbiAgNzI6XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLndlaWdodCA9IDI1O1xuICA3MzpcdFx0XHRpZiAoaSBcdTAwM2UgMClcbiAgNzQ6XHRcdFx0XHRwbGF0LVx1MDAzZXR4X3F1ZXVlc19jZmdbaV0udGJzX2VuID0gMTtcbiAgNzU6XHRcdH1cbiAgNzY6XHRcbiAgNzc6XHRcdHBsYXQtXHUwMDNlcnhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1JYX0FMR09SSVRITV9TUDtcbiAgNzg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspXG4gIDc5Olx0XHRcdHBsYXQtXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XG4gIDgwOlx0XG4gIDgxOlx0XHRwbGF0LVx1MDAzZWJ1c19pZCA9IDE7XG4gIDgyOlx0XHRwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcbiAgODM6XHRcbiAgODQ6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmwgPSAzMjtcbiAgODU6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmx4OCA9IHRydWU7XG4gIDg2Olx0XG4gIDg3Olx0XHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xuICA4ODpcdFx0cGxhdC1cdTAwM2VheGkgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cdTAwM2VheGkpLCBHRlBfS0VSTkVMKTtcbiAgODk6XHRcdGlmICghcGxhdC1cdTAwM2VheGkpXG4gIDkwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA5MTpcdFxuICA5MjpcdFx0cGxhdC1cdTAwM2VheGktXHUwMDNlYXhpX3dyX29zcl9sbXQgPSAzMTtcbiAgOTM6XHRcdHBsYXQtXHUwMDNlYXhpLVx1MDAzZWF4aV9yZF9vc3JfbG10ID0gMzE7XG4gIDk0Olx0XG4gIDk1Olx0XHRwbGF0LVx1MDAzZWF4aS1cdTAwM2VheGlfZmIgPSBmYWxzZTtcbiAgOTY6XHRcdHBsYXQtXHUwMDNlYXhpLVx1MDAzZWF4aV9ibGVuX3JlZ3ZhbCA9IERNQV9BWElfQkxFTjQgfCBETUFfQVhJX0JMRU44IHxcbiAgOTc6XHRcdFx0XHRcdCAgICAgRE1BX0FYSV9CTEVOMTYgfCBETUFfQVhJX0JMRU4zMjtcbiAgOTg6XHRcbiAgOTk6XHRcdHJldHVybiAwO1xuIDEwMDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzkyCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uLi4KCioqRGl2aW5nIERlZXBlciBpbnRvIHN0bW1hY19wY2kuYyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBiYWNrIGludG8gdGhlIGNvZGUuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgcmVzdCBvZiBgc3RtbWFjX3BjaS5jYC4gSSYjMzk7dmUgZ290IGEgZ29vZCBncmFzcCBvZiB0aGUgaW5pdGlhbCBzZWN0aW9ucywgYnV0IEkga25vdyB0aGVyZSYjMzk7cyBtb3JlIGZ1bmN0aW9uYWxpdHksIGVzcGVjaWFsbHkgYXJvdW5kIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24uIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB0aGF0IG1pZ2h0IGJlIGNvbnRyaWJ1dGluZyB0byB0aGUgcGVyZm9ybWFuY2UgaXNzdWVzIHdlIGFyZSBzZWVpbmcuIEl0JiMzOTtzIHRpbWUgdG8gcHV0IG9uIG15IGludmVzdGlnYXRvciBoYXQuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBmaWxlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMTpcdFxuIDEwMjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XG4gMTAzOlx0XHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcbiAxMDQ6XHR9O1xuIDEwNTpcdFxuIDEwNjpcdC8qKlxuIDEwNzpcdCAqIHN0bW1hY19wY2lfcHJvYmVcbiAxMDg6XHQgKlxuIDEwOTpcdCAqIEBwZGV2OiBwY2kgZGV2aWNlIHBvaW50ZXJcbiAxMTA6XHQgKiBAaWQ6IHBvaW50ZXIgdG8gdGFibGUgb2YgZGV2aWNlIGlkL2lkJiMzOTtzLlxuIDExMTpcdCAqXG4gMTEyOlx0ICogRGVzY3JpcHRpb246IFRoaXMgcHJvYmluZyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBmb3IgYWxsIFBDSSBkZXZpY2VzIHdoaWNoXG4gMTEzOlx0ICogbWF0Y2ggdGhlIElEIHRhYmxlIGFuZCBhcmUgbm90IFwmIzM0O293bmVkXCYjMzQ7IGJ5IG90aGVyIGRyaXZlciB5ZXQuIFRoaXMgZnVuY3Rpb25cbiAxMTQ6XHQgKiBnZXRzIHBhc3NlZCBhIFwmIzM0O3N0cnVjdCBwY2lfZGV2ICpcJiMzNDsgZm9yIGVhY2ggZGV2aWNlIHdob3NlIGVudHJ5IGluIHRoZSBJRCB0YWJsZVxuIDExNTpcdCAqIG1hdGNoZXMgdGhlIGRldmljZS4gVGhlIHByb2JlIGZ1bmN0aW9ucyByZXR1cm5zIHplcm8gd2hlbiB0aGUgZHJpdmVyIGNob29zZVxuIDExNjpcdCAqIHRvIHRha2UgXCYjMzQ7b3duZXJzaGlwXCYjMzQ7IG9mIHRoZSBkZXZpY2Ugb3IgYW4gZXJyb3IgY29kZSgtdmUgbm8pIG90aGVyd2lzZS5cbiAxMTc6XHQgKi9cbiAxMTg6XHRzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gMTE5Olx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiAxMjA6XHR7XG4gMTIxOlx0XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiAxMjI6XHRcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbiAxMjM6XHRcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xuIDEyNDpcdFx0aW50IHJldDtcbiAxMjU6XHRcdGludCBpO1xuIDEyNjpcdFxuIDEyNzpcdFx0cGxhdCA9IHN0bW1hY19wbGF0X2RhdF9hbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gMTI4Olx0XHRpZiAoIXBsYXQpXG4gMTI5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEzMDpcdFxuIDEzMTpcdFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuIDEzMjpcdFx0XHRcdFx0XHQgICBzaXplb2YoKnBsYXQtXHUwMDNlbWRpb19idXNfZGF0YSksXG4gMTMzOlx0XHRcdFx0XHRcdCAgIEdGUF9LRVJORUwpO1xuIDEzNDpcdFx0aWYgKCFwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEpXG4gMTM1Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEzNjpcdFxuIDEzNzpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmcgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gMTM4Olx0XHRcdFx0XHRcdCAgICAgc2l6ZW9mKCpwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZyksXG4gMTM5Olx0XHRcdFx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG4gMTQwOlx0XHRpZiAoIXBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKVxuIDE0MTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxNDI6XHRcbiAxNDM6XHRcdC8qIEVuYWJsZSBwY2kgZGV2aWNlICovXG4gMTQ0Olx0XHRyZXQgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XG4gMTQ1Olx0XHRpZiAocmV0KSB7XG4gMTQ2Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBFUlJPUjogZmFpbGVkIHRvIGVuYWJsZSBkZXZpY2VcXG5cJiMzNDssXG4gMTQ3Olx0XHRcdFx0X19mdW5jX18pO1xuIDE0ODpcdFx0XHRyZXR1cm4gcmV0O1xuIDE0OTpcdFx0fVxuIDE1MDpcdFxuIDE1MTpcdFx0LyogR2V0IHRoZSBiYXNlIGFkZHJlc3Mgb2YgZGV2aWNlICovXG4gMTUyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQQ0lfU1REX05VTV9CQVJTOyBpJiM0MzsmIzQzOykge1xuIDE1MzpcdFx0XHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSA9PSAwKVxuIDE1NDpcdFx0XHRcdGNvbnRpbnVlO1xuIDE1NTpcdFx0XHRyZXMuYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIGksIFNUTU1BQ19SRVNPVVJDRV9OQU1FKTtcbiAxNTY6XHRcdFx0aWYgKElTX0VSUihyZXMuYWRkcikpXG4gMTU3Olx0XHRcdFx0cmV0dXJuIFBUUl9FUlIocmVzLmFkZHIpO1xuIDE1ODpcdFx0XHRicmVhaztcbiAxNTk6XHRcdH1cbiAxNjA6XHRcbiAxNjE6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDE2MjpcdFxuIDE2MzpcdFx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbiAxNjQ6XHRcdGlmIChyZXQpXG4gMTY1Olx0XHRcdHJldHVybiByZXQ7XG4gMTY2Olx0XG4gMTY3Olx0XHRyZXMud29sX2lycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE2ODpcdFx0cmVzLmlycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE2OTpcdFxuIDE3MDpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNldHNvZWUgPSAxO1xuIDE3MTpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlbXJ4cGVlID0gMTtcbiAxNzI6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW1lc3RlZSA9IDE7XG4gMTczOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtcnhlZSA9IDE7XG4gMTc0Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtdHhlZSA9IDE7XG4gMTc1Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VlcHNpID0gMTtcbiAxNzY6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZWVkcHAgPSAxO1xuIDE3NzpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlcHJ0eWVuID0gMTtcbiAxNzg6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZXRtb3V0ZW4gPSAxO1xuIDE3OTpcdFxuIDE4MDpcdFx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG4gMTgxOlx0XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG4gMTgyOlx0XG4gMTgzOlx0XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbiAxODQ6XHR9XG4gMTg1Olx0XG4gMTg2Olx0LyoqXG4gMTg3Olx0ICogc3RtbWFjX3BjaV9yZW1vdmVcbiAxODg6XHQgKlxuIDE4OTpcdCAqIEBwZGV2OiBwbGF0Zm9ybSBkZXZpY2UgcG9pbnRlclxuIDE5MDpcdCAqIERlc2NyaXB0aW9uOiB0aGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBtYWluIHRvIGZyZWUgdGhlIG5ldCByZXNvdXJjZXMuXG4gMTkxOlx0ICovXG4gMTkyOlx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTkzOlx0e1xuIDE5NDpcdFx0c3RtbWFjX2R2cl9yZW1vdmUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDE5NTpcdH1cbiAxOTY6XHRcbiAxOTc6XHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xuIDE5ODpcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcdFx0MHgwNzAwXG4gMTk5Olx0XG4gMjAwOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcdFx0MHgxMTA4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjAwCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uLi4KCioqRGl2aW5nIERlZXBlciBpbnRvIHN0bW1hY19wY2kuYyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBiYWNrIGludG8gdGhlIGNvZGUuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgcmVzdCBvZiBgc3RtbWFjX3BjaS5jYC4gSSYjMzk7dmUgZ290IGEgZ29vZCBncmFzcCBvZiB0aGUgaW5pdGlhbCBzZWN0aW9ucywgYnV0IEkga25vdyB0aGVyZSYjMzk7cyBtb3JlIGZ1bmN0aW9uYWxpdHksIGVzcGVjaWFsbHkgYXJvdW5kIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24uIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB0aGF0IG1pZ2h0IGJlIGNvbnRyaWJ1dGluZyB0byB0aGUgcGVyZm9ybWFuY2UgaXNzdWVzIHdlIGFyZSBzZWVpbmcuIEl0JiMzOTtzIHRpbWUgdG8gcHV0IG9uIG15IGludmVzdGlnYXRvciBoYXQuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBmaWxlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMTpcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFx0XHQweDcxMDJcbiAyMDI6XHRcbiAyMDM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG4gMjA0Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNTpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4gMjA2Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4gMjA3Olx0XHR7fVxuIDIwODpcdH07XG4gMjA5Olx0XG4gMjEwOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG4gMjExOlx0XG4gMjEyOlx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuIDIxMzpcdFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbiAyMTQ6XHRcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbiAyMTU6XHRcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXG4gMjE2Olx0XHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG4gMjE3Olx0XHQuZHJpdmVyICAgICAgICAgPSB7XG4gMjE4Olx0XHRcdC5wbSAgICAgPSBcdTAwMjZzdG1tYWNfc2ltcGxlX3BtX29wcyxcbiAyMTk6XHRcdH0sXG4gMjIwOlx0fTtcbiAyMjE6XHRcbiAyMjI6XHRtb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XG4gMjIzOlx0XG4gMjI0Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1NUTU1BQyAxMC8xMDAvMTAwMCBFdGhlcm5ldCBQQ0kgZHJpdmVyXCYjMzQ7KTtcbiAyMjU6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O1JheWFnb25kIEtva2F0YW51ciBcdTAwM2NyYXlhZ29uZC5rb2thdGFudXJAdmF5YXZ5YWxhYnMuY29tXHUwMDNlXCYjMzQ7KTtcbiAyMjY6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0dpdXNlcHBlIENhdmFsbGFybyBcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXHUwMDNlXCYjMzQ7KTtcbiAyMjc6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkzOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gUENJIEV0aGVybmV0IERyaXZlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBzb21lIGtub3duIGdvb2QgZXhhbXBsZXMgb2YgUENJLWJhc2VkIEV0aGVybmV0IGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIHNvbGlkIHBsYWNlIHRvIHN0YXJ0IHNpbmNlIGl0IGRlYWxzIHdpdGggYSBzaW1pbGFyIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLiBJJiMzOTttIGZvY3VzaW5nIG9uICYjMzQ7ZHdtYWMmIzM0OyBhbmQgb3RoZXIgUENJIGRyaXZlcnMgaW4gZ2VuZXJhbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgaW5pdGlhbGl6YXRpb24gYW5kIGRldmljZSBwcm9iZSBpcyBzdHJ1Y3R1cmVkIGluIGEgd2VsbC1lc3RhYmxpc2hlZCBleGFtcGxlLCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGV4cGVjdGVkIGRyaXZlciBzdHJ1Y3R1cmUuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGRyaXZlcnMgaGFuZGxlIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSwgcmVzb3VyY2UgbWFwcGluZywgYW5kIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhlIFBDSSBmcmFtZXdvcmsuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGlzIGNvbnRleHQgYmVmb3JlIEkgc3RhcnQgbG9va2luZyBhdCBhIHNwZWNpZmljIGNoaXBzZXQsIHRoaXMgc2hvdWxkIGdpdmUgbWUgYSBtYXAgb2Ygd2hlcmUgdG8gZ28gbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTE0MTU9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE3OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxOC1cdC5uYW1lID0gXCYjMzQ7aW50ZWwtZXRoLXBjaVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0Mjc6bW9kdWxlX3BjaV9kcml2ZXIoaW50ZWxfZXRoX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NjAyPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjA0OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBsb29uZ3Nvbl9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwNS1cdC5uYW1lID0gRFJJVkVSX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjYxNDptb2R1bGVfcGNpX2RyaXZlcihsb29uZ3Nvbl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MzcxPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzQtXHQubmFtZSA9IERSSVZFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM4Mzptb2R1bGVfcGNpX2RyaXZlcihkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjY4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFFFTVUgRW11bGF0aW9uIFF1YW5kYXJ5KioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBzb21ldGhpbmcgb3V0IGFib3V0IFFFTVUgYW5kIGl0cyBuZXR3b3JrIGRldmljZSBlbXVsYXRpb24sIHNwZWNpZmljYWxseSByZWdhcmRpbmcgYHN0bW1hY2AgYW5kIGBkd21hY2AgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiAqQXJlKiB0aGVzZSBldmVyIGFjdHVhbGx5IGVtdWxhdGVkPyBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgdGhlIHR5cGljYWwgQVJNIGJvYXJkIHNldHVwcyBJIHdvcmsgd2l0aCwgbGlrZSB0aGUgYG9yYW5nZXBpLXBjYCAoYWxsd2lubmVyLWgzKSBvciBgY3ViaWVib2FyZGAgKGFsbHdpbm5lci1hMTApLiBJJiMzOTttIHByZXR0eSBzdXJlIEkmIzM5O3ZlIHNlZW4gdGhpbmdzIGxpa2UgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBgYWxsd2lubmVyX2VtYWNgIGluIHRob3NlIGNvbmZpZ3VyYXRpb25zLiBCdXQgd2hhdCBhYm91dCB0aGUgYnJvYWRlciBwaWN0dXJlPyBXaGF0IGhhcHBlbnMgd2hlbiBJJiMzOTttIGRlYWxpbmcgd2l0aCBhbiBhbWQ2NCBzZXR1cD8KClRoYXQmIzM5O3MgdGhlIGNydXggb2YgaXQ6ICpEb2VzKiBRRU1VLCBpbiBhbiBhbWQ2NCBlbnZpcm9ubWVudCAoeDg2XzY0IFBDIC8gUTM1IC8gbWljcm92bSksIG9mZmVyIGVtdWxhdGlvbiBmb3IgYHN0bW1hY2Agb3IgYGR3bWFjYD8gVGhlIGFuc3dlciBzZWVtcyB0byBiZSBuby4gVGhlIHVzdWFsIHN1c3BlY3RzIEkmIzM5O20gZmFtaWxpYXIgd2l0aCDigJMgYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBgcnRsODEzOWAsIGV0Yy4g4oCTIHRoZXNlIGFyZSB0aGUgKnN0YW5kYXJkKiBRRU1VIG5ldHdvcmsgZGV2aWNlcy4gSSYjMzk7dmUgZ290IGEgbWVudGFsIGxpc3Qgb2YgYWxsIHRoZSBvdGhlciB0eXBpY2FsIGRyaXZlcnM6IGBwY25ldGAsIGBuZTJrX3BjaWAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXQtcGNpYCwgYHVzYi1uZXRgLCBgcm9ja2VyYCwgYHN1bmdlbWAsIGBpODI1NTEvNTcvNTlgIChlZXBybzEwMCksIGB0dWxpcGAsIGFuZCBgbGFuY2VgLiBJIGNhbiBjb25maWRlbnRseSBzYXkgdGhhdCBuZWl0aGVyIGBzdG1tYWNgIG5vciBgZHdtYWNgIFBDSSBtb2RlbHMgYXJlIHByZXNlbnQuCgpOb3csIHdhaXQgYSBtaW51dGUsIGlzIHRoZXJlICphbnkqIHZpcnR1YWwgYnVzIG9yIGRldmljZSB0aGF0IGNvdWxkIGJlIHVzZWQgZm9yIGBzdG1tYWNgPyBJdCYjMzk7cyB0aW1lIHRvIHZlcmlmeSBpZiBgc3RtbWFjYCBjYW4gYmUgcHJvYmVkIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgUUVNVSBoYXJkd2FyZSBlbXVsYXRpb24uIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgbGlrZSBgc3RtbWFjX2R2cl9wcm9iZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBzdG1tYWNfZHZyX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMT12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTI6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDEzLVx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03ODE2PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMjgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjk6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTMwLVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzU5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNjM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlciYjMzk7cyBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYHN0bW1hY2AsIHRoZSBuZXR3b3JrIGRldmljZSBkcml2ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcyYjMzk7IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSwgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGlzIHdoZXRoZXIgYHN5emthbGxlcmAgY2FuIGV2ZW4gKnJlYWNoKiB0aGlzIGNvZGUuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogcmVhY2hhYmlsaXR5IGlzIHRoZSBwcmltYXJ5IGdhdGUuIFRoZXkgc3BlY2lmeSB0aGF0IHdlIGNhbiBvbmx5IHRhcmdldCBjb2RlIHRoYXQgZXhlY3V0ZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIOKAkyBHQ0Ugb3IgUUVNVSwgcHJlZmVyYWJseSB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCBvciB0dW4vdGFwLiBBbnkgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGNvZGUgaXMgb2ZmLWxpbWl0cywgcmVnYXJkbGVzcyBvZiBpdHMgaW50ZXJuYWwgY29tcGxleGl0eSBvciB0aGUgcHJlc2VuY2Ugb2YgYXNzZXJ0aW9ucy4KClRoZSBkb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgbGlzdHMgZXhhbXBsZXMgb2YgKnVucmVhY2hhYmxlKiBoYXJkd2FyZTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgdGhhdCByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCBhbHNvIGZsYWdzIGV4ZWN1dGlvbiBwYXRocyB0aGF0IG9ubHkgdHJpZ2dlciBkdXJpbmcsIHNheSwgUENJIGhvdC11bnBsdWcgb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuIFRoaXMgZ2l2ZXMgc29tZSBpbXBvcnRhbnQgY29udGV4dCBmb3IgZGVjaWRpbmcgaWYgd2UgY2FuIGZ1enogdGhpcyBjb2RlLgoKU28sIGxldCYjMzk7cyBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IHRvdWNoZXMgYSBmZXcga2V5IGZ1bmN0aW9uczogYHN0bW1hY194ZHBfcmVsZWFzZWAgaW4gYHN0bW1hY19tYWluLmNgLCBhbmQgYHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZWAsIGBzdG1tYWNfeGRwX2VuYWJsZV9wb29sYCwgYW5kIGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAgaW4gYHN0bW1hY194ZHAuY2AuIFRoZXNlIGFwcGVhciB0byBiZSBYU0svQUZfWERQIHBvb2wgc2V0dXAgYW5kIHRlYXJkb3duIGNhbGxiYWNrcyBmb3IgdGhlIGBzdG1tYWNgIG5ldGRldiBkcml2ZXIuIGBzdG1tYWNfeGRwX2VuYWJsZV9wb29sYCBpcyB0cmlnZ2VyZWQgYnkgYHN0bW1hY194ZHBfc2V0X3Bvb2xgIHdoaWNoIGdldHMgY2FsbGVkIGJ5IGFuIFhEUCBuZXRkZXYgb3AgKGBuZG9feHNrX2J1ZmZfcG9vbF9lbmFibGVgL2BicGZgKS4gQ3J1Y2lhbGx5LCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBpcyBjYWxsZWQgYnkgYHN0bW1hY19yZWxlYXNlYCwgd2hpY2ggaXMgdGhlIHNhbWUgYXMgYHN0bW1hY19tYWNfc3RvcGAgb3IgYG5kb19zdG9wYC4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBhbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGluaGVyZW50bHkgcmVseSBvbiBhbiBgc3RtbWFjYCBuZXRfZGV2aWNlIGFjdHVhbGx5IGV4aXN0aW5nLiBDYW4gd2UgY3JlYXRlIHRoaXMgZGV2aWNlIGluIGEgc3RhbmRhcmQsIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQgb24gYW1kNjQ/IFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG1hdHRlci4gV2UgbmVlZCB0byBmaW5kIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgcGxhdGZvcm0gZGV2aWNlLCBtb2NrIGRldmljZSwgb3Igc29tZSBvdGhlciBtZWNoYW5pc20gd2l0aGluIHRoZSBrZXJuZWwgdHJlZSB0aGF0IGNhbiBjcmVhdGUgYW4gYHN0bW1hY2AgZGV2aWNlICp3aXRob3V0KiByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBub24tc3RhbmRhcmQgUUVNVSBzZXR1cC4gSSYjMzk7bSBnb2luZyB0byBncmVwIHRoZSBrZXJuZWwgc291cmNlcyBmb3IgYHN0bW1hY2AgYW5kIHBsYXRmb3JtIGRldmljZXMgb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIHdheSB0byBnZXQgYSBgc3RtbWFjYCBkZXZpY2UgaW5pdGlhbGl6ZWQgd2l0aG91dCByZXF1aXJpbmcgYW55IGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RldmljZV9yZWdpc3Rlci4qc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2MjEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgUGxhdGZvcm0gRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBmb2N1cyBpcyBvbiB0aGUgYHN0bW1hY19wbGF0Zm9ybS5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBnbHVlIGNvZGUgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyIGxpa2VseSByZXNpZGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCBwYXJ0aWN1bGFybHkgdGhlIHBsYXRmb3JtJiMzOTtzIGRldmljZSB0cmVlIGJpbmRpbmdzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHJlc291cmNlIGFsbG9jYXRpb24gZm9yIHJlZ2lzdGVycywgaW50ZXJydXB0IGhhbmRsaW5nIHNldHVwLCBhbmQgY2xvY2sgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBwcm9iZSBmdW5jdGlvbjsgdGhhdCYjMzk7cyB3aGVyZSB0aGUgZHJpdmVyIGluaXRpYWxpemVzIGl0c2VsZiBvbiBkZXZpY2UgZW51bWVyYXRpb24uIEkmIzM5O2xsIGJlIGRpZ2dpbmcgZGVlcCBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgc2VhcmNoaW5nIGZvciBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgYXJlYXMgd2hlcmUgY3VzdG9tIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSBvciBpbnRyb2R1Y2UgaXNzdWVzLiBJJiMzOTtsbCBhbHNvIGNoZWNrIGZvciBhbnkgcXVpcmsgaGFuZGxpbmcgc3BlY2lmaWMgdG8gY2VydGFpbiBTVE1pY3JvZWxlY3Ryb25pY3MgU29DcyBvciBib2FyZCByZXZpc2lvbnMuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGlzIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyLipzdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg3MQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIFNUTU1BQyBQbGF0Zm9ybSBEcml2ZXIqKgoKT2theSwgc28gd2UgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBMZXQmIzM5O3Mgbm90IHdhc3RlIGFueSB0aW1lIHdpdGggc2Vjb25kYXJ5IHNvdXJjZXMgb3IgZG9jdW1lbnRhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBgc3RtbWFjX3BsYXRmb3JtLmNgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGRyaXZlciBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBjb250cm9sbGVyLCBzbyBpdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGxhY2Ugd2hlcmUgdGhlIHJvb3Qgb2YgdGhpcyBpc3N1ZSByZXNpZGVzLCBhbmQgd2hlcmUgSSYjMzk7bSBnb2luZyB0byBmaW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBuZWVkZWQgdG8gdW5kZXJzdGFuZCB0aGUgY3VycmVudCBiZWhhdmlvci4gTm8gbmVlZCB0byByZS1pbnZlbnQgdGhlIHdoZWVsIG9yIHdvcmsgdGhyb3VnaCBpcnJlbGV2YW50IGNvZGUgcGF0aHMuIExldCYjMzk7cyBnZXQgZG93biB0byB0aGUgZ3JpdHR5IGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgIDM6XHQgIFRoaXMgY29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIHBsYXRmb3JtIGRyaXZlci5cbiAgIDQ6XHRcbiAgIDU6XHQgIENvcHlyaWdodCAoQykgMjAwNy0yMDExICBTVE1pY3JvZWxlY3Ryb25pY3MgTHRkXG4gICA2Olx0XG4gICA3Olx0XG4gICA4Olx0ICBBdXRob3I6IEdpdXNlcHBlIENhdmFsbGFybyBcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXHUwMDNlXG4gICA5Olx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgMTA6XHRcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4gIDE2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4gIDE4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG4gIDE5Olx0XG4gIDIwOlx0I2luY2x1ZGUgXCYjMzQ7c3RtbWFjLmhcJiMzNDtcbiAgMjE6XHQjaW5jbHVkZSBcJiMzNDtzdG1tYWNfcGxhdGZvcm0uaFwmIzM0O1xuICAyMjpcdFxuICAyMzpcdCNpZmRlZiBDT05GSUdfT0ZcbiAgMjQ6XHRcbiAgMjU6XHQvKipcbiAgMjY6XHQgKiBkd21hYzEwMDBfdmFsaWRhdGVfbWNhc3RfYmlucyAtIHZhbGlkYXRlcyB0aGUgbnVtYmVyIG9mIE11bHRpY2FzdCBmaWx0ZXIgYmluc1xuICAyNzpcdCAqIEBkZXY6IHN0cnVjdCBkZXZpY2Ugb2YgdGhlIHBsYXRmb3JtIGRldmljZVxuICAyODpcdCAqIEBtY2FzdF9iaW5zOiBNdWx0aWNhc3QgZmlsdGVyaW5nIGJpbnNcbiAgMjk6XHQgKiBEZXNjcmlwdGlvbjpcbiAgMzA6XHQgKiB0aGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgbnVtYmVyIG9mIE11bHRpY2FzdCBmaWx0ZXJpbmcgYmlucyBzcGVjaWZpZWRcbiAgMzE6XHQgKiBieSB0aGUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZS4gVGhlIFN5bm9wc3lzIEdNQUMgc3VwcG9ydHNcbiAgMzI6XHQgKiA2NCBiaW5zLCAxMjggYmlucywgb3IgMjU2IGJpbnMuIFwmIzM0O2JpbnNcJiMzNDsgcmVmZXIgdG8gdGhlIGRpdmlzaW9uIG9mIENSQ1xuICAzMzpcdCAqIG51bWJlciBzcGFjZS4gNjQgYmlucyBjb3JyZXNwb25kIHRvIDYgYml0cyBvZiB0aGUgQ1JDLCAxMjggY29ycmVzcG9uZHNcbiAgMzQ6XHQgKiB0byA3IGJpdHMsIGFuZCAyNTYgcmVmZXJzIHRvIDggYml0cyBvZiB0aGUgQ1JDLiBBbnkgb3RoZXIgc2V0dGluZyBpc1xuICAzNTpcdCAqIGludmFsaWQgYW5kIHdpbGwgY2F1c2UgdGhlIGZpbHRlcmluZyBhbGdvcml0aG0gdG8gdXNlIE11bHRpY2FzdFxuICAzNjpcdCAqIHByb21pc2N1b3VzIG1vZGUuXG4gIDM3Olx0ICovXG4gIDM4Olx0c3RhdGljIGludCBkd21hYzEwMDBfdmFsaWRhdGVfbWNhc3RfYmlucyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBtY2FzdF9iaW5zKVxuICAzOTpcdHtcbiAgNDA6XHRcdGludCB4ID0gbWNhc3RfYmlucztcbiAgNDE6XHRcbiAgNDI6XHRcdHN3aXRjaCAoeCkge1xuICA0MzpcdFx0Y2FzZSBIQVNIX1RBQkxFX1NJWkU6XG4gIDQ0Olx0XHRjYXNlIDEyODpcbiAgNDU6XHRcdGNhc2UgMjU2OlxuICA0NjpcdFx0XHRicmVhaztcbiAgNDc6XHRcdGRlZmF1bHQ6XG4gIDQ4Olx0XHRcdHggPSAwO1xuICA0OTpcdFx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O0hhc2ggdGFibGUgZW50cmllcyBzZXQgdG8gdW5leHBlY3RlZCB2YWx1ZSAlZFxcblwmIzM0OyxcbiAgNTA6XHRcdFx0XHQgbWNhc3RfYmlucyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODM5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uLi4KCioqRGl2aW5nIEJhY2sgaW50byBgc3RtbWFjX3BsYXRmb3JtLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgYmFjayB0byBpdC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIGBzdG1tYWNfcGxhdGZvcm0uY2AuIFRpbWUgdG8gbWV0aWN1bG91c2x5IHJldmlldyB0aGUgcmVtYWluaW5nIHNlY3Rpb25zLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBrZXkgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gZGV0YWlscywgdGhlIHJlc291cmNlIGFsbG9jYXRpb24gcm91dGluZXMsIGludGVycnVwdCBoYW5kbGluZyBzZXR1cHMsIGFuZCBhbnkgcG90ZW50aWFsIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3ZlIHN0cnVjdHVyZWQgdGhlIGRyaXZlciB3aXRoIHJlc3BlY3QgdG8gcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMuIEtub3dpbmcgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gdGhvc2UgaXMgY3J1Y2lhbCB0byBnZXR0aW5nIGEgc29saWQgdW5kZXJzdGFuZGluZy4gSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgY2xvY2tpbmcgYW5kIFBIWSBpbnRlcmFjdGlvbnMg4oCTIHRoYXQgYWx3YXlzIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyAoYW5kIG9mdGVuLCBvYnNjdXJlKSBkZXRhaWxzIHJlc2lkZS4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIGRyaXZlciBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQsIHBhcnRpY3VsYXJseSBhbnkgY2FzZXMgd2hpY2ggbWlnaHQgcmVsYXRlIHRvIHRoZSBwbGF0Zm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTEyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBhcyB0aG91Z2ggSSYjMzk7bSBleGFtaW5pbmcgYGR3bWFjLWdlbmVyaWMuY2A6CgoqKkRpdmluZyBpbnRvIHRoZSBHZW5lcmljIERXTUFDIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY3JhY2sgb3BlbiBgZHdtYWMtZ2VuZXJpYy5jYC4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBhIGZhaXIgYml0IG9mIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUgaGVyZSwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggbW9yZSBzcGVjaWZpYyBEV01BQyBkcml2ZXIgaW1wbGVtZW50YXRpb25zIGFyZSBidWlsdCwgc28gdW5kZXJzdGFuZGluZyBpdHMgYXJjaGl0ZWN0dXJlIGlzIGNyaXRpY2FsIGZvciBteSB3b3JrLiBJIHdhbnQgdG8gc2VlIGhvdyBpdCBhYnN0cmFjdHMgdGhlIGhhcmR3YXJlLiBXaGF0IGFyZSB0aGUga2V5IHJlZ2lzdGVycyBpdCBhY2Nlc3Nlcz8gSG93IGRvZXMgaXQgaGFuZGxlIGRlc2NyaXB0b3JzLCBpbnRlcnJ1cHRzLCBhbmQgRE1BPyBJJiMzOTttIGN1cmlvdXMgYWJvdXQgdGhlIGNob3NlbiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyB0b287IHNwaW5sb2NrcyB2ZXJzdXMgbXV0ZXhlcyB3aWxsIGRpY3RhdGUgYSBsb3QgYWJvdXQgdGhlIGRyaXZlciYjMzk7cyBvdmVyYWxsIHBlcmZvcm1hbmNlIHByb2ZpbGUuIEkmIzM5O20gYWxzbyBzY2FubmluZyBmb3IgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIHRoYXQgbWlnaHQgYmUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIExldCYjMzk7cyBzZWUgaG93IGl0IGhhbmRsZXMgcGFja2V0IGJ1ZmZlcmluZyBhbmQgZmxvdyBjb250cm9sLCBhbmQgaG93IGl0IGRlYWxzIHdpdGggZGlmZmVyZW50IEV0aGVybmV0IGZyYW1lIHR5cGVzLiBNeSB1bHRpbWF0ZSBnb2FsIGlzIHRvIHNlZSBob3cgdGhpcyAmIzM5O2dlbmVyaWMmIzM5OyBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIHRoZSBjb3JlIGhhcmR3YXJlIGFic3RyYWN0aW9uIG9mIHRoZSBEV01BQywgYmVjYXVzZSwgaW4gbWFueSBjYXNlcywgdGhpcyBpcyB3aGVyZSBhIGxvdCBvZiB0aGUgcHJvYmxlbXMgb2NjdXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTIzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFuYXJpb25fZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMjU6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYW5hcmlvbl9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI2LVx0LnByb2JlICA9IGFuYXJpb25fZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEzMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFuYXJpb25fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0zNTk9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHdjX2V0aF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzYxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjItXHQucHJvYmUgID0gZHdjX2V0aF9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd2NfZXRoX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MzYwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGVpYzc3MDBfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNjI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWljNzcwMF9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYzLVx0LnByb2JlICA9IGVpYzc3MDBfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM3MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTY3PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3bWFjX2dlbmVyaWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjY5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTcwLVx0LnByb2JlICA9IGR3bWFjX2dlbmVyaWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6Nzc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd21hY19nZW5lcmljX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MzkwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGlteF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW14X2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5My1cdC5wcm9iZSAgPSBpbXhfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDAwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo0MDE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbXhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQwMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjcwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyNzI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW5nZW5pY19tYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3My1cdC5wcm9iZVx0XHQ9IGluZ2VuaWNfbWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyODA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbmdlbmljX21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI4MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTM5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsX2V0aF9wbGF0X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDAtXHQucHJvYmUgID0gaW50ZWxfZXRoX3BsYXRfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTE0Ny19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjE0ODptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGludGVsX2V0aF9wbGF0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQ5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz00OTU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDk3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDk4LVx0LnByb2JlID0gaXBxODA2eF9nbWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MDUtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo1MDY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpcHE4MDZ4X2dtYWNfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM9MjI3PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxzMXhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MjI5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGxzMXhfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjMwLVx0LnByb2JlID0gbHMxeF9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMzUtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjIzNjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGxzMXhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIzNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NzU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHBjMTh4eF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Nzc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHBjMTh4eF9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzgtXHQucHJvYmUgID0gbHBjMTh4eF9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtODUtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo4Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGxwYzE4eHhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy04Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTY3MD1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZWRpYXRla19kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjcyOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1lZGlhdGVrX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjczLVx0LnByb2JlICA9IG1lZGlhdGVrX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjgwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lZGlhdGVrX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTgwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo4MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjZfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04My1cdC5wcm9iZSAgPSBtZXNvbjZfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy05MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo5MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lc29uNl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy05Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9NTA1PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uOGJfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWVzb244Yl9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTA4LVx0LnByb2JlICA9IG1lc29uOGJfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUxNS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjUxNjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lc29uOGJfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jPTEyMj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBudnRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzoxMjQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbnZ0X2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMjUtXHQucHJvYmUgID0gbnZ0X2dtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEzMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjEzMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG52dF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEzNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTgwNz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBxY29tX2V0aHFvc19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6ODA5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHFjb21fZXRocW9zX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODEwLVx0LnByb2JlICA9IHFjb21fZXRocW9zX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODE2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jOjgxNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHFjb21fZXRocW9zX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgxOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9MjIyPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJlbmVzYXNfZ2JldGhfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMjQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmVuZXNhc19nYmV0aF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjI1LVx0LnByb2JlICA9IHJlbmVzYXNfZ2JldGhfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIzMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIzMjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJlbmVzYXNfZ2JldGhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjM1PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJrX2dtYWNfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjM3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJrX2dtYWNfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjM4LVx0LnByb2JlICA9IHJrX2dtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjQ0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE2NDU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihya19nbWFjX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTc5PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjgxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJ6bjFfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgyLVx0LnByb2JlICA9IHJ6bjFfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTg4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6ODk6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihyem4xX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtOTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM9MjIwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHMzMl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoyMjI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczMyX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMy1cdC5wcm9iZSA9IHMzMl9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMzAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIzMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHMzMl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02Nzk9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29jZnBnYV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY4MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzb2NmcGdhX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02ODItXHQucHJvYmUgID0gc29jZnBnYV9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjg4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6Njg5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc29jZnBnYV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY5MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz03Nz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo3OTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzb3BoZ29fZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtODAtXHQucHJvYmUgID0gc29waGdvX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTg3LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo4ODptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNvcGhnb19kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtODktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0yMTQ9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3BhY2VtaXRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIxNjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzcGFjZW1pdF9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIxNy1cdC5wcm9iZSAgPSBzcGFjZW1pdF9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIyNC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMjU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzcGFjZW1pdF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xNjU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RhcmZpdmVfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE2NzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdGFyZml2ZV9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE2OC1cdC5wcm9iZSAgPSBzdGFyZml2ZV9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE3NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdGFyZml2ZV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9MzAwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0zMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYzozMDI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RpX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMwMy1cdC5wcm9iZSAgPSBzdGlfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzA5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYzozMTA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdGlfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMxMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTY2OT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdG0zMl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NjcxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0bTMyX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcyLVx0LnByb2JlICA9IHN0bTMyX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjc5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjY4MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0bTMyX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY4MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYz0xNDU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM6MTQ3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0OC1cdC5wcm9iZSAgPSBzdW41NWlfZ21hYzIwMF9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNTQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE1NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjgzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI4NTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdW44aV9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODYtXHQucHJvYmUgID0gc3VuOGlfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjk0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyOTU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW44aV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjk2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM9MTU0PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjdpX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxNTY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuN2lfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTctXHQucHJvYmUgID0gc3VuN2lfZ21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE2My19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxNjQ6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW43aV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz00MDM9c3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKHRlZ3JhX21nYmVfcG1fb3BzLCB0ZWdyYV9tZ2JlX3N1c3BlbmQsIHRlZ3JhX21nYmVfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzo0MDU6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdGVncmFfbWdiZV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQwNi1cdC5wcm9iZSA9IHRlZ3JhX21nYmVfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MTMtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDE0Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGVncmFfbWdiZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNzE9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjI3MzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0aGVhZF9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI3NC1cdC5wcm9iZSA9IHRoZWFkX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjgwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjI4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHRoZWFkX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jPTI1OT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB2aXNjb250aV9ldGhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjI2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB2aXNjb250aV9ldGhfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjItXHQucHJvYmUgID0gdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjY4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjI2OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHZpc2NvbnRpX2V0aF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNzAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTM2CgkJCQkJCQlvdXRwdXQ6IDExOQoJCQkJCQkJdGhvdWdodHM6IDc1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBTVE1NQUMgRHJpdmVyIENvZGUgaXMgVW5yZWFjaGFibGUgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiB0aHJvdWdoIHRoaXMgcGF0Y2ggYW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcsIGFuZCBoZXJlJiMzOTtzIG15IGJyZWFrZG93bjogdGhpcyBjb2RlIG1vZGlmaWVzIGZ1bmN0aW9ucyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzL1N5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gWERQIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IOKAkyBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZWAsIGBzdG1tYWNfeGRwX2VuYWJsZV9wb29sYCwgYW5kIGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAuCgpUaGUgcHJvYmxlbSBpcywgdGhpcyBgc3RtbWFjYCBkcml2ZXIgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgKmlzbiYjMzk7dCogYXZhaWxhYmxlIGluIHRoZSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzIHdlIHVzZSwgbmFtZWx5IHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIFZNcy4gVGhpcyBpc24mIzM5O3QganVzdCBhIGdlbmVyaWMgbmV0d29yayBkZXZpY2U7IGl0JiMzOTtzIHRpZWQgdG8gZWl0aGVyIHBhcnRpY3VsYXIgU29DIHBsYXRmb3JtcyBvciBTeW5vcHN5cyBQQ0kgdGVzdGJvYXJkcy4gIEkmIzM5O3ZlIGNoZWNrZWQgdGhlIGtub3duIGRldmljZSBtYXBwaW5ncyDigJMgSW50ZWwgUXVhcmssIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgQWxkZXIgTGFrZSwgTG9vbmdzb24sIE1vdG9yY29tbSwgYW5kIHRoZSBTeW5vcHN5cyBHTUFDNSBQQ0kuICBOb25lIG9mIHRoZXNlIGV4aXN0IG9yIGFyZSBlbXVsYXRlZCwgd2hpY2ggbWF0Y2hlcyB0aGUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyLgoKV2Uga25vdyBmcm9tIFNlY3Rpb24gMiB0aGF0IGEgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUmIzM0OyBoYXJkd2FyZSBkcml2ZXIgc2hvdWxkbiYjMzk7dCBiZSBmdXp6ZWQsIGFzIGZ1enppbmcgY2FuIG9ubHkgdGFyZ2V0IGNvZGUgdGhhdCBleGVjdXRlcyBpbiBvdXIgc3RhbmRhcmQgZW52aXJvbm1lbnRzLiBUaGUgZmFjdCB0aGF0IHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0IGRvZXNuJiMzOTt0IGNoYW5nZSBhbnl0aGluZywgYmVjYXVzZSBldmVuIG9uIGFtZDY0LCBzdG1tYWMgaXMgc3RpbGwgdGllZCB0byBzcGVjaWZpYyBjb250cm9sbGVycy4gV2l0aG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgY3JlYXRlIHRoZSBgbmV0X2RldmljZWAsIHRoZSBtb2RpZmllZCBjb2RlIHNpbXBseSAqY2Fubm90KiBiZSBleGVjdXRlZC4gVGhlIGBuZXRfZGV2aWNlYCBhbmQgaXRzIG9wZXJhdGlvbnMsIGxpa2UgWERQIGNhbGxiYWNrcyBhbmQgcXVldWUgbWFuaXB1bGF0aW9uLCBhcmVuJiMzOTt0IGV2ZW4gaW5zdGFudGlhdGVkLgoKVGhlcmVmb3JlLCB0aGUgWERQIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuICBTbywgYmFzZWQgb24gdGhlIHJlYWNoYWJpbGl0eSBwcmluY2lwbGUsIHRoaXMgcGF0Y2ggaXMgKm5vdCogd29ydGggZnV6emluZy4KYGBgCnNldC1yZXN1bHRzCmBgYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFhEUCBwb29sIGVuYWJsZS9kaXNhYmxlIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChlbWJlZGRlZCBTb0MgcGxhdGZvcm0gZGV2aWNlcyBhbmQgdmVuZG9yLXNwZWNpZmljIFBDSSBjb250cm9sbGVycykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gQmVjYXVzZSB0aGUgaGFyZHdhcmUgY2Fubm90IGJlIHByb2JlZCB0byBjcmVhdGUgYSBuZXRfZGV2aWNlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgWERQIHBvb2wgZW5hYmxlL2Rpc2FibGUgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKGVtYmVkZGVkIFNvQyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJIGNvbnRyb2xsZXJzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBCZWNhdXNlIHRoZSBoYXJkd2FyZSBjYW5ub3QgYmUgcHJvYmVkIHRvIGNyZWF0ZSBhIG5ldF9kZXZpY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NzwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTU6NTcuMjIxNTY2NTA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAzMjIyNzQwNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBYRFAgcG9vbCBlbmFibGUvZGlzYWJsZSBhbmQgcXVldWUgbWFuYWdlbWVudCBmdW5jdGlvbnMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAoZW1iZWRkZWQgU29DIHBsYXRmb3JtIGRldmljZXMgYW5kIHZlbmRvci1zcGVjaWZpYyBQQ0kgY29udHJvbGxlcnMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIEJlY2F1c2UgdGhlIGhhcmR3YXJlIGNhbm5vdCBiZSBwcm9iZWQgdG8gY3JlYXRlIGEgbmV0X2RldmljZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU1OjU3LjIyMTU3MTAzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE3MDg5NTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODNkM2Y0ZjVkOTZiMmY2YmY0OGM3YzU2NDFkZmQ3NzAyYmVkYmE2OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAxMDo1NTo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDYyYzM0NDE5MTFlNzEuLjkyOGFhMDVhYTg3ZDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtNzExOCwxNSArNzExOCwxNSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHR1OCBjaGFuO1xcbiBcXG4tXFx0LyogRW5zdXJlIHR4IGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nICovXFxuLVxcdG5ldGlmX3R4X2Rpc2FibGUoZGV2KTtcXG4tXFxuIFxcdC8qIERpc2FibGUgTkFQSSBwcm9jZXNzICovXFxuIFxcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XFxuIFxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxcbiBcXHRcXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XFxuIFxcbitcXHQvKiBFbnN1cmUgdHggZnVuY3Rpb24gaXMgbm90IHJ1bm5pbmcgKi9cXG4rXFx0bmV0aWZfdHhfZGlzYWJsZShkZXYpO1xcbitcXG4gXFx0LyogRnJlZSB0aGUgSVJRIGxpbmVzICovXFxuIFxcdHN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmNcXG5pbmRleCBkN2U0ZGI3MjI0YjBjLi44ODNiZDNmZTgwODlkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xcbkBAIC02LDYgKzYsMTYgQEBcXG4gI2luY2x1ZGUgXFxcInN0bW1hYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwic3RtbWFjX3hkcC5oXFxcIlxcbiBcXG4rc3RhdGljIHZvaWQgc3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxcbit7XFxuK1xcdHN0cnVjdCBuZXRkZXZfcXVldWUgKm5xID0gbmV0ZGV2X2dldF90eF9xdWV1ZShwcml2LVxcdTAwM2VkZXYsIHF1ZXVlKTtcXG4rXFxuK1xcdF9fbmV0aWZfdHhfbG9ja19iaChucSk7XFxuK1xcdHR4cV90cmFuc19jb25kX3VwZGF0ZShucSk7XFxuK1xcdG5ldGlmX3R4X3N0b3BfcXVldWUobnEpO1xcbitcXHRfX25ldGlmX3R4X3VubG9ja19iaChucSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZSlcXG4ge1xcbkBAIC0zNiw2ICs0Niw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdGlmIChuZWVkX3VwZGF0ZSkge1xcbiBcXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmNoLVxcdTAwM2VyeF9uYXBpKTtcXG4gXFx0XFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZjaC1cXHUwMDNldHhfbmFwaSk7XFxuK1xcdFxcdHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuIFxcdFxcdHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcXG4gXFx0XFx0c3RtbWFjX2Rpc2FibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xcbiBcXHR9XFxuQEAgLTQ2LDYgKzU3LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuIFxcdFxcdHN0bW1hY19lbmFibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xcbiBcXHRcXHRuYXBpX2VuYWJsZShcXHUwMDI2Y2gtXFx1MDAzZXJ4dHhfbmFwaSk7XFxuK1xcdFxcdG5ldGlmX3R4X3dha2VfcXVldWUobmV0ZGV2X2dldF90eF9xdWV1ZShwcml2LVxcdTAwM2VkZXYsIHF1ZXVlKSk7XFxuIFxcbiBcXHRcXHRlcnIgPSBzdG1tYWNfeHNrX3dha2V1cChwcml2LVxcdTAwM2VkZXYsIHF1ZXVlLCBYRFBfV0FLRVVQX1JYKTtcXG4gXFx0XFx0aWYgKGVycilcXG5AQCAtNzMsNiArODUsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxcbiBcXG4gXFx0aWYgKG5lZWRfdXBkYXRlKSB7XFxuIFxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2Y2gtXFx1MDAzZXJ4dHhfbmFwaSk7XFxuK1xcdFxcdHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuIFxcdFxcdHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcXG4gXFx0XFx0c3RtbWFjX2Rpc2FibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xcbiBcXHRcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG5AQCAtODcsNiArMTAwLDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcXG4gXFx0XFx0c3RtbWFjX2VuYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuIFxcdFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZjaC1cXHUwMDNlcnhfbmFwaSk7XFxuIFxcdFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZjaC1cXHUwMDNldHhfbmFwaSk7XFxuK1xcdFxcdG5ldGlmX3R4X3dha2VfcXVldWUobmV0ZGV2X2dldF90eF9xdWV1ZShwcml2LVxcdTAwM2VkZXYsIHF1ZXVlKSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NTo1Ny43MzkzNTMyODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjg5ODA0NDcwOTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBYRFAgcG9vbCBlbmFibGUvZGlzYWJsZSBhbmQgcXVldWUgbWFuYWdlbWVudCBmdW5jdGlvbnMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAoZW1iZWRkZWQgU29DIHBsYXRmb3JtIGRldmljZXMgYW5kIHZlbmRvci1zcGVjaWZpYyBQQ0kgY29udHJvbGxlcnMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIEJlY2F1c2UgdGhlIGhhcmR3YXJlIGNhbm5vdCBiZSBwcm9iZWQgdG8gY3JlYXRlIGEgbmV0X2RldmljZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODNkM2Y0ZjVkOTZiMmY2YmY0OGM3YzU2NDFkZmQ3NzAyYmVkYmE2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDEwOjU1OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDYyYzM0NDE5MTFlNzEuLjkyOGFhMDVhYTg3ZDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtNzExOCwxNSArNzExOCwxNSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHU4IGNoYW47XG4gXG4tXHQvKiBFbnN1cmUgdHggZnVuY3Rpb24gaXMgbm90IHJ1bm5pbmcgKi9cbi1cdG5ldGlmX3R4X2Rpc2FibGUoZGV2KTtcbi1cbiBcdC8qIERpc2FibGUgTkFQSSBwcm9jZXNzICovXG4gXHRzdG1tYWNfZGlzYWJsZV9hbGxfcXVldWVzKHByaXYpO1xuIFxuIFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4rKylcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTtcbiBcbitcdC8qIEVuc3VyZSB0eCBmdW5jdGlvbiBpcyBub3QgcnVubmluZyAqL1xuK1x0bmV0aWZfdHhfZGlzYWJsZShkZXYpO1xuK1xuIFx0LyogRnJlZSB0aGUgSVJRIGxpbmVzICovXG4gXHRzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xuaW5kZXggZDdlNGRiNzIyNGIwYy4uODgzYmQzZmU4MDg5ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jXG5AQCAtNiw2ICs2LDE2IEBAXG4gI2luY2x1ZGUgXCJzdG1tYWMuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfeGRwLmhcIlxuIFxuK3N0YXRpYyB2b2lkIHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcbit7XG4rXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpucSA9IG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi1cdTAwM2VkZXYsIHF1ZXVlKTtcbitcbitcdF9fbmV0aWZfdHhfbG9ja19iaChucSk7XG4rXHR0eHFfdHJhbnNfY29uZF91cGRhdGUobnEpO1xuK1x0bmV0aWZfdHhfc3RvcF9xdWV1ZShucSk7XG4rXHRfX25ldGlmX3R4X3VubG9ja19iaChucSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHQgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWUpXG4ge1xuQEAgLTM2LDYgKzQ2LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdGlmIChuZWVkX3VwZGF0ZSkge1xuIFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2Y2gtXHUwMDNlcnhfbmFwaSk7XG4gXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZjaC1cdTAwM2V0eF9uYXBpKTtcbitcdFx0c3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHR9XG5AQCAtNDYsNiArNTcsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3RtbWFjX2VuYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHRcdG5hcGlfZW5hYmxlKFx1MDAyNmNoLVx1MDAzZXJ4dHhfbmFwaSk7XG4rXHRcdG5ldGlmX3R4X3dha2VfcXVldWUobmV0ZGV2X2dldF90eF9xdWV1ZShwcml2LVx1MDAzZWRldiwgcXVldWUpKTtcbiBcbiBcdFx0ZXJyID0gc3RtbWFjX3hza193YWtldXAocHJpdi1cdTAwM2VkZXYsIHF1ZXVlLCBYRFBfV0FLRVVQX1JYKTtcbiBcdFx0aWYgKGVycilcbkBAIC03Myw2ICs4NSw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4gXG4gXHRpZiAobmVlZF91cGRhdGUpIHtcbiBcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmNoLVx1MDAzZXJ4dHhfbmFwaSk7XG4rXHRcdHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHRcdHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3RtbWFjX2Rpc2FibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbkBAIC04Nyw2ICsxMDAsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxuIFx0XHRzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0bmFwaV9lbmFibGUoXHUwMDI2Y2gtXHUwMDNlcnhfbmFwaSk7XG4gXHRcdG5hcGlfZW5hYmxlKFx1MDAyNmNoLVx1MDAzZXR4X25hcGkpO1xuK1x0XHRuZXRpZl90eF93YWtlX3F1ZXVlKG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi1cdTAwM2VkZXYsIHF1ZXVlKSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU1OjU3LjczOTM1NTYyN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjk2MTQxMDc4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIHRvIGxvb2sgYXQsIHRhcmdldGluZyB0aGUgYHN0bW1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuIFRoZSBtb2RpZmljYXRpb25zIGFmZmVjdCBgc3RtbWFjX21haW4uY2AgYW5kIGBzdG1tYWNfeGRwLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwIGludG8gdGhlIGNvZGUsIGxldCdzIGVzdGFibGlzaCBzb21lIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHN0bW1hY2AgYWN0dWFsbHkgKmlzKi4gSXMgdGhpcyBhIGRyaXZlciBmb3Igc29tZSBvYnNjdXJlLCBzcGVjaWFsaXplZCBoYXJkd2FyZSwgb3IgaXMgaXQgc29tZXRoaW5nIEkgbWlnaHQgZW5jb3VudGVyIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPyBPciBldmVuIG1vcmUgYnJvYWRseSwgaXMgaXQgYSBkcml2ZXIgdGhhdCdzIGNvcmUgdG8gYSBwYXJ0aWN1bGFyIFNvQ3Mgb3IgcGxhdGZvcm1zPyBJIG5lZWQgdG8ga25vdyBob3cgZWFzaWx5IEkgY2FuIHJlcGxpY2F0ZSB0aGlzLlxuXG5BaCwgcmlnaHQuIFNUTWljcm9lbGVjdHJvbmljcyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyBkcml2ZXIuIFRoYXQgY2xhcmlmaWVzICp3aGF0KiBpdCBpcywgbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0ICpob3cqIGl0J3MgaW5zdGFudGlhdGVkLiBJcyBpdCBhIFBDSSBkZXZpY2U/IEEgcGxhdGZvcm0gZGV2aWNlPyBTb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGBLY29uZmlnYCBmaWxlcyBhcmUgZ29pbmcgdG8gYmUgbXkgYmVzdCBmcmllbmQgaGVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLCBhbmQgYWxzbyBsaWtlbHkgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIEknbGwgdXNlIGdyZXAgb3IgSSBjYW4ganVzdCB1c2UgdGhlIEtjb25maWcgdG8gc2VhcmNoIHRvIHNlZSBleGFjdGx5IGhvdyB0aGlzIGRyaXZlciBpcyBib3VuZCB0byB0aGUgc3lzdGVtLiBUaGlzIGdpdmVzIG1lIGEgZnJhbWV3b3JrIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgcGF0Y2ggYW5kIGhvdyBJIGNhbiBnbyBhYm91dCB0ZXN0aW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTEzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6MDcuMzUzNDY1OTg0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTQ0MDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE4PWlmIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6MDcuNDExMDE3MzAyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTQ0MTE4MDkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFNUTU1BQyBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHByaW1hcnkgY29uY2VybiBpcyB3aGV0aGVyIG9yIG5vdCBJIGNhbiBldmVuICpyZWFjaCogdGhlIFNUTU1BQyBjb2RlIGZvciBmdXp6aW5nLCBhbmQgSSBuZWVkIHRvIGJlIHN1cmUgaXQncyBhY3R1YWxseSBzb21ldGhpbmcgSSBjYW4gdGVzdCBlZmZlY3RpdmVseS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgU1RNTUFDIGhhcmR3YXJlIGVtdWxhdGVkICphbnl3aGVyZSogaW4gUUVNVT8gQW5kLCBnaXZlbiBteSBgYW1kNjRgIHRhcmdldCwgSSBuZWVkIHRvIGtub3cgd2hhdCBldGhlcm5ldCBjb250cm9sbGVycyBRRU1VICpkb2VzKiBlbXVsYXRlIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJIGtub3cgaXQncyBhIGxpc3QsIGJ1dCBub25lIG9mIHRob3NlIGltbWVkaWF0ZWx5IGp1bXAgb3V0IGFzIGJlaW5nIHJlbGF0ZWQgdG8gc3RtbWFjLlxuXG5JIGhhdmUgYSBuYWdnaW5nIGZlZWxpbmcgdGhhdCBRRU1VIG1pZ2h0IGVtdWxhdGUgc29tZSBEV01BQyBvciBTVE1NQUMgZGV2aWNlcyBvbiBBUk0sIHBhcnRpY3VsYXJseSBBbGx3aW5uZXIgcGxhdGZvcm1zIChzdW54aSksIGJ1dCBteSB0YXJnZXQgaXMgYGFtZDY0YC4gRXZlbiBpZiBpdCAqZGlkKiBlbXVsYXRlIGl0IG9uIEFSTSwgZG9lcyBzdGFuZGFyZCBRRU1VIG9yIGEgU3l6a2FsbGVyIGNsdXN0ZXIgZm9yIGBhbWQ2NGAgZXZlbiAqdXNlKiBTVE1NQUM/IEkgcmVhbGx5IG5lZWQgdG8gZ2V0IGNsYXJpdHkgb24gdGhhdC5cblxuSXMgU1RNTUFDIHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlzIHRoZXJlIGEgdmlydHVhbCBkcml2ZXIsIG9yIGEgZHVtbXkgZGV2aWNlIEkgY2FuIHVzZT8gVGhhdCdzIGNyaXRpY2FsLiBUaW1lIHRvIHJlLXJlYWQgdGhlIGluc3RydWN0aW9ucywgc3BlY2lmaWNhbGx5IHRoZSBcIlJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFXCIgc2VjdGlvbi4gVGhleSdyZSB2ZXJ5IGNsZWFyOiBmdXp6aW5nIG9ubHkgd29ya3Mgb24gY29kZSB0aGF0IGNhbiBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGxpa2UgUENJZSBzd2l0Y2hlcyBhbmQgU21hcnROSUNzIGFyZSBleHBsaWNpdGx5ICpleGNsdWRlZCogYmVjYXVzZSB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgY2FyZHMgbm90IGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgaXMgYSB2ZXJ5IGltcG9ydGFudCBwb2ludCFcblxuU28sIHdoYXQgKmlzKiBTVE1NQUM/IEl0J3MgYSBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlciBmcm9tIFNUTWljcm9lbGVjdHJvbmljcywgYWxzbyBhc3NvY2lhdGVkIHdpdGggU3lub3BzeXMgRGVzaWduV2FyZSBDb3JlcyBFdGhlcm5ldCBNQUMuIEl0J3MgdXNlZCBvbiBTb0NzIGxpa2UgU1RNMzIsIEFsbHdpbm5lciwgUm9ja2NoaXAsIEFtbG9naWMsIGFuZCBldmVuIEludGVsIFF1YXJrL0Vsa2hhcnQgTGFrZS9UaWdlciBMYWtlIChQQ0kgZHdtYWMsIGV0Yy4pLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGl0ICp3aXRob3V0KiB0aGUgaGFyZHdhcmU/IENhbiBTeXprYWxsZXIgZXZlbiBjcmVhdGUgYW4gU1RNTUFDIGRldmljZT8gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUncyBhbnkgd2F5IHRvIGludGVyYWN0IHdpdGggU1RNTUFDIHVzaW5nIGEgdmlydHVhbCBidXMsIGEgZHVtbXkgZHJpdmVyLCBvciBldmVuIHZpYSBuZXRsaW5rIG9yIGEgcGxhdGZvcm0gZHJpdmVyIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZS4gSSdsbCBjaGVjayBpZiB0aGVyZSdzIGFueSBTeXprYWxsZXIgYHN5emxhbmdgIGRlc2NyaXB0aW9ucyBmb3IgU1RNTUFDLCBvciBhbnkgbWVudGlvbiBvZiBpdCBpbiBTeXprYWxsZXIgYXQgYWxsLiBGaW5hbGx5LCBJJ2xsIGV4YW1pbmUgdGhlIFNUTU1BQyBNYWtlZmlsZSB0byBzZWUgYWxsIG9mIHRoZSBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk5NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NjoxNi44NTIyMDEyNTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdG9iai0kKENPTkZJR19TVE1NQUNfRVRIKSArPSBzdG1tYWMub1xcbiAgIDM6XFx0c3RtbWFjLW9ianM6PSBzdG1tYWNfbWFpbi5vIHN0bW1hY19ldGh0b29sLm8gc3RtbWFjX21kaW8ubyByaW5nX21vZGUub1xcdFxcXFxcXG4gICA0OlxcdFxcdCAgICAgIGNoYWluX21vZGUubyBkd21hY19saWIubyBkd21hYzEwMDBfY29yZS5vIGR3bWFjMTAwMF9kbWEub1xcdFxcXFxcXG4gICA1OlxcdFxcdCAgICAgIGR3bWFjMTAwX2NvcmUubyBkd21hYzEwMF9kbWEubyBlbmhfZGVzYy5vIG5vcm1fZGVzYy5vXFx0XFxcXFxcbiAgIDY6XFx0XFx0ICAgICAgbW1jX2NvcmUubyBzdG1tYWNfaHd0c3RhbXAubyBzdG1tYWNfcHRwLm8gZHdtYWM0X2Rlc2NzLm9cXHRcXFxcXFxuICAgNzpcXHRcXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXFxcXG4gICA4OlxcdFxcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXFxcXG4gICA5OlxcdFxcdCAgICAgIHN0bW1hY194ZHAubyBzdG1tYWNfZXN0Lm8gc3RtbWFjX2ZwZS5vIHN0bW1hY192bGFuLm8gXFxcXFxcbiAgMTA6XFx0XFx0ICAgICAgc3RtbWFjX3Bjcy5vICQoc3RtbWFjLXkpXFxuICAxMTpcXHRcXG4gIDEyOlxcdHN0bW1hYy0kKENPTkZJR19TVE1NQUNfU0VMRlRFU1RTKSArPSBzdG1tYWNfc2VsZnRlc3RzLm9cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0IyBPcmRlcmluZyBtYXR0ZXJzLiBHZW5lcmljIGRyaXZlciBtdXN0IGJlIGxhc3QuXFxuICAxNTpcXHRvYmotJChDT05GSUdfU1RNTUFDX1BMQVRGT1JNKVxcdCs9IHN0bW1hYy1wbGF0Zm9ybS5vXFxuICAxNjpcXHRvYmotJChDT05GSUdfRFdNQUNfQU5BUklPTilcXHQrPSBkd21hYy1hbmFyaW9uLm9cXG4gIDE3OlxcdG9iai0kKENPTkZJR19EV01BQ19FSUM3NzAwKVxcdCs9IGR3bWFjLWVpYzc3MDAub1xcbiAgMTg6XFx0b2JqLSQoQ09ORklHX0RXTUFDX0lOR0VOSUMpXFx0Kz0gZHdtYWMtaW5nZW5pYy5vXFxuICAxOTpcXHRvYmotJChDT05GSUdfRFdNQUNfSVBRODA2WClcXHQrPSBkd21hYy1pcHE4MDZ4Lm9cXG4gIDIwOlxcdG9iai0kKENPTkZJR19EV01BQ19MUEMxOFhYKVxcdCs9IGR3bWFjLWxwYzE4eHgub1xcbiAgMjE6XFx0b2JqLSQoQ09ORklHX0RXTUFDX01FRElBVEVLKVxcdCs9IGR3bWFjLW1lZGlhdGVrLm9cXG4gIDIyOlxcdG9iai0kKENPTkZJR19EV01BQ19NRVNPTilcXHQrPSBkd21hYy1tZXNvbi5vIGR3bWFjLW1lc29uOGIub1xcbiAgMjM6XFx0b2JqLSQoQ09ORklHX0RXTUFDX05VVk9UT04pXFx0Kz0gZHdtYWMtbnV2b3Rvbi5vXFxuICAyNDpcXHRvYmotJChDT05GSUdfRFdNQUNfUUNPTV9FVEhRT1MpXFx0Kz0gZHdtYWMtcWNvbS1ldGhxb3Mub1xcbiAgMjU6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1JFTkVTQVNfR0JFVEgpICs9IGR3bWFjLXJlbmVzYXMtZ2JldGgub1xcbiAgMjY6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1JPQ0tDSElQKVxcdCs9IGR3bWFjLXJrLm9cXG4gIDI3OlxcdG9iai0kKENPTkZJR19EV01BQ19SWk4xKVxcdCs9IGR3bWFjLXJ6bjEub1xcbiAgMjg6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1MzMilcXHRcXHQrPSBkd21hYy1zMzIub1xcbiAgMjk6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1NPQ0ZQR0EpXFx0Kz0gZHdtYWMtYWx0ci1zb2NmcGdhLm9cXG4gIDMwOlxcdG9iai0kKENPTkZJR19EV01BQ19TT1BIR08pXFx0Kz0gZHdtYWMtc29waGdvLm9cXG4gIDMxOlxcdG9iai0kKENPTkZJR19EV01BQ19TUEFDRU1JVClcXHQrPSBkd21hYy1zcGFjZW1pdC5vXFxuICAzMjpcXHRvYmotJChDT05GSUdfRFdNQUNfU1RBUkZJVkUpXFx0Kz0gZHdtYWMtc3RhcmZpdmUub1xcbiAgMzM6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1NUSSlcXHRcXHQrPSBkd21hYy1zdGkub1xcbiAgMzQ6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1NUTTMyKVxcdCs9IGR3bWFjLXN0bTMyLm9cXG4gIDM1OlxcdG9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcXHQrPSBkd21hYy1zdW54aS5vXFxuICAzNjpcXHRvYmotJChDT05GSUdfRFdNQUNfU1VOOEkpXFx0Kz0gZHdtYWMtc3VuOGkub1xcbiAgMzc6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1NVTjU1SSlcXHQrPSBkd21hYy1zdW41NWkub1xcbiAgMzg6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVxcdCs9IGR3bWFjLXRoZWFkLm9cXG4gIDM5OlxcdG9iai0kKENPTkZJR19EV01BQ19EV0NfUU9TX0VUSClcXHQrPSBkd21hYy1kd2MtcW9zLWV0aC5vXFxuICA0MDpcXHRvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcXHQrPSBkd21hYy1pbnRlbC1wbGF0Lm9cXG4gIDQxOlxcdG9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXFx0Kz0gZHdtYWMtbG9vbmdzb24xLm9cXG4gIDQyOlxcdG9iai0kKENPTkZJR19EV01BQ19HRU5FUklDKVxcdCs9IGR3bWFjLWdlbmVyaWMub1xcbiAgNDM6XFx0b2JqLSQoQ09ORklHX0RXTUFDX0lNWDgpXFx0Kz0gZHdtYWMtaW14Lm9cXG4gIDQ0OlxcdG9iai0kKENPTkZJR19EV01BQ19URUdSQSlcXHQrPSBkd21hYy10ZWdyYS5vXFxuICA0NTpcXHRvYmotJChDT05GSUdfRFdNQUNfVklTQ09OVEkpXFx0Kz0gZHdtYWMtdmlzY29udGkub1xcbiAgNDY6XFx0c3RtbWFjLXBsYXRmb3JtLW9ianM6PSBzdG1tYWNfcGxhdGZvcm0ub1xcbiAgNDc6XFx0ZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXFxuICA0ODpcXHRcXG4gIDQ5OlxcdG9iai0kKENPTkZJR19TVE1NQUNfTElCUENJKVxcdCs9IHN0bW1hY19saWJwY2kub1xcbiAgNTA6XFx0b2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXFx0Kz0gc3RtbWFjLXBjaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU2OjE2Ljg1MjI2ODk2MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIwNTA5NDYzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBQQ0kgRGV2aWNlIElEIFN1cHBvcnQgaW4gYHN0bW1hYy1wY2kuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBncmFzcCBvbiB0aGUgc3BlY2lmaWMgUENJIGRldmljZSBJRHMgdGhhdCB0aGUgYHN0bW1hYy1wY2kuY2AgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBuYW1lLCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlIGFuZCBjaGVjayBmb3IgdGhlIHNwZWNpZmljIHZlbmRvciBhbmQgZGV2aWNlIElEcyBpdCdzIGNvbmZpZ3VyZWQgdG8gcmVjb2duaXplLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIHF1aWNrbHkgYXNzZXNzaW5nIGRyaXZlciBzdXBwb3J0LiBJJ2xsIG5lZWQgdG8ga25vdyB0aGlzIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSBpdHMgcmVsZXZhbmNlIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSBJJ20gd29ya2luZyB3aXRoLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1OTYsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU2OjE4LjkwMzIxODUxNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgIDM6XFx0ICBUaGlzIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBwY2kgZHJpdmVyLlxcbiAgIDQ6XFx0XFxuICAgNTpcXHQgIENvcHlyaWdodCAoQykgMjAxMS0yMDEyICBWYXlhdnlhIExhYnMgUHZ0IEx0ZFxcbiAgIDY6XFx0XFxuICAgNzpcXHRcXG4gICA4OlxcdCAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXFx1MDAzY3JheWFnb25kQHZheWF2eWFsYWJzLmNvbVxcdTAwM2VcXG4gICA5OlxcdCAgQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gXFx1MDAzY3BlcHBlLmNhdmFsbGFyb0BzdC5jb21cXHUwMDNlXFxuICAxMDpcXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiAgMTE6XFx0XFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1pLmhcXHUwMDNlXFxuICAxNTpcXHRcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4gIDE3OlxcdCNpbmNsdWRlIFxcXCJzdG1tYWNfbGlicGNpLmhcXFwiXFxuICAxODpcXHRcXG4gIDE5OlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbiAgMjA6XFx0XFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbiAgMjE6XFx0fTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICAyNDpcXHR7XFxuICAyNTpcXHRcXHQvKiBjbGtfY3NyX2kgPSAyMC0zNU1IeiBcXHUwMDI2IE1EQyA9IGNsa19jc3JfaS8xNiAqL1xcbiAgMjY6XFx0XFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjBfMzVNO1xcbiAgMjc6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbiAgMjg6XFx0XFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VuZWVkc19yZXNldCA9IHRydWU7XFxuICAzMTpcXHR9XFxuICAzMjpcXHRcXG4gIDMzOlxcdHN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gIDM0OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICAzNTpcXHR7XFxuICAzNjpcXHRcXHQvKiBTZXQgY29tbW9uIGRlZmF1bHQgZGF0YSBmaXJzdCAqL1xcbiAgMzc6XFx0XFx0Y29tbW9uX2RlZmF1bHRfZGF0YShwbGF0KTtcXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0cGxhdC1cXHUwMDNlYnVzX2lkID0gMTtcXG4gIDQwOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9hZGRyID0gMDtcXG4gIDQxOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJsID0gMzI7XFxuICA0NDpcXHRcXHRwbGF0LVxcdTAwM2VkbWFfY2ZnLVxcdTAwM2VwYmx4OCA9IHRydWU7XFxuICA0NTpcXHRcXHQvKiBUT0RPOiBBWEkgKi9cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFx0cmV0dXJuIDA7XFxuICA0ODpcXHR9XFxuICA0OTpcXHRcXG4gIDUwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG4gIDUxOlxcdFxcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXFxuICA1MjpcXHR9O1xcbiAgNTM6XFx0XFxuICA1NDpcXHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAgNTU6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbiAgNTY6XFx0e1xcbiAgNTc6XFx0XFx0aW50IGk7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzI1MF8zMDBNO1xcbiAgNjA6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG4gIDYxOlxcdFxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcXG4gIDYyOlxcdFxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4gIDYzOlxcdFxcdHBsYXQtXFx1MDAzZXBtdCA9IHRydWU7XFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcdC8qIFNldCBkZWZhdWx0IG51bWJlciBvZiBSWCBhbmQgVFggcXVldWVzIHRvIHVzZSAqL1xcbiAgNjY6XFx0XFx0cGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XFxuICA2NzpcXHRcXHRwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0cGxhdC1cXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XFxuICA3MDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XFxuICA3MTpcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcXG4gIDcyOlxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0ud2VpZ2h0ID0gMjU7XFxuICA3MzpcXHRcXHRcXHRpZiAoaSBcXHUwMDNlIDApXFxuICA3NDpcXHRcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XFxuICA3NTpcXHRcXHR9XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdHBsYXQtXFx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XFxuICA3ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKVxcbiAgNzk6XFx0XFx0XFx0cGxhdC1cXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdHBsYXQtXFx1MDAzZWJ1c19pZCA9IDE7XFxuICA4MjpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdHBsYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZXBibCA9IDMyO1xcbiAgODU6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJseDggPSB0cnVlO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xcbiAgODg6XFx0XFx0cGxhdC1cXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XFxuICA4OTpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZWF4aSlcXG4gIDkwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV93cl9vc3JfbG10ID0gMzE7XFxuICA5MzpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV9yZF9vc3JfbG10ID0gMzE7XFxuICA5NDpcXHRcXG4gIDk1OlxcdFxcdHBsYXQtXFx1MDAzZWF4aS1cXHUwMDNlYXhpX2ZiID0gZmFsc2U7XFxuICA5NjpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV9ibGVuX3JlZ3ZhbCA9IERNQV9BWElfQkxFTjQgfCBETUFfQVhJX0JMRU44IHxcXG4gIDk3OlxcdFxcdFxcdFxcdFxcdCAgICAgRE1BX0FYSV9CTEVOMTYgfCBETUFfQVhJX0JMRU4zMjtcXG4gIDk4OlxcdFxcbiAgOTk6XFx0XFx0cmV0dXJuIDA7XFxuIDEwMDpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU2OjE4LjkwMzMyMDQyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE0MzE0OTMwOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLi4uXG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHN0bW1hY19wY2kuYyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGJhY2sgaW50byB0aGUgY29kZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSByZXN0IG9mIGBzdG1tYWNfcGNpLmNgLiBJJ3ZlIGdvdCBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGluaXRpYWwgc2VjdGlvbnMsIGJ1dCBJIGtub3cgdGhlcmUncyBtb3JlIGZ1bmN0aW9uYWxpdHksIGVzcGVjaWFsbHkgYXJvdW5kIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHRoYXQgbWlnaHQgYmUgY29udHJpYnV0aW5nIHRvIHRoZSBwZXJmb3JtYW5jZSBpc3N1ZXMgd2UgYXJlIHNlZWluZy4gSXQncyB0aW1lIHRvIHB1dCBvbiBteSBpbnZlc3RpZ2F0b3IgaGF0LiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBmaWxlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzkyLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NjozMy4yMTgyNTM3NjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAxOlxcdFxcbiAxMDI6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG4gMTAzOlxcdFxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbiAxMDQ6XFx0fTtcXG4gMTA1OlxcdFxcbiAxMDY6XFx0LyoqXFxuIDEwNzpcXHQgKiBzdG1tYWNfcGNpX3Byb2JlXFxuIDEwODpcXHQgKlxcbiAxMDk6XFx0ICogQHBkZXY6IHBjaSBkZXZpY2UgcG9pbnRlclxcbiAxMTA6XFx0ICogQGlkOiBwb2ludGVyIHRvIHRhYmxlIG9mIGRldmljZSBpZC9pZCdzLlxcbiAxMTE6XFx0ICpcXG4gMTEyOlxcdCAqIERlc2NyaXB0aW9uOiBUaGlzIHByb2JpbmcgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZm9yIGFsbCBQQ0kgZGV2aWNlcyB3aGljaFxcbiAxMTM6XFx0ICogbWF0Y2ggdGhlIElEIHRhYmxlIGFuZCBhcmUgbm90IFxcXCJvd25lZFxcXCIgYnkgb3RoZXIgZHJpdmVyIHlldC4gVGhpcyBmdW5jdGlvblxcbiAxMTQ6XFx0ICogZ2V0cyBwYXNzZWQgYSBcXFwic3RydWN0IHBjaV9kZXYgKlxcXCIgZm9yIGVhY2ggZGV2aWNlIHdob3NlIGVudHJ5IGluIHRoZSBJRCB0YWJsZVxcbiAxMTU6XFx0ICogbWF0Y2hlcyB0aGUgZGV2aWNlLiBUaGUgcHJvYmUgZnVuY3Rpb25zIHJldHVybnMgemVybyB3aGVuIHRoZSBkcml2ZXIgY2hvb3NlXFxuIDExNjpcXHQgKiB0byB0YWtlIFxcXCJvd25lcnNoaXBcXFwiIG9mIHRoZSBkZXZpY2Ugb3IgYW4gZXJyb3IgY29kZSgtdmUgbm8pIG90aGVyd2lzZS5cXG4gMTE3OlxcdCAqL1xcbiAxMTg6XFx0c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAxMTk6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4gMTIwOlxcdHtcXG4gMTIxOlxcdFxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4gMTIyOlxcdFxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcXG4gMTIzOlxcdFxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xcbiAxMjQ6XFx0XFx0aW50IHJldDtcXG4gMTI1OlxcdFxcdGludCBpO1xcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHRwbGF0ID0gc3RtbWFjX3BsYXRfZGF0X2FsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxMjg6XFx0XFx0aWYgKCFwbGF0KVxcbiAxMjk6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDEzMDpcXHRcXG4gMTMxOlxcdFxcdHBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4gMTMyOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHNpemVvZigqcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YSksXFxuIDEzMzpcXHRcXHRcXHRcXHRcXHRcXHQgICBHRlBfS0VSTkVMKTtcXG4gMTM0OlxcdFxcdGlmICghcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YSlcXG4gMTM1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMzY6XFx0XFxuIDEzNzpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmcgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4gMTM4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgc2l6ZW9mKCpwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmcpLFxcbiAxMzk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG4gMTQwOlxcdFxcdGlmICghcGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKVxcbiAxNDE6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdC8qIEVuYWJsZSBwY2kgZGV2aWNlICovXFxuIDE0NDpcXHRcXHRyZXQgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XFxuIDE0NTpcXHRcXHRpZiAocmV0KSB7XFxuIDE0NjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogRVJST1I6IGZhaWxlZCB0byBlbmFibGUgZGV2aWNlXFxcXG5cXFwiLFxcbiAxNDc6XFx0XFx0XFx0XFx0X19mdW5jX18pO1xcbiAxNDg6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTQ5OlxcdFxcdH1cXG4gMTUwOlxcdFxcbiAxNTE6XFx0XFx0LyogR2V0IHRoZSBiYXNlIGFkZHJlc3Mgb2YgZGV2aWNlICovXFxuIDE1MjpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUENJX1NURF9OVU1fQkFSUzsgaSsrKSB7XFxuIDE1MzpcXHRcXHRcXHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSA9PSAwKVxcbiAxNTQ6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDE1NTpcXHRcXHRcXHRyZXMuYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIGksIFNUTU1BQ19SRVNPVVJDRV9OQU1FKTtcXG4gMTU2OlxcdFxcdFxcdGlmIChJU19FUlIocmVzLmFkZHIpKVxcbiAxNTc6XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocmVzLmFkZHIpO1xcbiAxNTg6XFx0XFx0XFx0YnJlYWs7XFxuIDE1OTpcXHRcXHR9XFxuIDE2MDpcXHRcXG4gMTYxOlxcdFxcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xcbiAxNjI6XFx0XFxuIDE2MzpcXHRcXHRyZXQgPSBpbmZvLVxcdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcXG4gMTY0OlxcdFxcdGlmIChyZXQpXFxuIDE2NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRyZXMud29sX2lycSA9IHBkZXYtXFx1MDAzZWlycTtcXG4gMTY4OlxcdFxcdHJlcy5pcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDE2OTpcXHRcXG4gMTcwOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNldHNvZWUgPSAxO1xcbiAxNzE6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtcnhwZWUgPSAxO1xcbiAxNzI6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtZXN0ZWUgPSAxO1xcbiAxNzM6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtcnhlZSA9IDE7XFxuIDE3NDpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZW10eGVlID0gMTtcXG4gMTc1OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlZXBzaSA9IDE7XFxuIDE3NjpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZWVkcHAgPSAxO1xcbiAxNzc6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VwcnR5ZW4gPSAxO1xcbiAxNzg6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2V0bW91dGVuID0gMTtcXG4gMTc5OlxcdFxcbiAxODA6XFx0XFx0cGxhdC1cXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbiAxODE6XFx0XFx0cGxhdC1cXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcXG4gMTgyOlxcdFxcbiAxODM6XFx0XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuIDE4NDpcXHR9XFxuIDE4NTpcXHRcXG4gMTg2OlxcdC8qKlxcbiAxODc6XFx0ICogc3RtbWFjX3BjaV9yZW1vdmVcXG4gMTg4OlxcdCAqXFxuIDE4OTpcXHQgKiBAcGRldjogcGxhdGZvcm0gZGV2aWNlIHBvaW50ZXJcXG4gMTkwOlxcdCAqIERlc2NyaXB0aW9uOiB0aGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBtYWluIHRvIGZyZWUgdGhlIG5ldCByZXNvdXJjZXMuXFxuIDE5MTpcXHQgKi9cXG4gMTkyOlxcdHN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiAxOTM6XFx0e1xcbiAxOTQ6XFx0XFx0c3RtbWFjX2R2cl9yZW1vdmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDE5NTpcXHR9XFxuIDE5NjpcXHRcXG4gMTk3OlxcdC8qIHN5bnRoZXRpYyBJRCwgbm8gb2ZmaWNpYWwgdmVuZG9yICovXFxuIDE5ODpcXHQjZGVmaW5lIFBDSV9WRU5ET1JfSURfU1RNTUFDXFx0XFx0MHgwNzAwXFxuIDE5OTpcXHRcXG4gMjAwOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TVE1NQUNfU1RNTUFDXFx0XFx0MHgxMTA4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU2OjMzLjIxODM2MjgxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1OTM3ODY3ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLi4uXG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHN0bW1hY19wY2kuYyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGJhY2sgaW50byB0aGUgY29kZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSByZXN0IG9mIGBzdG1tYWNfcGNpLmNgLiBJJ3ZlIGdvdCBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGluaXRpYWwgc2VjdGlvbnMsIGJ1dCBJIGtub3cgdGhlcmUncyBtb3JlIGZ1bmN0aW9uYWxpdHksIGVzcGVjaWFsbHkgYXJvdW5kIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHRoYXQgbWlnaHQgYmUgY29udHJpYnV0aW5nIHRvIHRoZSBwZXJmb3JtYW5jZSBpc3N1ZXMgd2UgYXJlIHNlZWluZy4gSXQncyB0aW1lIHRvIHB1dCBvbiBteSBpbnZlc3RpZ2F0b3IgaGF0LiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBmaWxlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwMCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6MzkuMTU2MjM0MjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG4gMjE1OlxcdFxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuIDIxNjpcXHRcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuIDIxNzpcXHRcXHQuZHJpdmVyICAgICAgICAgPSB7XFxuIDIxODpcXHRcXHRcXHQucG0gICAgID0gXFx1MDAyNnN0bW1hY19zaW1wbGVfcG1fb3BzLFxcbiAyMTk6XFx0XFx0fSxcXG4gMjIwOlxcdH07XFxuIDIyMTpcXHRcXG4gMjIyOlxcdG1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG4gMjIzOlxcdFxcbiAyMjQ6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJTVE1NQUMgMTAvMTAwLzEwMDAgRXRoZXJuZXQgUENJIGRyaXZlclxcXCIpO1xcbiAyMjU6XFx0TU9EVUxFX0FVVEhPUihcXFwiUmF5YWdvbmQgS29rYXRhbnVyIFxcdTAwM2NyYXlhZ29uZC5rb2thdGFudXJAdmF5YXZ5YWxhYnMuY29tXFx1MDAzZVxcXCIpO1xcbiAyMjY6XFx0TU9EVUxFX0FVVEhPUihcXFwiR2l1c2VwcGUgQ2F2YWxsYXJvIFxcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXFx1MDAzZVxcXCIpO1xcbiAyMjc6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NjozOS4xNTYzMDk1OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0MTc4ODc0Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIFBDSSBFdGhlcm5ldCBEcml2ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBzb21lIGtub3duIGdvb2QgZXhhbXBsZXMgb2YgUENJLWJhc2VkIEV0aGVybmV0IGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIHNvbGlkIHBsYWNlIHRvIHN0YXJ0IHNpbmNlIGl0IGRlYWxzIHdpdGggYSBzaW1pbGFyIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLiBJJ20gZm9jdXNpbmcgb24gXCJkd21hY1wiIGFuZCBvdGhlciBQQ0kgZHJpdmVycyBpbiBnZW5lcmFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBDSSBpbml0aWFsaXphdGlvbiBhbmQgZGV2aWNlIHByb2JlIGlzIHN0cnVjdHVyZWQgaW4gYSB3ZWxsLWVzdGFibGlzaGVkIGV4YW1wbGUsIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZXhwZWN0ZWQgZHJpdmVyIHN0cnVjdHVyZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgZHJpdmVycyBoYW5kbGUgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlLCByZXNvdXJjZSBtYXBwaW5nLCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGUgUENJIGZyYW1ld29yay4gSXTigJlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoaXMgY29udGV4dCBiZWZvcmUgSSBzdGFydCBsb29raW5nIGF0IGEgc3BlY2lmaWMgY2hpcHNldCwgdGhpcyBzaG91bGQgZ2l2ZSBtZSBhIG1hcCBvZiB3aGVyZSB0byBnbyBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTkzOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6NDMuMzM1MTg3OTk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTk5ODcwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDE1PU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE3OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTgtXFx0Lm5hbWUgPSBcXFwiaW50ZWwtZXRoLXBjaVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDI3Om1vZHVsZV9wY2lfZHJpdmVyKGludGVsX2V0aF9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTYwMj1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbG9vbmdzb25fZHdtYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjA0OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBsb29uZ3Nvbl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDUtXFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjE0Om1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNzE9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNzM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3NC1cXHQubmFtZSA9IERSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM4Mzptb2R1bGVfcGNpX2RyaXZlcihkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTI6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6NDMuNjM1MTgzMzM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEwOTcxMTE2MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFFFTVUgRW11bGF0aW9uIFF1YW5kYXJ5KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgc29tZXRoaW5nIG91dCBhYm91dCBRRU1VIGFuZCBpdHMgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGBzdG1tYWNgIGFuZCBgZHdtYWNgIGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpczogKkFyZSogdGhlc2UgZXZlciBhY3R1YWxseSBlbXVsYXRlZD8gTGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG5NeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB0aGUgdHlwaWNhbCBBUk0gYm9hcmQgc2V0dXBzIEkgd29yayB3aXRoLCBsaWtlIHRoZSBgb3JhbmdlcGktcGNgIChhbGx3aW5uZXItaDMpIG9yIGBjdWJpZWJvYXJkYCAoYWxsd2lubmVyLWExMCkuIEknbSBwcmV0dHkgc3VyZSBJJ3ZlIHNlZW4gdGhpbmdzIGxpa2UgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBgYWxsd2lubmVyX2VtYWNgIGluIHRob3NlIGNvbmZpZ3VyYXRpb25zLiBCdXQgd2hhdCBhYm91dCB0aGUgYnJvYWRlciBwaWN0dXJlPyBXaGF0IGhhcHBlbnMgd2hlbiBJJ20gZGVhbGluZyB3aXRoIGFuIGFtZDY0IHNldHVwP1xuXG5UaGF0J3MgdGhlIGNydXggb2YgaXQ6ICpEb2VzKiBRRU1VLCBpbiBhbiBhbWQ2NCBlbnZpcm9ubWVudCAoeDg2XzY0IFBDIC8gUTM1IC8gbWljcm92bSksIG9mZmVyIGVtdWxhdGlvbiBmb3IgYHN0bW1hY2Agb3IgYGR3bWFjYD8gVGhlIGFuc3dlciBzZWVtcyB0byBiZSBuby4gVGhlIHVzdWFsIHN1c3BlY3RzIEknbSBmYW1pbGlhciB3aXRoIOKAkyBgZTEwMDBgLCBgZTEwMDBlYCwgYGlnYmAsIGBydGw4MTM5YCwgZXRjLiDigJMgdGhlc2UgYXJlIHRoZSAqc3RhbmRhcmQqIFFFTVUgbmV0d29yayBkZXZpY2VzLiBJJ3ZlIGdvdCBhIG1lbnRhbCBsaXN0IG9mIGFsbCB0aGUgb3RoZXIgdHlwaWNhbCBkcml2ZXJzOiBgcGNuZXRgLCBgbmUya19wY2lgLCBgdm14bmV0M2AsIGB2aXJ0aW8tbmV0LXBjaWAsIGB1c2ItbmV0YCwgYHJvY2tlcmAsIGBzdW5nZW1gLCBgaTgyNTUxLzU3LzU5YCAoZWVwcm8xMDApLCBgdHVsaXBgLCBhbmQgYGxhbmNlYC4gSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgbmVpdGhlciBgc3RtbWFjYCBub3IgYGR3bWFjYCBQQ0kgbW9kZWxzIGFyZSBwcmVzZW50LlxuXG5Ob3csIHdhaXQgYSBtaW51dGUsIGlzIHRoZXJlICphbnkqIHZpcnR1YWwgYnVzIG9yIGRldmljZSB0aGF0IGNvdWxkIGJlIHVzZWQgZm9yIGBzdG1tYWNgPyBJdCdzIHRpbWUgdG8gdmVyaWZ5IGlmIGBzdG1tYWNgIGNhbiBiZSBwcm9iZWQgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZSBvciBRRU1VIGhhcmR3YXJlIGVtdWxhdGlvbi4gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBsaWtlIGBzdG1tYWNfZHZyX3Byb2JlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNjgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6NTQuNjA2MzAyMTE2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM1MTgxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgc3RtbWFjX2R2cl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDExPXZvaWQgc3RtbWFjX2R2cl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTI6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxMy1cXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc4MTY9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTI4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEyOTppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTMwLVxcdFxcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6NTQuNjU0NjU5MDk2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjExODIyMzI3MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlcidzIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgdGFsa2luZyBhYm91dCBgc3RtbWFjYCwgdGhlIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzJyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQy4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBpcyB3aGV0aGVyIGBzeXprYWxsZXJgIGNhbiBldmVuICpyZWFjaCogdGhpcyBjb2RlLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IHJlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlLiBUaGV5IHNwZWNpZnkgdGhhdCB3ZSBjYW4gb25seSB0YXJnZXQgY29kZSB0aGF0IGV4ZWN1dGVzIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyDigJMgR0NFIG9yIFFFTVUsIHByZWZlcmFibHkgd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgb3IgdHVuL3RhcC4gQW55IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBjb2RlIGlzIG9mZi1saW1pdHMsIHJlZ2FyZGxlc3Mgb2YgaXRzIGludGVybmFsIGNvbXBsZXhpdHkgb3IgdGhlIHByZXNlbmNlIG9mIGFzc2VydGlvbnMuXG5cblRoZSBkb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgbGlzdHMgZXhhbXBsZXMgb2YgKnVucmVhY2hhYmxlKiBoYXJkd2FyZTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgdGhhdCByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCBhbHNvIGZsYWdzIGV4ZWN1dGlvbiBwYXRocyB0aGF0IG9ubHkgdHJpZ2dlciBkdXJpbmcsIHNheSwgUENJIGhvdC11bnBsdWcgb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuIFRoaXMgZ2l2ZXMgc29tZSBpbXBvcnRhbnQgY29udGV4dCBmb3IgZGVjaWRpbmcgaWYgd2UgY2FuIGZ1enogdGhpcyBjb2RlLlxuXG5TbywgbGV0J3MgbG9vayBhdCB0aGlzIHBhdGNoLiBJdCB0b3VjaGVzIGEgZmV3IGtleSBmdW5jdGlvbnM6IGBzdG1tYWNfeGRwX3JlbGVhc2VgIGluIGBzdG1tYWNfbWFpbi5jYCwgYW5kIGBzdG1tYWNfeGRwX3N0b3BfdHhfcXVldWVgLCBgc3RtbWFjX3hkcF9lbmFibGVfcG9vbGAsIGFuZCBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGluIGBzdG1tYWNfeGRwLmNgLiBUaGVzZSBhcHBlYXIgdG8gYmUgWFNLL0FGX1hEUCBwb29sIHNldHVwIGFuZCB0ZWFyZG93biBjYWxsYmFja3MgZm9yIHRoZSBgc3RtbWFjYCBuZXRkZXYgZHJpdmVyLiBgc3RtbWFjX3hkcF9lbmFibGVfcG9vbGAgaXMgdHJpZ2dlcmVkIGJ5IGBzdG1tYWNfeGRwX3NldF9wb29sYCB3aGljaCBnZXRzIGNhbGxlZCBieSBhbiBYRFAgbmV0ZGV2IG9wIChgbmRvX3hza19idWZmX3Bvb2xfZW5hYmxlYC9gYnBmYCkuIENydWNpYWxseSwgYHN0bW1hY194ZHBfcmVsZWFzZWAgaXMgY2FsbGVkIGJ5IGBzdG1tYWNfcmVsZWFzZWAsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIGBzdG1tYWNfbWFjX3N0b3BgIG9yIGBuZG9fc3RvcGAuXG5cbk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBhbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGluaGVyZW50bHkgcmVseSBvbiBhbiBgc3RtbWFjYCBuZXRfZGV2aWNlIGFjdHVhbGx5IGV4aXN0aW5nLiBDYW4gd2UgY3JlYXRlIHRoaXMgZGV2aWNlIGluIGEgc3RhbmRhcmQsIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQgb24gYW1kNjQ/IFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG1hdHRlci4gV2UgbmVlZCB0byBmaW5kIG91dCBpZiB0aGVyZSdzIGFueSBwbGF0Zm9ybSBkZXZpY2UsIG1vY2sgZGV2aWNlLCBvciBzb21lIG90aGVyIG1lY2hhbmlzbSB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlIHRoYXQgY2FuIGNyZWF0ZSBhbiBgc3RtbWFjYCBkZXZpY2UgKndpdGhvdXQqIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIG5vbi1zdGFuZGFyZCBRRU1VIHNldHVwLiBJJ20gZ29pbmcgdG8gZ3JlcCB0aGUga2VybmVsIHNvdXJjZXMgZm9yIGBzdG1tYWNgIGFuZCBwbGF0Zm9ybSBkZXZpY2VzIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byBzZWUgaWYgdGhlcmUncyBhIHdheSB0byBnZXQgYSBgc3RtbWFjYCBkZXZpY2UgaW5pdGlhbGl6ZWQgd2l0aG91dCByZXF1aXJpbmcgYW55IGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM1OSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzowNi40NzY5ODkwMTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODg3MTA0MjAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RldmljZV9yZWdpc3Rlci4qc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzowOC43NjU3MDg5MjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjYyNTI3OTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIFBsYXRmb3JtIERyaXZlcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBmb2N1cyBpcyBvbiB0aGUgYHN0bW1hY19wbGF0Zm9ybS5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBnbHVlIGNvZGUgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyIGxpa2VseSByZXNpZGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCBwYXJ0aWN1bGFybHkgdGhlIHBsYXRmb3JtJ3MgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSByZXNvdXJjZSBhbGxvY2F0aW9uIGZvciByZWdpc3RlcnMsIGludGVycnVwdCBoYW5kbGluZyBzZXR1cCwgYW5kIGNsb2NrIGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBwcm9iZSBmdW5jdGlvbjsgdGhhdCdzIHdoZXJlIHRoZSBkcml2ZXIgaW5pdGlhbGl6ZXMgaXRzZWxmIG9uIGRldmljZSBlbnVtZXJhdGlvbi4gSSdsbCBiZSBkaWdnaW5nIGRlZXAgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNlYXJjaGluZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIGN1c3RvbSBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBtaWdodCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3IgaW50cm9kdWNlIGlzc3Vlcy4gSSdsbCBhbHNvIGNoZWNrIGZvciBhbnkgcXVpcmsgaGFuZGxpbmcgc3BlY2lmaWMgdG8gY2VydGFpbiBTVE1pY3JvZWxlY3Ryb25pY3MgU29DcyBvciBib2FyZCByZXZpc2lvbnMuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGlzIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NjIxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTEuMzkwOTk1NjJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTI0OTA0NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlci4qc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzoxMy43ODM0OTQyNTlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjExNjQ2MDI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBTVE1NQUMgUGxhdGZvcm0gRHJpdmVyKipcblxuT2theSwgc28gd2UgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBMZXQncyBub3Qgd2FzdGUgYW55IHRpbWUgd2l0aCBzZWNvbmRhcnkgc291cmNlcyBvciBkb2N1bWVudGF0aW9uLiBJJ20gZ29pbmcgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYHN0bW1hY19wbGF0Zm9ybS5jYCBmaWxlLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGRyaXZlciBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBjb250cm9sbGVyLCBzbyBpdCdzIHRoZSBtb3N0IGxpa2VseSBwbGFjZSB3aGVyZSB0aGUgcm9vdCBvZiB0aGlzIGlzc3VlIHJlc2lkZXMsIGFuZCB3aGVyZSBJJ20gZ29pbmcgdG8gZmluZCB0aGUgbG93LWxldmVsIGRldGFpbHMgbmVlZGVkIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIE5vIG5lZWQgdG8gcmUtaW52ZW50IHRoZSB3aGVlbCBvciB3b3JrIHRocm91Z2ggaXJyZWxldmFudCBjb2RlIHBhdGhzLiBMZXQncyBnZXQgZG93biB0byB0aGUgZ3JpdHR5IGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODcxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTUuODk5OTU3NDUzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICAgMzpcXHQgIFRoaXMgY29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIHBsYXRmb3JtIGRyaXZlci5cXG4gICA0OlxcdFxcbiAgIDU6XFx0ICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMSAgU1RNaWNyb2VsZWN0cm9uaWNzIEx0ZFxcbiAgIDY6XFx0XFxuICAgNzpcXHRcXG4gICA4OlxcdCAgQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gXFx1MDAzY3BlcHBlLmNhdmFsbGFyb0BzdC5jb21cXHUwMDNlXFxuICAgOTpcXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiAgMTA6XFx0XFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbiAgMTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4gIDE3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG4gIDE4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuICAxOTpcXHRcXG4gIDIwOlxcdCNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4gIDIxOlxcdCNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG4gIDIyOlxcdFxcbiAgMjM6XFx0I2lmZGVmIENPTkZJR19PRlxcbiAgMjQ6XFx0XFxuICAyNTpcXHQvKipcXG4gIDI2OlxcdCAqIGR3bWFjMTAwMF92YWxpZGF0ZV9tY2FzdF9iaW5zIC0gdmFsaWRhdGVzIHRoZSBudW1iZXIgb2YgTXVsdGljYXN0IGZpbHRlciBiaW5zXFxuICAyNzpcXHQgKiBAZGV2OiBzdHJ1Y3QgZGV2aWNlIG9mIHRoZSBwbGF0Zm9ybSBkZXZpY2VcXG4gIDI4OlxcdCAqIEBtY2FzdF9iaW5zOiBNdWx0aWNhc3QgZmlsdGVyaW5nIGJpbnNcXG4gIDI5OlxcdCAqIERlc2NyaXB0aW9uOlxcbiAgMzA6XFx0ICogdGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIG51bWJlciBvZiBNdWx0aWNhc3QgZmlsdGVyaW5nIGJpbnMgc3BlY2lmaWVkXFxuICAzMTpcXHQgKiBieSB0aGUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZS4gVGhlIFN5bm9wc3lzIEdNQUMgc3VwcG9ydHNcXG4gIDMyOlxcdCAqIDY0IGJpbnMsIDEyOCBiaW5zLCBvciAyNTYgYmlucy4gXFxcImJpbnNcXFwiIHJlZmVyIHRvIHRoZSBkaXZpc2lvbiBvZiBDUkNcXG4gIDMzOlxcdCAqIG51bWJlciBzcGFjZS4gNjQgYmlucyBjb3JyZXNwb25kIHRvIDYgYml0cyBvZiB0aGUgQ1JDLCAxMjggY29ycmVzcG9uZHNcXG4gIDM0OlxcdCAqIHRvIDcgYml0cywgYW5kIDI1NiByZWZlcnMgdG8gOCBiaXRzIG9mIHRoZSBDUkMuIEFueSBvdGhlciBzZXR0aW5nIGlzXFxuICAzNTpcXHQgKiBpbnZhbGlkIGFuZCB3aWxsIGNhdXNlIHRoZSBmaWx0ZXJpbmcgYWxnb3JpdGhtIHRvIHVzZSBNdWx0aWNhc3RcXG4gIDM2OlxcdCAqIHByb21pc2N1b3VzIG1vZGUuXFxuICAzNzpcXHQgKi9cXG4gIDM4OlxcdHN0YXRpYyBpbnQgZHdtYWMxMDAwX3ZhbGlkYXRlX21jYXN0X2JpbnMoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgbWNhc3RfYmlucylcXG4gIDM5OlxcdHtcXG4gIDQwOlxcdFxcdGludCB4ID0gbWNhc3RfYmlucztcXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0c3dpdGNoICh4KSB7XFxuICA0MzpcXHRcXHRjYXNlIEhBU0hfVEFCTEVfU0laRTpcXG4gIDQ0OlxcdFxcdGNhc2UgMTI4OlxcbiAgNDU6XFx0XFx0Y2FzZSAyNTY6XFxuICA0NjpcXHRcXHRcXHRicmVhaztcXG4gIDQ3OlxcdFxcdGRlZmF1bHQ6XFxuICA0ODpcXHRcXHRcXHR4ID0gMDtcXG4gIDQ5OlxcdFxcdFxcdGRldl9pbmZvKGRldiwgXFxcIkhhc2ggdGFibGUgZW50cmllcyBzZXQgdG8gdW5leHBlY3RlZCB2YWx1ZSAlZFxcXFxuXFxcIixcXG4gIDUwOlxcdFxcdFxcdFxcdCBtY2FzdF9iaW5zKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTUuOTAwMDY0ODkzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIxODI3MzE2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUgd2UgZ28uLi5cblxuKipEaXZpbmcgQmFjayBpbnRvIGBzdG1tYWNfcGxhdGZvcm0uY2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgYmFjayB0byBpdC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQncyBnb2luZyBvbiB3aXRoaW4gYHN0bW1hY19wbGF0Zm9ybS5jYC4gVGltZSB0byBtZXRpY3Vsb3VzbHkgcmV2aWV3IHRoZSByZW1haW5pbmcgc2VjdGlvbnMuIEknbSBnb2luZyB0byBsb29rIGZvciB0aGUga2V5IHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIGRldGFpbHMsIHRoZSByZXNvdXJjZSBhbGxvY2F0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXBzLCBhbmQgYW55IHBvdGVudGlhbCBwb3dlciBtYW5hZ2VtZW50IGhvb2tzLiBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGUgZHJpdmVyIHdpdGggcmVzcGVjdCB0byBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucy4gS25vd2luZyB3aGF0J3MgaGFwcGVuaW5nIGluIHRob3NlIGlzIGNydWNpYWwgdG8gZ2V0dGluZyBhIHNvbGlkIHVuZGVyc3RhbmRpbmcuIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgY2xvY2tpbmcgYW5kIFBIWSBpbnRlcmFjdGlvbnMg4oCTIHRoYXQgYWx3YXlzIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyAoYW5kIG9mdGVuLCBvYnNjdXJlKSBkZXRhaWxzIHJlc2lkZS4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgZHJpdmVyIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZCwgcGFydGljdWxhcmx5IGFueSBjYXNlcyB3aGljaCBtaWdodCByZWxhdGUgdG8gdGhlIHBsYXRmb3JtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgzOSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTguMDgyNzk4OTc2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAwOTAzMTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTguMTkyODk5MDU0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIzOTY3MDgyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIGFzIHRob3VnaCBJJ20gZXhhbWluaW5nIGBkd21hYy1nZW5lcmljLmNgOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBHZW5lcmljIERXTUFDIERyaXZlcioqXG5cbkFscmlnaHQsIGxldCdzIGNyYWNrIG9wZW4gYGR3bWFjLWdlbmVyaWMuY2AuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBhIGZhaXIgYml0IG9mIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUgaGVyZSwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGZvdW5kYXRpb24gdXBvbiB3aGljaCBtb3JlIHNwZWNpZmljIERXTUFDIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgYXJlIGJ1aWx0LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBhcmNoaXRlY3R1cmUgaXMgY3JpdGljYWwgZm9yIG15IHdvcmsuIEkgd2FudCB0byBzZWUgaG93IGl0IGFic3RyYWN0cyB0aGUgaGFyZHdhcmUuIFdoYXQgYXJlIHRoZSBrZXkgcmVnaXN0ZXJzIGl0IGFjY2Vzc2VzPyBIb3cgZG9lcyBpdCBoYW5kbGUgZGVzY3JpcHRvcnMsIGludGVycnVwdHMsIGFuZCBETUE/IEknbSBjdXJpb3VzIGFib3V0IHRoZSBjaG9zZW4gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgdG9vOyBzcGlubG9ja3MgdmVyc3VzIG11dGV4ZXMgd2lsbCBkaWN0YXRlIGEgbG90IGFib3V0IHRoZSBkcml2ZXIncyBvdmVyYWxsIHBlcmZvcm1hbmNlIHByb2ZpbGUuIEknbSBhbHNvIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gdGhhdCBtaWdodCBiZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gTGV0J3Mgc2VlIGhvdyBpdCBoYW5kbGVzIHBhY2tldCBidWZmZXJpbmcgYW5kIGZsb3cgY29udHJvbCwgYW5kIGhvdyBpdCBkZWFscyB3aXRoIGRpZmZlcmVudCBFdGhlcm5ldCBmcmFtZSB0eXBlcy4gTXkgdWx0aW1hdGUgZ29hbCBpcyB0byBzZWUgaG93IHRoaXMgJ2dlbmVyaWMnIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgdGhlIGNvcmUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gb2YgdGhlIERXTUFDLCBiZWNhdXNlLCBpbiBtYW55IGNhc2VzLCB0aGlzIGlzIHdoZXJlIGEgbG90IG9mIHRoZSBwcm9ibGVtcyBvY2N1ci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxMTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzoyMC41ODk2MDk5MDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1ODY2OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTEyMz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbmFyaW9uX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMjU6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYW5hcmlvbl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyNi1cXHQucHJvYmUgID0gYW5hcmlvbl9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTMzOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYW5hcmlvbl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM1OT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd2NfZXRoX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkd2NfZXRoX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2Mi1cXHQucHJvYmUgID0gZHdjX2V0aF9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd2NfZXRoX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MzYwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGVpYzc3MDBfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM2MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBlaWM3NzAwX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYzLVxcdC5wcm9iZSAgPSBlaWM3NzAwX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2OS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihlaWM3NzAwX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYz02Nz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjY5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03MC1cXHQucHJvYmUgID0gZHdtYWNfZ2VuZXJpY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3bWFjX2dlbmVyaWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zOTA9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzkyOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlteF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzkzLVxcdC5wcm9iZSAgPSBpbXhfZHdtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00MDAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo0MDE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbXhfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00MDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjcwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI3MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbmdlbmljX21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3My1cXHQucHJvYmVcXHRcXHQ9IGluZ2VuaWNfbWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3OS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyODA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbmdlbmljX21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yODEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTM5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsX2V0aF9wbGF0X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQwLVxcdC5wcm9iZSAgPSBpbnRlbF9ldGhfcGxhdF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDctfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTQ4Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW50ZWxfZXRoX3BsYXRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTQ5NT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHE4MDZ4X2dtYWNfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ5NzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpcHE4MDZ4X2dtYWNfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTgtXFx0LnByb2JlID0gaXBxODA2eF9nbWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTUwNS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo1MDY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpcHE4MDZ4X2dtYWNfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNTA3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM9MjI3PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxzMXhfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMjk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHMxeF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjMwLVxcdC5wcm9iZSA9IGxzMXhfZHdtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMzUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihsczF4X2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTc1PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxwYzE4eHhfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy03Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Nzc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHBjMTh4eF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTc4LVxcdC5wcm9iZSAgPSBscGMxOHh4X2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTg1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjg2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobHBjMTh4eF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NjcwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lZGlhdGVrX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY3MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZWRpYXRla19kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NzMtXFx0LnByb2JlICA9IG1lZGlhdGVrX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02ODAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lZGlhdGVrX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTgwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjgyOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1lc29uNl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04My1cXHQucHJvYmUgID0gbWVzb242X2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy05MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6OTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZXNvbjZfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTkyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTUwNT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZXNvbjhiX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWVzb244Yl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwOC1cXHQucHJvYmUgID0gbWVzb244Yl9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NTE2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWVzb244Yl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTIyPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG52dF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6MTI0OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG52dF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyNS1cXHQucHJvYmUgID0gbnZ0X2dtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTMyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjEzMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG52dF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTgwNz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBxY29tX2V0aHFvc19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy04MDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MDk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9ldGhxb3NfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODEwLVxcdC5wcm9iZSAgPSBxY29tX2V0aHFvc19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODE2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MTc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihxY29tX2V0aHFvc19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIyMj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByZW5lc2FzX2diZXRoX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMjQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmVuZXNhc19nYmV0aF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIyNS1cXHQucHJvYmUgID0gcmVuZXNhc19nYmV0aF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMzEtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MjMyOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocmVuZXNhc19nYmV0aF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTE2MzU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcmtfZ21hY19kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYzNzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBya19nbWFjX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzgtXFx0LnByb2JlICA9IHJrX2dtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2NDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE2NDU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihya19nbWFjX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTc5PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6ODE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnpuMV9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgyLVxcdC5wcm9iZSAgPSByem4xX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTg4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjg5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocnpuMV9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy05MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTIyMD1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoyMjI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczMyX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMjMtXFx0LnByb2JlID0gczMyX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjMwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM6MjMxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoczMyX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTY3OT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb2NmcGdhX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo2ODE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29jZnBnYV9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4Mi1cXHQucHJvYmUgID0gc29jZnBnYV9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02ODgtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6Njg5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc29jZnBnYV9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02OTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz03Nz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjc5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNvcGhnb19kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtODAtXFx0LnByb2JlICA9IHNvcGhnb19kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTg3LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6ODg6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzb3BoZ29fZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy04OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MjE0PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNwYWNlbWl0X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIxNjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzcGFjZW1pdF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMTctXFx0LnByb2JlICA9IHNwYWNlbWl0X2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMjQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIyNTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNwYWNlbWl0X2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTE2NT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdGFyZml2ZV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNjc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RhcmZpdmVfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY4LVxcdC5wcm9iZSAgPSBzdGFyZml2ZV9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTc1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdGFyZml2ZV9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTc3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9MzAwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjMwMjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdGlfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMwMy1cXHQucHJvYmUgID0gc3RpX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzA5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MzEwOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3RpX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzExLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz02Njk9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RtMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NjcxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0bTMyX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY3Mi1cXHQucHJvYmUgID0gc3RtMzJfZHdtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY3OS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NjgwOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3RtMzJfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jPTE0NT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW41NWlfZ21hYzIwMF9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE0NzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdW41NWlfZ21hYzIwMF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ4LVxcdC5wcm9iZSAgPSBzdW41NWlfZ21hYzIwMF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE1NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE1NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjgzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjg1OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODYtXFx0LnByb2JlICA9IHN1bjhpX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjk0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjk1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyOTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTE1ND1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW43aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxNTY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuN2lfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTU3LVxcdC5wcm9iZSAgPSBzdW43aV9nbWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjMtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE2NDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjdpX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTQwMz1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFModGVncmFfbWdiZV9wbV9vcHMsIHRlZ3JhX21nYmVfc3VzcGVuZCwgdGVncmFfbWdiZV9yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDA1OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRlZ3JhX21nYmVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDA2LVxcdC5wcm9iZSA9IHRlZ3JhX21nYmVfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQxMy19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDE0Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGVncmFfbWdiZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNzE9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjczOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRoZWFkX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI3NC1cXHQucHJvYmUgPSB0aGVhZF9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjgwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyODE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih0aGVhZF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yNTk9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdmlzY29udGlfZXRoX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjI2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB2aXNjb250aV9ldGhfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjYyLVxcdC5wcm9iZSAgPSB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI2OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjY5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodmlzY29udGlfZXRoX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU3OjIwLjY3NTQ4MzgwMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2ODY4MzAyMDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFNUTU1BQyBEcml2ZXIgQ29kZSBpcyBVbnJlYWNoYWJsZSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiB0aHJvdWdoIHRoaXMgcGF0Y2ggYW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcsIGFuZCBoZXJlJ3MgbXkgYnJlYWtkb3duOiB0aGlzIGNvZGUgbW9kaWZpZXMgZnVuY3Rpb25zIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBYRFAgYW5kIHF1ZXVlIG1hbmFnZW1lbnQg4oCTIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlYCwgYHN0bW1hY194ZHBfZW5hYmxlX3Bvb2xgLCBhbmQgYHN0bW1hY194ZHBfZGlzYWJsZV9wb29sYC5cblxuVGhlIHByb2JsZW0gaXMsIHRoaXMgYHN0bW1hY2AgZHJpdmVyIHJlbGllcyBvbiBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0ICppc24ndCogYXZhaWxhYmxlIGluIHRoZSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzIHdlIHVzZSwgbmFtZWx5IHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIFZNcy4gVGhpcyBpc24ndCBqdXN0IGEgZ2VuZXJpYyBuZXR3b3JrIGRldmljZTsgaXQncyB0aWVkIHRvIGVpdGhlciBwYXJ0aWN1bGFyIFNvQyBwbGF0Zm9ybXMgb3IgU3lub3BzeXMgUENJIHRlc3Rib2FyZHMuICBJJ3ZlIGNoZWNrZWQgdGhlIGtub3duIGRldmljZSBtYXBwaW5ncyDigJMgSW50ZWwgUXVhcmssIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgQWxkZXIgTGFrZSwgTG9vbmdzb24sIE1vdG9yY29tbSwgYW5kIHRoZSBTeW5vcHN5cyBHTUFDNSBQQ0kuICBOb25lIG9mIHRoZXNlIGV4aXN0IG9yIGFyZSBlbXVsYXRlZCwgd2hpY2ggbWF0Y2hlcyB0aGUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyLlxuXG5XZSBrbm93IGZyb20gU2VjdGlvbiAyIHRoYXQgYSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZVwiIGhhcmR3YXJlIGRyaXZlciBzaG91bGRuJ3QgYmUgZnV6emVkLCBhcyBmdXp6aW5nIGNhbiBvbmx5IHRhcmdldCBjb2RlIHRoYXQgZXhlY3V0ZXMgaW4gb3VyIHN0YW5kYXJkIGVudmlyb25tZW50cy4gVGhlIGZhY3QgdGhhdCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZywgYmVjYXVzZSBldmVuIG9uIGFtZDY0LCBzdG1tYWMgaXMgc3RpbGwgdGllZCB0byBzcGVjaWZpYyBjb250cm9sbGVycy4gV2l0aG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgY3JlYXRlIHRoZSBgbmV0X2RldmljZWAsIHRoZSBtb2RpZmllZCBjb2RlIHNpbXBseSAqY2Fubm90KiBiZSBleGVjdXRlZC4gVGhlIGBuZXRfZGV2aWNlYCBhbmQgaXRzIG9wZXJhdGlvbnMsIGxpa2UgWERQIGNhbGxiYWNrcyBhbmQgcXVldWUgbWFuaXB1bGF0aW9uLCBhcmVuJ3QgZXZlbiBpbnN0YW50aWF0ZWQuXG5cblRoZXJlZm9yZSwgdGhlIFhEUCBhbmQgcXVldWUgbWFuYWdlbWVudCBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LiAgU28sIGJhc2VkIG9uIHRoZSByZWFjaGFiaWxpdHkgcHJpbmNpcGxlLCB0aGlzIHBhdGNoIGlzICpub3QqIHdvcnRoIGZ1enppbmcuXG5gYGBcbnNldC1yZXN1bHRzXG5gYGBcblxuXG4iLCJJbnB1dFRva2VucyI6MjU1MzYsIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU3OjI3LjU0Mzc4OTc2NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFhEUCBwb29sIGVuYWJsZS9kaXNhYmxlIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChlbWJlZGRlZCBTb0MgcGxhdGZvcm0gZGV2aWNlcyBhbmQgdmVuZG9yLXNwZWNpZmljIFBDSSBjb250cm9sbGVycykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gQmVjYXVzZSB0aGUgaGFyZHdhcmUgY2Fubm90IGJlIHByb2JlZCB0byBjcmVhdGUgYSBuZXRfZGV2aWNlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgWERQIHBvb2wgZW5hYmxlL2Rpc2FibGUgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKGVtYmVkZGVkIFNvQyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJIGNvbnRyb2xsZXJzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBCZWNhdXNlIHRoZSBoYXJkd2FyZSBjYW5ub3QgYmUgcHJvYmVkIHRvIGNyZWF0ZSBhIG5ldF9kZXZpY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzoyNy41NDM4MjY5MjRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr9ggl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-15 10:53:53 +0000 UTC FinishedAt: 2026-09-15 10:57:29 +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+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgWERQIHBvb2wgZW5hYmxlL2Rpc2FibGUgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKGVtYmVkZGVkIFNvQyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJIGNvbnRyb2xsZXJzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBCZWNhdXNlIHRoZSBoYXJkd2FyZSBjYW5ub3QgYmUgcHJvYmVkIHRvIGNyZWF0ZSBhIG5ldF9kZXZpY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODNkM2Y0ZjVkOTZiMmY2YmY0OGM3YzU2NDFkZmQ3NzAyYmVkYmE2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDEwOjU1OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCA2MmMzNDQxOTExZTcxLi45MjhhYTA1YWE4N2Q1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTcxMTgsMTUgJiM0Mzs3MTE4LDE1IEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0dTggY2hhbjtcbiBcbi1cdC8qIEVuc3VyZSB0eCBmdW5jdGlvbiBpcyBub3QgcnVubmluZyAqL1xuLVx0bmV0aWZfdHhfZGlzYWJsZShkZXYpO1xuLVxuIFx0LyogRGlzYWJsZSBOQVBJIHByb2Nlc3MgKi9cbiBcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XG4gXG4gXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbiYjNDM7JiM0MzspXG4gXHRcdGhydGltZXJfY2FuY2VsKFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XG4gXG4mIzQzO1x0LyogRW5zdXJlIHR4IGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nICovXG4mIzQzO1x0bmV0aWZfdHhfZGlzYWJsZShkZXYpO1xuJiM0MztcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmNcbmluZGV4IGQ3ZTRkYjcyMjRiMGMuLjg4M2JkM2ZlODA4OWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xuQEAgLTYsNiAmIzQzOzYsMTYgQEBcbiAjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuICNpbmNsdWRlIFwmIzM0O3N0bW1hY194ZHAuaFwmIzM0O1xuIFxuJiM0MztzdGF0aWMgdm9pZCBzdG1tYWNfeGRwX3N0b3BfdHhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpucSA9IG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi1cdTAwM2VkZXYsIHF1ZXVlKTtcbiYjNDM7XG4mIzQzO1x0X19uZXRpZl90eF9sb2NrX2JoKG5xKTtcbiYjNDM7XHR0eHFfdHJhbnNfY29uZF91cGRhdGUobnEpO1xuJiM0MztcdG5ldGlmX3R4X3N0b3BfcXVldWUobnEpO1xuJiM0MztcdF9fbmV0aWZfdHhfdW5sb2NrX2JoKG5xKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlKVxuIHtcbkBAIC0zNiw2ICYjNDM7NDYsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0aWYgKG5lZWRfdXBkYXRlKSB7XG4gXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZjaC1cdTAwM2VyeF9uYXBpKTtcbiBcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmNoLVx1MDAzZXR4X25hcGkpO1xuJiM0MztcdFx0c3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHR9XG5AQCAtNDYsNiAmIzQzOzU3LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdFx0c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHRcdHN0bW1hY19lbmFibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRuYXBpX2VuYWJsZShcdTAwMjZjaC1cdTAwM2VyeHR4X25hcGkpO1xuJiM0MztcdFx0bmV0aWZfdHhfd2FrZV9xdWV1ZShuZXRkZXZfZ2V0X3R4X3F1ZXVlKHByaXYtXHUwMDNlZGV2LCBxdWV1ZSkpO1xuIFxuIFx0XHRlcnIgPSBzdG1tYWNfeHNrX3dha2V1cChwcml2LVx1MDAzZWRldiwgcXVldWUsIFhEUF9XQUtFVVBfUlgpO1xuIFx0XHRpZiAoZXJyKVxuQEAgLTczLDYgJiM0Mzs4NSw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4gXG4gXHRpZiAobmVlZF91cGRhdGUpIHtcbiBcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmNoLVx1MDAzZXJ4dHhfbmFwaSk7XG4mIzQzO1x0XHRzdG1tYWNfeGRwX3N0b3BfdHhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHRcdHN0bW1hY19kaXNhYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3luY2hyb25pemVfcmN1KCk7XG5AQCAtODcsNiAmIzQzOzEwMCw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4gXHRcdHN0bW1hY19lbmFibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRuYXBpX2VuYWJsZShcdTAwMjZjaC1cdTAwM2VyeF9uYXBpKTtcbiBcdFx0bmFwaV9lbmFibGUoXHUwMDI2Y2gtXHUwMDNldHhfbmFwaSk7XG4mIzQzO1x0XHRuZXRpZl90eF93YWtlX3F1ZXVlKG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi1cdTAwM2VkZXYsIHF1ZXVlKSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBYRFAgcG9vbCBlbmFibGUvZGlzYWJsZSBhbmQgcXVldWUgbWFuYWdlbWVudCBmdW5jdGlvbnMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAoZW1iZWRkZWQgU29DIHBsYXRmb3JtIGRldmljZXMgYW5kIHZlbmRvci1zcGVjaWZpYyBQQ0kgY29udHJvbGxlcnMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIEJlY2F1c2UgdGhlIGhhcmR3YXJlIGNhbm5vdCBiZSBwcm9iZWQgdG8gY3JlYXRlIGEgbmV0X2RldmljZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4M2QzZjRmNWQ5NmIyZjZiZjQ4YzdjNTY0MWRmZDc3MDJiZWRiYTY5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMTUgMTA6NTU6NTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCA2MmMzNDQxOTExZTcxLi45MjhhYTA1YWE4N2Q1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTcxMTgsMTUgJiM0Mzs3MTE4LDE1IEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJc3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTsKIAl1OCBjaGFuOwogCi0JLyogRW5zdXJlIHR4IGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nICovCi0JbmV0aWZfdHhfZGlzYWJsZShkZXYpOwotCiAJLyogRGlzYWJsZSBOQVBJIHByb2Nlc3MgKi8KIAlzdG1tYWNfZGlzYWJsZV9hbGxfcXVldWVzKHByaXYpOwogCiAJZm9yIChjaGFuID0gMDsgY2hhbiAmbHQ7IHByaXYtJmd0O3BsYXQtJmd0O3R4X3F1ZXVlc190b191c2U7IGNoYW4mIzQzOyYjNDM7KQogCQlocnRpbWVyX2NhbmNlbCgmYW1wO3ByaXYtJmd0O2RtYV9jb25mLnR4X3F1ZXVlW2NoYW5dLnR4dGltZXIpOwogCiYjNDM7CS8qIEVuc3VyZSB0eCBmdW5jdGlvbiBpcyBub3QgcnVubmluZyAqLwomIzQzOwluZXRpZl90eF9kaXNhYmxlKGRldik7CiYjNDM7CiAJLyogRnJlZSB0aGUgSVJRIGxpbmVzICovCiAJc3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jCmluZGV4IGQ3ZTRkYjcyMjRiMGMuLjg4M2JkM2ZlODA4OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMKQEAgLTYsNiAmIzQzOzYsMTYgQEAKICNpbmNsdWRlICYjMzQ7c3RtbWFjLmgmIzM0OwogI2luY2x1ZGUgJiMzNDtzdG1tYWNfeGRwLmgmIzM0OwogCiYjNDM7c3RhdGljIHZvaWQgc3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKQomIzQzO3sKJiM0MzsJc3RydWN0IG5ldGRldl9xdWV1ZSAqbnEgPSBuZXRkZXZfZ2V0X3R4X3F1ZXVlKHByaXYtJmd0O2RldiwgcXVldWUpOwomIzQzOwomIzQzOwlfX25ldGlmX3R4X2xvY2tfYmgobnEpOwomIzQzOwl0eHFfdHJhbnNfY29uZF91cGRhdGUobnEpOwomIzQzOwluZXRpZl90eF9zdG9wX3F1ZXVlKG5xKTsKJiM0MzsJX19uZXRpZl90eF91bmxvY2tfYmgobnEpOwomIzQzO30KJiM0MzsKIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsCiAJCQkJICBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCwgdTE2IHF1ZXVlKQogewpAQCAtMzYsNiAmIzQzOzQ2LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwKIAlpZiAobmVlZF91cGRhdGUpIHsKIAkJbmFwaV9kaXNhYmxlKCZhbXA7Y2gtJmd0O3J4X25hcGkpOwogCQluYXBpX2Rpc2FibGUoJmFtcDtjaC0mZ3Q7dHhfbmFwaSk7CiYjNDM7CQlzdG1tYWNfeGRwX3N0b3BfdHhfcXVldWUocHJpdiwgcXVldWUpOwogCQlzdG1tYWNfZGlzYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7CiAJCXN0bW1hY19kaXNhYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTsKIAl9CkBAIC00Niw2ICYjNDM7NTcsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LAogCQlzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTsKIAkJc3RtbWFjX2VuYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7CiAJCW5hcGlfZW5hYmxlKCZhbXA7Y2gtJmd0O3J4dHhfbmFwaSk7CiYjNDM7CQluZXRpZl90eF93YWtlX3F1ZXVlKG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi0mZ3Q7ZGV2LCBxdWV1ZSkpOwogCiAJCWVyciA9IHN0bW1hY194c2tfd2FrZXVwKHByaXYtJmd0O2RldiwgcXVldWUsIFhEUF9XQUtFVVBfUlgpOwogCQlpZiAoZXJyKQpAQCAtNzMsNiAmIzQzOzg1LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSkKIAogCWlmIChuZWVkX3VwZGF0ZSkgewogCQluYXBpX2Rpc2FibGUoJmFtcDtjaC0mZ3Q7cnh0eF9uYXBpKTsKJiM0MzsJCXN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShwcml2LCBxdWV1ZSk7CiAJCXN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTsKIAkJc3RtbWFjX2Rpc2FibGVfdHhfcXVldWUocHJpdiwgcXVldWUpOwogCQlzeW5jaHJvbml6ZV9yY3UoKTsKQEAgLTg3LDYgJiM0MzsxMDAsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKQogCQlzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTsKIAkJbmFwaV9lbmFibGUoJmFtcDtjaC0mZ3Q7cnhfbmFwaSk7CiAJCW5hcGlfZW5hYmxlKCZhbXA7Y2gtJmd0O3R4X25hcGkpOwomIzQzOwkJbmV0aWZfdHhfd2FrZV9xdWV1ZShuZXRkZXZfZ2V0X3R4X3F1ZXVlKHByaXYtJmd0O2RldiwgcXVldWUpKTsKIAl9CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxMwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCB0byBsb29rIGF0LCB0YXJnZXRpbmcgdGhlIGBzdG1tYWNgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2AgZGlyZWN0b3J5LiBUaGUgbW9kaWZpY2F0aW9ucyBhZmZlY3QgYHN0bW1hY19tYWluLmNgIGFuZCBgc3RtbWFjX3hkcC5jYC4gTXkgZmlyc3QgdGhvdWdodCBpcywgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoZSBjb2RlLCBsZXQmIzM5O3MgZXN0YWJsaXNoIHNvbWUgY29udGV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjYCBhY3R1YWxseSAqaXMqLiBJcyB0aGlzIGEgZHJpdmVyIGZvciBzb21lIG9ic2N1cmUsIHNwZWNpYWxpemVkIGhhcmR3YXJlLCBvciBpcyBpdCBzb21ldGhpbmcgSSBtaWdodCBlbmNvdW50ZXIgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0U/IE9yIGV2ZW4gbW9yZSBicm9hZGx5LCBpcyBpdCBhIGRyaXZlciB0aGF0JiMzOTtzIGNvcmUgdG8gYSBwYXJ0aWN1bGFyIFNvQ3Mgb3IgcGxhdGZvcm1zPyBJIG5lZWQgdG8ga25vdyBob3cgZWFzaWx5IEkgY2FuIHJlcGxpY2F0ZSB0aGlzLgoKQWgsIHJpZ2h0LiBTVE1pY3JvZWxlY3Ryb25pY3MgU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyLiBUaGF0IGNsYXJpZmllcyAqd2hhdCogaXQgaXMsIG5vdyBJIG5lZWQgdG8gZmlndXJlIG91dCAqaG93KiBpdCYjMzk7cyBpbnN0YW50aWF0ZWQuIElzIGl0IGEgUENJIGRldmljZT8gQSBwbGF0Zm9ybSBkZXZpY2U/IFNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgYEtjb25maWdgIGZpbGVzIGFyZSBnb2luZyB0byBiZSBteSBiZXN0IGZyaWVuZCBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLCBhbmQgYWxzbyBsaWtlbHkgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIEkmIzM5O2xsIHVzZSBncmVwIG9yIEkgY2FuIGp1c3QgdXNlIHRoZSBLY29uZmlnIHRvIHNlYXJjaCB0byBzZWUgZXhhY3RseSBob3cgdGhpcyBkcml2ZXIgaXMgYm91bmQgdG8gdGhlIHN5c3RlbS4gVGhpcyBnaXZlcyBtZSBhIGZyYW1ld29yayB0byBhc3Nlc3MgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoIGFuZCBob3cgSSBjYW4gZ28gYWJvdXQgdGVzdGluZyBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk5NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDU5OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFNUTU1BQyBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgcHJpbWFyeSBjb25jZXJuIGlzIHdoZXRoZXIgb3Igbm90IEkgY2FuIGV2ZW4gKnJlYWNoKiB0aGUgU1RNTUFDIGNvZGUgZm9yIGZ1enppbmcsIGFuZCBJIG5lZWQgdG8gYmUgc3VyZSBpdCYjMzk7cyBhY3R1YWxseSBzb21ldGhpbmcgSSBjYW4gdGVzdCBlZmZlY3RpdmVseS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgU1RNTUFDIGhhcmR3YXJlIGVtdWxhdGVkICphbnl3aGVyZSogaW4gUUVNVT8gQW5kLCBnaXZlbiBteSBgYW1kNjRgIHRhcmdldCwgSSBuZWVkIHRvIGtub3cgd2hhdCBldGhlcm5ldCBjb250cm9sbGVycyBRRU1VICpkb2VzKiBlbXVsYXRlIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJIGtub3cgaXQmIzM5O3MgYSBsaXN0LCBidXQgbm9uZSBvZiB0aG9zZSBpbW1lZGlhdGVseSBqdW1wIG91dCBhcyBiZWluZyByZWxhdGVkIHRvIHN0bW1hYy4KCkkgaGF2ZSBhIG5hZ2dpbmcgZmVlbGluZyB0aGF0IFFFTVUgbWlnaHQgZW11bGF0ZSBzb21lIERXTUFDIG9yIFNUTU1BQyBkZXZpY2VzIG9uIEFSTSwgcGFydGljdWxhcmx5IEFsbHdpbm5lciBwbGF0Zm9ybXMgKHN1bnhpKSwgYnV0IG15IHRhcmdldCBpcyBgYW1kNjRgLiBFdmVuIGlmIGl0ICpkaWQqIGVtdWxhdGUgaXQgb24gQVJNLCBkb2VzIHN0YW5kYXJkIFFFTVUgb3IgYSBTeXprYWxsZXIgY2x1c3RlciBmb3IgYGFtZDY0YCBldmVuICp1c2UqIFNUTU1BQz8gSSByZWFsbHkgbmVlZCB0byBnZXQgY2xhcml0eSBvbiB0aGF0LgoKSXMgU1RNTUFDIHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlzIHRoZXJlIGEgdmlydHVhbCBkcml2ZXIsIG9yIGEgZHVtbXkgZGV2aWNlIEkgY2FuIHVzZT8gVGhhdCYjMzk7cyBjcml0aWNhbC4gVGltZSB0byByZS1yZWFkIHRoZSBpbnN0cnVjdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURSYjMzQ7IHNlY3Rpb24uIFRoZXkmIzM5O3JlIHZlcnkgY2xlYXI6IGZ1enppbmcgb25seSB3b3JrcyBvbiBjb2RlIHRoYXQgY2FuIGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBWZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgbGlrZSBQQ0llIHN3aXRjaGVzIGFuZCBTbWFydE5JQ3MgYXJlIGV4cGxpY2l0bHkgKmV4Y2x1ZGVkKiBiZWNhdXNlIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBjYXJkcyBub3QgZW11bGF0ZWQgaW4gUUVNVS4gVGhpcyBpcyBhIHZlcnkgaW1wb3J0YW50IHBvaW50IQoKU28sIHdoYXQgKmlzKiBTVE1NQUM/IEl0JiMzOTtzIGEgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXIgZnJvbSBTVE1pY3JvZWxlY3Ryb25pY3MsIGFsc28gYXNzb2NpYXRlZCB3aXRoIFN5bm9wc3lzIERlc2lnbldhcmUgQ29yZXMgRXRoZXJuZXQgTUFDLiBJdCYjMzk7cyB1c2VkIG9uIFNvQ3MgbGlrZSBTVE0zMiwgQWxsd2lubmVyLCBSb2NrY2hpcCwgQW1sb2dpYywgYW5kIGV2ZW4gSW50ZWwgUXVhcmsvRWxraGFydCBMYWtlL1RpZ2VyIExha2UgKFBDSSBkd21hYywgZXRjLikuIFRoZSBxdWVzdGlvbiBpcywgY2FuIEkgaW5zdGFudGlhdGUgaXQgKndpdGhvdXQqIHRoZSBoYXJkd2FyZT8gQ2FuIFN5emthbGxlciBldmVuIGNyZWF0ZSBhbiBTVE1NQUMgZGV2aWNlPyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgd2F5IHRvIGludGVyYWN0IHdpdGggU1RNTUFDIHVzaW5nIGEgdmlydHVhbCBidXMsIGEgZHVtbXkgZHJpdmVyLCBvciBldmVuIHZpYSBuZXRsaW5rIG9yIGEgcGxhdGZvcm0gZHJpdmVyIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZS4gSSYjMzk7bGwgY2hlY2sgaWYgdGhlcmUmIzM5O3MgYW55IFN5emthbGxlciBgc3l6bGFuZ2AgZGVzY3JpcHRpb25zIGZvciBTVE1NQUMsIG9yIGFueSBtZW50aW9uIG9mIGl0IGluIFN5emthbGxlciBhdCBhbGwuIEZpbmFsbHksIEkmIzM5O2xsIGV4YW1pbmUgdGhlIFNUTU1BQyBNYWtlZmlsZSB0byBzZWUgYWxsIG9mIHRoZSBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG9iai0kKENPTkZJR19TVE1NQUNfRVRIKSAmIzQzOz0gc3RtbWFjLm9cbiAgIDM6XHRzdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXHRcXFxuICAgNDpcdFx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXHRcXFxuICAgNTpcdFx0ICAgICAgZHdtYWMxMDBfY29yZS5vIGR3bWFjMTAwX2RtYS5vIGVuaF9kZXNjLm8gbm9ybV9kZXNjLm9cdFxcXG4gICA2Olx0XHQgICAgICBtbWNfY29yZS5vIHN0bW1hY19od3RzdGFtcC5vIHN0bW1hY19wdHAubyBkd21hYzRfZGVzY3Mub1x0XFxcbiAgIDc6XHRcdCAgICAgIGR3bWFjNF9kbWEubyBkd21hYzRfbGliLm8gZHdtYWM0X2NvcmUubyBkd21hYzUubyBod2lmLm8gXFxcbiAgIDg6XHRcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXG4gICA5Olx0XHQgICAgICBzdG1tYWNfeGRwLm8gc3RtbWFjX2VzdC5vIHN0bW1hY19mcGUubyBzdG1tYWNfdmxhbi5vIFxcXG4gIDEwOlx0XHQgICAgICBzdG1tYWNfcGNzLm8gJChzdG1tYWMteSlcbiAgMTE6XHRcbiAgMTI6XHRzdG1tYWMtJChDT05GSUdfU1RNTUFDX1NFTEZURVNUUykgJiM0Mzs9IHN0bW1hY19zZWxmdGVzdHMub1xuICAxMzpcdFxuICAxNDpcdCMgT3JkZXJpbmcgbWF0dGVycy4gR2VuZXJpYyBkcml2ZXIgbXVzdCBiZSBsYXN0LlxuICAxNTpcdG9iai0kKENPTkZJR19TVE1NQUNfUExBVEZPUk0pXHQmIzQzOz0gc3RtbWFjLXBsYXRmb3JtLm9cbiAgMTY6XHRvYmotJChDT05GSUdfRFdNQUNfQU5BUklPTilcdCYjNDM7PSBkd21hYy1hbmFyaW9uLm9cbiAgMTc6XHRvYmotJChDT05GSUdfRFdNQUNfRUlDNzcwMClcdCYjNDM7PSBkd21hYy1laWM3NzAwLm9cbiAgMTg6XHRvYmotJChDT05GSUdfRFdNQUNfSU5HRU5JQylcdCYjNDM7PSBkd21hYy1pbmdlbmljLm9cbiAgMTk6XHRvYmotJChDT05GSUdfRFdNQUNfSVBRODA2WClcdCYjNDM7PSBkd21hYy1pcHE4MDZ4Lm9cbiAgMjA6XHRvYmotJChDT05GSUdfRFdNQUNfTFBDMThYWClcdCYjNDM7PSBkd21hYy1scGMxOHh4Lm9cbiAgMjE6XHRvYmotJChDT05GSUdfRFdNQUNfTUVESUFURUspXHQmIzQzOz0gZHdtYWMtbWVkaWF0ZWsub1xuICAyMjpcdG9iai0kKENPTkZJR19EV01BQ19NRVNPTilcdCYjNDM7PSBkd21hYy1tZXNvbi5vIGR3bWFjLW1lc29uOGIub1xuICAyMzpcdG9iai0kKENPTkZJR19EV01BQ19OVVZPVE9OKVx0JiM0Mzs9IGR3bWFjLW51dm90b24ub1xuICAyNDpcdG9iai0kKENPTkZJR19EV01BQ19RQ09NX0VUSFFPUylcdCYjNDM7PSBkd21hYy1xY29tLWV0aHFvcy5vXG4gIDI1Olx0b2JqLSQoQ09ORklHX0RXTUFDX1JFTkVTQVNfR0JFVEgpICYjNDM7PSBkd21hYy1yZW5lc2FzLWdiZXRoLm9cbiAgMjY6XHRvYmotJChDT05GSUdfRFdNQUNfUk9DS0NISVApXHQmIzQzOz0gZHdtYWMtcmsub1xuICAyNzpcdG9iai0kKENPTkZJR19EV01BQ19SWk4xKVx0JiM0Mzs9IGR3bWFjLXJ6bjEub1xuICAyODpcdG9iai0kKENPTkZJR19EV01BQ19TMzIpXHRcdCYjNDM7PSBkd21hYy1zMzIub1xuICAyOTpcdG9iai0kKENPTkZJR19EV01BQ19TT0NGUEdBKVx0JiM0Mzs9IGR3bWFjLWFsdHItc29jZnBnYS5vXG4gIDMwOlx0b2JqLSQoQ09ORklHX0RXTUFDX1NPUEhHTylcdCYjNDM7PSBkd21hYy1zb3BoZ28ub1xuICAzMTpcdG9iai0kKENPTkZJR19EV01BQ19TUEFDRU1JVClcdCYjNDM7PSBkd21hYy1zcGFjZW1pdC5vXG4gIDMyOlx0b2JqLSQoQ09ORklHX0RXTUFDX1NUQVJGSVZFKVx0JiM0Mzs9IGR3bWFjLXN0YXJmaXZlLm9cbiAgMzM6XHRvYmotJChDT05GSUdfRFdNQUNfU1RJKVx0XHQmIzQzOz0gZHdtYWMtc3RpLm9cbiAgMzQ6XHRvYmotJChDT05GSUdfRFdNQUNfU1RNMzIpXHQmIzQzOz0gZHdtYWMtc3RtMzIub1xuICAzNTpcdG9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcdCYjNDM7PSBkd21hYy1zdW54aS5vXG4gIDM2Olx0b2JqLSQoQ09ORklHX0RXTUFDX1NVTjhJKVx0JiM0Mzs9IGR3bWFjLXN1bjhpLm9cbiAgMzc6XHRvYmotJChDT05GSUdfRFdNQUNfU1VONTVJKVx0JiM0Mzs9IGR3bWFjLXN1bjU1aS5vXG4gIDM4Olx0b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVx0JiM0Mzs9IGR3bWFjLXRoZWFkLm9cbiAgMzk6XHRvYmotJChDT05GSUdfRFdNQUNfRFdDX1FPU19FVEgpXHQmIzQzOz0gZHdtYWMtZHdjLXFvcy1ldGgub1xuICA0MDpcdG9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVx0JiM0Mzs9IGR3bWFjLWludGVsLXBsYXQub1xuICA0MTpcdG9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24xLm9cbiAgNDI6XHRvYmotJChDT05GSUdfRFdNQUNfR0VORVJJQylcdCYjNDM7PSBkd21hYy1nZW5lcmljLm9cbiAgNDM6XHRvYmotJChDT05GSUdfRFdNQUNfSU1YOClcdCYjNDM7PSBkd21hYy1pbXgub1xuICA0NDpcdG9iai0kKENPTkZJR19EV01BQ19URUdSQSlcdCYjNDM7PSBkd21hYy10ZWdyYS5vXG4gIDQ1Olx0b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVx0JiM0Mzs9IGR3bWFjLXZpc2NvbnRpLm9cbiAgNDY6XHRzdG1tYWMtcGxhdGZvcm0tb2Jqczo9IHN0bW1hY19wbGF0Zm9ybS5vXG4gIDQ3Olx0ZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXG4gIDQ4Olx0XG4gIDQ5Olx0b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXHQmIzQzOz0gc3RtbWFjX2xpYnBjaS5vXG4gIDUwOlx0b2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXHQmIzQzOz0gc3RtbWFjLXBjaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzU5NgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBQQ0kgRGV2aWNlIElEIFN1cHBvcnQgaW4gYHN0bW1hYy1wY2kuY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgZ2V0IGEgZ3Jhc3Agb24gdGhlIHNwZWNpZmljIFBDSSBkZXZpY2UgSURzIHRoYXQgdGhlIGBzdG1tYWMtcGNpLmNgIGRyaXZlciBpcyBkZXNpZ25lZCB0byBoYW5kbGUuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgbmFtZSwgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZSBhbmQgY2hlY2sgZm9yIHRoZSBzcGVjaWZpYyB2ZW5kb3IgYW5kIGRldmljZSBJRHMgaXQmIzM5O3MgY29uZmlndXJlZCB0byByZWNvZ25pemUuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiBmb3IgcXVpY2tseSBhc3Nlc3NpbmcgZHJpdmVyIHN1cHBvcnQuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB0aGlzIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSBpdHMgcmVsZXZhbmNlIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSBJJiMzOTttIHdvcmtpbmcgd2l0aC4gVGltZSB0byBjcmFjayBvcGVuIHRoYXQgZmlsZSBhbmQgZ2V0IHRvIHRoZSBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgMzpcdCAgVGhpcyBjb250YWlucyB0aGUgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgcGNpIGRyaXZlci5cbiAgIDQ6XHRcbiAgIDU6XHQgIENvcHlyaWdodCAoQykgMjAxMS0yMDEyICBWYXlhdnlhIExhYnMgUHZ0IEx0ZFxuICAgNjpcdFxuICAgNzpcdFxuICAgODpcdCAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXHUwMDNjcmF5YWdvbmRAdmF5YXZ5YWxhYnMuY29tXHUwMDNlXG4gICA5Olx0ICBBdXRob3I6IEdpdXNlcHBlIENhdmFsbGFybyBcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXHUwMDNlXG4gIDEwOlx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgMTE6XHRcbiAgMTI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGstcHJvdmlkZXIuaFx1MDAzZVxuICAxMzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZG1pLmhcdTAwM2VcbiAgMTU6XHRcbiAgMTY6XHQjaW5jbHVkZSBcJiMzNDtzdG1tYWMuaFwmIzM0O1xuICAxNzpcdCNpbmNsdWRlIFwmIzM0O3N0bW1hY19saWJwY2kuaFwmIzM0O1xuICAxODpcdFxuICAxOTpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuICAyMDpcdFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuICAyMTpcdH07XG4gIDIyOlx0XG4gIDIzOlx0c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gIDI0Olx0e1xuICAyNTpcdFx0LyogY2xrX2Nzcl9pID0gMjAtMzVNSHogXHUwMDI2IE1EQyA9IGNsa19jc3JfaS8xNiAqL1xuICAyNjpcdFx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG4gIDI3Olx0XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbiAgMjg6XHRcdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuICAyOTpcdFxuICAzMDpcdFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhLVx1MDAzZW5lZWRzX3Jlc2V0ID0gdHJ1ZTtcbiAgMzE6XHR9XG4gIDMyOlx0XG4gIDMzOlx0c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuICAzNDpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXG4gIDM1Olx0e1xuICAzNjpcdFx0LyogU2V0IGNvbW1vbiBkZWZhdWx0IGRhdGEgZmlyc3QgKi9cbiAgMzc6XHRcdGNvbW1vbl9kZWZhdWx0X2RhdGEocGxhdCk7XG4gIDM4Olx0XG4gIDM5Olx0XHRwbGF0LVx1MDAzZWJ1c19pZCA9IDE7XG4gIDQwOlx0XHRwbGF0LVx1MDAzZXBoeV9hZGRyID0gMDtcbiAgNDE6XHRcdHBsYXQtXHUwMDNlcGh5X2ludGVyZmFjZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJO1xuICA0MjpcdFxuICA0MzpcdFx0cGxhdC1cdTAwM2VkbWFfY2ZnLVx1MDAzZXBibCA9IDMyO1xuICA0NDpcdFx0cGxhdC1cdTAwM2VkbWFfY2ZnLVx1MDAzZXBibHg4ID0gdHJ1ZTtcbiAgNDU6XHRcdC8qIFRPRE86IEFYSSAqL1xuICA0NjpcdFxuICA0NzpcdFx0cmV0dXJuIDA7XG4gIDQ4Olx0fVxuICA0OTpcdFxuICA1MDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcbiAgNTE6XHRcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXG4gIDUyOlx0fTtcbiAgNTM6XHRcbiAgNTQ6XHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuICA1NTpcdFx0XHRcdFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuICA1NjpcdHtcbiAgNTc6XHRcdGludCBpO1xuICA1ODpcdFxuICA1OTpcdFx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yNTBfMzAwTTtcbiAgNjA6XHRcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcbiAgNjE6XHRcdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xuICA2MjpcdFx0cGxhdC1cdTAwM2VmbGFncyB8PSBTVE1NQUNfRkxBR19UU09fRU47XG4gIDYzOlx0XHRwbGF0LVx1MDAzZXBtdCA9IHRydWU7XG4gIDY0Olx0XG4gIDY1Olx0XHQvKiBTZXQgZGVmYXVsdCBudW1iZXIgb2YgUlggYW5kIFRYIHF1ZXVlcyB0byB1c2UgKi9cbiAgNjY6XHRcdHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XG4gIDY3Olx0XHRwbGF0LVx1MDAzZXJ4X3F1ZXVlc190b191c2UgPSA0O1xuICA2ODpcdFxuICA2OTpcdFx0cGxhdC1cdTAwM2V0eF9zY2hlZF9hbGdvcml0aG0gPSBNVExfVFhfQUxHT1JJVEhNX1dSUjtcbiAgNzA6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBsYXQtXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspIHtcbiAgNzE6XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcbiAgNzI6XHRcdFx0cGxhdC1cdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLndlaWdodCA9IDI1O1xuICA3MzpcdFx0XHRpZiAoaSBcdTAwM2UgMClcbiAgNzQ6XHRcdFx0XHRwbGF0LVx1MDAzZXR4X3F1ZXVlc19jZmdbaV0udGJzX2VuID0gMTtcbiAgNzU6XHRcdH1cbiAgNzY6XHRcbiAgNzc6XHRcdHBsYXQtXHUwMDNlcnhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1JYX0FMR09SSVRITV9TUDtcbiAgNzg6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspXG4gIDc5Olx0XHRcdHBsYXQtXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XG4gIDgwOlx0XG4gIDgxOlx0XHRwbGF0LVx1MDAzZWJ1c19pZCA9IDE7XG4gIDgyOlx0XHRwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcbiAgODM6XHRcbiAgODQ6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmwgPSAzMjtcbiAgODU6XHRcdHBsYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VwYmx4OCA9IHRydWU7XG4gIDg2Olx0XG4gIDg3Olx0XHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xuICA4ODpcdFx0cGxhdC1cdTAwM2VheGkgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cdTAwM2VheGkpLCBHRlBfS0VSTkVMKTtcbiAgODk6XHRcdGlmICghcGxhdC1cdTAwM2VheGkpXG4gIDkwOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuICA5MTpcdFxuICA5MjpcdFx0cGxhdC1cdTAwM2VheGktXHUwMDNlYXhpX3dyX29zcl9sbXQgPSAzMTtcbiAgOTM6XHRcdHBsYXQtXHUwMDNlYXhpLVx1MDAzZWF4aV9yZF9vc3JfbG10ID0gMzE7XG4gIDk0Olx0XG4gIDk1Olx0XHRwbGF0LVx1MDAzZWF4aS1cdTAwM2VheGlfZmIgPSBmYWxzZTtcbiAgOTY6XHRcdHBsYXQtXHUwMDNlYXhpLVx1MDAzZWF4aV9ibGVuX3JlZ3ZhbCA9IERNQV9BWElfQkxFTjQgfCBETUFfQVhJX0JMRU44IHxcbiAgOTc6XHRcdFx0XHRcdCAgICAgRE1BX0FYSV9CTEVOMTYgfCBETUFfQVhJX0JMRU4zMjtcbiAgOTg6XHRcbiAgOTk6XHRcdHJldHVybiAwO1xuIDEwMDpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzkyCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uLi4KCioqRGl2aW5nIERlZXBlciBpbnRvIHN0bW1hY19wY2kuYyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBiYWNrIGludG8gdGhlIGNvZGUuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgcmVzdCBvZiBgc3RtbWFjX3BjaS5jYC4gSSYjMzk7dmUgZ290IGEgZ29vZCBncmFzcCBvZiB0aGUgaW5pdGlhbCBzZWN0aW9ucywgYnV0IEkga25vdyB0aGVyZSYjMzk7cyBtb3JlIGZ1bmN0aW9uYWxpdHksIGVzcGVjaWFsbHkgYXJvdW5kIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24uIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB0aGF0IG1pZ2h0IGJlIGNvbnRyaWJ1dGluZyB0byB0aGUgcGVyZm9ybWFuY2UgaXNzdWVzIHdlIGFyZSBzZWVpbmcuIEl0JiMzOTtzIHRpbWUgdG8gcHV0IG9uIG15IGludmVzdGlnYXRvciBoYXQuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBmaWxlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEwMTpcdFxuIDEwMjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XG4gMTAzOlx0XHQuc2V0dXAgPSBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YSxcbiAxMDQ6XHR9O1xuIDEwNTpcdFxuIDEwNjpcdC8qKlxuIDEwNzpcdCAqIHN0bW1hY19wY2lfcHJvYmVcbiAxMDg6XHQgKlxuIDEwOTpcdCAqIEBwZGV2OiBwY2kgZGV2aWNlIHBvaW50ZXJcbiAxMTA6XHQgKiBAaWQ6IHBvaW50ZXIgdG8gdGFibGUgb2YgZGV2aWNlIGlkL2lkJiMzOTtzLlxuIDExMTpcdCAqXG4gMTEyOlx0ICogRGVzY3JpcHRpb246IFRoaXMgcHJvYmluZyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBmb3IgYWxsIFBDSSBkZXZpY2VzIHdoaWNoXG4gMTEzOlx0ICogbWF0Y2ggdGhlIElEIHRhYmxlIGFuZCBhcmUgbm90IFwmIzM0O293bmVkXCYjMzQ7IGJ5IG90aGVyIGRyaXZlciB5ZXQuIFRoaXMgZnVuY3Rpb25cbiAxMTQ6XHQgKiBnZXRzIHBhc3NlZCBhIFwmIzM0O3N0cnVjdCBwY2lfZGV2ICpcJiMzNDsgZm9yIGVhY2ggZGV2aWNlIHdob3NlIGVudHJ5IGluIHRoZSBJRCB0YWJsZVxuIDExNTpcdCAqIG1hdGNoZXMgdGhlIGRldmljZS4gVGhlIHByb2JlIGZ1bmN0aW9ucyByZXR1cm5zIHplcm8gd2hlbiB0aGUgZHJpdmVyIGNob29zZVxuIDExNjpcdCAqIHRvIHRha2UgXCYjMzQ7b3duZXJzaGlwXCYjMzQ7IG9mIHRoZSBkZXZpY2Ugb3IgYW4gZXJyb3IgY29kZSgtdmUgbm8pIG90aGVyd2lzZS5cbiAxMTc6XHQgKi9cbiAxMTg6XHRzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gMTE5Olx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbiAxMjA6XHR7XG4gMTIxOlx0XHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiAxMjI6XHRcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbiAxMjM6XHRcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xuIDEyNDpcdFx0aW50IHJldDtcbiAxMjU6XHRcdGludCBpO1xuIDEyNjpcdFxuIDEyNzpcdFx0cGxhdCA9IHN0bW1hY19wbGF0X2RhdF9hbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gMTI4Olx0XHRpZiAoIXBsYXQpXG4gMTI5Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEzMDpcdFxuIDEzMTpcdFx0cGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuIDEzMjpcdFx0XHRcdFx0XHQgICBzaXplb2YoKnBsYXQtXHUwMDNlbWRpb19idXNfZGF0YSksXG4gMTMzOlx0XHRcdFx0XHRcdCAgIEdGUF9LRVJORUwpO1xuIDEzNDpcdFx0aWYgKCFwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEpXG4gMTM1Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEzNjpcdFxuIDEzNzpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmcgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gMTM4Olx0XHRcdFx0XHRcdCAgICAgc2l6ZW9mKCpwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZyksXG4gMTM5Olx0XHRcdFx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG4gMTQwOlx0XHRpZiAoIXBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKVxuIDE0MTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAxNDI6XHRcbiAxNDM6XHRcdC8qIEVuYWJsZSBwY2kgZGV2aWNlICovXG4gMTQ0Olx0XHRyZXQgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XG4gMTQ1Olx0XHRpZiAocmV0KSB7XG4gMTQ2Olx0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzOiBFUlJPUjogZmFpbGVkIHRvIGVuYWJsZSBkZXZpY2VcXG5cJiMzNDssXG4gMTQ3Olx0XHRcdFx0X19mdW5jX18pO1xuIDE0ODpcdFx0XHRyZXR1cm4gcmV0O1xuIDE0OTpcdFx0fVxuIDE1MDpcdFxuIDE1MTpcdFx0LyogR2V0IHRoZSBiYXNlIGFkZHJlc3Mgb2YgZGV2aWNlICovXG4gMTUyOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBQQ0lfU1REX05VTV9CQVJTOyBpJiM0MzsmIzQzOykge1xuIDE1MzpcdFx0XHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSA9PSAwKVxuIDE1NDpcdFx0XHRcdGNvbnRpbnVlO1xuIDE1NTpcdFx0XHRyZXMuYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIGksIFNUTU1BQ19SRVNPVVJDRV9OQU1FKTtcbiAxNTY6XHRcdFx0aWYgKElTX0VSUihyZXMuYWRkcikpXG4gMTU3Olx0XHRcdFx0cmV0dXJuIFBUUl9FUlIocmVzLmFkZHIpO1xuIDE1ODpcdFx0XHRicmVhaztcbiAxNTk6XHRcdH1cbiAxNjA6XHRcbiAxNjE6XHRcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuIDE2MjpcdFxuIDE2MzpcdFx0cmV0ID0gaW5mby1cdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcbiAxNjQ6XHRcdGlmIChyZXQpXG4gMTY1Olx0XHRcdHJldHVybiByZXQ7XG4gMTY2Olx0XG4gMTY3Olx0XHRyZXMud29sX2lycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE2ODpcdFx0cmVzLmlycSA9IHBkZXYtXHUwMDNlaXJxO1xuIDE2OTpcdFxuIDE3MDpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNldHNvZWUgPSAxO1xuIDE3MTpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlbXJ4cGVlID0gMTtcbiAxNzI6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW1lc3RlZSA9IDE7XG4gMTczOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtcnhlZSA9IDE7XG4gMTc0Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtdHhlZSA9IDE7XG4gMTc1Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VlcHNpID0gMTtcbiAxNzY6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZWVkcHAgPSAxO1xuIDE3NzpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlcHJ0eWVuID0gMTtcbiAxNzg6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZXRtb3V0ZW4gPSAxO1xuIDE3OTpcdFxuIDE4MDpcdFx0cGxhdC1cdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG4gMTgxOlx0XHRwbGF0LVx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XG4gMTgyOlx0XG4gMTgzOlx0XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbiAxODQ6XHR9XG4gMTg1Olx0XG4gMTg2Olx0LyoqXG4gMTg3Olx0ICogc3RtbWFjX3BjaV9yZW1vdmVcbiAxODg6XHQgKlxuIDE4OTpcdCAqIEBwZGV2OiBwbGF0Zm9ybSBkZXZpY2UgcG9pbnRlclxuIDE5MDpcdCAqIERlc2NyaXB0aW9uOiB0aGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBtYWluIHRvIGZyZWUgdGhlIG5ldCByZXNvdXJjZXMuXG4gMTkxOlx0ICovXG4gMTkyOlx0c3RhdGljIHZvaWQgc3RtbWFjX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gMTkzOlx0e1xuIDE5NDpcdFx0c3RtbWFjX2R2cl9yZW1vdmUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDE5NTpcdH1cbiAxOTY6XHRcbiAxOTc6XHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xuIDE5ODpcdCNkZWZpbmUgUENJX1ZFTkRPUl9JRF9TVE1NQUNcdFx0MHgwNzAwXG4gMTk5Olx0XG4gMjAwOlx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NUTU1BQ19TVE1NQUNcdFx0MHgxMTA4XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjAwCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uLi4KCioqRGl2aW5nIERlZXBlciBpbnRvIHN0bW1hY19wY2kuYyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBiYWNrIGludG8gdGhlIGNvZGUuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgcmVzdCBvZiBgc3RtbWFjX3BjaS5jYC4gSSYjMzk7dmUgZ290IGEgZ29vZCBncmFzcCBvZiB0aGUgaW5pdGlhbCBzZWN0aW9ucywgYnV0IEkga25vdyB0aGVyZSYjMzk7cyBtb3JlIGZ1bmN0aW9uYWxpdHksIGVzcGVjaWFsbHkgYXJvdW5kIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24uIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyB0aGF0IG1pZ2h0IGJlIGNvbnRyaWJ1dGluZyB0byB0aGUgcGVyZm9ybWFuY2UgaXNzdWVzIHdlIGFyZSBzZWVpbmcuIEl0JiMzOTtzIHRpbWUgdG8gcHV0IG9uIG15IGludmVzdGlnYXRvciBoYXQuIExldCYjMzk7cyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBmaWxlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMTpcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TWU5PUFNZU19HTUFDNV9JRFx0XHQweDcxMDJcbiAyMDI6XHRcbiAyMDM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgc3RtbWFjX2lkX3RhYmxlW10gPSB7XG4gMjA0Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTVE1NQUMsIFNUTU1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNTpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG4gMjA2Olx0XHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFx1MDAyNnNucHNfZ21hYzVfcGNpX2luZm8pIH0sXG4gMjA3Olx0XHR7fVxuIDIwODpcdH07XG4gMjA5Olx0XG4gMjEwOlx0TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG4gMjExOlx0XG4gMjEyOlx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuIDIxMzpcdFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbiAyMTQ6XHRcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcbiAyMTU6XHRcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXG4gMjE2Olx0XHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG4gMjE3Olx0XHQuZHJpdmVyICAgICAgICAgPSB7XG4gMjE4Olx0XHRcdC5wbSAgICAgPSBcdTAwMjZzdG1tYWNfc2ltcGxlX3BtX29wcyxcbiAyMTk6XHRcdH0sXG4gMjIwOlx0fTtcbiAyMjE6XHRcbiAyMjI6XHRtb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XG4gMjIzOlx0XG4gMjI0Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1NUTU1BQyAxMC8xMDAvMTAwMCBFdGhlcm5ldCBQQ0kgZHJpdmVyXCYjMzQ7KTtcbiAyMjU6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O1JheWFnb25kIEtva2F0YW51ciBcdTAwM2NyYXlhZ29uZC5rb2thdGFudXJAdmF5YXZ5YWxhYnMuY29tXHUwMDNlXCYjMzQ7KTtcbiAyMjY6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0dpdXNlcHBlIENhdmFsbGFybyBcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXHUwMDNlXCYjMzQ7KTtcbiAyMjc6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTkzOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gUENJIEV0aGVybmV0IERyaXZlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBzb21lIGtub3duIGdvb2QgZXhhbXBsZXMgb2YgUENJLWJhc2VkIEV0aGVybmV0IGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIHNvbGlkIHBsYWNlIHRvIHN0YXJ0IHNpbmNlIGl0IGRlYWxzIHdpdGggYSBzaW1pbGFyIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLiBJJiMzOTttIGZvY3VzaW5nIG9uICYjMzQ7ZHdtYWMmIzM0OyBhbmQgb3RoZXIgUENJIGRyaXZlcnMgaW4gZ2VuZXJhbC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQQ0kgaW5pdGlhbGl6YXRpb24gYW5kIGRldmljZSBwcm9iZSBpcyBzdHJ1Y3R1cmVkIGluIGEgd2VsbC1lc3RhYmxpc2hlZCBleGFtcGxlLCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGV4cGVjdGVkIGRyaXZlciBzdHJ1Y3R1cmUuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGRyaXZlcnMgaGFuZGxlIHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSwgcmVzb3VyY2UgbWFwcGluZywgYW5kIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gdGhlIFBDSSBmcmFtZXdvcmsuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGlzIGNvbnRleHQgYmVmb3JlIEkgc3RhcnQgbG9va2luZyBhdCBhIHNwZWNpZmljIGNoaXBzZXQsIHRoaXMgc2hvdWxkIGdpdmUgbWUgYSBtYXAgb2Ygd2hlcmUgdG8gZ28gbmV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTE0MTU9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGludGVsX2V0aF9wY2lfaWRfdGFibGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE3OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTQxOC1cdC5uYW1lID0gXCYjMzQ7aW50ZWwtZXRoLXBjaVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjE0Mjc6bW9kdWxlX3BjaV9kcml2ZXIoaW50ZWxfZXRoX3BjaV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xNDI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NjAyPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBsb29uZ3Nvbl9kd21hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjA0OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBsb29uZ3Nvbl9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTYwNS1cdC5uYW1lID0gRFJJVkVSX05BTUUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjYxNDptb2R1bGVfcGNpX2RyaXZlcihsb29uZ3Nvbl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MzcxPU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBkd21hY19tb3RvcmNvbW1fcGNpX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM3MzpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgZHdtYWNfbW90b3Jjb21tX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zNzQtXHQubmFtZSA9IERSSVZFUl9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM4Mzptb2R1bGVfcGNpX2RyaXZlcihkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0zODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjEyOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXHQubmFtZSA9IFNUTU1BQ19SRVNPVVJDRV9OQU1FLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjY4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFFFTVUgRW11bGF0aW9uIFF1YW5kYXJ5KioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBzb21ldGhpbmcgb3V0IGFib3V0IFFFTVUgYW5kIGl0cyBuZXR3b3JrIGRldmljZSBlbXVsYXRpb24sIHNwZWNpZmljYWxseSByZWdhcmRpbmcgYHN0bW1hY2AgYW5kIGBkd21hY2AgZHJpdmVycy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiAqQXJlKiB0aGVzZSBldmVyIGFjdHVhbGx5IGVtdWxhdGVkPyBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgdGhlIHR5cGljYWwgQVJNIGJvYXJkIHNldHVwcyBJIHdvcmsgd2l0aCwgbGlrZSB0aGUgYG9yYW5nZXBpLXBjYCAoYWxsd2lubmVyLWgzKSBvciBgY3ViaWVib2FyZGAgKGFsbHdpbm5lci1hMTApLiBJJiMzOTttIHByZXR0eSBzdXJlIEkmIzM5O3ZlIHNlZW4gdGhpbmdzIGxpa2UgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBgYWxsd2lubmVyX2VtYWNgIGluIHRob3NlIGNvbmZpZ3VyYXRpb25zLiBCdXQgd2hhdCBhYm91dCB0aGUgYnJvYWRlciBwaWN0dXJlPyBXaGF0IGhhcHBlbnMgd2hlbiBJJiMzOTttIGRlYWxpbmcgd2l0aCBhbiBhbWQ2NCBzZXR1cD8KClRoYXQmIzM5O3MgdGhlIGNydXggb2YgaXQ6ICpEb2VzKiBRRU1VLCBpbiBhbiBhbWQ2NCBlbnZpcm9ubWVudCAoeDg2XzY0IFBDIC8gUTM1IC8gbWljcm92bSksIG9mZmVyIGVtdWxhdGlvbiBmb3IgYHN0bW1hY2Agb3IgYGR3bWFjYD8gVGhlIGFuc3dlciBzZWVtcyB0byBiZSBuby4gVGhlIHVzdWFsIHN1c3BlY3RzIEkmIzM5O20gZmFtaWxpYXIgd2l0aCDigJMgYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBgcnRsODEzOWAsIGV0Yy4g4oCTIHRoZXNlIGFyZSB0aGUgKnN0YW5kYXJkKiBRRU1VIG5ldHdvcmsgZGV2aWNlcy4gSSYjMzk7dmUgZ290IGEgbWVudGFsIGxpc3Qgb2YgYWxsIHRoZSBvdGhlciB0eXBpY2FsIGRyaXZlcnM6IGBwY25ldGAsIGBuZTJrX3BjaWAsIGB2bXhuZXQzYCwgYHZpcnRpby1uZXQtcGNpYCwgYHVzYi1uZXRgLCBgcm9ja2VyYCwgYHN1bmdlbWAsIGBpODI1NTEvNTcvNTlgIChlZXBybzEwMCksIGB0dWxpcGAsIGFuZCBgbGFuY2VgLiBJIGNhbiBjb25maWRlbnRseSBzYXkgdGhhdCBuZWl0aGVyIGBzdG1tYWNgIG5vciBgZHdtYWNgIFBDSSBtb2RlbHMgYXJlIHByZXNlbnQuCgpOb3csIHdhaXQgYSBtaW51dGUsIGlzIHRoZXJlICphbnkqIHZpcnR1YWwgYnVzIG9yIGRldmljZSB0aGF0IGNvdWxkIGJlIHVzZWQgZm9yIGBzdG1tYWNgPyBJdCYjMzk7cyB0aW1lIHRvIHZlcmlmeSBpZiBgc3RtbWFjYCBjYW4gYmUgcHJvYmVkIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgUUVNVSBoYXJkd2FyZSBlbXVsYXRpb24uIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgbGlrZSBgc3RtbWFjX2R2cl9wcm9iZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCBzdG1tYWNfZHZyX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMT12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTI6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDEzLVx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03ODE2PXN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMjgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMjk6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXRfZGF0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTMwLVx0XHQgICAgIHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzICpyZXMpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzU5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogNjM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlciYjMzk7cyBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgYHN0bW1hY2AsIHRoZSBuZXR3b3JrIGRldmljZSBkcml2ZXIgZm9yIFNUTWljcm9lbGVjdHJvbmljcyYjMzk7IFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSwgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGlzIHdoZXRoZXIgYHN5emthbGxlcmAgY2FuIGV2ZW4gKnJlYWNoKiB0aGlzIGNvZGUuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogcmVhY2hhYmlsaXR5IGlzIHRoZSBwcmltYXJ5IGdhdGUuIFRoZXkgc3BlY2lmeSB0aGF0IHdlIGNhbiBvbmx5IHRhcmdldCBjb2RlIHRoYXQgZXhlY3V0ZXMgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIOKAkyBHQ0Ugb3IgUUVNVSwgcHJlZmVyYWJseSB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCBvciB0dW4vdGFwLiBBbnkgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGNvZGUgaXMgb2ZmLWxpbWl0cywgcmVnYXJkbGVzcyBvZiBpdHMgaW50ZXJuYWwgY29tcGxleGl0eSBvciB0aGUgcHJlc2VuY2Ugb2YgYXNzZXJ0aW9ucy4KClRoZSBkb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgbGlzdHMgZXhhbXBsZXMgb2YgKnVucmVhY2hhYmxlKiBoYXJkd2FyZTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgdGhhdCByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCBhbHNvIGZsYWdzIGV4ZWN1dGlvbiBwYXRocyB0aGF0IG9ubHkgdHJpZ2dlciBkdXJpbmcsIHNheSwgUENJIGhvdC11bnBsdWcgb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuIFRoaXMgZ2l2ZXMgc29tZSBpbXBvcnRhbnQgY29udGV4dCBmb3IgZGVjaWRpbmcgaWYgd2UgY2FuIGZ1enogdGhpcyBjb2RlLgoKU28sIGxldCYjMzk7cyBsb29rIGF0IHRoaXMgcGF0Y2guIEl0IHRvdWNoZXMgYSBmZXcga2V5IGZ1bmN0aW9uczogYHN0bW1hY194ZHBfcmVsZWFzZWAgaW4gYHN0bW1hY19tYWluLmNgLCBhbmQgYHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZWAsIGBzdG1tYWNfeGRwX2VuYWJsZV9wb29sYCwgYW5kIGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAgaW4gYHN0bW1hY194ZHAuY2AuIFRoZXNlIGFwcGVhciB0byBiZSBYU0svQUZfWERQIHBvb2wgc2V0dXAgYW5kIHRlYXJkb3duIGNhbGxiYWNrcyBmb3IgdGhlIGBzdG1tYWNgIG5ldGRldiBkcml2ZXIuIGBzdG1tYWNfeGRwX2VuYWJsZV9wb29sYCBpcyB0cmlnZ2VyZWQgYnkgYHN0bW1hY194ZHBfc2V0X3Bvb2xgIHdoaWNoIGdldHMgY2FsbGVkIGJ5IGFuIFhEUCBuZXRkZXYgb3AgKGBuZG9feHNrX2J1ZmZfcG9vbF9lbmFibGVgL2BicGZgKS4gQ3J1Y2lhbGx5LCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBpcyBjYWxsZWQgYnkgYHN0bW1hY19yZWxlYXNlYCwgd2hpY2ggaXMgdGhlIHNhbWUgYXMgYHN0bW1hY19tYWNfc3RvcGAgb3IgYG5kb19zdG9wYC4KCk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBhbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGluaGVyZW50bHkgcmVseSBvbiBhbiBgc3RtbWFjYCBuZXRfZGV2aWNlIGFjdHVhbGx5IGV4aXN0aW5nLiBDYW4gd2UgY3JlYXRlIHRoaXMgZGV2aWNlIGluIGEgc3RhbmRhcmQsIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQgb24gYW1kNjQ/IFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG1hdHRlci4gV2UgbmVlZCB0byBmaW5kIG91dCBpZiB0aGVyZSYjMzk7cyBhbnkgcGxhdGZvcm0gZGV2aWNlLCBtb2NrIGRldmljZSwgb3Igc29tZSBvdGhlciBtZWNoYW5pc20gd2l0aGluIHRoZSBrZXJuZWwgdHJlZSB0aGF0IGNhbiBjcmVhdGUgYW4gYHN0bW1hY2AgZGV2aWNlICp3aXRob3V0KiByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgb3IgYSBub24tc3RhbmRhcmQgUUVNVSBzZXR1cC4gSSYjMzk7bSBnb2luZyB0byBncmVwIHRoZSBrZXJuZWwgc291cmNlcyBmb3IgYHN0bW1hY2AgYW5kIHBsYXRmb3JtIGRldmljZXMgb3IgbW9kdWxlIGluaXRpYWxpemF0aW9uIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhIHdheSB0byBnZXQgYSBgc3RtbWFjYCBkZXZpY2UgaW5pdGlhbGl6ZWQgd2l0aG91dCByZXF1aXJpbmcgYW55IGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RldmljZV9yZWdpc3Rlci4qc3RtbWFjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU2MjEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBTVE1NQUMgUGxhdGZvcm0gRHJpdmVyKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBmb2N1cyBpcyBvbiB0aGUgYHN0bW1hY19wbGF0Zm9ybS5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBnbHVlIGNvZGUgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyIGxpa2VseSByZXNpZGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCBwYXJ0aWN1bGFybHkgdGhlIHBsYXRmb3JtJiMzOTtzIGRldmljZSB0cmVlIGJpbmRpbmdzLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIHJlc291cmNlIGFsbG9jYXRpb24gZm9yIHJlZ2lzdGVycywgaW50ZXJydXB0IGhhbmRsaW5nIHNldHVwLCBhbmQgY2xvY2sgY29uZmlndXJhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBwcm9iZSBmdW5jdGlvbjsgdGhhdCYjMzk7cyB3aGVyZSB0aGUgZHJpdmVyIGluaXRpYWxpemVzIGl0c2VsZiBvbiBkZXZpY2UgZW51bWVyYXRpb24uIEkmIzM5O2xsIGJlIGRpZ2dpbmcgZGVlcCBpbnRvIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgc2VhcmNoaW5nIGZvciBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgYXJlYXMgd2hlcmUgY3VzdG9tIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGltcGFjdCBwZXJmb3JtYW5jZSBvciBpbnRyb2R1Y2UgaXNzdWVzLiBJJiMzOTtsbCBhbHNvIGNoZWNrIGZvciBhbnkgcXVpcmsgaGFuZGxpbmcgc3BlY2lmaWMgdG8gY2VydGFpbiBTVE1pY3JvZWxlY3Ryb25pY3MgU29DcyBvciBib2FyZCByZXZpc2lvbnMuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGlzIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyLipzdG1tYWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTg3MQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIFNUTU1BQyBQbGF0Zm9ybSBEcml2ZXIqKgoKT2theSwgc28gd2UgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBMZXQmIzM5O3Mgbm90IHdhc3RlIGFueSB0aW1lIHdpdGggc2Vjb25kYXJ5IHNvdXJjZXMgb3IgZG9jdW1lbnRhdGlvbi4gSSYjMzk7bSBnb2luZyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBgc3RtbWFjX3BsYXRmb3JtLmNgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGRyaXZlciBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBjb250cm9sbGVyLCBzbyBpdCYjMzk7cyB0aGUgbW9zdCBsaWtlbHkgcGxhY2Ugd2hlcmUgdGhlIHJvb3Qgb2YgdGhpcyBpc3N1ZSByZXNpZGVzLCBhbmQgd2hlcmUgSSYjMzk7bSBnb2luZyB0byBmaW5kIHRoZSBsb3ctbGV2ZWwgZGV0YWlscyBuZWVkZWQgdG8gdW5kZXJzdGFuZCB0aGUgY3VycmVudCBiZWhhdmlvci4gTm8gbmVlZCB0byByZS1pbnZlbnQgdGhlIHdoZWVsIG9yIHdvcmsgdGhyb3VnaCBpcnJlbGV2YW50IGNvZGUgcGF0aHMuIExldCYjMzk7cyBnZXQgZG93biB0byB0aGUgZ3JpdHR5IGRldGFpbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgIDM6XHQgIFRoaXMgY29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIHBsYXRmb3JtIGRyaXZlci5cbiAgIDQ6XHRcbiAgIDU6XHQgIENvcHlyaWdodCAoQykgMjAwNy0yMDExICBTVE1pY3JvZWxlY3Ryb25pY3MgTHRkXG4gICA2Olx0XG4gICA3Olx0XG4gICA4Olx0ICBBdXRob3I6IEdpdXNlcHBlIENhdmFsbGFybyBcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXHUwMDNlXG4gICA5Olx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgMTA6XHRcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9kZXZpY2UuaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gIDEzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvcG1fcnVudGltZS5oXHUwMDNlXG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgMTU6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pby5oXHUwMDNlXG4gIDE2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX25ldC5oXHUwMDNlXG4gIDE4Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvb2ZfbWRpby5oXHUwMDNlXG4gIDE5Olx0XG4gIDIwOlx0I2luY2x1ZGUgXCYjMzQ7c3RtbWFjLmhcJiMzNDtcbiAgMjE6XHQjaW5jbHVkZSBcJiMzNDtzdG1tYWNfcGxhdGZvcm0uaFwmIzM0O1xuICAyMjpcdFxuICAyMzpcdCNpZmRlZiBDT05GSUdfT0ZcbiAgMjQ6XHRcbiAgMjU6XHQvKipcbiAgMjY6XHQgKiBkd21hYzEwMDBfdmFsaWRhdGVfbWNhc3RfYmlucyAtIHZhbGlkYXRlcyB0aGUgbnVtYmVyIG9mIE11bHRpY2FzdCBmaWx0ZXIgYmluc1xuICAyNzpcdCAqIEBkZXY6IHN0cnVjdCBkZXZpY2Ugb2YgdGhlIHBsYXRmb3JtIGRldmljZVxuICAyODpcdCAqIEBtY2FzdF9iaW5zOiBNdWx0aWNhc3QgZmlsdGVyaW5nIGJpbnNcbiAgMjk6XHQgKiBEZXNjcmlwdGlvbjpcbiAgMzA6XHQgKiB0aGlzIGZ1bmN0aW9uIHZhbGlkYXRlcyB0aGUgbnVtYmVyIG9mIE11bHRpY2FzdCBmaWx0ZXJpbmcgYmlucyBzcGVjaWZpZWRcbiAgMzE6XHQgKiBieSB0aGUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZS4gVGhlIFN5bm9wc3lzIEdNQUMgc3VwcG9ydHNcbiAgMzI6XHQgKiA2NCBiaW5zLCAxMjggYmlucywgb3IgMjU2IGJpbnMuIFwmIzM0O2JpbnNcJiMzNDsgcmVmZXIgdG8gdGhlIGRpdmlzaW9uIG9mIENSQ1xuICAzMzpcdCAqIG51bWJlciBzcGFjZS4gNjQgYmlucyBjb3JyZXNwb25kIHRvIDYgYml0cyBvZiB0aGUgQ1JDLCAxMjggY29ycmVzcG9uZHNcbiAgMzQ6XHQgKiB0byA3IGJpdHMsIGFuZCAyNTYgcmVmZXJzIHRvIDggYml0cyBvZiB0aGUgQ1JDLiBBbnkgb3RoZXIgc2V0dGluZyBpc1xuICAzNTpcdCAqIGludmFsaWQgYW5kIHdpbGwgY2F1c2UgdGhlIGZpbHRlcmluZyBhbGdvcml0aG0gdG8gdXNlIE11bHRpY2FzdFxuICAzNjpcdCAqIHByb21pc2N1b3VzIG1vZGUuXG4gIDM3Olx0ICovXG4gIDM4Olx0c3RhdGljIGludCBkd21hYzEwMDBfdmFsaWRhdGVfbWNhc3RfYmlucyhzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBtY2FzdF9iaW5zKVxuICAzOTpcdHtcbiAgNDA6XHRcdGludCB4ID0gbWNhc3RfYmlucztcbiAgNDE6XHRcbiAgNDI6XHRcdHN3aXRjaCAoeCkge1xuICA0MzpcdFx0Y2FzZSBIQVNIX1RBQkxFX1NJWkU6XG4gIDQ0Olx0XHRjYXNlIDEyODpcbiAgNDU6XHRcdGNhc2UgMjU2OlxuICA0NjpcdFx0XHRicmVhaztcbiAgNDc6XHRcdGRlZmF1bHQ6XG4gIDQ4Olx0XHRcdHggPSAwO1xuICA0OTpcdFx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O0hhc2ggdGFibGUgZW50cmllcyBzZXQgdG8gdW5leHBlY3RlZCB2YWx1ZSAlZFxcblwmIzM0OyxcbiAgNTA6XHRcdFx0XHQgbWNhc3RfYmlucyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2ODM5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uLi4KCioqRGl2aW5nIEJhY2sgaW50byBgc3RtbWFjX3BsYXRmb3JtLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgYmFjayB0byBpdC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIGBzdG1tYWNfcGxhdGZvcm0uY2AuIFRpbWUgdG8gbWV0aWN1bG91c2x5IHJldmlldyB0aGUgcmVtYWluaW5nIHNlY3Rpb25zLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBrZXkgcGxhdGZvcm0tc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gZGV0YWlscywgdGhlIHJlc291cmNlIGFsbG9jYXRpb24gcm91dGluZXMsIGludGVycnVwdCBoYW5kbGluZyBzZXR1cHMsIGFuZCBhbnkgcG90ZW50aWFsIHBvd2VyIG1hbmFnZW1lbnQgaG9va3MuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkmIzM5O3ZlIHN0cnVjdHVyZWQgdGhlIGRyaXZlciB3aXRoIHJlc3BlY3QgdG8gcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMuIEtub3dpbmcgd2hhdCYjMzk7cyBoYXBwZW5pbmcgaW4gdGhvc2UgaXMgY3J1Y2lhbCB0byBnZXR0aW5nIGEgc29saWQgdW5kZXJzdGFuZGluZy4gSSYjMzk7bGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgY2xvY2tpbmcgYW5kIFBIWSBpbnRlcmFjdGlvbnMg4oCTIHRoYXQgYWx3YXlzIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyAoYW5kIG9mdGVuLCBvYnNjdXJlKSBkZXRhaWxzIHJlc2lkZS4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIGRyaXZlciBhbmQgaG93IHRoZXkgYXJlIGhhbmRsZWQsIHBhcnRpY3VsYXJseSBhbnkgY2FzZXMgd2hpY2ggbWlnaHQgcmVsYXRlIHRvIHRoZSBwbGF0Zm9ybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTEyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHRzLCBhcyB0aG91Z2ggSSYjMzk7bSBleGFtaW5pbmcgYGR3bWFjLWdlbmVyaWMuY2A6CgoqKkRpdmluZyBpbnRvIHRoZSBHZW5lcmljIERXTUFDIERyaXZlcioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgY3JhY2sgb3BlbiBgZHdtYWMtZ2VuZXJpYy5jYC4gSSYjMzk7bSBhbHJlYWR5IGFudGljaXBhdGluZyBhIGZhaXIgYml0IG9mIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUgaGVyZSwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggbW9yZSBzcGVjaWZpYyBEV01BQyBkcml2ZXIgaW1wbGVtZW50YXRpb25zIGFyZSBidWlsdCwgc28gdW5kZXJzdGFuZGluZyBpdHMgYXJjaGl0ZWN0dXJlIGlzIGNyaXRpY2FsIGZvciBteSB3b3JrLiBJIHdhbnQgdG8gc2VlIGhvdyBpdCBhYnN0cmFjdHMgdGhlIGhhcmR3YXJlLiBXaGF0IGFyZSB0aGUga2V5IHJlZ2lzdGVycyBpdCBhY2Nlc3Nlcz8gSG93IGRvZXMgaXQgaGFuZGxlIGRlc2NyaXB0b3JzLCBpbnRlcnJ1cHRzLCBhbmQgRE1BPyBJJiMzOTttIGN1cmlvdXMgYWJvdXQgdGhlIGNob3NlbiBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcyB0b287IHNwaW5sb2NrcyB2ZXJzdXMgbXV0ZXhlcyB3aWxsIGRpY3RhdGUgYSBsb3QgYWJvdXQgdGhlIGRyaXZlciYjMzk7cyBvdmVyYWxsIHBlcmZvcm1hbmNlIHByb2ZpbGUuIEkmIzM5O20gYWxzbyBzY2FubmluZyBmb3IgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIHRoYXQgbWlnaHQgYmUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MuIExldCYjMzk7cyBzZWUgaG93IGl0IGhhbmRsZXMgcGFja2V0IGJ1ZmZlcmluZyBhbmQgZmxvdyBjb250cm9sLCBhbmQgaG93IGl0IGRlYWxzIHdpdGggZGlmZmVyZW50IEV0aGVybmV0IGZyYW1lIHR5cGVzLiBNeSB1bHRpbWF0ZSBnb2FsIGlzIHRvIHNlZSBob3cgdGhpcyAmIzM5O2dlbmVyaWMmIzM5OyBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIHRoZSBjb3JlIGhhcmR3YXJlIGFic3RyYWN0aW9uIG9mIHRoZSBEV01BQywgYmVjYXVzZSwgaW4gbWFueSBjYXNlcywgdGhpcyBpcyB3aGVyZSBhIGxvdCBvZiB0aGUgcHJvYmxlbXMgb2NjdXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTIzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGFuYXJpb25fZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMjU6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYW5hcmlvbl9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI2LVx0LnByb2JlICA9IGFuYXJpb25fZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEzMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFuYXJpb25fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0zNTk9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZHdjX2V0aF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM6MzYxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3Y19ldGhfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNjItXHQucHJvYmUgID0gZHdjX2V0aF9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd2NfZXRoX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MzYwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGVpYzc3MDBfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNjI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZWljNzcwMF9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYzLVx0LnByb2JlICA9IGVpYzc3MDBfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2OS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM3MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGVpYzc3MDBfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jPTY3PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGR3bWFjX2dlbmVyaWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjY5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTcwLVx0LnByb2JlICA9IGR3bWFjX2dlbmVyaWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTc2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6Nzc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd21hY19nZW5lcmljX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM9MzkwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGlteF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOTI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW14X2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTM5My1cdC5wcm9iZSAgPSBpbXhfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtNDAwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo0MDE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbXhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQwMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjcwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyNzI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW5nZW5pY19tYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3My1cdC5wcm9iZVx0XHQ9IGluZ2VuaWNfbWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzktfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyODA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbmdlbmljX21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI4MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTM5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsX2V0aF9wbGF0X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDAtXHQucHJvYmUgID0gaW50ZWxfZXRoX3BsYXRfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTE0Ny19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjE0ODptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGludGVsX2V0aF9wbGF0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQ5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz00OTU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaXBxODA2eF9nbWFjX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM6NDk3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlwcTgwNnhfZ21hY19kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDk4LVx0LnByb2JlID0gaXBxODA2eF9nbWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MDUtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo1MDY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpcHE4MDZ4X2dtYWNfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM9MjI3PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxzMXhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM6MjI5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGxzMXhfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjMwLVx0LnByb2JlID0gbHMxeF9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMzUtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jOjIzNjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGxzMXhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIzNy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NzU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgbHBjMTh4eF9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Nzc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHBjMTh4eF9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNzgtXHQucHJvYmUgID0gbHBjMTh4eF9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtODUtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo4Njptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGxwYzE4eHhfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy04Ny1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jPTY3MD1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZWRpYXRla19kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjcyOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1lZGlhdGVrX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjczLVx0LnByb2JlICA9IG1lZGlhdGVrX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjgwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lZGlhdGVrX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTgwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo4MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZXNvbjZfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04My1cdC5wcm9iZSAgPSBtZXNvbjZfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy05MC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo5MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lc29uNl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy05Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9NTA1PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uOGJfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWVzb244Yl9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTA4LVx0LnByb2JlICA9IG1lc29uOGJfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUxNS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jOjUxNjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lc29uOGJfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jPTEyMj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBudnRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYzoxMjQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbnZ0X2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMjUtXHQucHJvYmUgID0gbnZ0X2dtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEzMi19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjEzMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG52dF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEzNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTgwNz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBxY29tX2V0aHFvc19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmM6ODA5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHFjb21fZXRocW9zX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODEwLVx0LnByb2JlICA9IHFjb21fZXRocW9zX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODE2LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jOjgxNzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHFjb21fZXRocW9zX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jLTgxOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM9MjIyPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJlbmVzYXNfZ2JldGhfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMjQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmVuZXNhc19nYmV0aF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjI1LVx0LnByb2JlICA9IHJlbmVzYXNfZ2JldGhfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIzMS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jOjIzMjptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHJlbmVzYXNfZ2JldGhfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYz0xNjM1PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJrX2dtYWNfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYzoxNjM3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJrX2dtYWNfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjM4LVx0LnByb2JlICA9IHJrX2dtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjQ0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE2NDU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihya19nbWFjX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2NDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTc5PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjgxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHJ6bjFfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgyLVx0LnByb2JlICA9IHJ6bjFfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTg4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6ODk6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihyem4xX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMtOTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM9MjIwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHMzMl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoyMjI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczMyX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMy1cdC5wcm9iZSA9IHMzMl9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMzAtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jOjIzMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHMzMl9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjMyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYz02Nzk9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc29jZnBnYV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jOjY4MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzb2NmcGdhX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02ODItXHQucHJvYmUgID0gc29jZnBnYV9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjg4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6Njg5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc29jZnBnYV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY5MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz03Nz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo3OTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzb3BoZ29fZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtODAtXHQucHJvYmUgID0gc29waGdvX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTg3LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYzo4ODptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNvcGhnb19kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtODktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0yMTQ9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3BhY2VtaXRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIxNjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzcGFjZW1pdF9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIxNy1cdC5wcm9iZSAgPSBzcGFjZW1pdF9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIyNC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMjU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzcGFjZW1pdF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMjYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYz0xNjU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RhcmZpdmVfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jOjE2NzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdGFyZml2ZV9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE2OC1cdC5wcm9iZSAgPSBzdGFyZml2ZV9kd21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE3NS19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdGFyZml2ZV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNzctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9MzAwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYy0zMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYzozMDI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RpX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMwMy1cdC5wcm9iZSAgPSBzdGlfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzA5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGkuYzozMTA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdGlfZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMxMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTY2OT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdG0zMl9kd21hY19tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NjcxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0bTMyX2R3bWFjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcyLVx0LnByb2JlICA9IHN0bTMyX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjc5LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjY4MDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN0bTMyX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY4MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYz0xNDU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3VuNTVpX2dtYWMyMDBfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmM6MTQ3OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjU1aV9nbWFjMjAwX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE0OC1cdC5wcm9iZSAgPSBzdW41NWlfZ21hYzIwMF9wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNTQtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE1NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW41NWkuYy0xNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjgzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTI4NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTI4NTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdW44aV9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODYtXHQucHJvYmUgID0gc3VuOGlfZHdtYWNfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjk0LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyOTU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW44aV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjk2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmM9MTU0PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjdpX2R3bWFjX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxNTY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuN2lfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTctXHQucHJvYmUgID0gc3VuN2lfZ21hY19wcm9iZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jLTE2My19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxNjQ6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdW43aV9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz00MDM9c3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKHRlZ3JhX21nYmVfcG1fb3BzLCB0ZWdyYV9tZ2JlX3N1c3BlbmQsIHRlZ3JhX21nYmVfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYzo0MDU6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdGVncmFfbWdiZV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQwNi1cdC5wcm9iZSA9IHRlZ3JhX21nYmVfcHJvYmUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MTMtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDE0Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGVncmFfbWdiZV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy00MTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNzE9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYy0yNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjI3MzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB0aGVhZF9kd21hY19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI3NC1cdC5wcm9iZSA9IHRoZWFkX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjgwLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jOjI4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHRoZWFkX2R3bWFjX2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jPTI1OT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB2aXNjb250aV9ldGhfZHdtYWNfbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjI2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB2aXNjb250aV9ldGhfZHdtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNjItXHQucHJvYmUgID0gdmlzY29udGlfZXRoX2R3bWFjX3Byb2JlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjY4LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjI2OTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHZpc2NvbnRpX2V0aF9kd21hY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNzAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzE1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NTM2CgkJCQkJCQlvdXRwdXQ6IDExOQoJCQkJCQkJdGhvdWdodHM6IDc1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50OiBTVE1NQUMgRHJpdmVyIENvZGUgaXMgVW5yZWFjaGFibGUgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiB0aHJvdWdoIHRoaXMgcGF0Y2ggYW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcsIGFuZCBoZXJlJiMzOTtzIG15IGJyZWFrZG93bjogdGhpcyBjb2RlIG1vZGlmaWVzIGZ1bmN0aW9ucyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzL1N5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIGRyaXZlciwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gWERQIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IOKAkyBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZWAsIGBzdG1tYWNfeGRwX2VuYWJsZV9wb29sYCwgYW5kIGBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbGAuCgpUaGUgcHJvYmxlbSBpcywgdGhpcyBgc3RtbWFjYCBkcml2ZXIgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgKmlzbiYjMzk7dCogYXZhaWxhYmxlIGluIHRoZSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzIHdlIHVzZSwgbmFtZWx5IHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIFZNcy4gVGhpcyBpc24mIzM5O3QganVzdCBhIGdlbmVyaWMgbmV0d29yayBkZXZpY2U7IGl0JiMzOTtzIHRpZWQgdG8gZWl0aGVyIHBhcnRpY3VsYXIgU29DIHBsYXRmb3JtcyBvciBTeW5vcHN5cyBQQ0kgdGVzdGJvYXJkcy4gIEkmIzM5O3ZlIGNoZWNrZWQgdGhlIGtub3duIGRldmljZSBtYXBwaW5ncyDigJMgSW50ZWwgUXVhcmssIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgQWxkZXIgTGFrZSwgTG9vbmdzb24sIE1vdG9yY29tbSwgYW5kIHRoZSBTeW5vcHN5cyBHTUFDNSBQQ0kuICBOb25lIG9mIHRoZXNlIGV4aXN0IG9yIGFyZSBlbXVsYXRlZCwgd2hpY2ggbWF0Y2hlcyB0aGUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyLgoKV2Uga25vdyBmcm9tIFNlY3Rpb24gMiB0aGF0IGEgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUmIzM0OyBoYXJkd2FyZSBkcml2ZXIgc2hvdWxkbiYjMzk7dCBiZSBmdXp6ZWQsIGFzIGZ1enppbmcgY2FuIG9ubHkgdGFyZ2V0IGNvZGUgdGhhdCBleGVjdXRlcyBpbiBvdXIgc3RhbmRhcmQgZW52aXJvbm1lbnRzLiBUaGUgZmFjdCB0aGF0IHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0IGRvZXNuJiMzOTt0IGNoYW5nZSBhbnl0aGluZywgYmVjYXVzZSBldmVuIG9uIGFtZDY0LCBzdG1tYWMgaXMgc3RpbGwgdGllZCB0byBzcGVjaWZpYyBjb250cm9sbGVycy4gV2l0aG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgY3JlYXRlIHRoZSBgbmV0X2RldmljZWAsIHRoZSBtb2RpZmllZCBjb2RlIHNpbXBseSAqY2Fubm90KiBiZSBleGVjdXRlZC4gVGhlIGBuZXRfZGV2aWNlYCBhbmQgaXRzIG9wZXJhdGlvbnMsIGxpa2UgWERQIGNhbGxiYWNrcyBhbmQgcXVldWUgbWFuaXB1bGF0aW9uLCBhcmVuJiMzOTt0IGV2ZW4gaW5zdGFudGlhdGVkLgoKVGhlcmVmb3JlLCB0aGUgWERQIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBtb2RpZmllZCBieSB0aGlzIHBhdGNoIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuICBTbywgYmFzZWQgb24gdGhlIHJlYWNoYWJpbGl0eSBwcmluY2lwbGUsIHRoaXMgcGF0Y2ggaXMgKm5vdCogd29ydGggZnV6emluZy4KYGBgCnNldC1yZXN1bHRzCmBgYAoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFhEUCBwb29sIGVuYWJsZS9kaXNhYmxlIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChlbWJlZGRlZCBTb0MgcGxhdGZvcm0gZGV2aWNlcyBhbmQgdmVuZG9yLXNwZWNpZmljIFBDSSBjb250cm9sbGVycykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gQmVjYXVzZSB0aGUgaGFyZHdhcmUgY2Fubm90IGJlIHByb2JlZCB0byBjcmVhdGUgYSBuZXRfZGV2aWNlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgWERQIHBvb2wgZW5hYmxlL2Rpc2FibGUgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKGVtYmVkZGVkIFNvQyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJIGNvbnRyb2xsZXJzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBCZWNhdXNlIHRoZSBoYXJkd2FyZSBjYW5ub3QgYmUgcHJvYmVkIHRvIGNyZWF0ZSBhIG5ldF9kZXZpY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xNSAxMDo1NzwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTU6NTcuMjIxNTY2NTA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAzMjIyNzQwNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBYRFAgcG9vbCBlbmFibGUvZGlzYWJsZSBhbmQgcXVldWUgbWFuYWdlbWVudCBmdW5jdGlvbnMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAoZW1iZWRkZWQgU29DIHBsYXRmb3JtIGRldmljZXMgYW5kIHZlbmRvci1zcGVjaWZpYyBQQ0kgY29udHJvbGxlcnMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIEJlY2F1c2UgdGhlIGhhcmR3YXJlIGNhbm5vdCBiZSBwcm9iZWQgdG8gY3JlYXRlIGEgbmV0X2RldmljZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU1OjU3LjIyMTU3MTAzNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE3MDg5NTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODNkM2Y0ZjVkOTZiMmY2YmY0OGM3YzU2NDFkZmQ3NzAyYmVkYmE2OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCAxNSAxMDo1NTo1NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDYyYzM0NDE5MTFlNzEuLjkyOGFhMDVhYTg3ZDUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtNzExOCwxNSArNzExOCwxNSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXHR1OCBjaGFuO1xcbiBcXG4tXFx0LyogRW5zdXJlIHR4IGZ1bmN0aW9uIGlzIG5vdCBydW5uaW5nICovXFxuLVxcdG5ldGlmX3R4X2Rpc2FibGUoZGV2KTtcXG4tXFxuIFxcdC8qIERpc2FibGUgTkFQSSBwcm9jZXNzICovXFxuIFxcdHN0bW1hY19kaXNhYmxlX2FsbF9xdWV1ZXMocHJpdik7XFxuIFxcbiBcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgcHJpdi1cXHUwMDNlcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgY2hhbisrKVxcbiBcXHRcXHRocnRpbWVyX2NhbmNlbChcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYudHhfcXVldWVbY2hhbl0udHh0aW1lcik7XFxuIFxcbitcXHQvKiBFbnN1cmUgdHggZnVuY3Rpb24gaXMgbm90IHJ1bm5pbmcgKi9cXG4rXFx0bmV0aWZfdHhfZGlzYWJsZShkZXYpO1xcbitcXG4gXFx0LyogRnJlZSB0aGUgSVJRIGxpbmVzICovXFxuIFxcdHN0bW1hY19mcmVlX2lycShkZXYsIFJFUV9JUlFfRVJSX0FMTCwgMCk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmNcXG5pbmRleCBkN2U0ZGI3MjI0YjBjLi44ODNiZDNmZTgwODlkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xcbkBAIC02LDYgKzYsMTYgQEBcXG4gI2luY2x1ZGUgXFxcInN0bW1hYy5oXFxcIlxcbiAjaW5jbHVkZSBcXFwic3RtbWFjX3hkcC5oXFxcIlxcbiBcXG4rc3RhdGljIHZvaWQgc3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxcbit7XFxuK1xcdHN0cnVjdCBuZXRkZXZfcXVldWUgKm5xID0gbmV0ZGV2X2dldF90eF9xdWV1ZShwcml2LVxcdTAwM2VkZXYsIHF1ZXVlKTtcXG4rXFxuK1xcdF9fbmV0aWZfdHhfbG9ja19iaChucSk7XFxuK1xcdHR4cV90cmFuc19jb25kX3VwZGF0ZShucSk7XFxuK1xcdG5ldGlmX3R4X3N0b3BfcXVldWUobnEpO1xcbitcXHRfX25ldGlmX3R4X3VubG9ja19iaChucSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsIHUxNiBxdWV1ZSlcXG4ge1xcbkBAIC0zNiw2ICs0Niw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXFxuIFxcdGlmIChuZWVkX3VwZGF0ZSkge1xcbiBcXHRcXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmNoLVxcdTAwM2VyeF9uYXBpKTtcXG4gXFx0XFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZjaC1cXHUwMDNldHhfbmFwaSk7XFxuK1xcdFxcdHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuIFxcdFxcdHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcXG4gXFx0XFx0c3RtbWFjX2Rpc2FibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xcbiBcXHR9XFxuQEAgLTQ2LDYgKzU3LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4gXFx0XFx0c3RtbWFjX2VuYWJsZV9yeF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuIFxcdFxcdHN0bW1hY19lbmFibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xcbiBcXHRcXHRuYXBpX2VuYWJsZShcXHUwMDI2Y2gtXFx1MDAzZXJ4dHhfbmFwaSk7XFxuK1xcdFxcdG5ldGlmX3R4X3dha2VfcXVldWUobmV0ZGV2X2dldF90eF9xdWV1ZShwcml2LVxcdTAwM2VkZXYsIHF1ZXVlKSk7XFxuIFxcbiBcXHRcXHRlcnIgPSBzdG1tYWNfeHNrX3dha2V1cChwcml2LVxcdTAwM2VkZXYsIHF1ZXVlLCBYRFBfV0FLRVVQX1JYKTtcXG4gXFx0XFx0aWYgKGVycilcXG5AQCAtNzMsNiArODUsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxcbiBcXG4gXFx0aWYgKG5lZWRfdXBkYXRlKSB7XFxuIFxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2Y2gtXFx1MDAzZXJ4dHhfbmFwaSk7XFxuK1xcdFxcdHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuIFxcdFxcdHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcXG4gXFx0XFx0c3RtbWFjX2Rpc2FibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xcbiBcXHRcXHRzeW5jaHJvbml6ZV9yY3UoKTtcXG5AQCAtODcsNiArMTAwLDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2Rpc2FibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcXG4gXFx0XFx0c3RtbWFjX2VuYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XFxuIFxcdFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZjaC1cXHUwMDNlcnhfbmFwaSk7XFxuIFxcdFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZjaC1cXHUwMDNldHhfbmFwaSk7XFxuK1xcdFxcdG5ldGlmX3R4X3dha2VfcXVldWUobmV0ZGV2X2dldF90eF9xdWV1ZShwcml2LVxcdTAwM2VkZXYsIHF1ZXVlKSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NTo1Ny43MzkzNTMyODdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjg5ODA0NDcwOTM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBYRFAgcG9vbCBlbmFibGUvZGlzYWJsZSBhbmQgcXVldWUgbWFuYWdlbWVudCBmdW5jdGlvbnMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyAvIFN5bm9wc3lzIERlc2lnbldhcmUgRXRoZXJuZXQgTUFDIChzdG1tYWMpIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBzcGVjaWZpYyBwaHlzaWNhbCBoYXJkd2FyZSAoZW1iZWRkZWQgU29DIHBsYXRmb3JtIGRldmljZXMgYW5kIHZlbmRvci1zcGVjaWZpYyBQQ0kgY29udHJvbGxlcnMpIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMuIEJlY2F1c2UgdGhlIGhhcmR3YXJlIGNhbm5vdCBiZSBwcm9iZWQgdG8gY3JlYXRlIGEgbmV0X2RldmljZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODNkM2Y0ZjVkOTZiMmY2YmY0OGM3YzU2NDFkZmQ3NzAyYmVkYmE2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDE1IDEwOjU1OjU2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDYyYzM0NDE5MTFlNzEuLjkyOGFhMDVhYTg3ZDUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtNzExOCwxNSArNzExOCwxNSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHU4IGNoYW47XG4gXG4tXHQvKiBFbnN1cmUgdHggZnVuY3Rpb24gaXMgbm90IHJ1bm5pbmcgKi9cbi1cdG5ldGlmX3R4X2Rpc2FibGUoZGV2KTtcbi1cbiBcdC8qIERpc2FibGUgTkFQSSBwcm9jZXNzICovXG4gXHRzdG1tYWNfZGlzYWJsZV9hbGxfcXVldWVzKHByaXYpO1xuIFxuIFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXR4X3F1ZXVlc190b191c2U7IGNoYW4rKylcbiBcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2cHJpdi1cdTAwM2VkbWFfY29uZi50eF9xdWV1ZVtjaGFuXS50eHRpbWVyKTtcbiBcbitcdC8qIEVuc3VyZSB0eCBmdW5jdGlvbiBpcyBub3QgcnVubmluZyAqL1xuK1x0bmV0aWZfdHhfZGlzYWJsZShkZXYpO1xuK1xuIFx0LyogRnJlZSB0aGUgSVJRIGxpbmVzICovXG4gXHRzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xuaW5kZXggZDdlNGRiNzIyNGIwYy4uODgzYmQzZmU4MDg5ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jXG5AQCAtNiw2ICs2LDE2IEBAXG4gI2luY2x1ZGUgXCJzdG1tYWMuaFwiXG4gI2luY2x1ZGUgXCJzdG1tYWNfeGRwLmhcIlxuIFxuK3N0YXRpYyB2b2lkIHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHUxNiBxdWV1ZSlcbit7XG4rXHRzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpucSA9IG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi1cdTAwM2VkZXYsIHF1ZXVlKTtcbitcbitcdF9fbmV0aWZfdHhfbG9ja19iaChucSk7XG4rXHR0eHFfdHJhbnNfY29uZF91cGRhdGUobnEpO1xuK1x0bmV0aWZfdHhfc3RvcF9xdWV1ZShucSk7XG4rXHRfX25ldGlmX3R4X3VubG9ja19iaChucSk7XG4rfVxuK1xuIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9lbmFibGVfcG9vbChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG4gXHRcdFx0XHQgIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLCB1MTYgcXVldWUpXG4ge1xuQEAgLTM2LDYgKzQ2LDcgQEAgc3RhdGljIGludCBzdG1tYWNfeGRwX2VuYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbiBcdGlmIChuZWVkX3VwZGF0ZSkge1xuIFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2Y2gtXHUwMDNlcnhfbmFwaSk7XG4gXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZjaC1cdTAwM2V0eF9uYXBpKTtcbitcdFx0c3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3RtbWFjX2Rpc2FibGVfcnhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRzdG1tYWNfZGlzYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHR9XG5AQCAtNDYsNiArNTcsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZW5hYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuIFx0XHRzdG1tYWNfZW5hYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3RtbWFjX2VuYWJsZV90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHRcdG5hcGlfZW5hYmxlKFx1MDAyNmNoLVx1MDAzZXJ4dHhfbmFwaSk7XG4rXHRcdG5ldGlmX3R4X3dha2VfcXVldWUobmV0ZGV2X2dldF90eF9xdWV1ZShwcml2LVx1MDAzZWRldiwgcXVldWUpKTtcbiBcbiBcdFx0ZXJyID0gc3RtbWFjX3hza193YWtldXAocHJpdi1cdTAwM2VkZXYsIHF1ZXVlLCBYRFBfV0FLRVVQX1JYKTtcbiBcdFx0aWYgKGVycilcbkBAIC03Myw2ICs4NSw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MTYgcXVldWUpXG4gXG4gXHRpZiAobmVlZF91cGRhdGUpIHtcbiBcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmNoLVx1MDAzZXJ4dHhfbmFwaSk7XG4rXHRcdHN0bW1hY194ZHBfc3RvcF90eF9xdWV1ZShwcml2LCBxdWV1ZSk7XG4gXHRcdHN0bW1hY19kaXNhYmxlX3J4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0c3RtbWFjX2Rpc2FibGVfdHhfcXVldWUocHJpdiwgcXVldWUpO1xuIFx0XHRzeW5jaHJvbml6ZV9yY3UoKTtcbkBAIC04Nyw2ICsxMDAsNyBAQCBzdGF0aWMgaW50IHN0bW1hY194ZHBfZGlzYWJsZV9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTE2IHF1ZXVlKVxuIFx0XHRzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHByaXYsIHF1ZXVlKTtcbiBcdFx0bmFwaV9lbmFibGUoXHUwMDI2Y2gtXHUwMDNlcnhfbmFwaSk7XG4gXHRcdG5hcGlfZW5hYmxlKFx1MDAyNmNoLVx1MDAzZXR4X25hcGkpO1xuK1x0XHRuZXRpZl90eF93YWtlX3F1ZXVlKG5ldGRldl9nZXRfdHhfcXVldWUocHJpdi1cdTAwM2VkZXYsIHF1ZXVlKSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU1OjU3LjczOTM1NTYyN1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjk2MTQxMDc4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIHRvIGxvb2sgYXQsIHRhcmdldGluZyB0aGUgYHN0bW1hY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkuIFRoZSBtb2RpZmljYXRpb25zIGFmZmVjdCBgc3RtbWFjX21haW4uY2AgYW5kIGBzdG1tYWNfeGRwLmNgLiBNeSBmaXJzdCB0aG91Z2h0IGlzLCBiZWZvcmUgZGl2aW5nIHRvbyBkZWVwIGludG8gdGhlIGNvZGUsIGxldCdzIGVzdGFibGlzaCBzb21lIGNvbnRleHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYHN0bW1hY2AgYWN0dWFsbHkgKmlzKi4gSXMgdGhpcyBhIGRyaXZlciBmb3Igc29tZSBvYnNjdXJlLCBzcGVjaWFsaXplZCBoYXJkd2FyZSwgb3IgaXMgaXQgc29tZXRoaW5nIEkgbWlnaHQgZW5jb3VudGVyIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFPyBPciBldmVuIG1vcmUgYnJvYWRseSwgaXMgaXQgYSBkcml2ZXIgdGhhdCdzIGNvcmUgdG8gYSBwYXJ0aWN1bGFyIFNvQ3Mgb3IgcGxhdGZvcm1zPyBJIG5lZWQgdG8ga25vdyBob3cgZWFzaWx5IEkgY2FuIHJlcGxpY2F0ZSB0aGlzLlxuXG5BaCwgcmlnaHQuIFNUTWljcm9lbGVjdHJvbmljcyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyBkcml2ZXIuIFRoYXQgY2xhcmlmaWVzICp3aGF0KiBpdCBpcywgbm93IEkgbmVlZCB0byBmaWd1cmUgb3V0ICpob3cqIGl0J3MgaW5zdGFudGlhdGVkLiBJcyBpdCBhIFBDSSBkZXZpY2U/IEEgcGxhdGZvcm0gZGV2aWNlPyBTb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIGBLY29uZmlnYCBmaWxlcyBhcmUgZ29pbmcgdG8gYmUgbXkgYmVzdCBmcmllbmQgaGVyZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnLCBhbmQgYWxzbyBsaWtlbHkgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuIEknbGwgdXNlIGdyZXAgb3IgSSBjYW4ganVzdCB1c2UgdGhlIEtjb25maWcgdG8gc2VhcmNoIHRvIHNlZSBleGFjdGx5IGhvdyB0aGlzIGRyaXZlciBpcyBib3VuZCB0byB0aGUgc3lzdGVtLiBUaGlzIGdpdmVzIG1lIGEgZnJhbWV3b3JrIHRvIGFzc2VzcyB0aGUgaW1wYWN0IG9mIHRoaXMgcGF0Y2ggYW5kIGhvdyBJIGNhbiBnbyBhYm91dCB0ZXN0aW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTEzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6MDcuMzUzNDY1OTg0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTQ0MDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE4PWlmIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzAtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBDSSBidXMgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6MDcuNDExMDE3MzAyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6OTQ0MTE4MDkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFNUTU1BQyBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHByaW1hcnkgY29uY2VybiBpcyB3aGV0aGVyIG9yIG5vdCBJIGNhbiBldmVuICpyZWFjaCogdGhlIFNUTU1BQyBjb2RlIGZvciBmdXp6aW5nLCBhbmQgSSBuZWVkIHRvIGJlIHN1cmUgaXQncyBhY3R1YWxseSBzb21ldGhpbmcgSSBjYW4gdGVzdCBlZmZlY3RpdmVseS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgaXMgU1RNTUFDIGhhcmR3YXJlIGVtdWxhdGVkICphbnl3aGVyZSogaW4gUUVNVT8gQW5kLCBnaXZlbiBteSBgYW1kNjRgIHRhcmdldCwgSSBuZWVkIHRvIGtub3cgd2hhdCBldGhlcm5ldCBjb250cm9sbGVycyBRRU1VICpkb2VzKiBlbXVsYXRlIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiBJIGtub3cgaXQncyBhIGxpc3QsIGJ1dCBub25lIG9mIHRob3NlIGltbWVkaWF0ZWx5IGp1bXAgb3V0IGFzIGJlaW5nIHJlbGF0ZWQgdG8gc3RtbWFjLlxuXG5JIGhhdmUgYSBuYWdnaW5nIGZlZWxpbmcgdGhhdCBRRU1VIG1pZ2h0IGVtdWxhdGUgc29tZSBEV01BQyBvciBTVE1NQUMgZGV2aWNlcyBvbiBBUk0sIHBhcnRpY3VsYXJseSBBbGx3aW5uZXIgcGxhdGZvcm1zIChzdW54aSksIGJ1dCBteSB0YXJnZXQgaXMgYGFtZDY0YC4gRXZlbiBpZiBpdCAqZGlkKiBlbXVsYXRlIGl0IG9uIEFSTSwgZG9lcyBzdGFuZGFyZCBRRU1VIG9yIGEgU3l6a2FsbGVyIGNsdXN0ZXIgZm9yIGBhbWQ2NGAgZXZlbiAqdXNlKiBTVE1NQUM/IEkgcmVhbGx5IG5lZWQgdG8gZ2V0IGNsYXJpdHkgb24gdGhhdC5cblxuSXMgU1RNTUFDIHRpZWQgdG8gcGh5c2ljYWwgaGFyZHdhcmUsIG9yIGlzIHRoZXJlIGEgdmlydHVhbCBkcml2ZXIsIG9yIGEgZHVtbXkgZGV2aWNlIEkgY2FuIHVzZT8gVGhhdCdzIGNyaXRpY2FsLiBUaW1lIHRvIHJlLXJlYWQgdGhlIGluc3RydWN0aW9ucywgc3BlY2lmaWNhbGx5IHRoZSBcIlJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFXCIgc2VjdGlvbi4gVGhleSdyZSB2ZXJ5IGNsZWFyOiBmdXp6aW5nIG9ubHkgd29ya3Mgb24gY29kZSB0aGF0IGNhbiBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGxpa2UgUENJZSBzd2l0Y2hlcyBhbmQgU21hcnROSUNzIGFyZSBleHBsaWNpdGx5ICpleGNsdWRlZCogYmVjYXVzZSB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgY2FyZHMgbm90IGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgaXMgYSB2ZXJ5IGltcG9ydGFudCBwb2ludCFcblxuU28sIHdoYXQgKmlzKiBTVE1NQUM/IEl0J3MgYSBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlciBmcm9tIFNUTWljcm9lbGVjdHJvbmljcywgYWxzbyBhc3NvY2lhdGVkIHdpdGggU3lub3BzeXMgRGVzaWduV2FyZSBDb3JlcyBFdGhlcm5ldCBNQUMuIEl0J3MgdXNlZCBvbiBTb0NzIGxpa2UgU1RNMzIsIEFsbHdpbm5lciwgUm9ja2NoaXAsIEFtbG9naWMsIGFuZCBldmVuIEludGVsIFF1YXJrL0Vsa2hhcnQgTGFrZS9UaWdlciBMYWtlIChQQ0kgZHdtYWMsIGV0Yy4pLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGl0ICp3aXRob3V0KiB0aGUgaGFyZHdhcmU/IENhbiBTeXprYWxsZXIgZXZlbiBjcmVhdGUgYW4gU1RNTUFDIGRldmljZT8gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUncyBhbnkgd2F5IHRvIGludGVyYWN0IHdpdGggU1RNTUFDIHVzaW5nIGEgdmlydHVhbCBidXMsIGEgZHVtbXkgZHJpdmVyLCBvciBldmVuIHZpYSBuZXRsaW5rIG9yIGEgcGxhdGZvcm0gZHJpdmVyIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZS4gSSdsbCBjaGVjayBpZiB0aGVyZSdzIGFueSBTeXprYWxsZXIgYHN5emxhbmdgIGRlc2NyaXB0aW9ucyBmb3IgU1RNTUFDLCBvciBhbnkgbWVudGlvbiBvZiBpdCBpbiBTeXprYWxsZXIgYXQgYWxsLiBGaW5hbGx5LCBJJ2xsIGV4YW1pbmUgdGhlIFNUTU1BQyBNYWtlZmlsZSB0byBzZWUgYWxsIG9mIHRoZSBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk5NSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NjoxNi44NTIyMDEyNTFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdG9iai0kKENPTkZJR19TVE1NQUNfRVRIKSArPSBzdG1tYWMub1xcbiAgIDM6XFx0c3RtbWFjLW9ianM6PSBzdG1tYWNfbWFpbi5vIHN0bW1hY19ldGh0b29sLm8gc3RtbWFjX21kaW8ubyByaW5nX21vZGUub1xcdFxcXFxcXG4gICA0OlxcdFxcdCAgICAgIGNoYWluX21vZGUubyBkd21hY19saWIubyBkd21hYzEwMDBfY29yZS5vIGR3bWFjMTAwMF9kbWEub1xcdFxcXFxcXG4gICA1OlxcdFxcdCAgICAgIGR3bWFjMTAwX2NvcmUubyBkd21hYzEwMF9kbWEubyBlbmhfZGVzYy5vIG5vcm1fZGVzYy5vXFx0XFxcXFxcbiAgIDY6XFx0XFx0ICAgICAgbW1jX2NvcmUubyBzdG1tYWNfaHd0c3RhbXAubyBzdG1tYWNfcHRwLm8gZHdtYWM0X2Rlc2NzLm9cXHRcXFxcXFxuICAgNzpcXHRcXHQgICAgICBkd21hYzRfZG1hLm8gZHdtYWM0X2xpYi5vIGR3bWFjNF9jb3JlLm8gZHdtYWM1Lm8gaHdpZi5vIFxcXFxcXG4gICA4OlxcdFxcdCAgICAgIHN0bW1hY190Yy5vIGR3eGdtYWMyX2NvcmUubyBkd3hnbWFjMl9kbWEubyBkd3hnbWFjMl9kZXNjcy5vIFxcXFxcXG4gICA5OlxcdFxcdCAgICAgIHN0bW1hY194ZHAubyBzdG1tYWNfZXN0Lm8gc3RtbWFjX2ZwZS5vIHN0bW1hY192bGFuLm8gXFxcXFxcbiAgMTA6XFx0XFx0ICAgICAgc3RtbWFjX3Bjcy5vICQoc3RtbWFjLXkpXFxuICAxMTpcXHRcXG4gIDEyOlxcdHN0bW1hYy0kKENPTkZJR19TVE1NQUNfU0VMRlRFU1RTKSArPSBzdG1tYWNfc2VsZnRlc3RzLm9cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0IyBPcmRlcmluZyBtYXR0ZXJzLiBHZW5lcmljIGRyaXZlciBtdXN0IGJlIGxhc3QuXFxuICAxNTpcXHRvYmotJChDT05GSUdfU1RNTUFDX1BMQVRGT1JNKVxcdCs9IHN0bW1hYy1wbGF0Zm9ybS5vXFxuICAxNjpcXHRvYmotJChDT05GSUdfRFdNQUNfQU5BUklPTilcXHQrPSBkd21hYy1hbmFyaW9uLm9cXG4gIDE3OlxcdG9iai0kKENPTkZJR19EV01BQ19FSUM3NzAwKVxcdCs9IGR3bWFjLWVpYzc3MDAub1xcbiAgMTg6XFx0b2JqLSQoQ09ORklHX0RXTUFDX0lOR0VOSUMpXFx0Kz0gZHdtYWMtaW5nZW5pYy5vXFxuICAxOTpcXHRvYmotJChDT05GSUdfRFdNQUNfSVBRODA2WClcXHQrPSBkd21hYy1pcHE4MDZ4Lm9cXG4gIDIwOlxcdG9iai0kKENPTkZJR19EV01BQ19MUEMxOFhYKVxcdCs9IGR3bWFjLWxwYzE4eHgub1xcbiAgMjE6XFx0b2JqLSQoQ09ORklHX0RXTUFDX01FRElBVEVLKVxcdCs9IGR3bWFjLW1lZGlhdGVrLm9cXG4gIDIyOlxcdG9iai0kKENPTkZJR19EV01BQ19NRVNPTilcXHQrPSBkd21hYy1tZXNvbi5vIGR3bWFjLW1lc29uOGIub1xcbiAgMjM6XFx0b2JqLSQoQ09ORklHX0RXTUFDX05VVk9UT04pXFx0Kz0gZHdtYWMtbnV2b3Rvbi5vXFxuICAyNDpcXHRvYmotJChDT05GSUdfRFdNQUNfUUNPTV9FVEhRT1MpXFx0Kz0gZHdtYWMtcWNvbS1ldGhxb3Mub1xcbiAgMjU6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1JFTkVTQVNfR0JFVEgpICs9IGR3bWFjLXJlbmVzYXMtZ2JldGgub1xcbiAgMjY6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1JPQ0tDSElQKVxcdCs9IGR3bWFjLXJrLm9cXG4gIDI3OlxcdG9iai0kKENPTkZJR19EV01BQ19SWk4xKVxcdCs9IGR3bWFjLXJ6bjEub1xcbiAgMjg6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1MzMilcXHRcXHQrPSBkd21hYy1zMzIub1xcbiAgMjk6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1NPQ0ZQR0EpXFx0Kz0gZHdtYWMtYWx0ci1zb2NmcGdhLm9cXG4gIDMwOlxcdG9iai0kKENPTkZJR19EV01BQ19TT1BIR08pXFx0Kz0gZHdtYWMtc29waGdvLm9cXG4gIDMxOlxcdG9iai0kKENPTkZJR19EV01BQ19TUEFDRU1JVClcXHQrPSBkd21hYy1zcGFjZW1pdC5vXFxuICAzMjpcXHRvYmotJChDT05GSUdfRFdNQUNfU1RBUkZJVkUpXFx0Kz0gZHdtYWMtc3RhcmZpdmUub1xcbiAgMzM6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1NUSSlcXHRcXHQrPSBkd21hYy1zdGkub1xcbiAgMzQ6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1NUTTMyKVxcdCs9IGR3bWFjLXN0bTMyLm9cXG4gIDM1OlxcdG9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcXHQrPSBkd21hYy1zdW54aS5vXFxuICAzNjpcXHRvYmotJChDT05GSUdfRFdNQUNfU1VOOEkpXFx0Kz0gZHdtYWMtc3VuOGkub1xcbiAgMzc6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1NVTjU1SSlcXHQrPSBkd21hYy1zdW41NWkub1xcbiAgMzg6XFx0b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVxcdCs9IGR3bWFjLXRoZWFkLm9cXG4gIDM5OlxcdG9iai0kKENPTkZJR19EV01BQ19EV0NfUU9TX0VUSClcXHQrPSBkd21hYy1kd2MtcW9zLWV0aC5vXFxuICA0MDpcXHRvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcXHQrPSBkd21hYy1pbnRlbC1wbGF0Lm9cXG4gIDQxOlxcdG9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXFx0Kz0gZHdtYWMtbG9vbmdzb24xLm9cXG4gIDQyOlxcdG9iai0kKENPTkZJR19EV01BQ19HRU5FUklDKVxcdCs9IGR3bWFjLWdlbmVyaWMub1xcbiAgNDM6XFx0b2JqLSQoQ09ORklHX0RXTUFDX0lNWDgpXFx0Kz0gZHdtYWMtaW14Lm9cXG4gIDQ0OlxcdG9iai0kKENPTkZJR19EV01BQ19URUdSQSlcXHQrPSBkd21hYy10ZWdyYS5vXFxuICA0NTpcXHRvYmotJChDT05GSUdfRFdNQUNfVklTQ09OVEkpXFx0Kz0gZHdtYWMtdmlzY29udGkub1xcbiAgNDY6XFx0c3RtbWFjLXBsYXRmb3JtLW9ianM6PSBzdG1tYWNfcGxhdGZvcm0ub1xcbiAgNDc6XFx0ZHdtYWMtYWx0ci1zb2NmcGdhLW9ianMgOj0gZHdtYWMtc29jZnBnYS5vXFxuICA0ODpcXHRcXG4gIDQ5OlxcdG9iai0kKENPTkZJR19TVE1NQUNfTElCUENJKVxcdCs9IHN0bW1hY19saWJwY2kub1xcbiAgNTA6XFx0b2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXFx0Kz0gc3RtbWFjLXBjaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU2OjE2Ljg1MjI2ODk2MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIwNTA5NDYzNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBQQ0kgRGV2aWNlIElEIFN1cHBvcnQgaW4gYHN0bW1hYy1wY2kuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBnZXQgYSBncmFzcCBvbiB0aGUgc3BlY2lmaWMgUENJIGRldmljZSBJRHMgdGhhdCB0aGUgYHN0bW1hYy1wY2kuY2AgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBuYW1lLCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIHNvdXJjZSBjb2RlIGFuZCBjaGVjayBmb3IgdGhlIHNwZWNpZmljIHZlbmRvciBhbmQgZGV2aWNlIElEcyBpdCdzIGNvbmZpZ3VyZWQgdG8gcmVjb2duaXplLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIHF1aWNrbHkgYXNzZXNzaW5nIGRyaXZlciBzdXBwb3J0LiBJJ2xsIG5lZWQgdG8ga25vdyB0aGlzIGluZm9ybWF0aW9uIHRvIGRldGVybWluZSBpdHMgcmVsZXZhbmNlIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybSBJJ20gd29ya2luZyB3aXRoLiBUaW1lIHRvIGNyYWNrIG9wZW4gdGhhdCBmaWxlIGFuZCBnZXQgdG8gdGhlIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1OTYsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU2OjE4LjkwMzIxODUxNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk4MDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxcbiAgIDM6XFx0ICBUaGlzIGNvbnRhaW5zIHRoZSBmdW5jdGlvbnMgdG8gaGFuZGxlIHRoZSBwY2kgZHJpdmVyLlxcbiAgIDQ6XFx0XFxuICAgNTpcXHQgIENvcHlyaWdodCAoQykgMjAxMS0yMDEyICBWYXlhdnlhIExhYnMgUHZ0IEx0ZFxcbiAgIDY6XFx0XFxuICAgNzpcXHRcXG4gICA4OlxcdCAgQXV0aG9yOiBSYXlhZ29uZCBLb2thdGFudXIgXFx1MDAzY3JheWFnb25kQHZheWF2eWFsYWJzLmNvbVxcdTAwM2VcXG4gICA5OlxcdCAgQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gXFx1MDAzY3BlcHBlLmNhdmFsbGFyb0BzdC5jb21cXHUwMDNlXFxuICAxMDpcXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiAgMTE6XFx0XFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGNpLmhcXHUwMDNlXFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1pLmhcXHUwMDNlXFxuICAxNTpcXHRcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4gIDE3OlxcdCNpbmNsdWRlIFxcXCJzdG1tYWNfbGlicGNpLmhcXFwiXFxuICAxODpcXHRcXG4gIDE5OlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbiAgMjA6XFx0XFx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xcbiAgMjE6XFx0fTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0c3RhdGljIHZvaWQgY29tbW9uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICAyNDpcXHR7XFxuICAyNTpcXHRcXHQvKiBjbGtfY3NyX2kgPSAyMC0zNU1IeiBcXHUwMDI2IE1EQyA9IGNsa19jc3JfaS8xNiAqL1xcbiAgMjY6XFx0XFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjBfMzVNO1xcbiAgMjc6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbiAgMjg6XFx0XFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcbiAgMjk6XFx0XFxuICAzMDpcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhLVxcdTAwM2VuZWVkc19yZXNldCA9IHRydWU7XFxuICAzMTpcXHR9XFxuICAzMjpcXHRcXG4gIDMzOlxcdHN0YXRpYyBpbnQgc3RtbWFjX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gIDM0OlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpXFxuICAzNTpcXHR7XFxuICAzNjpcXHRcXHQvKiBTZXQgY29tbW9uIGRlZmF1bHQgZGF0YSBmaXJzdCAqL1xcbiAgMzc6XFx0XFx0Y29tbW9uX2RlZmF1bHRfZGF0YShwbGF0KTtcXG4gIDM4OlxcdFxcbiAgMzk6XFx0XFx0cGxhdC1cXHUwMDNlYnVzX2lkID0gMTtcXG4gIDQwOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9hZGRyID0gMDtcXG4gIDQxOlxcdFxcdHBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfR01JSTtcXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJsID0gMzI7XFxuICA0NDpcXHRcXHRwbGF0LVxcdTAwM2VkbWFfY2ZnLVxcdTAwM2VwYmx4OCA9IHRydWU7XFxuICA0NTpcXHRcXHQvKiBUT0RPOiBBWEkgKi9cXG4gIDQ2OlxcdFxcbiAgNDc6XFx0XFx0cmV0dXJuIDA7XFxuICA0ODpcXHR9XFxuICA0OTpcXHRcXG4gIDUwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHN0bW1hY19wY2lfaW5mbyA9IHtcXG4gIDUxOlxcdFxcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXFxuICA1MjpcXHR9O1xcbiAgNTM6XFx0XFxuICA1NDpcXHRzdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAgNTU6XFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxcbiAgNTY6XFx0e1xcbiAgNTc6XFx0XFx0aW50IGk7XFxuICA1ODpcXHRcXG4gIDU5OlxcdFxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzI1MF8zMDBNO1xcbiAgNjA6XFx0XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG4gIDYxOlxcdFxcdHBsYXQtXFx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcXG4gIDYyOlxcdFxcdHBsYXQtXFx1MDAzZWZsYWdzIHw9IFNUTU1BQ19GTEFHX1RTT19FTjtcXG4gIDYzOlxcdFxcdHBsYXQtXFx1MDAzZXBtdCA9IHRydWU7XFxuICA2NDpcXHRcXG4gIDY1OlxcdFxcdC8qIFNldCBkZWZhdWx0IG51bWJlciBvZiBSWCBhbmQgVFggcXVldWVzIHRvIHVzZSAqL1xcbiAgNjY6XFx0XFx0cGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZSA9IDQ7XFxuICA2NzpcXHRcXHRwbGF0LVxcdTAwM2VyeF9xdWV1ZXNfdG9fdXNlID0gNDtcXG4gIDY4OlxcdFxcbiAgNjk6XFx0XFx0cGxhdC1cXHUwMDNldHhfc2NoZWRfYWxnb3JpdGhtID0gTVRMX1RYX0FMR09SSVRITV9XUlI7XFxuICA3MDpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNldHhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XFxuICA3MTpcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLm1vZGVfdG9fdXNlID0gTVRMX1FVRVVFX0RDQjtcXG4gIDcyOlxcdFxcdFxcdHBsYXQtXFx1MDAzZXR4X3F1ZXVlc19jZmdbaV0ud2VpZ2h0ID0gMjU7XFxuICA3MzpcXHRcXHRcXHRpZiAoaSBcXHUwMDNlIDApXFxuICA3NDpcXHRcXHRcXHRcXHRwbGF0LVxcdTAwM2V0eF9xdWV1ZXNfY2ZnW2ldLnRic19lbiA9IDE7XFxuICA3NTpcXHRcXHR9XFxuICA3NjpcXHRcXG4gIDc3OlxcdFxcdHBsYXQtXFx1MDAzZXJ4X3NjaGVkX2FsZ29yaXRobSA9IE1UTF9SWF9BTEdPUklUSE1fU1A7XFxuICA3ODpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcGxhdC1cXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKVxcbiAgNzk6XFx0XFx0XFx0cGxhdC1cXHUwMDNlcnhfcXVldWVzX2NmZ1tpXS5tb2RlX3RvX3VzZSA9IE1UTF9RVUVVRV9EQ0I7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdHBsYXQtXFx1MDAzZWJ1c19pZCA9IDE7XFxuICA4MjpcXHRcXHRwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUk7XFxuICA4MzpcXHRcXG4gIDg0OlxcdFxcdHBsYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZXBibCA9IDMyO1xcbiAgODU6XFx0XFx0cGxhdC1cXHUwMDNlZG1hX2NmZy1cXHUwMDNlcGJseDggPSB0cnVlO1xcbiAgODY6XFx0XFxuICA4NzpcXHRcXHQvKiBBeGkgQ29uZmlndXJhdGlvbiAqL1xcbiAgODg6XFx0XFx0cGxhdC1cXHUwMDNlYXhpID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHNpemVvZigqcGxhdC1cXHUwMDNlYXhpKSwgR0ZQX0tFUk5FTCk7XFxuICA4OTpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZWF4aSlcXG4gIDkwOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAgOTE6XFx0XFxuICA5MjpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV93cl9vc3JfbG10ID0gMzE7XFxuICA5MzpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV9yZF9vc3JfbG10ID0gMzE7XFxuICA5NDpcXHRcXG4gIDk1OlxcdFxcdHBsYXQtXFx1MDAzZWF4aS1cXHUwMDNlYXhpX2ZiID0gZmFsc2U7XFxuICA5NjpcXHRcXHRwbGF0LVxcdTAwM2VheGktXFx1MDAzZWF4aV9ibGVuX3JlZ3ZhbCA9IERNQV9BWElfQkxFTjQgfCBETUFfQVhJX0JMRU44IHxcXG4gIDk3OlxcdFxcdFxcdFxcdFxcdCAgICAgRE1BX0FYSV9CTEVOMTYgfCBETUFfQVhJX0JMRU4zMjtcXG4gIDk4OlxcdFxcbiAgOTk6XFx0XFx0cmV0dXJuIDA7XFxuIDEwMDpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU2OjE4LjkwMzMyMDQyNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjE0MzE0OTMwOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLi4uXG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHN0bW1hY19wY2kuYyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGJhY2sgaW50byB0aGUgY29kZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSByZXN0IG9mIGBzdG1tYWNfcGNpLmNgLiBJJ3ZlIGdvdCBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGluaXRpYWwgc2VjdGlvbnMsIGJ1dCBJIGtub3cgdGhlcmUncyBtb3JlIGZ1bmN0aW9uYWxpdHksIGVzcGVjaWFsbHkgYXJvdW5kIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHRoYXQgbWlnaHQgYmUgY29udHJpYnV0aW5nIHRvIHRoZSBwZXJmb3JtYW5jZSBpc3N1ZXMgd2UgYXJlIHNlZWluZy4gSXQncyB0aW1lIHRvIHB1dCBvbiBteSBpbnZlc3RpZ2F0b3IgaGF0LiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBmaWxlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzkyLCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NjozMy4yMTgyNTM3NjJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2ODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTAxOlxcdFxcbiAxMDI6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcXG4gMTAzOlxcdFxcdC5zZXR1cCA9IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhLFxcbiAxMDQ6XFx0fTtcXG4gMTA1OlxcdFxcbiAxMDY6XFx0LyoqXFxuIDEwNzpcXHQgKiBzdG1tYWNfcGNpX3Byb2JlXFxuIDEwODpcXHQgKlxcbiAxMDk6XFx0ICogQHBkZXY6IHBjaSBkZXZpY2UgcG9pbnRlclxcbiAxMTA6XFx0ICogQGlkOiBwb2ludGVyIHRvIHRhYmxlIG9mIGRldmljZSBpZC9pZCdzLlxcbiAxMTE6XFx0ICpcXG4gMTEyOlxcdCAqIERlc2NyaXB0aW9uOiBUaGlzIHByb2JpbmcgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZm9yIGFsbCBQQ0kgZGV2aWNlcyB3aGljaFxcbiAxMTM6XFx0ICogbWF0Y2ggdGhlIElEIHRhYmxlIGFuZCBhcmUgbm90IFxcXCJvd25lZFxcXCIgYnkgb3RoZXIgZHJpdmVyIHlldC4gVGhpcyBmdW5jdGlvblxcbiAxMTQ6XFx0ICogZ2V0cyBwYXNzZWQgYSBcXFwic3RydWN0IHBjaV9kZXYgKlxcXCIgZm9yIGVhY2ggZGV2aWNlIHdob3NlIGVudHJ5IGluIHRoZSBJRCB0YWJsZVxcbiAxMTU6XFx0ICogbWF0Y2hlcyB0aGUgZGV2aWNlLiBUaGUgcHJvYmUgZnVuY3Rpb25zIHJldHVybnMgemVybyB3aGVuIHRoZSBkcml2ZXIgY2hvb3NlXFxuIDExNjpcXHQgKiB0byB0YWtlIFxcXCJvd25lcnNoaXBcXFwiIG9mIHRoZSBkZXZpY2Ugb3IgYW4gZXJyb3IgY29kZSgtdmUgbm8pIG90aGVyd2lzZS5cXG4gMTE3OlxcdCAqL1xcbiAxMTg6XFx0c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiAxMTk6XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4gMTIwOlxcdHtcXG4gMTIxOlxcdFxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4gMTIyOlxcdFxcdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcXG4gMTIzOlxcdFxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xcbiAxMjQ6XFx0XFx0aW50IHJldDtcXG4gMTI1OlxcdFxcdGludCBpO1xcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHRwbGF0ID0gc3RtbWFjX3BsYXRfZGF0X2FsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxMjg6XFx0XFx0aWYgKCFwbGF0KVxcbiAxMjk6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDEzMDpcXHRcXG4gMTMxOlxcdFxcdHBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4gMTMyOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHNpemVvZigqcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YSksXFxuIDEzMzpcXHRcXHRcXHRcXHRcXHRcXHQgICBHRlBfS0VSTkVMKTtcXG4gMTM0OlxcdFxcdGlmICghcGxhdC1cXHUwMDNlbWRpb19idXNfZGF0YSlcXG4gMTM1OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMzY6XFx0XFxuIDEzNzpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmcgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG4gMTM4OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgc2l6ZW9mKCpwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmcpLFxcbiAxMzk6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG4gMTQwOlxcdFxcdGlmICghcGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKVxcbiAxNDE6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDE0MjpcXHRcXG4gMTQzOlxcdFxcdC8qIEVuYWJsZSBwY2kgZGV2aWNlICovXFxuIDE0NDpcXHRcXHRyZXQgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XFxuIDE0NTpcXHRcXHRpZiAocmV0KSB7XFxuIDE0NjpcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCIlczogRVJST1I6IGZhaWxlZCB0byBlbmFibGUgZGV2aWNlXFxcXG5cXFwiLFxcbiAxNDc6XFx0XFx0XFx0XFx0X19mdW5jX18pO1xcbiAxNDg6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTQ5OlxcdFxcdH1cXG4gMTUwOlxcdFxcbiAxNTE6XFx0XFx0LyogR2V0IHRoZSBiYXNlIGFkZHJlc3Mgb2YgZGV2aWNlICovXFxuIDE1MjpcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUENJX1NURF9OVU1fQkFSUzsgaSsrKSB7XFxuIDE1MzpcXHRcXHRcXHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCBpKSA9PSAwKVxcbiAxNTQ6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDE1NTpcXHRcXHRcXHRyZXMuYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIGksIFNUTU1BQ19SRVNPVVJDRV9OQU1FKTtcXG4gMTU2OlxcdFxcdFxcdGlmIChJU19FUlIocmVzLmFkZHIpKVxcbiAxNTc6XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocmVzLmFkZHIpO1xcbiAxNTg6XFx0XFx0XFx0YnJlYWs7XFxuIDE1OTpcXHRcXHR9XFxuIDE2MDpcXHRcXG4gMTYxOlxcdFxcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xcbiAxNjI6XFx0XFxuIDE2MzpcXHRcXHRyZXQgPSBpbmZvLVxcdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcXG4gMTY0OlxcdFxcdGlmIChyZXQpXFxuIDE2NTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRyZXMud29sX2lycSA9IHBkZXYtXFx1MDAzZWlycTtcXG4gMTY4OlxcdFxcdHJlcy5pcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDE2OTpcXHRcXG4gMTcwOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNldHNvZWUgPSAxO1xcbiAxNzE6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtcnhwZWUgPSAxO1xcbiAxNzI6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtZXN0ZWUgPSAxO1xcbiAxNzM6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtcnhlZSA9IDE7XFxuIDE3NDpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZW10eGVlID0gMTtcXG4gMTc1OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlZXBzaSA9IDE7XFxuIDE3NjpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZWVkcHAgPSAxO1xcbiAxNzc6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VwcnR5ZW4gPSAxO1xcbiAxNzg6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2V0bW91dGVuID0gMTtcXG4gMTc5OlxcdFxcbiAxODA6XFx0XFx0cGxhdC1cXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xcbiAxODE6XFx0XFx0cGxhdC1cXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcXG4gMTgyOlxcdFxcbiAxODM6XFx0XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuIDE4NDpcXHR9XFxuIDE4NTpcXHRcXG4gMTg2OlxcdC8qKlxcbiAxODc6XFx0ICogc3RtbWFjX3BjaV9yZW1vdmVcXG4gMTg4OlxcdCAqXFxuIDE4OTpcXHQgKiBAcGRldjogcGxhdGZvcm0gZGV2aWNlIHBvaW50ZXJcXG4gMTkwOlxcdCAqIERlc2NyaXB0aW9uOiB0aGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBtYWluIHRvIGZyZWUgdGhlIG5ldCByZXNvdXJjZXMuXFxuIDE5MTpcXHQgKi9cXG4gMTkyOlxcdHN0YXRpYyB2b2lkIHN0bW1hY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiAxOTM6XFx0e1xcbiAxOTQ6XFx0XFx0c3RtbWFjX2R2cl9yZW1vdmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuIDE5NTpcXHR9XFxuIDE5NjpcXHRcXG4gMTk3OlxcdC8qIHN5bnRoZXRpYyBJRCwgbm8gb2ZmaWNpYWwgdmVuZG9yICovXFxuIDE5ODpcXHQjZGVmaW5lIFBDSV9WRU5ET1JfSURfU1RNTUFDXFx0XFx0MHgwNzAwXFxuIDE5OTpcXHRcXG4gMjAwOlxcdCNkZWZpbmUgUENJX0RFVklDRV9JRF9TVE1NQUNfU1RNTUFDXFx0XFx0MHgxMTA4XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU2OjMzLjIxODM2MjgxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo1OTM3ODY3ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlIHdlIGdvLi4uXG5cbioqRGl2aW5nIERlZXBlciBpbnRvIHN0bW1hY19wY2kuYyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGJhY2sgaW50byB0aGUgY29kZS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSByZXN0IG9mIGBzdG1tYWNfcGNpLmNgLiBJJ3ZlIGdvdCBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGluaXRpYWwgc2VjdGlvbnMsIGJ1dCBJIGtub3cgdGhlcmUncyBtb3JlIGZ1bmN0aW9uYWxpdHksIGVzcGVjaWFsbHkgYXJvdW5kIFBDSS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiwgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIHBvd2VyIG1hbmFnZW1lbnQgdGhhdCBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24uIEknbSBob3BpbmcgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHRoYXQgbWlnaHQgYmUgY29udHJpYnV0aW5nIHRvIHRoZSBwZXJmb3JtYW5jZSBpc3N1ZXMgd2UgYXJlIHNlZWluZy4gSXQncyB0aW1lIHRvIHB1dCBvbiBteSBpbnZlc3RpZ2F0b3IgaGF0LiBMZXQncyBzZWUgd2hhdCBnZW1zIGFyZSBoaWRkZW4gaW4gdGhpcyBmaWxlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwMCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6MzkuMTU2MjM0MjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzMxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG4gMjE1OlxcdFxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuIDIxNjpcXHRcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuIDIxNzpcXHRcXHQuZHJpdmVyICAgICAgICAgPSB7XFxuIDIxODpcXHRcXHRcXHQucG0gICAgID0gXFx1MDAyNnN0bW1hY19zaW1wbGVfcG1fb3BzLFxcbiAyMTk6XFx0XFx0fSxcXG4gMjIwOlxcdH07XFxuIDIyMTpcXHRcXG4gMjIyOlxcdG1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcXG4gMjIzOlxcdFxcbiAyMjQ6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJTVE1NQUMgMTAvMTAwLzEwMDAgRXRoZXJuZXQgUENJIGRyaXZlclxcXCIpO1xcbiAyMjU6XFx0TU9EVUxFX0FVVEhPUihcXFwiUmF5YWdvbmQgS29rYXRhbnVyIFxcdTAwM2NyYXlhZ29uZC5rb2thdGFudXJAdmF5YXZ5YWxhYnMuY29tXFx1MDAzZVxcXCIpO1xcbiAyMjY6XFx0TU9EVUxFX0FVVEhPUihcXFwiR2l1c2VwcGUgQ2F2YWxsYXJvIFxcdTAwM2NwZXBwZS5jYXZhbGxhcm9Ac3QuY29tXFx1MDAzZVxcXCIpO1xcbiAyMjc6XFx0TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NjozOS4xNTYzMDk1OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo0MTc4ODc0Njc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIFBDSSBFdGhlcm5ldCBEcml2ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBnZXQgdG9vIGRlZXAgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBzb21lIGtub3duIGdvb2QgZXhhbXBsZXMgb2YgUENJLWJhc2VkIEV0aGVybmV0IGRyaXZlcnMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIHNvbGlkIHBsYWNlIHRvIHN0YXJ0IHNpbmNlIGl0IGRlYWxzIHdpdGggYSBzaW1pbGFyIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLiBJJ20gZm9jdXNpbmcgb24gXCJkd21hY1wiIGFuZCBvdGhlciBQQ0kgZHJpdmVycyBpbiBnZW5lcmFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFBDSSBpbml0aWFsaXphdGlvbiBhbmQgZGV2aWNlIHByb2JlIGlzIHN0cnVjdHVyZWQgaW4gYSB3ZWxsLWVzdGFibGlzaGVkIGV4YW1wbGUsIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZXhwZWN0ZWQgZHJpdmVyIHN0cnVjdHVyZS4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgZHJpdmVycyBoYW5kbGUgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlLCByZXNvdXJjZSBtYXBwaW5nLCBhbmQgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiB0aGUgUENJIGZyYW1ld29yay4gSXTigJlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoaXMgY29udGV4dCBiZWZvcmUgSSBzdGFydCBsb29raW5nIGF0IGEgc3BlY2lmaWMgY2hpcHNldCwgdGhpcyBzaG91bGQgZ2l2ZSBtZSBhIG1hcCBvZiB3aGVyZSB0byBnbyBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTkzOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6NDMuMzM1MTg3OTk5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTk5ODcwNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xNDE1PU1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBpbnRlbF9ldGhfcGNpX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDE3OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpbnRlbF9ldGhfcGNpX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MTgtXFx0Lm5hbWUgPSBcXFwiaW50ZWwtZXRoLXBjaVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxNDI3Om1vZHVsZV9wY2lfZHJpdmVyKGludGVsX2V0aF9wY2lfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTE0MjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTYwMj1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgbG9vbmdzb25fZHdtYWNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjA0OnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBsb29uZ3Nvbl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MDUtXFx0Lm5hbWUgPSBEUklWRVJfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjEzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NjE0Om1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0zNzE9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGR3bWFjX21vdG9yY29tbV9wY2lfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNzM6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGR3bWFjX21vdG9yY29tbV9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM3NC1cXHQubmFtZSA9IERSSVZFUl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM4Mzptb2R1bGVfcGNpX2RyaXZlcihkd21hY19tb3RvcmNvbW1fcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTI6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIyMjptb2R1bGVfcGNpX2RyaXZlcihzdG1tYWNfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIyMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6NDMuNjM1MTgzMzM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjEwOTcxMTE2MjAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFFFTVUgRW11bGF0aW9uIFF1YW5kYXJ5KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgc29tZXRoaW5nIG91dCBhYm91dCBRRU1VIGFuZCBpdHMgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uLCBzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIGBzdG1tYWNgIGFuZCBgZHdtYWNgIGRyaXZlcnMuIE15IGluaXRpYWwgdGhvdWdodCBpczogKkFyZSogdGhlc2UgZXZlciBhY3R1YWxseSBlbXVsYXRlZD8gTGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG5NeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB0aGUgdHlwaWNhbCBBUk0gYm9hcmQgc2V0dXBzIEkgd29yayB3aXRoLCBsaWtlIHRoZSBgb3JhbmdlcGktcGNgIChhbGx3aW5uZXItaDMpIG9yIGBjdWJpZWJvYXJkYCAoYWxsd2lubmVyLWExMCkuIEknbSBwcmV0dHkgc3VyZSBJJ3ZlIHNlZW4gdGhpbmdzIGxpa2UgYGFsbHdpbm5lci1zdW44aS1lbWFjYCBvciBgYWxsd2lubmVyX2VtYWNgIGluIHRob3NlIGNvbmZpZ3VyYXRpb25zLiBCdXQgd2hhdCBhYm91dCB0aGUgYnJvYWRlciBwaWN0dXJlPyBXaGF0IGhhcHBlbnMgd2hlbiBJJ20gZGVhbGluZyB3aXRoIGFuIGFtZDY0IHNldHVwP1xuXG5UaGF0J3MgdGhlIGNydXggb2YgaXQ6ICpEb2VzKiBRRU1VLCBpbiBhbiBhbWQ2NCBlbnZpcm9ubWVudCAoeDg2XzY0IFBDIC8gUTM1IC8gbWljcm92bSksIG9mZmVyIGVtdWxhdGlvbiBmb3IgYHN0bW1hY2Agb3IgYGR3bWFjYD8gVGhlIGFuc3dlciBzZWVtcyB0byBiZSBuby4gVGhlIHVzdWFsIHN1c3BlY3RzIEknbSBmYW1pbGlhciB3aXRoIOKAkyBgZTEwMDBgLCBgZTEwMDBlYCwgYGlnYmAsIGBydGw4MTM5YCwgZXRjLiDigJMgdGhlc2UgYXJlIHRoZSAqc3RhbmRhcmQqIFFFTVUgbmV0d29yayBkZXZpY2VzLiBJJ3ZlIGdvdCBhIG1lbnRhbCBsaXN0IG9mIGFsbCB0aGUgb3RoZXIgdHlwaWNhbCBkcml2ZXJzOiBgcGNuZXRgLCBgbmUya19wY2lgLCBgdm14bmV0M2AsIGB2aXJ0aW8tbmV0LXBjaWAsIGB1c2ItbmV0YCwgYHJvY2tlcmAsIGBzdW5nZW1gLCBgaTgyNTUxLzU3LzU5YCAoZWVwcm8xMDApLCBgdHVsaXBgLCBhbmQgYGxhbmNlYC4gSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgbmVpdGhlciBgc3RtbWFjYCBub3IgYGR3bWFjYCBQQ0kgbW9kZWxzIGFyZSBwcmVzZW50LlxuXG5Ob3csIHdhaXQgYSBtaW51dGUsIGlzIHRoZXJlICphbnkqIHZpcnR1YWwgYnVzIG9yIGRldmljZSB0aGF0IGNvdWxkIGJlIHVzZWQgZm9yIGBzdG1tYWNgPyBJdCdzIHRpbWUgdG8gdmVyaWZ5IGlmIGBzdG1tYWNgIGNhbiBiZSBwcm9iZWQgd2l0aG91dCBwaHlzaWNhbCBoYXJkd2FyZSBvciBRRU1VIGhhcmR3YXJlIGVtdWxhdGlvbi4gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBsaWtlIGBzdG1tYWNfZHZyX3Byb2JlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNjgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6NTQuNjA2MzAyMTE2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM1MTgxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbnQgc3RtbWFjX2R2cl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDExPXZvaWQgc3RtbWFjX2R2cl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTI6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxMy1cXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc4MTY9c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTI4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEyOTppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTMwLVxcdFxcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTY6NTQuNjU0NjU5MDk2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjExODIyMzI3MjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBzdG1tYWNgIERyaXZlcidzIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgdGFsa2luZyBhYm91dCBgc3RtbWFjYCwgdGhlIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBmb3IgU1RNaWNyb2VsZWN0cm9uaWNzJyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQy4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmUsIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBpcyB3aGV0aGVyIGBzeXprYWxsZXJgIGNhbiBldmVuICpyZWFjaCogdGhpcyBjb2RlLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBwcmV0dHkgY2xlYXI6IHJlYWNoYWJpbGl0eSBpcyB0aGUgcHJpbWFyeSBnYXRlLiBUaGV5IHNwZWNpZnkgdGhhdCB3ZSBjYW4gb25seSB0YXJnZXQgY29kZSB0aGF0IGV4ZWN1dGVzIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyDigJMgR0NFIG9yIFFFTVUsIHByZWZlcmFibHkgd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgb3IgdHVuL3RhcC4gQW55IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBjb2RlIGlzIG9mZi1saW1pdHMsIHJlZ2FyZGxlc3Mgb2YgaXRzIGludGVybmFsIGNvbXBsZXhpdHkgb3IgdGhlIHByZXNlbmNlIG9mIGFzc2VydGlvbnMuXG5cblRoZSBkb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgbGlzdHMgZXhhbXBsZXMgb2YgKnVucmVhY2hhYmxlKiBoYXJkd2FyZTogdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgdGhhdCByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlLiBJdCBhbHNvIGZsYWdzIGV4ZWN1dGlvbiBwYXRocyB0aGF0IG9ubHkgdHJpZ2dlciBkdXJpbmcsIHNheSwgUENJIGhvdC11bnBsdWcgb3IgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUuIFRoaXMgZ2l2ZXMgc29tZSBpbXBvcnRhbnQgY29udGV4dCBmb3IgZGVjaWRpbmcgaWYgd2UgY2FuIGZ1enogdGhpcyBjb2RlLlxuXG5TbywgbGV0J3MgbG9vayBhdCB0aGlzIHBhdGNoLiBJdCB0b3VjaGVzIGEgZmV3IGtleSBmdW5jdGlvbnM6IGBzdG1tYWNfeGRwX3JlbGVhc2VgIGluIGBzdG1tYWNfbWFpbi5jYCwgYW5kIGBzdG1tYWNfeGRwX3N0b3BfdHhfcXVldWVgLCBgc3RtbWFjX3hkcF9lbmFibGVfcG9vbGAsIGFuZCBgc3RtbWFjX3hkcF9kaXNhYmxlX3Bvb2xgIGluIGBzdG1tYWNfeGRwLmNgLiBUaGVzZSBhcHBlYXIgdG8gYmUgWFNLL0FGX1hEUCBwb29sIHNldHVwIGFuZCB0ZWFyZG93biBjYWxsYmFja3MgZm9yIHRoZSBgc3RtbWFjYCBuZXRkZXYgZHJpdmVyLiBgc3RtbWFjX3hkcF9lbmFibGVfcG9vbGAgaXMgdHJpZ2dlcmVkIGJ5IGBzdG1tYWNfeGRwX3NldF9wb29sYCB3aGljaCBnZXRzIGNhbGxlZCBieSBhbiBYRFAgbmV0ZGV2IG9wIChgbmRvX3hza19idWZmX3Bvb2xfZW5hYmxlYC9gYnBmYCkuIENydWNpYWxseSwgYHN0bW1hY194ZHBfcmVsZWFzZWAgaXMgY2FsbGVkIGJ5IGBzdG1tYWNfcmVsZWFzZWAsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIGBzdG1tYWNfbWFjX3N0b3BgIG9yIGBuZG9fc3RvcGAuXG5cbk5vdywgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzOiBhbGwgb2YgdGhlc2UgZnVuY3Rpb25zIGluaGVyZW50bHkgcmVseSBvbiBhbiBgc3RtbWFjYCBuZXRfZGV2aWNlIGFjdHVhbGx5IGV4aXN0aW5nLiBDYW4gd2UgY3JlYXRlIHRoaXMgZGV2aWNlIGluIGEgc3RhbmRhcmQsIHZpcnR1YWxpemVkIFFFTVUgZW52aXJvbm1lbnQgb24gYW1kNjQ/IFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG1hdHRlci4gV2UgbmVlZCB0byBmaW5kIG91dCBpZiB0aGVyZSdzIGFueSBwbGF0Zm9ybSBkZXZpY2UsIG1vY2sgZGV2aWNlLCBvciBzb21lIG90aGVyIG1lY2hhbmlzbSB3aXRoaW4gdGhlIGtlcm5lbCB0cmVlIHRoYXQgY2FuIGNyZWF0ZSBhbiBgc3RtbWFjYCBkZXZpY2UgKndpdGhvdXQqIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBvciBhIG5vbi1zdGFuZGFyZCBRRU1VIHNldHVwLiBJJ20gZ29pbmcgdG8gZ3JlcCB0aGUga2VybmVsIHNvdXJjZXMgZm9yIGBzdG1tYWNgIGFuZCBwbGF0Zm9ybSBkZXZpY2VzIG9yIG1vZHVsZSBpbml0aWFsaXphdGlvbiB0byBzZWUgaWYgdGhlcmUncyBhIHdheSB0byBnZXQgYSBgc3RtbWFjYCBkZXZpY2UgaW5pdGlhbGl6ZWQgd2l0aG91dCByZXF1aXJpbmcgYW55IGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM1OSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzowNi40NzY5ODkwMTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyODg3MTA0MjAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RldmljZV9yZWdpc3Rlci4qc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzowOC43NjU3MDg5MjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjYyNTI3OTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgU1RNTUFDIFBsYXRmb3JtIERyaXZlcioqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBmb2N1cyBpcyBvbiB0aGUgYHN0bW1hY19wbGF0Zm9ybS5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBnbHVlIGNvZGUgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyIGxpa2VseSByZXNpZGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBkcml2ZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCBwYXJ0aWN1bGFybHkgdGhlIHBsYXRmb3JtJ3MgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSByZXNvdXJjZSBhbGxvY2F0aW9uIGZvciByZWdpc3RlcnMsIGludGVycnVwdCBoYW5kbGluZyBzZXR1cCwgYW5kIGNsb2NrIGNvbmZpZ3VyYXRpb24uIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBwcm9iZSBmdW5jdGlvbjsgdGhhdCdzIHdoZXJlIHRoZSBkcml2ZXIgaW5pdGlhbGl6ZXMgaXRzZWxmIG9uIGRldmljZSBlbnVtZXJhdGlvbi4gSSdsbCBiZSBkaWdnaW5nIGRlZXAgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNlYXJjaGluZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGFyZWFzIHdoZXJlIGN1c3RvbSBoYXJkd2FyZSBjb25maWd1cmF0aW9ucyBtaWdodCBpbXBhY3QgcGVyZm9ybWFuY2Ugb3IgaW50cm9kdWNlIGlzc3Vlcy4gSSdsbCBhbHNvIGNoZWNrIGZvciBhbnkgcXVpcmsgaGFuZGxpbmcgc3BlY2lmaWMgdG8gY2VydGFpbiBTVE1pY3JvZWxlY3Ryb25pY3MgU29DcyBvciBib2FyZCByZXZpc2lvbnMuIEl04oCZcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGlzIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NjIxLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTEuMzkwOTk1NjJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTI0OTA0NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlci4qc3RtbWFjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzoxMy43ODM0OTQyNTlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjExNjQ2MDI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBTVE1NQUMgUGxhdGZvcm0gRHJpdmVyKipcblxuT2theSwgc28gd2UgbmVlZCB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBMZXQncyBub3Qgd2FzdGUgYW55IHRpbWUgd2l0aCBzZWNvbmRhcnkgc291cmNlcyBvciBkb2N1bWVudGF0aW9uLiBJJ20gZ29pbmcgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgYHN0bW1hY19wbGF0Zm9ybS5jYCBmaWxlLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIHBsYXRmb3JtLXNwZWNpZmljIGRyaXZlciBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBjb250cm9sbGVyLCBzbyBpdCdzIHRoZSBtb3N0IGxpa2VseSBwbGFjZSB3aGVyZSB0aGUgcm9vdCBvZiB0aGlzIGlzc3VlIHJlc2lkZXMsIGFuZCB3aGVyZSBJJ20gZ29pbmcgdG8gZmluZCB0aGUgbG93LWxldmVsIGRldGFpbHMgbmVlZGVkIHRvIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgYmVoYXZpb3IuIE5vIG5lZWQgdG8gcmUtaW52ZW50IHRoZSB3aGVlbCBvciB3b3JrIHRocm91Z2ggaXJyZWxldmFudCBjb2RlIHBhdGhzLiBMZXQncyBnZXQgZG93biB0byB0aGUgZ3JpdHR5IGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1ODcxLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTUuODk5OTU3NDUzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXFxuICAgMzpcXHQgIFRoaXMgY29udGFpbnMgdGhlIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIHBsYXRmb3JtIGRyaXZlci5cXG4gICA0OlxcdFxcbiAgIDU6XFx0ICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMSAgU1RNaWNyb2VsZWN0cm9uaWNzIEx0ZFxcbiAgIDY6XFx0XFxuICAgNzpcXHRcXG4gICA4OlxcdCAgQXV0aG9yOiBHaXVzZXBwZSBDYXZhbGxhcm8gXFx1MDAzY3BlcHBlLmNhdmFsbGFyb0BzdC5jb21cXHUwMDNlXFxuICAgOTpcXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiAgMTA6XFx0XFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZGV2aWNlLmhcXHUwMDNlXFxuICAxMjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGxhdGZvcm1fZGV2aWNlLmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcG1fcnVudGltZS5oXFx1MDAzZVxcbiAgMTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbiAgMTU6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lvLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvb2YuaFxcdTAwM2VcXG4gIDE3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9uZXQuaFxcdTAwM2VcXG4gIDE4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuICAxOTpcXHRcXG4gIDIwOlxcdCNpbmNsdWRlIFxcXCJzdG1tYWMuaFxcXCJcXG4gIDIxOlxcdCNpbmNsdWRlIFxcXCJzdG1tYWNfcGxhdGZvcm0uaFxcXCJcXG4gIDIyOlxcdFxcbiAgMjM6XFx0I2lmZGVmIENPTkZJR19PRlxcbiAgMjQ6XFx0XFxuICAyNTpcXHQvKipcXG4gIDI2OlxcdCAqIGR3bWFjMTAwMF92YWxpZGF0ZV9tY2FzdF9iaW5zIC0gdmFsaWRhdGVzIHRoZSBudW1iZXIgb2YgTXVsdGljYXN0IGZpbHRlciBiaW5zXFxuICAyNzpcXHQgKiBAZGV2OiBzdHJ1Y3QgZGV2aWNlIG9mIHRoZSBwbGF0Zm9ybSBkZXZpY2VcXG4gIDI4OlxcdCAqIEBtY2FzdF9iaW5zOiBNdWx0aWNhc3QgZmlsdGVyaW5nIGJpbnNcXG4gIDI5OlxcdCAqIERlc2NyaXB0aW9uOlxcbiAgMzA6XFx0ICogdGhpcyBmdW5jdGlvbiB2YWxpZGF0ZXMgdGhlIG51bWJlciBvZiBNdWx0aWNhc3QgZmlsdGVyaW5nIGJpbnMgc3BlY2lmaWVkXFxuICAzMTpcXHQgKiBieSB0aGUgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZS4gVGhlIFN5bm9wc3lzIEdNQUMgc3VwcG9ydHNcXG4gIDMyOlxcdCAqIDY0IGJpbnMsIDEyOCBiaW5zLCBvciAyNTYgYmlucy4gXFxcImJpbnNcXFwiIHJlZmVyIHRvIHRoZSBkaXZpc2lvbiBvZiBDUkNcXG4gIDMzOlxcdCAqIG51bWJlciBzcGFjZS4gNjQgYmlucyBjb3JyZXNwb25kIHRvIDYgYml0cyBvZiB0aGUgQ1JDLCAxMjggY29ycmVzcG9uZHNcXG4gIDM0OlxcdCAqIHRvIDcgYml0cywgYW5kIDI1NiByZWZlcnMgdG8gOCBiaXRzIG9mIHRoZSBDUkMuIEFueSBvdGhlciBzZXR0aW5nIGlzXFxuICAzNTpcXHQgKiBpbnZhbGlkIGFuZCB3aWxsIGNhdXNlIHRoZSBmaWx0ZXJpbmcgYWxnb3JpdGhtIHRvIHVzZSBNdWx0aWNhc3RcXG4gIDM2OlxcdCAqIHByb21pc2N1b3VzIG1vZGUuXFxuICAzNzpcXHQgKi9cXG4gIDM4OlxcdHN0YXRpYyBpbnQgZHdtYWMxMDAwX3ZhbGlkYXRlX21jYXN0X2JpbnMoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgbWNhc3RfYmlucylcXG4gIDM5OlxcdHtcXG4gIDQwOlxcdFxcdGludCB4ID0gbWNhc3RfYmlucztcXG4gIDQxOlxcdFxcbiAgNDI6XFx0XFx0c3dpdGNoICh4KSB7XFxuICA0MzpcXHRcXHRjYXNlIEhBU0hfVEFCTEVfU0laRTpcXG4gIDQ0OlxcdFxcdGNhc2UgMTI4OlxcbiAgNDU6XFx0XFx0Y2FzZSAyNTY6XFxuICA0NjpcXHRcXHRcXHRicmVhaztcXG4gIDQ3OlxcdFxcdGRlZmF1bHQ6XFxuICA0ODpcXHRcXHRcXHR4ID0gMDtcXG4gIDQ5OlxcdFxcdFxcdGRldl9pbmZvKGRldiwgXFxcIkhhc2ggdGFibGUgZW50cmllcyBzZXQgdG8gdW5leHBlY3RlZCB2YWx1ZSAlZFxcXFxuXFxcIixcXG4gIDUwOlxcdFxcdFxcdFxcdCBtY2FzdF9iaW5zKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTUuOTAwMDY0ODkzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIxODI3MzE2MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUgd2UgZ28uLi5cblxuKipEaXZpbmcgQmFjayBpbnRvIGBzdG1tYWNfcGxhdGZvcm0uY2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgYmFjayB0byBpdC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHdoYXQncyBnb2luZyBvbiB3aXRoaW4gYHN0bW1hY19wbGF0Zm9ybS5jYC4gVGltZSB0byBtZXRpY3Vsb3VzbHkgcmV2aWV3IHRoZSByZW1haW5pbmcgc2VjdGlvbnMuIEknbSBnb2luZyB0byBsb29rIGZvciB0aGUga2V5IHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIGFuZCBjb25maWd1cmF0aW9uIGRldGFpbHMsIHRoZSByZXNvdXJjZSBhbGxvY2F0aW9uIHJvdXRpbmVzLCBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXBzLCBhbmQgYW55IHBvdGVudGlhbCBwb3dlciBtYW5hZ2VtZW50IGhvb2tzLiBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gaG93IHRoZXkndmUgc3RydWN0dXJlZCB0aGUgZHJpdmVyIHdpdGggcmVzcGVjdCB0byBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucy4gS25vd2luZyB3aGF0J3MgaGFwcGVuaW5nIGluIHRob3NlIGlzIGNydWNpYWwgdG8gZ2V0dGluZyBhIHNvbGlkIHVuZGVyc3RhbmRpbmcuIEknbGwgYmUga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSBoYW5kbGUgY2xvY2tpbmcgYW5kIFBIWSBpbnRlcmFjdGlvbnMg4oCTIHRoYXQgYWx3YXlzIHNlZW1zIHRvIGJlIHdoZXJlIHRoZSBpbnRlcmVzdGluZyAoYW5kIG9mdGVuLCBvYnNjdXJlKSBkZXRhaWxzIHJlc2lkZS4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgZHJpdmVyIGFuZCBob3cgdGhleSBhcmUgaGFuZGxlZCwgcGFydGljdWxhcmx5IGFueSBjYXNlcyB3aGljaCBtaWdodCByZWxhdGUgdG8gdGhlIHBsYXRmb3JtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgzOSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTguMDgyNzk4OTc2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAwOTAzMTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTVUMTA6NTc6MTguMTkyODk5MDU0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjIzOTY3MDgyMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodHMsIGFzIHRob3VnaCBJJ20gZXhhbWluaW5nIGBkd21hYy1nZW5lcmljLmNgOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBHZW5lcmljIERXTUFDIERyaXZlcioqXG5cbkFscmlnaHQsIGxldCdzIGNyYWNrIG9wZW4gYGR3bWFjLWdlbmVyaWMuY2AuIEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBhIGZhaXIgYml0IG9mIHBsYXRmb3JtLWFnbm9zdGljIGNvZGUgaGVyZSwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBjb3JlIGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGZvdW5kYXRpb24gdXBvbiB3aGljaCBtb3JlIHNwZWNpZmljIERXTUFDIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMgYXJlIGJ1aWx0LCBzbyB1bmRlcnN0YW5kaW5nIGl0cyBhcmNoaXRlY3R1cmUgaXMgY3JpdGljYWwgZm9yIG15IHdvcmsuIEkgd2FudCB0byBzZWUgaG93IGl0IGFic3RyYWN0cyB0aGUgaGFyZHdhcmUuIFdoYXQgYXJlIHRoZSBrZXkgcmVnaXN0ZXJzIGl0IGFjY2Vzc2VzPyBIb3cgZG9lcyBpdCBoYW5kbGUgZGVzY3JpcHRvcnMsIGludGVycnVwdHMsIGFuZCBETUE/IEknbSBjdXJpb3VzIGFib3V0IHRoZSBjaG9zZW4gc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgdG9vOyBzcGlubG9ja3MgdmVyc3VzIG11dGV4ZXMgd2lsbCBkaWN0YXRlIGEgbG90IGFib3V0IHRoZSBkcml2ZXIncyBvdmVyYWxsIHBlcmZvcm1hbmNlIHByb2ZpbGUuIEknbSBhbHNvIHNjYW5uaW5nIGZvciBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gdGhhdCBtaWdodCBiZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcy4gTGV0J3Mgc2VlIGhvdyBpdCBoYW5kbGVzIHBhY2tldCBidWZmZXJpbmcgYW5kIGZsb3cgY29udHJvbCwgYW5kIGhvdyBpdCBkZWFscyB3aXRoIGRpZmZlcmVudCBFdGhlcm5ldCBmcmFtZSB0eXBlcy4gTXkgdWx0aW1hdGUgZ29hbCBpcyB0byBzZWUgaG93IHRoaXMgJ2dlbmVyaWMnIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgdGhlIGNvcmUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gb2YgdGhlIERXTUFDLCBiZWNhdXNlLCBpbiBtYW55IGNhc2VzLCB0aGlzIGlzIHdoZXJlIGEgbG90IG9mIHRoZSBwcm9ibGVtcyBvY2N1ci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxMTIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzoyMC41ODk2MDk5MDNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg1ODY2OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTEyMz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBhbmFyaW9uX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzoxMjU6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgYW5hcmlvbl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEyNi1cXHQucHJvYmUgID0gYW5hcmlvbl9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzItfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTMzOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYW5hcmlvbl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM1OT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd2NfZXRoX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjM2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkd2NfZXRoX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTM2Mi1cXHQucHJvYmUgID0gZHdjX2V0aF9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzY5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozNzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd2NfZXRoX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmM9MzYwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGVpYzc3MDBfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYy0zNjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jOjM2MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBlaWM3NzAwX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1laWM3NzAwLmMtMzYzLVxcdC5wcm9iZSAgPSBlaWM3NzAwX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM2OS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWVpYzc3MDAuYzozNzA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihlaWM3NzAwX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZWljNzcwMC5jLTM3MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYz02Nz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkd21hY19nZW5lcmljX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jOjY5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGR3bWFjX2dlbmVyaWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03MC1cXHQucHJvYmUgID0gZHdtYWNfZ2VuZXJpY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy03Ni19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzo3Nzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGR3bWFjX2dlbmVyaWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtNzgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz0zOTA9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0zOTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6MzkyOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGlteF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmMtMzkzLVxcdC5wcm9iZSAgPSBpbXhfZHdtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00MDAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzo0MDE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbXhfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00MDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjcwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGluZ2VuaWNfbWFjX29mX21hdGNoZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI3MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpbmdlbmljX21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3My1cXHQucHJvYmVcXHRcXHQ9IGluZ2VuaWNfbWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI3OS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzoyODA6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbmdlbmljX21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yODEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTMwPXN0YXRpYyB2b2lkIGludGVsX2V0aF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEzOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTM5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsX2V0aF9wbGF0X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQwLVxcdC5wcm9iZSAgPSBpbnRlbF9ldGhfcGxhdF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xNDctfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTQ4Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaW50ZWxfZXRoX3BsYXRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTQ5NT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpcHE4MDZ4X2dtYWNfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ5NzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBpcHE4MDZ4X2dtYWNfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00OTgtXFx0LnByb2JlID0gaXBxODA2eF9nbWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTUwNS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo1MDY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpcHE4MDZ4X2dtYWNfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNTA3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmM9MjI3PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxzMXhfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uMS5jLTIyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMjk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHMxeF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjMwLVxcdC5wcm9iZSA9IGxzMXhfZHdtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYy0yMzUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3NvbjEuYzoyMzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihsczF4X2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24xLmMtMjM3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTc1PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGxwYzE4eHhfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy03Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM6Nzc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbHBjMTh4eF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTc4LVxcdC5wcm9iZSAgPSBscGMxOHh4X2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTg1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjg2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobHBjMTh4eF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy04Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NjcwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lZGlhdGVrX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY3MjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZWRpYXRla19kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NzMtXFx0LnByb2JlICA9IG1lZGlhdGVrX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02ODAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jOjY4MTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lZGlhdGVrX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jPTgwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1lc29uNl9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjgyOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG1lc29uNl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy04My1cXHQucHJvYmUgID0gbWVzb242X2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy05MC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM6OTE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihtZXNvbjZfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTkyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jPTUwNT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZXNvbjhiX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmMtNTA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYzo1MDc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWVzb244Yl9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTUwOC1cXHQucHJvYmUgID0gbWVzb244Yl9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTUtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NTE2Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWVzb244Yl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy01MTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM9MTIyPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG52dF9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmM6MTI0OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG52dF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jLTEyNS1cXHQucHJvYmUgID0gbnZ0X2dtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1udXZvdG9uLmMtMTMyLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbnV2b3Rvbi5jOjEzMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG52dF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW51dm90b24uYy0xMzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1xY29tLWV0aHFvcy5jPTgwNz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBxY29tX2V0aHFvc19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYy04MDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MDk6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcWNvbV9ldGhxb3NfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODEwLVxcdC5wcm9iZSAgPSBxY29tX2V0aHFvc19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODE2LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYzo4MTc6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihxY29tX2V0aHFvc19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXFjb20tZXRocW9zLmMtODE4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jPTIyMj1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCByZW5lc2FzX2diZXRoX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmMtMjIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYzoyMjQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcmVuZXNhc19nYmV0aF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmVuZXNhcy1nYmV0aC5jLTIyNS1cXHQucHJvYmUgID0gcmVuZXNhc19nYmV0aF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMzEtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yZW5lc2FzLWdiZXRoLmM6MjMyOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocmVuZXNhc19nYmV0aF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYy0yMzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jPTE2MzU9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcmtfZ21hY19kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJrLmM6MTYzNzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBya19nbWFjX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2MzgtXFx0LnByb2JlICA9IHJrX2dtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jLTE2NDQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yay5jOjE2NDU6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihya19nbWFjX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcmsuYy0xNjQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jPTc5PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ6bjFfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy04MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6ODE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnpuMV9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTgyLVxcdC5wcm9iZSAgPSByem4xX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTg4LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjg5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIocnpuMV9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy05MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jPTIyMD1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYzoyMjI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgczMyX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zMzIuYy0yMjMtXFx0LnByb2JlID0gczMyX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjMwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmM6MjMxOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoczMyX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtczMyLmMtMjMyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jPTY3OT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb2NmcGdhX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmMtNjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYzo2ODE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc29jZnBnYV9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29jZnBnYS5jLTY4Mi1cXHQucHJvYmUgID0gc29jZnBnYV9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02ODgtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb2NmcGdhLmM6Njg5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc29jZnBnYV9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2EuYy02OTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz03Nz1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzb3BoZ29fZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjc5OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNvcGhnb19kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtODAtXFx0LnByb2JlICA9IHNvcGhnb19kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTg3LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6ODg6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzb3BoZ29fZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy04OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MjE0PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNwYWNlbWl0X2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIxNjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzcGFjZW1pdF9kd21hY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMTctXFx0LnByb2JlICA9IHNwYWNlbWl0X2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMjQtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jOjIyNTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHNwYWNlbWl0X2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYy0yMjYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTE2NT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdGFyZml2ZV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNjc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3RhcmZpdmVfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTY4LVxcdC5wcm9iZSAgPSBzdGFyZml2ZV9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTc1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYzoxNzY6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihzdGFyZml2ZV9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTc3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM9MzAwPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN0aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jOjMwMjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdGlfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0aS5jLTMwMy1cXHQucHJvYmUgID0gc3RpX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzA5LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmM6MzEwOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3RpX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RpLmMtMzExLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz02Njk9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgc3RtMzJfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNjcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NjcxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN0bTMyX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY3Mi1cXHQucHJvYmUgID0gc3RtMzJfZHdtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY3OS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmM6NjgwOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3RtMzJfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jLTY4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jPTE0NT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW41NWlfZ21hYzIwMF9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE0NzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdW41NWlfZ21hYzIwMF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTQ4LVxcdC5wcm9iZSAgPSBzdW41NWlfZ21hYzIwMF9wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jLTE1NC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjU1aS5jOjE1NTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjU1aV9nbWFjMjAwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuNTVpLmMtMTU2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYz0xMjgzPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHN1bjhpX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjg1OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHN1bjhpX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyODYtXFx0LnByb2JlICA9IHN1bjhpX2R3bWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjk0LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYzoxMjk1Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfZHdtYWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyOTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jPTE1ND1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBzdW43aV9kd21hY19tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYzoxNTY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc3VuN2lfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bnhpLmMtMTU3LVxcdC5wcm9iZSAgPSBzdW43aV9nbWFjX3Byb2JlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjMtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW54aS5jOjE2NDptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHN1bjdpX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VueGkuYy0xNjUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jPTQwMz1zdGF0aWMgU0lNUExFX0RFVl9QTV9PUFModGVncmFfbWdiZV9wbV9vcHMsIHRlZ3JhX21nYmVfc3VzcGVuZCwgdGVncmFfbWdiZV9yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDA1OnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRlZ3JhX21nYmVfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDA2LVxcdC5wcm9iZSA9IHRlZ3JhX21nYmVfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTQxMy19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6NDE0Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodGVncmFfbWdiZV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtNDE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYz0yNzE9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdGhlYWRfZHdtYWNfbWF0Y2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmM6MjczOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRoZWFkX2R3bWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10aGVhZC5jLTI3NC1cXHQucHJvYmUgPSB0aGVhZF9kd21hY19wcm9iZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjgwLX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGhlYWQuYzoyODE6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih0aGVhZF9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRoZWFkLmMtMjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yNTk9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdmlzY29udGlfZXRoX2R3bWFjX21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jOjI2MTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB2aXNjb250aV9ldGhfZHdtYWNfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjYyLVxcdC5wcm9iZSAgPSB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTI2OC19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjY5Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIodmlzY29udGlfZXRoX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yNzAtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU3OjIwLjY3NTQ4MzgwMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2ODY4MzAyMDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IFNUTU1BQyBEcml2ZXIgQ29kZSBpcyBVbnJlYWNoYWJsZSBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiB0aHJvdWdoIHRoaXMgcGF0Y2ggYW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcsIGFuZCBoZXJlJ3MgbXkgYnJlYWtkb3duOiB0aGlzIGNvZGUgbW9kaWZpZXMgZnVuY3Rpb25zIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MvU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgZHJpdmVyLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBYRFAgYW5kIHF1ZXVlIG1hbmFnZW1lbnQg4oCTIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3hkcF9zdG9wX3R4X3F1ZXVlYCwgYHN0bW1hY194ZHBfZW5hYmxlX3Bvb2xgLCBhbmQgYHN0bW1hY194ZHBfZGlzYWJsZV9wb29sYC5cblxuVGhlIHByb2JsZW0gaXMsIHRoaXMgYHN0bW1hY2AgZHJpdmVyIHJlbGllcyBvbiBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0ICppc24ndCogYXZhaWxhYmxlIGluIHRoZSB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzIHdlIHVzZSwgbmFtZWx5IHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIFZNcy4gVGhpcyBpc24ndCBqdXN0IGEgZ2VuZXJpYyBuZXR3b3JrIGRldmljZTsgaXQncyB0aWVkIHRvIGVpdGhlciBwYXJ0aWN1bGFyIFNvQyBwbGF0Zm9ybXMgb3IgU3lub3BzeXMgUENJIHRlc3Rib2FyZHMuICBJJ3ZlIGNoZWNrZWQgdGhlIGtub3duIGRldmljZSBtYXBwaW5ncyDigJMgSW50ZWwgUXVhcmssIEVsa2hhcnQgTGFrZSwgVGlnZXIgTGFrZSwgQWxkZXIgTGFrZSwgTG9vbmdzb24sIE1vdG9yY29tbSwgYW5kIHRoZSBTeW5vcHN5cyBHTUFDNSBQQ0kuICBOb25lIG9mIHRoZXNlIGV4aXN0IG9yIGFyZSBlbXVsYXRlZCwgd2hpY2ggbWF0Y2hlcyB0aGUgY3JpdGVyaWEgb3V0bGluZWQgaW4gU2VjdGlvbiAyLlxuXG5XZSBrbm93IGZyb20gU2VjdGlvbiAyIHRoYXQgYSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZVwiIGhhcmR3YXJlIGRyaXZlciBzaG91bGRuJ3QgYmUgZnV6emVkLCBhcyBmdXp6aW5nIGNhbiBvbmx5IHRhcmdldCBjb2RlIHRoYXQgZXhlY3V0ZXMgaW4gb3VyIHN0YW5kYXJkIGVudmlyb25tZW50cy4gVGhlIGZhY3QgdGhhdCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZywgYmVjYXVzZSBldmVuIG9uIGFtZDY0LCBzdG1tYWMgaXMgc3RpbGwgdGllZCB0byBzcGVjaWZpYyBjb250cm9sbGVycy4gV2l0aG91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0byBwcm9iZSBhbmQgY3JlYXRlIHRoZSBgbmV0X2RldmljZWAsIHRoZSBtb2RpZmllZCBjb2RlIHNpbXBseSAqY2Fubm90KiBiZSBleGVjdXRlZC4gVGhlIGBuZXRfZGV2aWNlYCBhbmQgaXRzIG9wZXJhdGlvbnMsIGxpa2UgWERQIGNhbGxiYWNrcyBhbmQgcXVldWUgbWFuaXB1bGF0aW9uLCBhcmVuJ3QgZXZlbiBpbnN0YW50aWF0ZWQuXG5cblRoZXJlZm9yZSwgdGhlIFhEUCBhbmQgcXVldWUgbWFuYWdlbWVudCBmdW5jdGlvbnMgbW9kaWZpZWQgYnkgdGhpcyBwYXRjaCBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LiAgU28sIGJhc2VkIG9uIHRoZSByZWFjaGFiaWxpdHkgcHJpbmNpcGxlLCB0aGlzIHBhdGNoIGlzICpub3QqIHdvcnRoIGZ1enppbmcuXG5gYGBcbnNldC1yZXN1bHRzXG5gYGBcblxuXG4iLCJJbnB1dFRva2VucyI6MjU1MzYsIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTE1VDEwOjU3OjI3LjU0Mzc4OTc2NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFhEUCBwb29sIGVuYWJsZS9kaXNhYmxlIGFuZCBxdWV1ZSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIC8gU3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBNQUMgKHN0bW1hYykgZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIChlbWJlZGRlZCBTb0MgcGxhdGZvcm0gZGV2aWNlcyBhbmQgdmVuZG9yLXNwZWNpZmljIFBDSSBjb250cm9sbGVycykgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIFFFTVUvR0NFIGVudmlyb25tZW50cy4gQmVjYXVzZSB0aGUgaGFyZHdhcmUgY2Fubm90IGJlIHByb2JlZCB0byBjcmVhdGUgYSBuZXRfZGV2aWNlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgWERQIHBvb2wgZW5hYmxlL2Rpc2FibGUgYW5kIHF1ZXVlIG1hbmFnZW1lbnQgZnVuY3Rpb25zIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgLyBTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IE1BQyAoc3RtbWFjKSBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgKGVtYmVkZGVkIFNvQyBwbGF0Zm9ybSBkZXZpY2VzIGFuZCB2ZW5kb3Itc3BlY2lmaWMgUENJIGNvbnRyb2xsZXJzKSB0aGF0IGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzLiBCZWNhdXNlIHRoZSBoYXJkd2FyZSBjYW5ub3QgYmUgcHJvYmVkIHRvIGNyZWF0ZSBhIG5ldF9kZXZpY2UsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xNVQxMDo1NzoyNy41NDM4MjY5MjRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowr9ggl[1] Phase: Running StartedAt: 2026-09-15 10:57:38 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowr9ggl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-15 10:57:38 +0000 UTC FinishedAt: 2026-09-15 10:57:43 +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,}