Name: series-workflowl4dt9 Phase: Failed StartedAt: 2026-08-31 19:09:43 +0000 UTC FinishedAt: 2026-08-31 19:31:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4dt9[0] Phase: Succeeded StartedAt: 2026-08-31 19:09:43 +0000 UTC FinishedAt: 2026-08-31 19:31:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4dt9[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 19:09:43 +0000 UTC FinishedAt: 2026-08-31 19:31:36 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE0MzU1MDhhMzdmNmY3OGQ5MzBhOGI3ZDY5ZWI4NjU0ZWJkYzZiZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOTozMDowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jXG5pbmRleCBhMzZiOGIwNzAzMGUzLi40YzkyODk4M2I4NjIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jXG5AQCAtMTUzOCw3ICYjNDM7MTUzOCw3IEBAIHN0YXRpYyBpbnQgcWNhOGtfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIHtcbiBcdHN0cnVjdCBxY2E4a19wcml2ICpwcml2ID0gcGNzX3RvX3FjYThrX3BjcyhwY3MpLVx1MDAzZXByaXY7XG4gXHRpbnQgY3B1X3BvcnRfaW5kZXgsIHJldCwgcG9ydDtcbi1cdHUzMiByZWcsIHZhbDtcbiYjNDM7XHR1MzIgbWFzaywgcmVnLCB2YWw7XG4gXG4gXHRwb3J0ID0gcGNzX3RvX3FjYThrX3BjcyhwY3MpLVx1MDAzZXBvcnQ7XG4gXHRzd2l0Y2ggKHBvcnQpIHtcbkBAIC0xNjExLDExICYjNDM7MTYxMSwyMSBAQCBzdGF0aWMgaW50IHFjYThrX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbiBcdGlmIChwcml2LVx1MDAzZXBvcnRzX2NvbmZpZy5zZ21paV90eF9jbGtfZmFsbGluZ19lZGdlKVxuIFx0XHR2YWwgfD0gUUNBOEtfUE9SVDBfUEFEX1NHTUlJX1RYQ0xLX0ZBTExJTkdfRURHRTtcbiBcbi1cdGlmICh2YWwpXG4tXHRcdHJldCA9IHFjYThrX3Jtdyhwcml2LCByZWcsXG4tXHRcdFx0XHRRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHxcbi1cdFx0XHRcdFFDQThLX1BPUlQwX1BBRF9TR01JSV9UWENMS19GQUxMSU5HX0VER0UsXG4tXHRcdFx0XHR2YWwpO1xuJiM0MztcdG1hc2sgPSAodmFsKSA/IChRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHxcbiYjNDM7XHRcdFx0UUNBOEtfUE9SVDBfUEFEX1NHTUlJX1RYQ0xLX0ZBTExJTkdfRURHRSkgOiAwO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIChVbilzZXQgZm9yY2UgbW9kZSBvbiBRQ0E4MzM3IG9ubHksIGRvbiYjMzk7dCBpbmNsdWRlIGl0IGluIHRoZSBtYXNrIGZvclxuJiM0MztcdCAqIG90aGVycy4gSXQgaXMgd3JpdHRlbiB0byB0aGUgUE9SVDAgUEFEIHJlZ2lzdGVyIGZvciBib3RoIHBvcnQgMCBhbmQgNi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2Vzd2l0Y2hfaWQgPT0gUUNBOEtfSURfUUNBODMzNykge1xuJiM0MztcdFx0aWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19PVVRCQU5EKVxuJiM0MztcdFx0XHR2YWwgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTtcbiYjNDM7XHRcdG1hc2sgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChtYXNrKVxuJiM0MztcdFx0cmV0ID0gcWNhOGtfcm13KHByaXYsIHJlZywgbWFzaywgdmFsKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmggYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcbmluZGV4IGQwNDY2NzkyNjVmYTQuLmVkOGYwYjQ5ODEyYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaFxuQEAgLTU4LDYgJiM0Mzs1OCw3IEBAXG4gI2RlZmluZVx0ICBRQ0E4S19QT1JUX1BBRF9SR01JSV9UWF9ERUxBWV9FTlx0XHRCSVQoMjUpXG4gI2RlZmluZSAgIFFDQThLX1BPUlRfUEFEX1JHTUlJX1JYX0RFTEFZX0VOXHRcdEJJVCgyNClcbiAjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfU0dNSUlfRU5cdFx0XHRCSVQoNylcbiYjNDM7I2RlZmluZSAgIFFDQThLX1BPUlRfUEFEX1NHTUlJX0ZPUkNFX01PREVcdFx0QklUKDMpXG4gI2RlZmluZSBRQ0E4S19SRUdfUFdTXHRcdFx0XHRcdDB4MDEwXG4gI2RlZmluZSAgIFFDQThLX1BXU19QT1dFUl9PTl9TRUxcdFx0XHRCSVQoMzEpXG4gLyogVGhpcyByZWcgaXMgb25seSB2YWxpZCBmb3IgUUNBODMyeCBhbmQgdG9nZ2xlIHRoZSBwYWNrYWdlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE0MzU1MDhhMzdmNmY3OGQ5MzBhOGI3ZDY5ZWI4NjU0ZWJkYzZiZjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAxOTozMDowMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jIGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMKaW5kZXggYTM2YjhiMDcwMzBlMy4uNGM5Mjg5ODNiODYyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMKQEAgLTE1MzgsNyAmIzQzOzE1MzgsNyBAQCBzdGF0aWMgaW50IHFjYThrX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSwKIHsKIAlzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdiA9IHBjc190b19xY2E4a19wY3MocGNzKS0mZ3Q7cHJpdjsKIAlpbnQgY3B1X3BvcnRfaW5kZXgsIHJldCwgcG9ydDsKLQl1MzIgcmVnLCB2YWw7CiYjNDM7CXUzMiBtYXNrLCByZWcsIHZhbDsKIAogCXBvcnQgPSBwY3NfdG9fcWNhOGtfcGNzKHBjcyktJmd0O3BvcnQ7CiAJc3dpdGNoIChwb3J0KSB7CkBAIC0xNjExLDExICYjNDM7MTYxMSwyMSBAQCBzdGF0aWMgaW50IHFjYThrX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSwKIAlpZiAocHJpdi0mZ3Q7cG9ydHNfY29uZmlnLnNnbWlpX3R4X2Nsa19mYWxsaW5nX2VkZ2UpCiAJCXZhbCB8PSBRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFOwogCi0JaWYgKHZhbCkKLQkJcmV0ID0gcWNhOGtfcm13KHByaXYsIHJlZywKLQkJCQlRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHwKLQkJCQlRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFLAotCQkJCXZhbCk7CiYjNDM7CW1hc2sgPSAodmFsKSA/IChRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHwKJiM0MzsJCQlRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFKSA6IDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIChVbilzZXQgZm9yY2UgbW9kZSBvbiBRQ0E4MzM3IG9ubHksIGRvbiYjMzk7dCBpbmNsdWRlIGl0IGluIHRoZSBtYXNrIGZvcgomIzQzOwkgKiBvdGhlcnMuIEl0IGlzIHdyaXR0ZW4gdG8gdGhlIFBPUlQwIFBBRCByZWdpc3RlciBmb3IgYm90aCBwb3J0IDAgYW5kIDYuCiYjNDM7CSAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7c3dpdGNoX2lkID09IFFDQThLX0lEX1FDQTgzMzcpIHsKJiM0MzsJCWlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfT1VUQkFORCkKJiM0MzsJCQl2YWwgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTsKJiM0MzsJCW1hc2sgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobWFzaykKJiM0MzsJCXJldCA9IHFjYThrX3Jtdyhwcml2LCByZWcsIG1hc2ssIHZhbCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaCBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaAppbmRleCBkMDQ2Njc5MjY1ZmE0Li5lZDhmMGI0OTgxMmM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay5oCkBAIC01OCw2ICYjNDM7NTgsNyBAQAogI2RlZmluZQkgIFFDQThLX1BPUlRfUEFEX1JHTUlJX1RYX0RFTEFZX0VOCQlCSVQoMjUpCiAjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfUkdNSUlfUlhfREVMQVlfRU4JCUJJVCgyNCkKICNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9FTgkJCUJJVCg3KQomIzQzOyNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9GT1JDRV9NT0RFCQlCSVQoMykKICNkZWZpbmUgUUNBOEtfUkVHX1BXUwkJCQkJMHgwMTAKICNkZWZpbmUgICBRQ0E4S19QV1NfUE9XRVJfT05fU0VMCQkJQklUKDMxKQogLyogVGhpcyByZWcgaXMgb25seSB2YWxpZCBmb3IgUUNBODMyeCBhbmQgdG9nZ2xlIHRoZSBwYWNrYWdlCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBTd2l0Y2ggRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gcGlucG9pbnQgZXhhY3RseSB3aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jYCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaGAuIEFoLCB0aGF0IHJpbmdzIGEgYmVsbCEgVGhpcyBpcyB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLCBwYXJ0IG9mIHRoZSBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlIOKAkyBEU0EuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCYjMzk7cyBsaWtlbHkgcHJlc2VudCBpbiBhIHZhcmlldHkgb2Ygc3lzdGVtcyBJIG1pZ2h0IGVuY291bnRlciwgb3IgaXMgaXQgYSBtb3JlIHNwZWNpYWxpemVkIHBpZWNlIG9mIGVxdWlwbWVudD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyB1bmRlciBgZHJpdmVycy9uZXQvZHNhL3FjYS9gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNsdWVzIGFib3V0IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIGFsc28gZG8gYSBxdWljayBncmVwIGZvciAmIzM0O3FjYThrJiMzNDsgdGhyb3VnaG91dCB0aGUga2VybmVsIHRyZWUganVzdCB0byBnZXQgYSBicm9hZGVyIHBpY3R1cmUgb2Ygd2hlcmUgdGhpcyBkcml2ZXIgbWlnaHQgYmUgdXNlZCBhbmQgd2hhdCBvdGhlciBtb2R1bGVzIG1pZ2h0IGludGVyYWN0IHdpdGggaXQuIEtub3dsZWRnZSBpcyBwb3dlciwgYW5kIGtub3dpbmcgdGhlIGhhcmR3YXJlIGNvbnRleHQgaXMgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gbWFrZSBhIGp1ZGdlbWVudCBvbiB0aGUgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX0RTQV9RQ0E4SyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnPTI9Y29uZmlnIE5FVF9EU0FfQVI5MzMxXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEwLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX1FDQThLXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMTItXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoxOTpjb25maWcgTkVUX0RTQV9RQ0E4S19MRURTX1NVUFBPUlRcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IExFRHMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjIxOlx0ZGVwZW5kcyBvbiBORVRfRFNBX1FDQThLXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWc6MjI6XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUUNBOEtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0yMy1cdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfTkVUX0RTQV9BUjkzMzEpXHQmIzQzOz0gYXI5MzMxLm9cbmRyaXZlcnMvbmV0L2RzYS9xY2EvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTkVUX0RTQV9RQ0E4SylcdCYjNDM7PSBxY2E4ay5vXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlLTQtcWNhOGsteSBcdFx0XHQmIzQzOz0gcWNhOGstY29tbW9uLm8gcWNhOGstOHh4eC5vXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlOjU6aWZkZWYgQ09ORklHX05FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlLTYtcWNhOGsteVx0XHRcdFx0JiM0Mzs9IHFjYThrLWxlZHMub1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGtfbGVkcy5oLTYtLyogTGVkcyBTdXBwb3J0IGZ1bmN0aW9uICovXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrX2xlZHMuaDo3OiNpZmRlZiBDT05GSUdfTkVUX0RTQV9RQ0E4S19MRURTX1NVUFBPUlRcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGtfbGVkcy5oLTgtaW50IHFjYThrX3NldHVwX2xlZF9jdHJsKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBxY2E4a2AgRHJpdmVyIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBxY2E4a2AgZHJpdmVyIHRvIHVuZGVyc3RhbmQgaXRzIGluaXRpYWxpemF0aW9uIGZsb3cuIE15IGZpcnN0IHByaW9yaXR5IGlzIHRvIHBpbiBkb3duICpob3cqIHRoaXMgdGhpbmcgZ2V0cyByZWdpc3RlcmVkLiBJJiMzOTttIGdvaW5nIHRvIGZvbGxvdyB0aGUgdHlwaWNhbCByb3V0ZXMuIElzIGl0IGFuIE1ESU8gZHJpdmVyPyBUaGF0IHdvdWxkIG1ha2Ugc2Vuc2UgZ2l2ZW4gdGhlIGNvbW1vbiB1c2UgY2FzZS4gT3IgcGVyaGFwcyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgcGxhdGZvcm0gZHJpdmVyLCBkZXNjcmliaW5nIGEgaGFyZHdhcmUgZGV2aWNlIHdpdGggc3BlY2lmaWMgcmVzb3VyY2UgcmVxdWlyZW1lbnRzLiBBcmUgd2UgaGFuZGxpbmcgaXQgdXNpbmcgU1BJPyBUaGF0JiMzOTtzIGFub3RoZXIgcG9zc2liaWxpdHkgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gY29kZSwgZm9jdXNpbmcgb24gdGhlIGRyaXZlciByZWdpc3RyYXRpb24gZnVuY3Rpb25zLCBhbmQgdGhlIGRldmljZSBwcm9iZSBmdW5jdGlvbnMsIHRvIHVuZGVyc3RhbmQgd2hpY2ggbWVjaGFuaXNtIGlzIHVsdGltYXRlbHkgZW1wbG95ZWQuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBiaW5kaW5nIG1ldGhvZC4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSYjMzk7cyBydW50aW1lIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX21kaW9fZHJpdmVyfG1kaW9fZHJpdmVyX3JlZ2lzdGVyfHBsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9xY2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBRQ0E4SyBEcml2ZXIgUHJvYmUgRnVuY3Rpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBRQ0E4SyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcHJvYmluZyBtZWNoYW5pc20uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gaG93IGl0JiMzOTtzIGRvbmUgd2l0aGluIGBkcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguY2AgYW5kIHBvdGVudGlhbGx5IGFsc28gYHFjYThrLWNvbW1vbi5jYC4gVGhlc2UgZmlsZXMgYXJlIHRoZSBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgY29udGFpbmluZyB0aGUgY29yZSBsb2dpYyBmb3IgdGhlIGluaXRpYWwgZGV2aWNlIGRldGVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlkZW50aWZpZXMgdGhlIGhhcmR3YXJlLCBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgcmVzb3VyY2VzLCBhbmQgc3RhcnRzIHRoZSBzd2l0Y2ggZnVuY3Rpb25hbGl0eS4gTG9va2luZyBhdCB0aGUgcHJvYmUgcm91dGluZSwgSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiB0aGUgc3RlcHMgdGFrZW4gdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUsIHRoZSByZWdpc3RlcnMgYmVpbmcgYWNjZXNzZWQsIGFuZCBhbnkgY2hlY2tzIGZvciBkZXZpY2UgcHJlc2VuY2Ugb3IgY29uZmlndXJhdGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbmFsIGZsb3cgYW5kIHBvc3NpYmxlIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgZGVidWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3FjYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz03ODA9c3RhdGljIGludCBhcjkzMzFfc3dfaXJxX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtNzg1LVx0aXJxX3NldF9uZXN0ZWRfdGhyZWFkKGlycSwgMSk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjc4NjpcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy03ODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0xMDI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBhcjkzMzFfc3dfYnVzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTAzMC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MTAzMTpzdGF0aWMgaW50IGFyOTMzMV9zd19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTEwMzIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MTEyOD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGFyOTMzMV9zd19tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MTEyOTpcdC5wcm9iZSA9IGFyOTMzMV9zd19wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTEzMC1cdC5yZW1vdmUgPSBhcjkzMzFfc3dfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTIwNTg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjA1OTpxY2E4a19zd19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0yMDYwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0yMDYzLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjA2NDpcdC8qIGFsbG9jYXRlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0IHNvIHRoYXQgd2UgY2FuIHByb2JlIHRoZSBzd2l0Y2hlc1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjA2NS1cdCAqIElEIHJlZ2lzdGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9MjIyMT1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHFjYThrbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzoyMjIyOlx0LnByb2JlICA9IHFjYThrX3N3X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjIyMy1cdC5yZW1vdmUgPSBxY2E4a19zd19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE1MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNRElPIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGUgYG1kaW9fZHJpdmVyYCBpcyByZWdpc3RlcmVkIGZvciBNRElPIGRldmljZXMsIHNwZWNpZmljYWxseSB0aGVzZSBRdWFsY29tbSBBdGhlcm9zIEV0aGVybmV0IHN3aXRjaGVzIOKAkyBRQ0E4MzI3LCBRQ0E4MzM0LCBhbmQgUUNBODMzNy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciBpbiBhIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIHRoaXMgZHJpdmVyIGVtdWxhdGVkLCBvciBkbyBJIG5lZWQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIHN0YXkgd2l0aGluIHRoZSBydWxlcy4KCkxldCBtZSByZWZyZXNoIG15c2VsZiB3aXRoIHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBSaWdodCwgaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBjb2RlIHRoYXTigJlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcyDigJMgbGlrZSBjb2RlIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUg4oCTIHRoZW4gaXQmIzM5O3MgYSBuby1nbyBmb3IgZnV6emluZy4gTm8gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIG5vIFNtYXJ0TklDIHN0dWZmLi4uIGFuZCB0aG9zZSBhcmUgb2Z0ZW4gdGhpbmdzIHRoYXQgZGVwZW5kIG9uIHBoeXNpY2FsIGNhcmRzLgoKU28sIGJhY2sgdG8gdGhlIFFDQThLIHN3aXRjaGVzLiBBcmUgdGhleSBkZXBlbmRlbnQgb24gcGh5c2ljYWwgaGFyZHdhcmU/IEFyZSB0aGVzZSBjaGlwcyBjb21tb25seSBmb3VuZCBvbiByb3V0ZXJzIGFuZCBlbWJlZGRlZCBzeXN0ZW1zPyBTcGVjaWZpY2FsbHksIHRoZSBRQ0E4MzM3LiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiBwcm9iZSB0aGVzZSBkZXZpY2VzIHdpdGhvdXQgdGhlaXIgcGh5c2ljYWwgY29uc3RyYWludHMuIEkgdGhpbmsgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgb3V0IHRoZSBgcWNhOGtfc3dfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA1OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDU4Olx0c3RhdGljIGludFxuMjA1OTpcdHFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbjIwNjA6XHR7XG4yMDYxOlx0XHRzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdjtcbjIwNjI6XHRcdGludCByZXQ7XG4yMDYzOlx0XG4yMDY0Olx0XHQvKiBhbGxvY2F0ZSB0aGUgcHJpdmF0ZSBkYXRhIHN0cnVjdCBzbyB0aGF0IHdlIGNhbiBwcm9iZSB0aGUgc3dpdGNoZXNcbjIwNjU6XHRcdCAqIElEIHJlZ2lzdGVyXG4yMDY2Olx0XHQgKi9cbjIwNjc6XHRcdHByaXYgPSBkZXZtX2t6YWxsb2MoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuMjA2ODpcdFx0aWYgKCFwcml2KVxuMjA2OTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjIwNzA6XHRcbjIwNzE6XHRcdHByaXYtXHUwMDNlYnVzID0gbWRpb2Rldi1cdTAwM2VidXM7XG4yMDcyOlx0XHRwcml2LVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuMjA3MzpcdFx0cHJpdi1cdTAwM2VpbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKHByaXYtXHUwMDNlZGV2KTtcbjIwNzQ6XHRcbjIwNzU6XHRcdHByaXYtXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbjIwNzY6XHRcdFx0XHRcdFx0XHQgICBHUElPRF9PVVRfSElHSCk7XG4yMDc3Olx0XHRpZiAoSVNfRVJSKHByaXYtXHUwMDNlcmVzZXRfZ3BpbykpXG4yMDc4Olx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVzZXRfZ3Bpbyk7XG4yMDc5Olx0XG4yMDgwOlx0XHRpZiAocHJpdi1cdTAwM2VyZXNldF9ncGlvKSB7XG4yMDgxOlx0XHRcdC8qIFRoZSBhY3RpdmUgbG93IGR1cmF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEwIG1zXG4yMDgyOlx0XHRcdCAqIGFuZCBjaGVja3BhdGNoLnBsIHdhbnRzIDIwIG1zLlxuMjA4MzpcdFx0XHQgKi9cbjIwODQ6XHRcdFx0bXNsZWVwKDIwKTtcbjIwODU6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4yMDg2Olx0XHR9XG4yMDg3Olx0XG4yMDg4Olx0XHQvKiBTdGFydCBieSBzZXR0aW5nIHVwIHRoZSByZWdpc3RlciBtYXBwaW5nICovXG4yMDg5Olx0XHRwcml2LVx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIE5VTEwsIHByaXYsXG4yMDkwOlx0XHRcdFx0XHRcdFx1MDAyNnFjYThrX3JlZ21hcF9jb25maWcpO1xuMjA5MTpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpIHtcbjIwOTI6XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cmVnbWFwIGluaXRpYWxpemF0aW9uIGZhaWxlZFwmIzM0Oyk7XG4yMDkzOlx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbjIwOTQ6XHRcdH1cbjIwOTU6XHRcbjIwOTY6XHRcdHByaXYtXHUwMDNlbWRpb19jYWNoZS5wYWdlID0gMHhmZmZmO1xuMjA5NzpcdFxuMjA5ODpcdFx0LyogQ2hlY2sgdGhlIGRldGVjdGVkIHN3aXRjaCBpZCAqL1xuMjA5OTpcdFx0cmV0ID0gcWNhOGtfcmVhZF9zd2l0Y2hfaWQocHJpdik7XG4yMTAwOlx0XHRpZiAocmV0KVxuMjEwMTpcdFx0XHRyZXR1cm4gcmV0O1xuMjEwMjpcdFxuMjEwMzpcdFx0cHJpdi1cdTAwM2VkcyA9IGRldm1fa3phbGxvYyhcdTAwMjZtZGlvZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpwcml2LVx1MDAzZWRzKSwgR0ZQX0tFUk5FTCk7XG4yMTA0Olx0XHRpZiAoIXByaXYtXHUwMDNlZHMpXG4yMTA1Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuMjEwNjpcdFxuMjEwNzpcdFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZW1nbXRfZXRoX2RhdGEubXV0ZXgpO1xuMjEwODpcdFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNnByaXYtXHUwMDNlbWdtdF9ldGhfZGF0YS5yd19kb25lKTtcbjIxMDk6XHRcbjIxMTA6XHRcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2VtaWJfZXRoX2RhdGEubXV0ZXgpO1xuMjExMTpcdFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNnByaXYtXHUwMDNlbWliX2V0aF9kYXRhLnJ3X2RvbmUpO1xuMjExMjpcdFxuMjExMzpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbjIxMTQ6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlbnVtX3BvcnRzID0gUUNBOEtfTlVNX1BPUlRTO1xuMjExNTpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjIxMTY6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2cWNhOGtfc3dpdGNoX29wcztcbjIxMTc6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2cWNhOGtfcGh5bGlua19tYWNfb3BzO1xuMjExODpcdFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG4yMTE5Olx0XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIHByaXYpO1xuMjEyMDpcdFxuMjEyMTpcdFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cdTAwM2Vkcyk7XG4yMTIyOlx0fVxuMjEyMzpcdFxuMjEyNDpcdHN0YXRpYyB2b2lkXG4yMTI1Olx0cWNhOGtfc3dfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbjIxMjY6XHR7XG4yMTI3Olx0XHRzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG4yMTI4Olx0XHRpbnQgaTtcbjIxMjk6XHRcbjIxMzA6XHRcdGlmICghcHJpdilcbjIxMzE6XHRcdFx0cmV0dXJuO1xuMjEzMjpcdFxuMjEzMzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUUNBOEtfTlVNX1BPUlRTOyBpJiM0MzsmIzQzOylcbjIxMzQ6XHRcdFx0cWNhOGtfcG9ydF9zZXRfc3RhdHVzKHByaXYsIGksIDApO1xuMjEzNTpcdFxuMjEzNjpcdFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuMjEzNzpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk5MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgcWNhOGtfcmVhZF9zd2l0Y2hfaWQocHJpdilgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHFjYThrYCBkcml2ZXIgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYHFjYThrX3JlYWRfc3dpdGNoX2lkKHByaXYpYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyBgcHJpdmAgbGlrZWx5IHJlZmVycyB0byB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUsIGhvbGRpbmcgY29udGV4dCBmb3IgdGhpcyBzcGVjaWZpYyBpbnN0YW5jZSBvZiB0aGUgUUNBOEsgc3dpdGNoLiBJJiMzOTttIGFzc3VtaW5nIGl0IGNvbnRhaW5zIHRoZSBuZWNlc3NhcnkgYmFzZSBhZGRyZXNzLCByZWdpc3RlciBvZmZzZXRzLCBhbmQgbWF5YmUgc29tZSBjYWNoZWQgc3RhdGUgaW5mb3JtYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaW5mb3JtYXRpb24gdGhpcyBmdW5jdGlvbiBleHRyYWN0cyBmcm9tIHRoZSBzd2l0Y2ggaXRzZWxmLCBwcmVzdW1hYmx5IGJ5IHJlYWRpbmcgc29tZSByZWdpc3RlcnMuIFRoZSAmIzM0O3N3aXRjaCBJRCYjMzQ7IGlzIHRoZSBrZXkgaGVyZS4gSXMgaXQgYSB1bmlxdWUgaWRlbnRpZmllcj8gQSBwcm9kdWN0IHJldmlzaW9uPyBQZXJoYXBzIGEgbW9kZWwgbnVtYmVyPyBJJiMzOTtsbCBiZXQgaXQmIzM5O3MgdXNlZCBmb3IgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIG9yIGZlYXR1cmUgZGV0ZWN0aW9uIGZ1cnRoZXIgZG93biB0aGUgbGluZS4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGRpZmZlcmVudCBJRHMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLi4ubGV0JiMzOTtzIHNlZSB3aGF0IHJlZ2lzdGVyIHJlYWRzIGFyZSBpbnZvbHZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cWNhOGtfcmVhZF9zd2l0Y2hfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcWNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0yMDU5PXFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0yMDk4LVx0LyogQ2hlY2sgdGhlIGRldGVjdGVkIHN3aXRjaCBpZCAqL1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjA5OTpcdHJldCA9IHFjYThrX3JlYWRfc3dpdGNoX2lkKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjEwMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uYz0xMjI0PWludCBxY2E4a19wb3J0X2xhZ19sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstY29tbW9uLmMtMTIyOS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstY29tbW9uLmM6MTIzMDppbnQgcWNhOGtfcmVhZF9zd2l0Y2hfaWQoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWNvbW1vbi5jLTEyMzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaD01MDU9dm9pZCBxY2E4a19wb3J0X3NldF9zdGF0dXMoc3RydWN0IHFjYThrX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaDo1MDY6aW50IHFjYThrX3JlYWRfc3dpdGNoX2lkKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaC01MDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MTkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBxY2E4a19yZWFkX3N3aXRjaF9pZGAuIEhlcmUmIzM5O3MgbXkgdGFrZSwgdGhpbmtpbmcgaXQgdGhyb3VnaC4uLgoKKipBbmFseXppbmcgYHFjYThrX3JlYWRfc3dpdGNoX2lkYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcWNhOGtfcmVhZF9zd2l0Y2hfaWRgIGZ1bmN0aW9uLiBGaXJzdCwgSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgUUNBOEsgZGF0YXNoZWV0IOKAkyBnb3R0YSBoYXZlIHRoYXQgYXJjaGl0ZWN0dXJhbCBjb250ZXh0IGxvY2tlZCBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uICpzaG91bGQqIGJlIGRvaW5nLiBPYnZpb3VzbHksIHRoZSBuYW1lIHN1Z2dlc3RzIGl0JiMzOTtzIHJlYWRpbmcgdGhlIGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9uIG9mIHRoZSBzd2l0Y2gsIHdoaWNoIHR5cGljYWxseSBpbmNsdWRlcyBtYW51ZmFjdHVyZXIsIG1vZGVsLCByZXZpc2lvbiwgZXRjLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBXaGF0IHJlZ2lzdGVycyBpcyBpdCBhY2Nlc3Npbmc/IFdoYXQmIzM5O3MgdGhlIGV4cGVjdGVkIGRhdGEgZm9ybWF0IGZvciB0aGUgc3dpdGNoIElEPyBJcyB0aGlzIGEgc3RyYWlnaHRmb3J3YXJkIHJlZ2lzdGVyIHJlYWQsIG9yIGRvZXMgaXQgaW52b2x2ZSBhbnkga2luZCBvZiBzZXF1ZW5jZSBvciBjb21tYW5kPyBJIG5lZWQgdG8gbG9vayBmb3IgYW55IHJlZ2lzdGVyIGFkZHJlc3MgY29uc3RhbnRzIGJlaW5nIHVzZWQgLSB0aG9zZSBhcmUgdGhlIGtleXMgdG8gdW5kZXJzdGFuZGluZyB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIEFyZSB0aGVyZSBiaXQgbWFza3MgaW52b2x2ZWQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gdGVsbCBtZSBob3cgdGhlIElEIGlzIHBhY2tlZCwgd2hpY2ggYml0cyByZXByZXNlbnQgd2hpY2ggcGllY2VzIG9mIGluZm9ybWF0aW9uLiBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gV2hhdCBhcmUgdGhlIGVycm9yIGNvZGVzIGRlZmluZWQgYW5kIGhvdyBkb2VzIGl0IGRlYWwgd2l0aCBhbnkgcmVhZCBmYWlsdXJlcz8KCkkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyBwYXJ0IG9mIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgc28gaXQmIzM5O3MgcHJvYmFibHkgY2FsbGVkIGVhcmx5IG9uLiBJdCBzZXRzIHVwIGEgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgaGFyZHdhcmUgd2UgYXJlIGFib3V0IHRvIGNvbnRyb2wuIElzIHRoZXJlIGFueSBkZXZpY2UgdHJlZSBvciBzaW1pbGFyIG1lY2hhbmlzbSB0aGF0IG1heSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24/IElmIHNvLCBpcyB0aGlzIGZ1bmN0aW9uIGp1c3QgYSBiYWNrdXAsIG9yIHZhbGlkYXRpb24/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGVycm9yIGhhbmRsaW5nIGlzIHJvYnVzdCBlbm91Z2ggdG8gcHJldmVudCBwcm9ibGVtcyBpZiB0aGUgc3dpdGNoIGRvZXMgbm90IGlkZW50aWZ5IGl0c2VsZiBjb3JyZWN0bHkuCgpPa2F5LCBJJiMzOTttIG1lbnRhbGx5IGFzc2VtYmxpbmcgdGhlIHBvc3NpYmlsaXRpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgY29kZSwgbG9va2luZyBmb3IgdGhvc2UgcmVnaXN0ZXIgYWNjZXNzZXMsIGJpdCBtYW5pcHVsYXRpb25zLCBlcnJvciBjaGVja3MsIGFuZCBwb3RlbnRpYWwgZGF0YSBwYXJzaW5nLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMzA6XHRpbnQgcWNhOGtfcmVhZF9zd2l0Y2hfaWQoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXG4xMjMxOlx0e1xuMTIzMjpcdFx0dTMyIHZhbDtcbjEyMzM6XHRcdHU4IGlkO1xuMTIzNDpcdFx0aW50IHJldDtcbjEyMzU6XHRcbjEyMzY6XHRcdGlmICghcHJpdi1cdTAwM2VpbmZvKVxuMTIzNzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjEyMzg6XHRcbjEyMzk6XHRcdHJldCA9IHFjYThrX3JlYWQocHJpdiwgUUNBOEtfUkVHX01BU0tfQ1RSTCwgXHUwMDI2dmFsKTtcbjEyNDA6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMjQxOlx0XHRcdHJldHVybiAtRU5PREVWO1xuMTI0MjpcdFxuMTI0MzpcdFx0aWQgPSBRQ0E4S19NQVNLX0NUUkxfREVWSUNFX0lEKHZhbCk7XG4xMjQ0Olx0XHRpZiAoaWQgIT0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZWlkKSB7XG4xMjQ1Olx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4xMjQ2Olx0XHRcdFx0XCYjMzQ7U3dpdGNoIGlkIGRldGVjdGVkICV4IGJ1dCBleHBlY3RlZCAleFwmIzM0OyxcbjEyNDc6XHRcdFx0XHRpZCwgcHJpdi1cdTAwM2VpbmZvLVx1MDAzZWlkKTtcbjEyNDg6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4xMjQ5Olx0XHR9XG4xMjUwOlx0XG4xMjUxOlx0XHRwcml2LVx1MDAzZXN3aXRjaF9pZCA9IGlkO1xuMTI1MjpcdFxuMTI1MzpcdFx0LyogU2F2ZSByZXZpc2lvbiB0byBjb21tdW5pY2F0ZSB0byB0aGUgaW50ZXJuYWwgUEhZIGRyaXZlciAqL1xuMTI1NDpcdFx0cHJpdi1cdTAwM2Vzd2l0Y2hfcmV2aXNpb24gPSBRQ0E4S19NQVNLX0NUUkxfUkVWX0lEKHZhbCk7XG4xMjU1Olx0XG4xMjU2Olx0XHRyZXR1cm4gMDtcbjEyNTc6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1ODgKCQkJCQkJCW91dHB1dDogMTMyCgkJCQkJCQl0aG91Z2h0czogMTQ1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgQXBwbGljYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoLCB3aGljaCB0b3VjaGVzIGBxY2E4ay04eHh4LmNgIChwYXJ0IG9mIHRoZSBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIHVuZGVyIERTQSkgaXMgdW5saWtlbHkgdG8gYmUgZnV6emFibGUuIEZpcnN0LCBsZXQmIzM5O3MgZXN0YWJsaXNoIHRoZSBjb250ZXh0OiBgcWNhOGtgIHNwZWNpZmljYWxseSByZWZlcnMgdG8gcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIChRQ0E4MzI3LCBRQ0E4MzM0LCBRQ0E4MzM3KSB0aGF0IGNvbW11bmljYXRlIHZpYSBhbiBNRElPIGJ1cywgdHlwaWNhbGx5IGNvbm5lY3RlZCB0byBhbiBTb0Mgb3IgYW4gRXRoZXJuZXQgTUFDIE1ESU8gY29udHJvbGxlci4gVGhlc2UgY2hpcHMgYXJlIGNvbmZpZ3VyZWQgdGhyb3VnaCBEZXZpY2UgVHJlZSBtYXRjaCBkYXRhLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGhhcmR3YXJlIG9yIGl0cyBNRElPIHN3aXRjaCB0b3BvbG9neSBpcyBlbXVsYXRlZCBpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgdGhlIGFuc3dlciBpcyBuby4gUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoZXNlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoZXMsIG5vciB0aGVpciBNRElPIHN3aXRjaCB0b3BvbG9naWVzLiBJdCBkZW1hbmRzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC0gcm91dGVyIGJvYXJkcyBvciBwbGF0Zm9ybXMgYnVpbHQgYXJvdW5kIFF1YWxjb21tIEF0aGVyb3MgaGFyZHdhcmUuCgpOb3csIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgY3JpdGVyaWEgdG8gY29uZmlybTogaXQgc3RhdGVzIHRoYXQgYSBwYXRjaCBzaG91bGQgYmUgZGVlbWVkIG5vdCB3b3J0aCBmdXp6aW5nIGlmIGl0JiMzOTtzIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBjaGFuZ2VzLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzL21hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoaW5jbHVkaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgdXNiIGdhZGdldCBvciBtYWM4MDIxMV9od3NpbSksIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgZGVtYW5kIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSwgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy4KClNvLCBsZXQmIzM5O3MgdmVyaWZ5IHRoYXQgdGhlIERTQS9RQ0E4SyBzd2l0Y2hlcyBhcmUgaW5kZWVkIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIFFDQThLIGlzIGFuIE1ESU8tYXR0YWNoZWQgRXRoZXJuZXQgc3dpdGNoIElDIChRQ0E4MzI3LCBRQ0E4MzM0LCBRQ0E4MzM3LCBRQ0E4MzI4KSBmb3IgZW1iZWRkZWQgc3lzdGVtcy4gU2luY2UgdGhlcmUmIzM5O3Mgbm8gaGFyZHdhcmUgZW11bGF0aW9uIGZvciB0aGVzZSBRdWFsY29tbSBRQ0E4eHh4IHN3aXRjaCBjaGlwcyAob3IgTURJTyBEU0Egc3dpdGNoIGNoaXBzKSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgaW4gYHFjYThrLTh4eHguY2AsIHNwZWNpZmljYWxseSBgcWNhOGtfcGNzX2NvbmZpZ2AsIGFyZSBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuCgpMZXQmIzM5O3MgZGlzc2VjdCB0aGUgcGF0Y2ggaXRzZWxmOiBpdCBtb2RpZmllcyBgcWNhOGtfcGNzX2NvbmZpZ2Agd2l0aGluIGBxY2E4ay04eHh4LmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBQSFkgTGluayBQQ1MgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiBvbiBRdWFsY29tbSBBdGhlcm9zIFFDQTgzMzcgc3dpdGNoIGNoaXBzLiAgVGhlIHBhdGNoIGluY2x1ZGVzIGEgY29uZGl0aW9uYWwgY2hlY2sgc3BlY2lmaWNhbGx5IGZvciBRQ0E4MzM3IGFuZCBpdHMgYFNHTUlJX0ZPUkNFX01PREVgLCB3aGljaCBjb25maXJtcyB0aGF0IHRoZSBjb2RlIGluZGVlZCBkZWFscyB3aXRoIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMuIFRoaXMgcmVxdWlyZXMgYSByZWFsIE1ESU8gc3dpdGNoIG9yIGVtYmVkZGVkIFNvQyB0byBiZSBhY3RpdmF0ZWQuCgpUaGVyZWZvcmUsIHNpbmNlIHRoZSBjb2RlIHBhdGggaW52b2x2ZXMgaGFyZHdhcmUgbm90IHByZXNlbnQgaW4gUUVNVSBvciBHQ0UsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gcmVhc29uaW5nIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBNRElPIGhhcmR3YXJlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgaW5hY2Nlc3NpYmxlIGZvciBmdXp6aW5nLiBJJiMzOTtsbCBwYXNzIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8gdGhlIGBzZXQtcmVzdWx0c2AgdG9vbDoKCiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKgoqICAgKipGb2N1c1N5bWJvbHM6IFxbIF0qKgoqICAgKipFbmFibGVDb25maWdzOiBcWyBdKioKKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChgZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNgKSwgc3BlY2lmaWNhbGx5IFBDUyBjb25maWd1cmF0aW9uIGZvciB0aGUgUUNBODMzNyBzd2l0Y2guIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ESU8gaGFyZHdhcmUgLyBlbWJlZGRlZCBTb0Mgc3dpdGNoIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjAxLjg5NTM3MTc4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MzI2NTQxMzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6MDEuODk1Mzc2ODM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI4OTQ4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNDM1NTA4YTM3ZjZmNzhkOTMwYThiN2Q2OWViODY1NGViZGM2YmY3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDE5OjMwOjAxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jIGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNcXG5pbmRleCBhMzZiOGIwNzAzMGUzLi40YzkyODk4M2I4NjIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNcXG5AQCAtMTUzOCw3ICsxNTM4LDcgQEAgc3RhdGljIGludCBxY2E4a19wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuIHtcXG4gXFx0c3RydWN0IHFjYThrX3ByaXYgKnByaXYgPSBwY3NfdG9fcWNhOGtfcGNzKHBjcyktXFx1MDAzZXByaXY7XFxuIFxcdGludCBjcHVfcG9ydF9pbmRleCwgcmV0LCBwb3J0O1xcbi1cXHR1MzIgcmVnLCB2YWw7XFxuK1xcdHUzMiBtYXNrLCByZWcsIHZhbDtcXG4gXFxuIFxcdHBvcnQgPSBwY3NfdG9fcWNhOGtfcGNzKHBjcyktXFx1MDAzZXBvcnQ7XFxuIFxcdHN3aXRjaCAocG9ydCkge1xcbkBAIC0xNjExLDExICsxNjExLDIxIEBAIHN0YXRpYyBpbnQgcWNhOGtfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbiBcXHRpZiAocHJpdi1cXHUwMDNlcG9ydHNfY29uZmlnLnNnbWlpX3R4X2Nsa19mYWxsaW5nX2VkZ2UpXFxuIFxcdFxcdHZhbCB8PSBRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFO1xcbiBcXG4tXFx0aWYgKHZhbClcXG4tXFx0XFx0cmV0ID0gcWNhOGtfcm13KHByaXYsIHJlZyxcXG4tXFx0XFx0XFx0XFx0UUNBOEtfUE9SVDBfUEFEX1NHTUlJX1JYQ0xLX0ZBTExJTkdfRURHRSB8XFxuLVxcdFxcdFxcdFxcdFFDQThLX1BPUlQwX1BBRF9TR01JSV9UWENMS19GQUxMSU5HX0VER0UsXFxuLVxcdFxcdFxcdFxcdHZhbCk7XFxuK1xcdG1hc2sgPSAodmFsKSA/IChRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHxcXG4rXFx0XFx0XFx0UUNBOEtfUE9SVDBfUEFEX1NHTUlJX1RYQ0xLX0ZBTExJTkdfRURHRSkgOiAwO1xcbitcXG4rXFx0LypcXG4rXFx0ICogKFVuKXNldCBmb3JjZSBtb2RlIG9uIFFDQTgzMzcgb25seSwgZG9uJ3QgaW5jbHVkZSBpdCBpbiB0aGUgbWFzayBmb3JcXG4rXFx0ICogb3RoZXJzLiBJdCBpcyB3cml0dGVuIHRvIHRoZSBQT1JUMCBQQUQgcmVnaXN0ZXIgZm9yIGJvdGggcG9ydCAwIGFuZCA2LlxcbitcXHQgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZXN3aXRjaF9pZCA9PSBRQ0E4S19JRF9RQ0E4MzM3KSB7XFxuK1xcdFxcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfT1VUQkFORClcXG4rXFx0XFx0XFx0dmFsIHw9IFFDQThLX1BPUlRfUEFEX1NHTUlJX0ZPUkNFX01PREU7XFxuK1xcdFxcdG1hc2sgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKG1hc2spXFxuK1xcdFxcdHJldCA9IHFjYThrX3Jtdyhwcml2LCByZWcsIG1hc2ssIHZhbCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmggYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcXG5pbmRleCBkMDQ2Njc5MjY1ZmE0Li5lZDhmMGI0OTgxMmM0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaFxcbkBAIC01OCw2ICs1OCw3IEBAXFxuICNkZWZpbmVcXHQgIFFDQThLX1BPUlRfUEFEX1JHTUlJX1RYX0RFTEFZX0VOXFx0XFx0QklUKDI1KVxcbiAjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfUkdNSUlfUlhfREVMQVlfRU5cXHRcXHRCSVQoMjQpXFxuICNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9FTlxcdFxcdFxcdEJJVCg3KVxcbisjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERVxcdFxcdEJJVCgzKVxcbiAjZGVmaW5lIFFDQThLX1JFR19QV1NcXHRcXHRcXHRcXHRcXHQweDAxMFxcbiAjZGVmaW5lICAgUUNBOEtfUFdTX1BPV0VSX09OX1NFTFxcdFxcdFxcdEJJVCgzMSlcXG4gLyogVGhpcyByZWcgaXMgb25seSB2YWxpZCBmb3IgUUNBODMyeCBhbmQgdG9nZ2xlIHRoZSBwYWNrYWdlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjAyLjMxODk1NDU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo4MzkwMjk0Mzg2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTQzNTUwOGEzN2Y2Zjc4ZDkzMGE4YjdkNjllYjg2NTRlYmRjNmJmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDE5OjMwOjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMgYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguY1xuaW5kZXggYTM2YjhiMDcwMzBlMy4uNGM5Mjg5ODNiODYyMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguY1xuQEAgLTE1MzgsNyArMTUzOCw3IEBAIHN0YXRpYyBpbnQgcWNhOGtfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIHtcbiBcdHN0cnVjdCBxY2E4a19wcml2ICpwcml2ID0gcGNzX3RvX3FjYThrX3BjcyhwY3MpLVx1MDAzZXByaXY7XG4gXHRpbnQgY3B1X3BvcnRfaW5kZXgsIHJldCwgcG9ydDtcbi1cdHUzMiByZWcsIHZhbDtcbitcdHUzMiBtYXNrLCByZWcsIHZhbDtcbiBcbiBcdHBvcnQgPSBwY3NfdG9fcWNhOGtfcGNzKHBjcyktXHUwMDNlcG9ydDtcbiBcdHN3aXRjaCAocG9ydCkge1xuQEAgLTE2MTEsMTEgKzE2MTEsMjEgQEAgc3RhdGljIGludCBxY2E4a19wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4gXHRpZiAocHJpdi1cdTAwM2Vwb3J0c19jb25maWcuc2dtaWlfdHhfY2xrX2ZhbGxpbmdfZWRnZSlcbiBcdFx0dmFsIHw9IFFDQThLX1BPUlQwX1BBRF9TR01JSV9UWENMS19GQUxMSU5HX0VER0U7XG4gXG4tXHRpZiAodmFsKVxuLVx0XHRyZXQgPSBxY2E4a19ybXcocHJpdiwgcmVnLFxuLVx0XHRcdFx0UUNBOEtfUE9SVDBfUEFEX1NHTUlJX1JYQ0xLX0ZBTExJTkdfRURHRSB8XG4tXHRcdFx0XHRRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFLFxuLVx0XHRcdFx0dmFsKTtcbitcdG1hc2sgPSAodmFsKSA/IChRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHxcbitcdFx0XHRRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFKSA6IDA7XG4rXG4rXHQvKlxuK1x0ICogKFVuKXNldCBmb3JjZSBtb2RlIG9uIFFDQTgzMzcgb25seSwgZG9uJ3QgaW5jbHVkZSBpdCBpbiB0aGUgbWFzayBmb3JcbitcdCAqIG90aGVycy4gSXQgaXMgd3JpdHRlbiB0byB0aGUgUE9SVDAgUEFEIHJlZ2lzdGVyIGZvciBib3RoIHBvcnQgMCBhbmQgNi5cbitcdCAqL1xuK1x0aWYgKHByaXYtXHUwMDNlc3dpdGNoX2lkID09IFFDQThLX0lEX1FDQTgzMzcpIHtcbitcdFx0aWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19PVVRCQU5EKVxuK1x0XHRcdHZhbCB8PSBRQ0E4S19QT1JUX1BBRF9TR01JSV9GT1JDRV9NT0RFO1xuK1x0XHRtYXNrIHw9IFFDQThLX1BPUlRfUEFEX1NHTUlJX0ZPUkNFX01PREU7XG4rXHR9XG4rXG4rXHRpZiAobWFzaylcbitcdFx0cmV0ID0gcWNhOGtfcm13KHByaXYsIHJlZywgbWFzaywgdmFsKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmggYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcbmluZGV4IGQwNDY2NzkyNjVmYTQuLmVkOGYwYjQ5ODEyYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaFxuQEAgLTU4LDYgKzU4LDcgQEBcbiAjZGVmaW5lXHQgIFFDQThLX1BPUlRfUEFEX1JHTUlJX1RYX0RFTEFZX0VOXHRcdEJJVCgyNSlcbiAjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfUkdNSUlfUlhfREVMQVlfRU5cdFx0QklUKDI0KVxuICNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9FTlx0XHRcdEJJVCg3KVxuKyNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9GT1JDRV9NT0RFXHRcdEJJVCgzKVxuICNkZWZpbmUgUUNBOEtfUkVHX1BXU1x0XHRcdFx0XHQweDAxMFxuICNkZWZpbmUgICBRQ0E4S19QV1NfUE9XRVJfT05fU0VMXHRcdFx0QklUKDMxKVxuIC8qIFRoaXMgcmVnIGlzIG9ubHkgdmFsaWQgZm9yIFFDQTgzMnggYW5kIHRvZ2dsZSB0aGUgcGFja2FnZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6MDIuMzE4OTU1OTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDAxMzE3NjgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gcGlucG9pbnQgZXhhY3RseSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggdG91Y2hlcyBgZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNgIGFuZCBgZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay5oYC4gQWgsIHRoYXQgcmluZ3MgYSBiZWxsISBUaGlzIGlzIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIsIHBhcnQgb2YgdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUg4oCTIERTQS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaW1wbGljYXRpb25zLiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0J3MgbGlrZWx5IHByZXNlbnQgaW4gYSB2YXJpZXR5IG9mIHN5c3RlbXMgSSBtaWdodCBlbmNvdW50ZXIsIG9yIGlzIGl0IGEgbW9yZSBzcGVjaWFsaXplZCBwaWVjZSBvZiBlcXVpcG1lbnQ/IEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyB1bmRlciBgZHJpdmVycy9uZXQvZHNhL3FjYS9gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNsdWVzIGFib3V0IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgYWxzbyBkbyBhIHF1aWNrIGdyZXAgZm9yIFwicWNhOGtcIiB0aHJvdWdob3V0IHRoZSBrZXJuZWwgdHJlZSBqdXN0IHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSBvZiB3aGVyZSB0aGlzIGRyaXZlciBtaWdodCBiZSB1c2VkIGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgbWlnaHQgaW50ZXJhY3Qgd2l0aCBpdC4gS25vd2xlZGdlIGlzIHBvd2VyLCBhbmQga25vd2luZyB0aGUgaGFyZHdhcmUgY29udGV4dCBpcyBjcnVjaWFsIGJlZm9yZSBJIGNhbiBtYWtlIGEganVkZ2VtZW50IG9uIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjEyLjMzMjEzNDUzOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwODU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfRFNBX1FDQThLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnPTI9Y29uZmlnIE5FVF9EU0FfQVI5MzMxXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX1FDQThLXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEyLVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWc6MTk6Y29uZmlnIE5FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTIwLVxcdGJvb2wgXFxcIlF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBMRURzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjIxOlxcdGRlcGVuZHMgb24gTkVUX0RTQV9RQ0E4S1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoyMjpcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUUNBOEtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMjMtXFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX05FVF9EU0FfQVI5MzMxKVxcdCs9IGFyOTMzMS5vXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19ORVRfRFNBX1FDQThLKVxcdCs9IHFjYThrLm9cXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlLTQtcWNhOGsteSBcXHRcXHRcXHQrPSBxY2E4ay1jb21tb24ubyBxY2E4ay04eHh4Lm9cXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlOjU6aWZkZWYgQ09ORklHX05FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9NYWtlZmlsZS02LXFjYThrLXlcXHRcXHRcXHRcXHQrPSBxY2E4ay1sZWRzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGtfbGVkcy5oLTYtLyogTGVkcyBTdXBwb3J0IGZ1bmN0aW9uICovXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4a19sZWRzLmg6NzojaWZkZWYgQ09ORklHX05FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4a19sZWRzLmgtOC1pbnQgcWNhOGtfc2V0dXBfbGVkX2N0cmwoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozMDoxMi4zNzc2NDU1NTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NjM4OTgyMjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYHFjYThrYCBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgcWNhOGtgIGRyaXZlciB0byB1bmRlcnN0YW5kIGl0cyBpbml0aWFsaXphdGlvbiBmbG93LiBNeSBmaXJzdCBwcmlvcml0eSBpcyB0byBwaW4gZG93biAqaG93KiB0aGlzIHRoaW5nIGdldHMgcmVnaXN0ZXJlZC4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgdHlwaWNhbCByb3V0ZXMuIElzIGl0IGFuIE1ESU8gZHJpdmVyPyBUaGF0IHdvdWxkIG1ha2Ugc2Vuc2UgZ2l2ZW4gdGhlIGNvbW1vbiB1c2UgY2FzZS4gT3IgcGVyaGFwcyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgcGxhdGZvcm0gZHJpdmVyLCBkZXNjcmliaW5nIGEgaGFyZHdhcmUgZGV2aWNlIHdpdGggc3BlY2lmaWMgcmVzb3VyY2UgcmVxdWlyZW1lbnRzLiBBcmUgd2UgaGFuZGxpbmcgaXQgdXNpbmcgU1BJPyBUaGF0J3MgYW5vdGhlciBwb3NzaWJpbGl0eSBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGluaXRpYWxpemF0aW9uIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBkcml2ZXIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucywgYW5kIHRoZSBkZXZpY2UgcHJvYmUgZnVuY3Rpb25zLCB0byB1bmRlcnN0YW5kIHdoaWNoIG1lY2hhbmlzbSBpcyB1bHRpbWF0ZWx5IGVtcGxveWVkLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgYmluZGluZyBtZXRob2QuIFRoYXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSdzIHJ1bnRpbWUgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozMDoyMC4wMTY2Mjk3MzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNTIxODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9tZGlvX2RyaXZlcnxtZGlvX2RyaXZlcl9yZWdpc3RlcnxwbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3FjYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjIwLjA2MTg5MDE1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNjc1NjQ5OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUUNBOEsgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBRQ0E4SyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcHJvYmluZyBtZWNoYW5pc20uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gaG93IGl0J3MgZG9uZSB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jYCBhbmQgcG90ZW50aWFsbHkgYWxzbyBgcWNhOGstY29tbW9uLmNgLiBUaGVzZSBmaWxlcyBhcmUgdGhlIGxpa2VseSBjYW5kaWRhdGVzIGZvciBjb250YWluaW5nIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgaW5pdGlhbCBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaWRlbnRpZmllcyB0aGUgaGFyZHdhcmUsIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSByZXNvdXJjZXMsIGFuZCBzdGFydHMgdGhlIHN3aXRjaCBmdW5jdGlvbmFsaXR5LiBMb29raW5nIGF0IHRoZSBwcm9iZSByb3V0aW5lLCBJJ2xsIGJlIGZvY3VzZWQgb24gdGhlIHN0ZXBzIHRha2VuIHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgcmVnaXN0ZXJzIGJlaW5nIGFjY2Vzc2VkLCBhbmQgYW55IGNoZWNrcyBmb3IgZGV2aWNlIHByZXNlbmNlIG9yIGNvbmZpZ3VyYXRpb24uIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlcidzIG9wZXJhdGlvbmFsIGZsb3cgYW5kIHBvc3NpYmxlIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTQzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6MjYuMjI5NDU3MzkzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODU5ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9xY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9NzgwPXN0YXRpYyBpbnQgYXI5MzMxX3N3X2lycV9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtNzg1LVxcdGlycV9zZXRfbmVzdGVkX3RocmVhZChpcnEsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6Nzg2OlxcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtNzg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0xMDI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBhcjkzMzFfc3dfYnVzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0xMDMwLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MTAzMTpzdGF0aWMgaW50IGFyOTMzMV9zd19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0xMDMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MTEyOD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGFyOTMzMV9zd19tZGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjExMjk6XFx0LnByb2JlID0gYXI5MzMxX3N3X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTEzMC1cXHQucmVtb3ZlID0gYXI5MzMxX3N3X3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTIwNTg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjIwNTk6cWNhOGtfc3dfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIwNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjA2My1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzoyMDY0OlxcdC8qIGFsbG9jYXRlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0IHNvIHRoYXQgd2UgY2FuIHByb2JlIHRoZSBzd2l0Y2hlc1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIwNjUtXFx0ICogSUQgcmVnaXN0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTIyMjE9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBxY2E4a21kaW9fZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjIyMjI6XFx0LnByb2JlICA9IHFjYThrX3N3X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIyMjMtXFx0LnJlbW92ZSA9IHFjYThrX3N3X3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6MjYuMjcyMzIxNjQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTA4MjQ0MTY3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTURJTyBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoZSBgbWRpb19kcml2ZXJgIGlzIHJlZ2lzdGVyZWQgZm9yIE1ESU8gZGV2aWNlcywgc3BlY2lmaWNhbGx5IHRoZXNlIFF1YWxjb21tIEF0aGVyb3MgRXRoZXJuZXQgc3dpdGNoZXMg4oCTIFFDQTgzMjcsIFFDQTgzMzQsIGFuZCBRQ0E4MzM3LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgZHJpdmVyIGluIGEgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhpcyBkcml2ZXIgZW11bGF0ZWQsIG9yIGRvIEkgbmVlZCB0aGUgYWN0dWFsIGhhcmR3YXJlPyBJIG5lZWQgdG8gc3RheSB3aXRoaW4gdGhlIHJ1bGVzLlxuXG5MZXQgbWUgcmVmcmVzaCBteXNlbGYgd2l0aCB0aGUgXCJXb3J0aEZ1enppbmdcIiBjcml0ZXJpYS4gUmlnaHQsIGlmIHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgY29kZSB0aGF04oCZcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMg4oCTIGxpa2UgY29kZSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIOKAkyB0aGVuIGl0J3MgYSBuby1nbyBmb3IgZnV6emluZy4gTm8gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIG5vIFNtYXJ0TklDIHN0dWZmLi4uIGFuZCB0aG9zZSBhcmUgb2Z0ZW4gdGhpbmdzIHRoYXQgZGVwZW5kIG9uIHBoeXNpY2FsIGNhcmRzLlxuXG5TbywgYmFjayB0byB0aGUgUUNBOEsgc3dpdGNoZXMuIEFyZSB0aGV5IGRlcGVuZGVudCBvbiBwaHlzaWNhbCBoYXJkd2FyZT8gQXJlIHRoZXNlIGNoaXBzIGNvbW1vbmx5IGZvdW5kIG9uIHJvdXRlcnMgYW5kIGVtYmVkZGVkIHN5c3RlbXM/IFNwZWNpZmljYWxseSwgdGhlIFFDQTgzMzcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIHByb2JlIHRoZXNlIGRldmljZXMgd2l0aG91dCB0aGVpciBwaHlzaWNhbCBjb25zdHJhaW50cy4gSSB0aGluayBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIG91dCB0aGUgYHFjYThrX3N3X3Byb2JlYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTUzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjM3LjA5Njc0MTM1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjA1OCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjA1ODpcXHRzdGF0aWMgaW50XFxuMjA1OTpcXHRxY2E4a19zd19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuMjA2MDpcXHR7XFxuMjA2MTpcXHRcXHRzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdjtcXG4yMDYyOlxcdFxcdGludCByZXQ7XFxuMjA2MzpcXHRcXG4yMDY0OlxcdFxcdC8qIGFsbG9jYXRlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0IHNvIHRoYXQgd2UgY2FuIHByb2JlIHRoZSBzd2l0Y2hlc1xcbjIwNjU6XFx0XFx0ICogSUQgcmVnaXN0ZXJcXG4yMDY2OlxcdFxcdCAqL1xcbjIwNjc6XFx0XFx0cHJpdiA9IGRldm1fa3phbGxvYyhcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4yMDY4OlxcdFxcdGlmICghcHJpdilcXG4yMDY5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjIwNzA6XFx0XFxuMjA3MTpcXHRcXHRwcml2LVxcdTAwM2VidXMgPSBtZGlvZGV2LVxcdTAwM2VidXM7XFxuMjA3MjpcXHRcXHRwcml2LVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbjIwNzM6XFx0XFx0cHJpdi1cXHUwMDNlaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShwcml2LVxcdTAwM2VkZXYpO1xcbjIwNzQ6XFx0XFxuMjA3NTpcXHRcXHRwcml2LVxcdTAwM2VyZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwocHJpdi1cXHUwMDNlZGV2LCBcXFwicmVzZXRcXFwiLFxcbjIwNzY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgR1BJT0RfT1VUX0hJR0gpO1xcbjIwNzc6XFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VyZXNldF9ncGlvKSlcXG4yMDc4OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8pO1xcbjIwNzk6XFx0XFxuMjA4MDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcmVzZXRfZ3Bpbykge1xcbjIwODE6XFx0XFx0XFx0LyogVGhlIGFjdGl2ZSBsb3cgZHVyYXRpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gMTAgbXNcXG4yMDgyOlxcdFxcdFxcdCAqIGFuZCBjaGVja3BhdGNoLnBsIHdhbnRzIDIwIG1zLlxcbjIwODM6XFx0XFx0XFx0ICovXFxuMjA4NDpcXHRcXHRcXHRtc2xlZXAoMjApO1xcbjIwODU6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8sIDApO1xcbjIwODY6XFx0XFx0fVxcbjIwODc6XFx0XFxuMjA4ODpcXHRcXHQvKiBTdGFydCBieSBzZXR0aW5nIHVwIHRoZSByZWdpc3RlciBtYXBwaW5nICovXFxuMjA4OTpcXHRcXHRwcml2LVxcdTAwM2VyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0KFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIE5VTEwsIHByaXYsXFxuMjA5MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2cWNhOGtfcmVnbWFwX2NvbmZpZyk7XFxuMjA5MTpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZXJlZ21hcCkpIHtcXG4yMDkyOlxcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicmVnbWFwIGluaXRpYWxpemF0aW9uIGZhaWxlZFxcXCIpO1xcbjIwOTM6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cXHUwMDNlcmVnbWFwKTtcXG4yMDk0OlxcdFxcdH1cXG4yMDk1OlxcdFxcbjIwOTY6XFx0XFx0cHJpdi1cXHUwMDNlbWRpb19jYWNoZS5wYWdlID0gMHhmZmZmO1xcbjIwOTc6XFx0XFxuMjA5ODpcXHRcXHQvKiBDaGVjayB0aGUgZGV0ZWN0ZWQgc3dpdGNoIGlkICovXFxuMjA5OTpcXHRcXHRyZXQgPSBxY2E4a19yZWFkX3N3aXRjaF9pZChwcml2KTtcXG4yMTAwOlxcdFxcdGlmIChyZXQpXFxuMjEwMTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIxMDI6XFx0XFxuMjEwMzpcXHRcXHRwcml2LVxcdTAwM2VkcyA9IGRldm1fa3phbGxvYyhcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBzaXplb2YoKnByaXYtXFx1MDAzZWRzKSwgR0ZQX0tFUk5FTCk7XFxuMjEwNDpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWRzKVxcbjIxMDU6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMjEwNjpcXHRcXG4yMTA3OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZW1nbXRfZXRoX2RhdGEubXV0ZXgpO1xcbjIxMDg6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZwcml2LVxcdTAwM2VtZ210X2V0aF9kYXRhLnJ3X2RvbmUpO1xcbjIxMDk6XFx0XFxuMjExMDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VtaWJfZXRoX2RhdGEubXV0ZXgpO1xcbjIxMTE6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZwcml2LVxcdTAwM2VtaWJfZXRoX2RhdGEucndfZG9uZSk7XFxuMjExMjpcXHRcXG4yMTEzOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbjIxMTQ6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZW51bV9wb3J0cyA9IFFDQThLX05VTV9QT1JUUztcXG4yMTE1OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4yMTE2OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2cWNhOGtfc3dpdGNoX29wcztcXG4yMTE3OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2cWNhOGtfcGh5bGlua19tYWNfb3BzO1xcbjIxMTg6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX211dGV4KTtcXG4yMTE5OlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBwcml2KTtcXG4yMTIwOlxcdFxcbjIxMjE6XFx0XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbjIxMjI6XFx0fVxcbjIxMjM6XFx0XFxuMjEyNDpcXHRzdGF0aWMgdm9pZFxcbjIxMjU6XFx0cWNhOGtfc3dfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4yMTI2OlxcdHtcXG4yMTI3OlxcdFxcdHN0cnVjdCBxY2E4a19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbjIxMjg6XFx0XFx0aW50IGk7XFxuMjEyOTpcXHRcXG4yMTMwOlxcdFxcdGlmICghcHJpdilcXG4yMTMxOlxcdFxcdFxcdHJldHVybjtcXG4yMTMyOlxcdFxcbjIxMzM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFFDQThLX05VTV9QT1JUUzsgaSsrKVxcbjIxMzQ6XFx0XFx0XFx0cWNhOGtfcG9ydF9zZXRfc3RhdHVzKHByaXYsIGksIDApO1xcbjIxMzU6XFx0XFxuMjEzNjpcXHRcXHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbjIxMzc6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozMDozNy4wOTY4NjgzNjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzE0NTMyODc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBxY2E4a19yZWFkX3N3aXRjaF9pZChwcml2KWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHFjYThrYCBkcml2ZXIgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYHFjYThrX3JlYWRfc3dpdGNoX2lkKHByaXYpYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyBgcHJpdmAgbGlrZWx5IHJlZmVycyB0byB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSwgaG9sZGluZyBjb250ZXh0IGZvciB0aGlzIHNwZWNpZmljIGluc3RhbmNlIG9mIHRoZSBRQ0E4SyBzd2l0Y2guIEknbSBhc3N1bWluZyBpdCBjb250YWlucyB0aGUgbmVjZXNzYXJ5IGJhc2UgYWRkcmVzcywgcmVnaXN0ZXIgb2Zmc2V0cywgYW5kIG1heWJlIHNvbWUgY2FjaGVkIHN0YXRlIGluZm9ybWF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGluZm9ybWF0aW9uIHRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgZnJvbSB0aGUgc3dpdGNoIGl0c2VsZiwgcHJlc3VtYWJseSBieSByZWFkaW5nIHNvbWUgcmVnaXN0ZXJzLiBUaGUgXCJzd2l0Y2ggSURcIiBpcyB0aGUga2V5IGhlcmUuIElzIGl0IGEgdW5pcXVlIGlkZW50aWZpZXI/IEEgcHJvZHVjdCByZXZpc2lvbj8gUGVyaGFwcyBhIG1vZGVsIG51bWJlcj8gSSdsbCBiZXQgaXQncyB1c2VkIGZvciBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gb3IgZmVhdHVyZSBkZXRlY3Rpb24gZnVydGhlciBkb3duIHRoZSBsaW5lLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaWZmZXJlbnQgSURzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4uLmxldCdzIHNlZSB3aGF0IHJlZ2lzdGVyIHJlYWRzIGFyZSBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk5MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6NDAuMjQyMjAwNDQzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzEyNDM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxY2E4a19yZWFkX3N3aXRjaF9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcWNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0yMDU5PXFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIwOTgtXFx0LyogQ2hlY2sgdGhlIGRldGVjdGVkIHN3aXRjaCBpZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjIwOTk6XFx0cmV0ID0gcWNhOGtfcmVhZF9zd2l0Y2hfaWQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjEwMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uYz0xMjI0PWludCBxY2E4a19wb3J0X2xhZ19sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uYy0xMjI5LVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstY29tbW9uLmM6MTIzMDppbnQgcWNhOGtfcmVhZF9zd2l0Y2hfaWQoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uYy0xMjMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaD01MDU9dm9pZCBxY2E4a19wb3J0X3NldF9zdGF0dXMoc3RydWN0IHFjYThrX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmg6NTA2OmludCBxY2E4a19yZWFkX3N3aXRjaF9pZChzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay5oLTUwNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6NDAuMjg1MzMxNDcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NDM1ODY1Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgcWNhOGtfcmVhZF9zd2l0Y2hfaWRgLiBIZXJlJ3MgbXkgdGFrZSwgdGhpbmtpbmcgaXQgdGhyb3VnaC4uLlxuXG4qKkFuYWx5emluZyBgcWNhOGtfcmVhZF9zd2l0Y2hfaWRgKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcWNhOGtfcmVhZF9zd2l0Y2hfaWRgIGZ1bmN0aW9uLiBGaXJzdCwgSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBRQ0E4SyBkYXRhc2hlZXQg4oCTIGdvdHRhIGhhdmUgdGhhdCBhcmNoaXRlY3R1cmFsIGNvbnRleHQgbG9ja2VkIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gKnNob3VsZCogYmUgZG9pbmcuIE9idmlvdXNseSwgdGhlIG5hbWUgc3VnZ2VzdHMgaXQncyByZWFkaW5nIHRoZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBvZiB0aGUgc3dpdGNoLCB3aGljaCB0eXBpY2FsbHkgaW5jbHVkZXMgbWFudWZhY3R1cmVyLCBtb2RlbCwgcmV2aXNpb24sIGV0Yy4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IFdoYXQgcmVnaXN0ZXJzIGlzIGl0IGFjY2Vzc2luZz8gV2hhdCdzIHRoZSBleHBlY3RlZCBkYXRhIGZvcm1hdCBmb3IgdGhlIHN3aXRjaCBJRD8gSXMgdGhpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWdpc3RlciByZWFkLCBvciBkb2VzIGl0IGludm9sdmUgYW55IGtpbmQgb2Ygc2VxdWVuY2Ugb3IgY29tbWFuZD8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSByZWdpc3RlciBhZGRyZXNzIGNvbnN0YW50cyBiZWluZyB1c2VkIC0gdGhvc2UgYXJlIHRoZSBrZXlzIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGhhcmR3YXJlIGludGVyYWN0aW9uLiBBcmUgdGhlcmUgYml0IG1hc2tzIGludm9sdmVkPyBUaGF0J3MgZ29pbmcgdG8gdGVsbCBtZSBob3cgdGhlIElEIGlzIHBhY2tlZCwgd2hpY2ggYml0cyByZXByZXNlbnQgd2hpY2ggcGllY2VzIG9mIGluZm9ybWF0aW9uLiBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gV2hhdCBhcmUgdGhlIGVycm9yIGNvZGVzIGRlZmluZWQgYW5kIGhvdyBkb2VzIGl0IGRlYWwgd2l0aCBhbnkgcmVhZCBmYWlsdXJlcz9cblxuSSdtIGFzc3VtaW5nIHRoaXMgaXMgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNvIGl0J3MgcHJvYmFibHkgY2FsbGVkIGVhcmx5IG9uLiBJdCBzZXRzIHVwIGEgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgaGFyZHdhcmUgd2UgYXJlIGFib3V0IHRvIGNvbnRyb2wuIElzIHRoZXJlIGFueSBkZXZpY2UgdHJlZSBvciBzaW1pbGFyIG1lY2hhbmlzbSB0aGF0IG1heSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24/IElmIHNvLCBpcyB0aGlzIGZ1bmN0aW9uIGp1c3QgYSBiYWNrdXAsIG9yIHZhbGlkYXRpb24/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgZXJyb3IgaGFuZGxpbmcgaXMgcm9idXN0IGVub3VnaCB0byBwcmV2ZW50IHByb2JsZW1zIGlmIHRoZSBzd2l0Y2ggZG9lcyBub3QgaWRlbnRpZnkgaXRzZWxmIGNvcnJlY3RseS5cblxuT2theSwgSSdtIG1lbnRhbGx5IGFzc2VtYmxpbmcgdGhlIHBvc3NpYmlsaXRpZXMuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBsb29raW5nIGZvciB0aG9zZSByZWdpc3RlciBhY2Nlc3NlcywgYml0IG1hbmlwdWxhdGlvbnMsIGVycm9yIGNoZWNrcywgYW5kIHBvdGVudGlhbCBkYXRhIHBhcnNpbmcuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcxOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMxOjA1LjcyMTE5OTcwOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjMwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjMwOlxcdGludCBxY2E4a19yZWFkX3N3aXRjaF9pZChzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4xMjMxOlxcdHtcXG4xMjMyOlxcdFxcdHUzMiB2YWw7XFxuMTIzMzpcXHRcXHR1OCBpZDtcXG4xMjM0OlxcdFxcdGludCByZXQ7XFxuMTIzNTpcXHRcXG4xMjM2OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlaW5mbylcXG4xMjM3OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjEyMzg6XFx0XFxuMTIzOTpcXHRcXHRyZXQgPSBxY2E4a19yZWFkKHByaXYsIFFDQThLX1JFR19NQVNLX0NUUkwsIFxcdTAwMjZ2YWwpO1xcbjEyNDA6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTI0MTpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4xMjQyOlxcdFxcbjEyNDM6XFx0XFx0aWQgPSBRQ0E4S19NQVNLX0NUUkxfREVWSUNFX0lEKHZhbCk7XFxuMTI0NDpcXHRcXHRpZiAoaWQgIT0gcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlaWQpIHtcXG4xMjQ1OlxcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LFxcbjEyNDY6XFx0XFx0XFx0XFx0XFxcIlN3aXRjaCBpZCBkZXRlY3RlZCAleCBidXQgZXhwZWN0ZWQgJXhcXFwiLFxcbjEyNDc6XFx0XFx0XFx0XFx0aWQsIHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZWlkKTtcXG4xMjQ4OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjEyNDk6XFx0XFx0fVxcbjEyNTA6XFx0XFxuMTI1MTpcXHRcXHRwcml2LVxcdTAwM2Vzd2l0Y2hfaWQgPSBpZDtcXG4xMjUyOlxcdFxcbjEyNTM6XFx0XFx0LyogU2F2ZSByZXZpc2lvbiB0byBjb21tdW5pY2F0ZSB0byB0aGUgaW50ZXJuYWwgUEhZIGRyaXZlciAqL1xcbjEyNTQ6XFx0XFx0cHJpdi1cXHUwMDNlc3dpdGNoX3JldmlzaW9uID0gUUNBOEtfTUFTS19DVFJMX1JFVl9JRCh2YWwpO1xcbjEyNTU6XFx0XFxuMTI1NjpcXHRcXHRyZXR1cm4gMDtcXG4xMjU3OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzE6MDUuNzIxMzE0NTk5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNTAwNTUzMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBmb3IgRnV6emluZyBBcHBsaWNhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoLCB3aGljaCB0b3VjaGVzIGBxY2E4ay04eHh4LmNgIChwYXJ0IG9mIHRoZSBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIHVuZGVyIERTQSkgaXMgdW5saWtlbHkgdG8gYmUgZnV6emFibGUuIEZpcnN0LCBsZXQncyBlc3RhYmxpc2ggdGhlIGNvbnRleHQ6IGBxY2E4a2Agc3BlY2lmaWNhbGx5IHJlZmVycyB0byBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMgKFFDQTgzMjcsIFFDQTgzMzQsIFFDQTgzMzcpIHRoYXQgY29tbXVuaWNhdGUgdmlhIGFuIE1ESU8gYnVzLCB0eXBpY2FsbHkgY29ubmVjdGVkIHRvIGFuIFNvQyBvciBhbiBFdGhlcm5ldCBNQUMgTURJTyBjb250cm9sbGVyLiBUaGVzZSBjaGlwcyBhcmUgY29uZmlndXJlZCB0aHJvdWdoIERldmljZSBUcmVlIG1hdGNoIGRhdGEuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgb3IgaXRzIE1ESU8gc3dpdGNoIHRvcG9sb2d5IGlzIGVtdWxhdGVkIGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLiBBbmQsIGFzIEkgc3VzcGVjdGVkLCB0aGUgYW5zd2VyIGlzIG5vLiBRRU1VIGRvZXMgbm90IGVtdWxhdGUgdGhlc2UgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2hlcywgbm9yIHRoZWlyIE1ESU8gc3dpdGNoIHRvcG9sb2dpZXMuIEl0IGRlbWFuZHMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLSByb3V0ZXIgYm9hcmRzIG9yIHBsYXRmb3JtcyBidWlsdCBhcm91bmQgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS5cblxuTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBcIldvcnRoRnV6emluZ1wiIGNyaXRlcmlhIHRvIGNvbmZpcm06IGl0IHN0YXRlcyB0aGF0IGEgcGF0Y2ggc2hvdWxkIGJlIGRlZW1lZCBub3Qgd29ydGggZnV6emluZyBpZiBpdCdzIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBjaGFuZ2VzLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzL21hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoaW5jbHVkaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgdXNiIGdhZGdldCBvciBtYWM4MDIxMV9od3NpbSksIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgZGVtYW5kIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSwgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy5cblxuU28sIGxldCdzIHZlcmlmeSB0aGF0IHRoZSBEU0EvUUNBOEsgc3dpdGNoZXMgYXJlIGluZGVlZCB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBRQ0E4SyBpcyBhbiBNRElPLWF0dGFjaGVkIEV0aGVybmV0IHN3aXRjaCBJQyAoUUNBODMyNywgUUNBODMzNCwgUUNBODMzNywgUUNBODMyOCkgZm9yIGVtYmVkZGVkIHN5c3RlbXMuIFNpbmNlIHRoZXJlJ3Mgbm8gaGFyZHdhcmUgZW11bGF0aW9uIGZvciB0aGVzZSBRdWFsY29tbSBRQ0E4eHh4IHN3aXRjaCBjaGlwcyAob3IgTURJTyBEU0Egc3dpdGNoIGNoaXBzKSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgaW4gYHFjYThrLTh4eHguY2AsIHNwZWNpZmljYWxseSBgcWNhOGtfcGNzX2NvbmZpZ2AsIGFyZSBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuXG5cbkxldCdzIGRpc3NlY3QgdGhlIHBhdGNoIGl0c2VsZjogaXQgbW9kaWZpZXMgYHFjYThrX3Bjc19jb25maWdgIHdpdGhpbiBgcWNhOGstOHh4eC5jYC4gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgUEhZIExpbmsgUENTIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gb24gUXVhbGNvbW0gQXRoZXJvcyBRQ0E4MzM3IHN3aXRjaCBjaGlwcy4gIFRoZSBwYXRjaCBpbmNsdWRlcyBhIGNvbmRpdGlvbmFsIGNoZWNrIHNwZWNpZmljYWxseSBmb3IgUUNBODMzNyBhbmQgaXRzIGBTR01JSV9GT1JDRV9NT0RFYCwgd2hpY2ggY29uZmlybXMgdGhhdCB0aGUgY29kZSBpbmRlZWQgZGVhbHMgd2l0aCB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzLiBUaGlzIHJlcXVpcmVzIGEgcmVhbCBNRElPIHN3aXRjaCBvciBlbWJlZGRlZCBTb0MgdG8gYmUgYWN0aXZhdGVkLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHRoZSBjb2RlIHBhdGggaW52b2x2ZXMgaGFyZHdhcmUgbm90IHByZXNlbnQgaW4gUUVNVSBvciBHQ0UsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSBhbSByZWFzb25pbmcgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIE1ESU8gaGFyZHdhcmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBpbmFjY2Vzc2libGUgZm9yIGZ1enppbmcuIEknbGwgcGFzcyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2w6XG5cbiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKlxuKiAgICoqRm9jdXNTeW1ib2xzOiBcXFsgXSoqXG4qICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGBkcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguY2ApLCBzcGVjaWZpY2FsbHkgUENTIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBRQ0E4MzM3IHN3aXRjaC4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTURJTyBoYXJkd2FyZSAvIGVtYmVkZGVkIFNvQyBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU4OCwiT3V0cHV0VG9rZW5zIjoxMzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDU2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzE6MjYuMjIxODcxMDQ2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzE6MjYuMjIxOTAwMzQ2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4dt9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 19:09:43 +0000 UTC FinishedAt: 2026-08-31 19:31:27 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGE0MzU1MDhhMzdmNmY3OGQ5MzBhOGI3ZDY5ZWI4NjU0ZWJkYzZiZjdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxOTozMDowMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jXG5pbmRleCBhMzZiOGIwNzAzMGUzLi40YzkyODk4M2I4NjIzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jXG5AQCAtMTUzOCw3ICYjNDM7MTUzOCw3IEBAIHN0YXRpYyBpbnQgcWNhOGtfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIHtcbiBcdHN0cnVjdCBxY2E4a19wcml2ICpwcml2ID0gcGNzX3RvX3FjYThrX3BjcyhwY3MpLVx1MDAzZXByaXY7XG4gXHRpbnQgY3B1X3BvcnRfaW5kZXgsIHJldCwgcG9ydDtcbi1cdHUzMiByZWcsIHZhbDtcbiYjNDM7XHR1MzIgbWFzaywgcmVnLCB2YWw7XG4gXG4gXHRwb3J0ID0gcGNzX3RvX3FjYThrX3BjcyhwY3MpLVx1MDAzZXBvcnQ7XG4gXHRzd2l0Y2ggKHBvcnQpIHtcbkBAIC0xNjExLDExICYjNDM7MTYxMSwyMSBAQCBzdGF0aWMgaW50IHFjYThrX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbiBcdGlmIChwcml2LVx1MDAzZXBvcnRzX2NvbmZpZy5zZ21paV90eF9jbGtfZmFsbGluZ19lZGdlKVxuIFx0XHR2YWwgfD0gUUNBOEtfUE9SVDBfUEFEX1NHTUlJX1RYQ0xLX0ZBTExJTkdfRURHRTtcbiBcbi1cdGlmICh2YWwpXG4tXHRcdHJldCA9IHFjYThrX3Jtdyhwcml2LCByZWcsXG4tXHRcdFx0XHRRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHxcbi1cdFx0XHRcdFFDQThLX1BPUlQwX1BBRF9TR01JSV9UWENMS19GQUxMSU5HX0VER0UsXG4tXHRcdFx0XHR2YWwpO1xuJiM0MztcdG1hc2sgPSAodmFsKSA/IChRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHxcbiYjNDM7XHRcdFx0UUNBOEtfUE9SVDBfUEFEX1NHTUlJX1RYQ0xLX0ZBTExJTkdfRURHRSkgOiAwO1xuJiM0MztcbiYjNDM7XHQvKlxuJiM0MztcdCAqIChVbilzZXQgZm9yY2UgbW9kZSBvbiBRQ0E4MzM3IG9ubHksIGRvbiYjMzk7dCBpbmNsdWRlIGl0IGluIHRoZSBtYXNrIGZvclxuJiM0MztcdCAqIG90aGVycy4gSXQgaXMgd3JpdHRlbiB0byB0aGUgUE9SVDAgUEFEIHJlZ2lzdGVyIGZvciBib3RoIHBvcnQgMCBhbmQgNi5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAocHJpdi1cdTAwM2Vzd2l0Y2hfaWQgPT0gUUNBOEtfSURfUUNBODMzNykge1xuJiM0MztcdFx0aWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19PVVRCQU5EKVxuJiM0MztcdFx0XHR2YWwgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTtcbiYjNDM7XHRcdG1hc2sgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGlmIChtYXNrKVxuJiM0MztcdFx0cmV0ID0gcWNhOGtfcm13KHByaXYsIHJlZywgbWFzaywgdmFsKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmggYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcbmluZGV4IGQwNDY2NzkyNjVmYTQuLmVkOGYwYjQ5ODEyYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaFxuQEAgLTU4LDYgJiM0Mzs1OCw3IEBAXG4gI2RlZmluZVx0ICBRQ0E4S19QT1JUX1BBRF9SR01JSV9UWF9ERUxBWV9FTlx0XHRCSVQoMjUpXG4gI2RlZmluZSAgIFFDQThLX1BPUlRfUEFEX1JHTUlJX1JYX0RFTEFZX0VOXHRcdEJJVCgyNClcbiAjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfU0dNSUlfRU5cdFx0XHRCSVQoNylcbiYjNDM7I2RlZmluZSAgIFFDQThLX1BPUlRfUEFEX1NHTUlJX0ZPUkNFX01PREVcdFx0QklUKDMpXG4gI2RlZmluZSBRQ0E4S19SRUdfUFdTXHRcdFx0XHRcdDB4MDEwXG4gI2RlZmluZSAgIFFDQThLX1BXU19QT1dFUl9PTl9TRUxcdFx0XHRCSVQoMzEpXG4gLyogVGhpcyByZWcgaXMgb25seSB2YWxpZCBmb3IgUUNBODMyeCBhbmQgdG9nZ2xlIHRoZSBwYWNrYWdlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE0MzU1MDhhMzdmNmY3OGQ5MzBhOGI3ZDY5ZWI4NjU0ZWJkYzZiZjcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAxOTozMDowMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jIGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMKaW5kZXggYTM2YjhiMDcwMzBlMy4uNGM5Mjg5ODNiODYyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMKQEAgLTE1MzgsNyAmIzQzOzE1MzgsNyBAQCBzdGF0aWMgaW50IHFjYThrX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSwKIHsKIAlzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdiA9IHBjc190b19xY2E4a19wY3MocGNzKS0mZ3Q7cHJpdjsKIAlpbnQgY3B1X3BvcnRfaW5kZXgsIHJldCwgcG9ydDsKLQl1MzIgcmVnLCB2YWw7CiYjNDM7CXUzMiBtYXNrLCByZWcsIHZhbDsKIAogCXBvcnQgPSBwY3NfdG9fcWNhOGtfcGNzKHBjcyktJmd0O3BvcnQ7CiAJc3dpdGNoIChwb3J0KSB7CkBAIC0xNjExLDExICYjNDM7MTYxMSwyMSBAQCBzdGF0aWMgaW50IHFjYThrX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSwKIAlpZiAocHJpdi0mZ3Q7cG9ydHNfY29uZmlnLnNnbWlpX3R4X2Nsa19mYWxsaW5nX2VkZ2UpCiAJCXZhbCB8PSBRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFOwogCi0JaWYgKHZhbCkKLQkJcmV0ID0gcWNhOGtfcm13KHByaXYsIHJlZywKLQkJCQlRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHwKLQkJCQlRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFLAotCQkJCXZhbCk7CiYjNDM7CW1hc2sgPSAodmFsKSA/IChRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHwKJiM0MzsJCQlRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFKSA6IDA7CiYjNDM7CiYjNDM7CS8qCiYjNDM7CSAqIChVbilzZXQgZm9yY2UgbW9kZSBvbiBRQ0E4MzM3IG9ubHksIGRvbiYjMzk7dCBpbmNsdWRlIGl0IGluIHRoZSBtYXNrIGZvcgomIzQzOwkgKiBvdGhlcnMuIEl0IGlzIHdyaXR0ZW4gdG8gdGhlIFBPUlQwIFBBRCByZWdpc3RlciBmb3IgYm90aCBwb3J0IDAgYW5kIDYuCiYjNDM7CSAqLwomIzQzOwlpZiAocHJpdi0mZ3Q7c3dpdGNoX2lkID09IFFDQThLX0lEX1FDQTgzMzcpIHsKJiM0MzsJCWlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfT1VUQkFORCkKJiM0MzsJCQl2YWwgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTsKJiM0MzsJCW1hc2sgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAobWFzaykKJiM0MzsJCXJldCA9IHFjYThrX3Jtdyhwcml2LCByZWcsIG1hc2ssIHZhbCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaCBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaAppbmRleCBkMDQ2Njc5MjY1ZmE0Li5lZDhmMGI0OTgxMmM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay5oCkBAIC01OCw2ICYjNDM7NTgsNyBAQAogI2RlZmluZQkgIFFDQThLX1BPUlRfUEFEX1JHTUlJX1RYX0RFTEFZX0VOCQlCSVQoMjUpCiAjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfUkdNSUlfUlhfREVMQVlfRU4JCUJJVCgyNCkKICNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9FTgkJCUJJVCg3KQomIzQzOyNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9GT1JDRV9NT0RFCQlCSVQoMykKICNkZWZpbmUgUUNBOEtfUkVHX1BXUwkJCQkJMHgwMTAKICNkZWZpbmUgICBRQ0E4S19QV1NfUE9XRVJfT05fU0VMCQkJQklUKDMxKQogLyogVGhpcyByZWcgaXMgb25seSB2YWxpZCBmb3IgUUNBODMyeCBhbmQgdG9nZ2xlIHRoZSBwYWNrYWdlCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBTd2l0Y2ggRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gcGlucG9pbnQgZXhhY3RseSB3aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIHRvdWNoZXMgYGRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jYCBhbmQgYGRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaGAuIEFoLCB0aGF0IHJpbmdzIGEgYmVsbCEgVGhpcyBpcyB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLCBwYXJ0IG9mIHRoZSBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlIOKAkyBEU0EuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGltcGxpY2F0aW9ucy4gSXMgdGhpcyBzb21ldGhpbmcgdGhhdCYjMzk7cyBsaWtlbHkgcHJlc2VudCBpbiBhIHZhcmlldHkgb2Ygc3lzdGVtcyBJIG1pZ2h0IGVuY291bnRlciwgb3IgaXMgaXQgYSBtb3JlIHNwZWNpYWxpemVkIHBpZWNlIG9mIGVxdWlwbWVudD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyB1bmRlciBgZHJpdmVycy9uZXQvZHNhL3FjYS9gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNsdWVzIGFib3V0IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O2xsIGFsc28gZG8gYSBxdWljayBncmVwIGZvciAmIzM0O3FjYThrJiMzNDsgdGhyb3VnaG91dCB0aGUga2VybmVsIHRyZWUganVzdCB0byBnZXQgYSBicm9hZGVyIHBpY3R1cmUgb2Ygd2hlcmUgdGhpcyBkcml2ZXIgbWlnaHQgYmUgdXNlZCBhbmQgd2hhdCBvdGhlciBtb2R1bGVzIG1pZ2h0IGludGVyYWN0IHdpdGggaXQuIEtub3dsZWRnZSBpcyBwb3dlciwgYW5kIGtub3dpbmcgdGhlIGhhcmR3YXJlIGNvbnRleHQgaXMgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gbWFrZSBhIGp1ZGdlbWVudCBvbiB0aGUgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX0RTQV9RQ0E4SyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnPTI9Y29uZmlnIE5FVF9EU0FfQVI5MzMxXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEwLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX1FDQThLXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMTItXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0xOC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoxOTpjb25maWcgTkVUX0RTQV9RQ0E4S19MRURTX1NVUFBPUlRcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0yMC1cdGJvb2wgXCYjMzQ7UXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZmFtaWx5IExFRHMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjIxOlx0ZGVwZW5kcyBvbiBORVRfRFNBX1FDQThLXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWc6MjI6XHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUUNBOEtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0yMy1cdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfTkVUX0RTQV9BUjkzMzEpXHQmIzQzOz0gYXI5MzMxLm9cbmRyaXZlcnMvbmV0L2RzYS9xY2EvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTkVUX0RTQV9RQ0E4SylcdCYjNDM7PSBxY2E4ay5vXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlLTQtcWNhOGsteSBcdFx0XHQmIzQzOz0gcWNhOGstY29tbW9uLm8gcWNhOGstOHh4eC5vXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlOjU6aWZkZWYgQ09ORklHX05FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlLTYtcWNhOGsteVx0XHRcdFx0JiM0Mzs9IHFjYThrLWxlZHMub1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGtfbGVkcy5oLTYtLyogTGVkcyBTdXBwb3J0IGZ1bmN0aW9uICovXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrX2xlZHMuaDo3OiNpZmRlZiBDT05GSUdfTkVUX0RTQV9RQ0E4S19MRURTX1NVUFBPUlRcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGtfbGVkcy5oLTgtaW50IHFjYThrX3NldHVwX2xlZF9jdHJsKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY2CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBxY2E4a2AgRHJpdmVyIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGBxY2E4a2AgZHJpdmVyIHRvIHVuZGVyc3RhbmQgaXRzIGluaXRpYWxpemF0aW9uIGZsb3cuIE15IGZpcnN0IHByaW9yaXR5IGlzIHRvIHBpbiBkb3duICpob3cqIHRoaXMgdGhpbmcgZ2V0cyByZWdpc3RlcmVkLiBJJiMzOTttIGdvaW5nIHRvIGZvbGxvdyB0aGUgdHlwaWNhbCByb3V0ZXMuIElzIGl0IGFuIE1ESU8gZHJpdmVyPyBUaGF0IHdvdWxkIG1ha2Ugc2Vuc2UgZ2l2ZW4gdGhlIGNvbW1vbiB1c2UgY2FzZS4gT3IgcGVyaGFwcyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgcGxhdGZvcm0gZHJpdmVyLCBkZXNjcmliaW5nIGEgaGFyZHdhcmUgZGV2aWNlIHdpdGggc3BlY2lmaWMgcmVzb3VyY2UgcmVxdWlyZW1lbnRzLiBBcmUgd2UgaGFuZGxpbmcgaXQgdXNpbmcgU1BJPyBUaGF0JiMzOTtzIGFub3RoZXIgcG9zc2liaWxpdHkgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gY29kZSwgZm9jdXNpbmcgb24gdGhlIGRyaXZlciByZWdpc3RyYXRpb24gZnVuY3Rpb25zLCBhbmQgdGhlIGRldmljZSBwcm9iZSBmdW5jdGlvbnMsIHRvIHVuZGVyc3RhbmQgd2hpY2ggbWVjaGFuaXNtIGlzIHVsdGltYXRlbHkgZW1wbG95ZWQuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBiaW5kaW5nIG1ldGhvZC4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSYjMzk7cyBydW50aW1lIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX21kaW9fZHJpdmVyfG1kaW9fZHJpdmVyX3JlZ2lzdGVyfHBsYXRmb3JtX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9xY2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTQzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBRQ0E4SyBEcml2ZXIgUHJvYmUgRnVuY3Rpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBRQ0E4SyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcHJvYmluZyBtZWNoYW5pc20uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gaG93IGl0JiMzOTtzIGRvbmUgd2l0aGluIGBkcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguY2AgYW5kIHBvdGVudGlhbGx5IGFsc28gYHFjYThrLWNvbW1vbi5jYC4gVGhlc2UgZmlsZXMgYXJlIHRoZSBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgY29udGFpbmluZyB0aGUgY29yZSBsb2dpYyBmb3IgdGhlIGluaXRpYWwgZGV2aWNlIGRldGVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGlkZW50aWZpZXMgdGhlIGhhcmR3YXJlLCBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgcmVzb3VyY2VzLCBhbmQgc3RhcnRzIHRoZSBzd2l0Y2ggZnVuY3Rpb25hbGl0eS4gTG9va2luZyBhdCB0aGUgcHJvYmUgcm91dGluZSwgSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiB0aGUgc3RlcHMgdGFrZW4gdG8gaW50ZXJhY3Qgd2l0aCB0aGUgaGFyZHdhcmUsIHRoZSByZWdpc3RlcnMgYmVpbmcgYWNjZXNzZWQsIGFuZCBhbnkgY2hlY2tzIGZvciBkZXZpY2UgcHJlc2VuY2Ugb3IgY29uZmlndXJhdGlvbi4gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZHJpdmVyJiMzOTtzIG9wZXJhdGlvbmFsIGZsb3cgYW5kIHBvc3NpYmxlIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgZGVidWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3FjYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz03ODA9c3RhdGljIGludCBhcjkzMzFfc3dfaXJxX21hcChzdHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtNzg1LVx0aXJxX3NldF9uZXN0ZWRfdGhyZWFkKGlycSwgMSk7XG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjc4NjpcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy03ODctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0xMDI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBhcjkzMzFfc3dfYnVzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTAzMC1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MTAzMTpzdGF0aWMgaW50IGFyOTMzMV9zd19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jLTEwMzIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MTEyOD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGFyOTMzMV9zd19tZGlvX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MTEyOTpcdC5wcm9iZSA9IGFyOTMzMV9zd19wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTEzMC1cdC5yZW1vdmUgPSBhcjkzMzFfc3dfcmVtb3ZlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTIwNTg9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjA1OTpxY2E4a19zd19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0yMDYwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0yMDYzLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjA2NDpcdC8qIGFsbG9jYXRlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0IHNvIHRoYXQgd2UgY2FuIHByb2JlIHRoZSBzd2l0Y2hlc1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjA2NS1cdCAqIElEIHJlZ2lzdGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM9MjIyMT1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHFjYThrbWRpb19kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzoyMjIyOlx0LnByb2JlICA9IHFjYThrX3N3X3Byb2JlLFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjIyMy1cdC5yZW1vdmUgPSBxY2E4a19zd19yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE1MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBNRElPIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGUgYG1kaW9fZHJpdmVyYCBpcyByZWdpc3RlcmVkIGZvciBNRElPIGRldmljZXMsIHNwZWNpZmljYWxseSB0aGVzZSBRdWFsY29tbSBBdGhlcm9zIEV0aGVybmV0IHN3aXRjaGVzIOKAkyBRQ0E4MzI3LCBRQ0E4MzM0LCBhbmQgUUNBODMzNy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiBJIGV2ZW4gKnJlYWNoKiB0aGlzIGRyaXZlciBpbiBhIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElzIHRoaXMgZHJpdmVyIGVtdWxhdGVkLCBvciBkbyBJIG5lZWQgdGhlIGFjdHVhbCBoYXJkd2FyZT8gSSBuZWVkIHRvIHN0YXkgd2l0aGluIHRoZSBydWxlcy4KCkxldCBtZSByZWZyZXNoIG15c2VsZiB3aXRoIHRoZSAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGNyaXRlcmlhLiBSaWdodCwgaWYgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBjb2RlIHRoYXTigJlzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcyDigJMgbGlrZSBjb2RlIHRpZWQgdG8gc3BlY2lmaWMgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUg4oCTIHRoZW4gaXQmIzM5O3MgYSBuby1nbyBmb3IgZnV6emluZy4gTm8gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIG5vIFNtYXJ0TklDIHN0dWZmLi4uIGFuZCB0aG9zZSBhcmUgb2Z0ZW4gdGhpbmdzIHRoYXQgZGVwZW5kIG9uIHBoeXNpY2FsIGNhcmRzLgoKU28sIGJhY2sgdG8gdGhlIFFDQThLIHN3aXRjaGVzLiBBcmUgdGhleSBkZXBlbmRlbnQgb24gcGh5c2ljYWwgaGFyZHdhcmU/IEFyZSB0aGVzZSBjaGlwcyBjb21tb25seSBmb3VuZCBvbiByb3V0ZXJzIGFuZCBlbWJlZGRlZCBzeXN0ZW1zPyBTcGVjaWZpY2FsbHksIHRoZSBRQ0E4MzM3LiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBJIGNhbiBwcm9iZSB0aGVzZSBkZXZpY2VzIHdpdGhvdXQgdGhlaXIgcGh5c2ljYWwgY29uc3RyYWludHMuIEkgdGhpbmsgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgb3V0IHRoZSBgcWNhOGtfc3dfcHJvYmVgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjA1OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMDU4Olx0c3RhdGljIGludFxuMjA1OTpcdHFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbjIwNjA6XHR7XG4yMDYxOlx0XHRzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdjtcbjIwNjI6XHRcdGludCByZXQ7XG4yMDYzOlx0XG4yMDY0Olx0XHQvKiBhbGxvY2F0ZSB0aGUgcHJpdmF0ZSBkYXRhIHN0cnVjdCBzbyB0aGF0IHdlIGNhbiBwcm9iZSB0aGUgc3dpdGNoZXNcbjIwNjU6XHRcdCAqIElEIHJlZ2lzdGVyXG4yMDY2Olx0XHQgKi9cbjIwNjc6XHRcdHByaXYgPSBkZXZtX2t6YWxsb2MoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuMjA2ODpcdFx0aWYgKCFwcml2KVxuMjA2OTpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjIwNzA6XHRcbjIwNzE6XHRcdHByaXYtXHUwMDNlYnVzID0gbWRpb2Rldi1cdTAwM2VidXM7XG4yMDcyOlx0XHRwcml2LVx1MDAzZWRldiA9IFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2O1xuMjA3MzpcdFx0cHJpdi1cdTAwM2VpbmZvID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKHByaXYtXHUwMDNlZGV2KTtcbjIwNzQ6XHRcbjIwNzU6XHRcdHByaXYtXHUwMDNlcmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtyZXNldFwmIzM0OyxcbjIwNzY6XHRcdFx0XHRcdFx0XHQgICBHUElPRF9PVVRfSElHSCk7XG4yMDc3Olx0XHRpZiAoSVNfRVJSKHByaXYtXHUwMDNlcmVzZXRfZ3BpbykpXG4yMDc4Olx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVzZXRfZ3Bpbyk7XG4yMDc5Olx0XG4yMDgwOlx0XHRpZiAocHJpdi1cdTAwM2VyZXNldF9ncGlvKSB7XG4yMDgxOlx0XHRcdC8qIFRoZSBhY3RpdmUgbG93IGR1cmF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEwIG1zXG4yMDgyOlx0XHRcdCAqIGFuZCBjaGVja3BhdGNoLnBsIHdhbnRzIDIwIG1zLlxuMjA4MzpcdFx0XHQgKi9cbjIwODQ6XHRcdFx0bXNsZWVwKDIwKTtcbjIwODU6XHRcdFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXHUwMDNlcmVzZXRfZ3BpbywgMCk7XG4yMDg2Olx0XHR9XG4yMDg3Olx0XG4yMDg4Olx0XHQvKiBTdGFydCBieSBzZXR0aW5nIHVwIHRoZSByZWdpc3RlciBtYXBwaW5nICovXG4yMDg5Olx0XHRwcml2LVx1MDAzZXJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXQoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIE5VTEwsIHByaXYsXG4yMDkwOlx0XHRcdFx0XHRcdFx1MDAyNnFjYThrX3JlZ21hcF9jb25maWcpO1xuMjA5MTpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlZ21hcCkpIHtcbjIwOTI6XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7cmVnbWFwIGluaXRpYWxpemF0aW9uIGZhaWxlZFwmIzM0Oyk7XG4yMDkzOlx0XHRcdHJldHVybiBQVFJfRVJSKHByaXYtXHUwMDNlcmVnbWFwKTtcbjIwOTQ6XHRcdH1cbjIwOTU6XHRcbjIwOTY6XHRcdHByaXYtXHUwMDNlbWRpb19jYWNoZS5wYWdlID0gMHhmZmZmO1xuMjA5NzpcdFxuMjA5ODpcdFx0LyogQ2hlY2sgdGhlIGRldGVjdGVkIHN3aXRjaCBpZCAqL1xuMjA5OTpcdFx0cmV0ID0gcWNhOGtfcmVhZF9zd2l0Y2hfaWQocHJpdik7XG4yMTAwOlx0XHRpZiAocmV0KVxuMjEwMTpcdFx0XHRyZXR1cm4gcmV0O1xuMjEwMjpcdFxuMjEwMzpcdFx0cHJpdi1cdTAwM2VkcyA9IGRldm1fa3phbGxvYyhcdTAwMjZtZGlvZGV2LVx1MDAzZWRldiwgc2l6ZW9mKCpwcml2LVx1MDAzZWRzKSwgR0ZQX0tFUk5FTCk7XG4yMTA0Olx0XHRpZiAoIXByaXYtXHUwMDNlZHMpXG4yMTA1Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuMjEwNjpcdFxuMjEwNzpcdFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZW1nbXRfZXRoX2RhdGEubXV0ZXgpO1xuMjEwODpcdFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNnByaXYtXHUwMDNlbWdtdF9ldGhfZGF0YS5yd19kb25lKTtcbjIxMDk6XHRcbjIxMTA6XHRcdG11dGV4X2luaXQoXHUwMDI2cHJpdi1cdTAwM2VtaWJfZXRoX2RhdGEubXV0ZXgpO1xuMjExMTpcdFx0aW5pdF9jb21wbGV0aW9uKFx1MDAyNnByaXYtXHUwMDNlbWliX2V0aF9kYXRhLnJ3X2RvbmUpO1xuMjExMjpcdFxuMjExMzpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbjIxMTQ6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlbnVtX3BvcnRzID0gUUNBOEtfTlVNX1BPUlRTO1xuMjExNTpcdFx0cHJpdi1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbjIxMTY6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlb3BzID0gXHUwMDI2cWNhOGtfc3dpdGNoX29wcztcbjIxMTc6XHRcdHByaXYtXHUwMDNlZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2cWNhOGtfcGh5bGlua19tYWNfb3BzO1xuMjExODpcdFx0bXV0ZXhfaW5pdChcdTAwMjZwcml2LVx1MDAzZXJlZ19tdXRleCk7XG4yMTE5Olx0XHRkZXZfc2V0X2RydmRhdGEoXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXYsIHByaXYpO1xuMjEyMDpcdFxuMjEyMTpcdFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cdTAwM2Vkcyk7XG4yMTIyOlx0fVxuMjEyMzpcdFxuMjEyNDpcdHN0YXRpYyB2b2lkXG4yMTI1Olx0cWNhOGtfc3dfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbjIxMjY6XHR7XG4yMTI3Olx0XHRzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG4yMTI4Olx0XHRpbnQgaTtcbjIxMjk6XHRcbjIxMzA6XHRcdGlmICghcHJpdilcbjIxMzE6XHRcdFx0cmV0dXJuO1xuMjEzMjpcdFxuMjEzMzpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUUNBOEtfTlVNX1BPUlRTOyBpJiM0MzsmIzQzOylcbjIxMzQ6XHRcdFx0cWNhOGtfcG9ydF9zZXRfc3RhdHVzKHByaXYsIGksIDApO1xuMjEzNTpcdFxuMjEzNjpcdFx0ZHNhX3VucmVnaXN0ZXJfc3dpdGNoKHByaXYtXHUwMDNlZHMpO1xuMjEzNzpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk5MwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgcWNhOGtfcmVhZF9zd2l0Y2hfaWQocHJpdilgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHFjYThrYCBkcml2ZXIgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYHFjYThrX3JlYWRfc3dpdGNoX2lkKHByaXYpYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyBgcHJpdmAgbGlrZWx5IHJlZmVycyB0byB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUsIGhvbGRpbmcgY29udGV4dCBmb3IgdGhpcyBzcGVjaWZpYyBpbnN0YW5jZSBvZiB0aGUgUUNBOEsgc3dpdGNoLiBJJiMzOTttIGFzc3VtaW5nIGl0IGNvbnRhaW5zIHRoZSBuZWNlc3NhcnkgYmFzZSBhZGRyZXNzLCByZWdpc3RlciBvZmZzZXRzLCBhbmQgbWF5YmUgc29tZSBjYWNoZWQgc3RhdGUgaW5mb3JtYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaW5mb3JtYXRpb24gdGhpcyBmdW5jdGlvbiBleHRyYWN0cyBmcm9tIHRoZSBzd2l0Y2ggaXRzZWxmLCBwcmVzdW1hYmx5IGJ5IHJlYWRpbmcgc29tZSByZWdpc3RlcnMuIFRoZSAmIzM0O3N3aXRjaCBJRCYjMzQ7IGlzIHRoZSBrZXkgaGVyZS4gSXMgaXQgYSB1bmlxdWUgaWRlbnRpZmllcj8gQSBwcm9kdWN0IHJldmlzaW9uPyBQZXJoYXBzIGEgbW9kZWwgbnVtYmVyPyBJJiMzOTtsbCBiZXQgaXQmIzM5O3MgdXNlZCBmb3IgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIG9yIGZlYXR1cmUgZGV0ZWN0aW9uIGZ1cnRoZXIgZG93biB0aGUgbGluZS4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSBpdHMgdXNhZ2UgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGRpZmZlcmVudCBJRHMuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLi4ubGV0JiMzOTtzIHNlZSB3aGF0IHJlZ2lzdGVyIHJlYWRzIGFyZSBpbnZvbHZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cWNhOGtfcmVhZF9zd2l0Y2hfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcWNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0yMDU5PXFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYy0yMDk4LVx0LyogQ2hlY2sgdGhlIGRldGVjdGVkIHN3aXRjaCBpZCAqL1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmM6MjA5OTpcdHJldCA9IHFjYThrX3JlYWRfc3dpdGNoX2lkKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjEwMC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uYz0xMjI0PWludCBxY2E4a19wb3J0X2xhZ19sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstY29tbW9uLmMtMTIyOS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstY29tbW9uLmM6MTIzMDppbnQgcWNhOGtfcmVhZF9zd2l0Y2hfaWQoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLWNvbW1vbi5jLTEyMzEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaD01MDU9dm9pZCBxY2E4a19wb3J0X3NldF9zdGF0dXMoc3RydWN0IHFjYThrX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaDo1MDY6aW50IHFjYThrX3JlYWRfc3dpdGNoX2lkKHN0cnVjdCBxY2E4a19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaC01MDctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MTkKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBxY2E4a19yZWFkX3N3aXRjaF9pZGAuIEhlcmUmIzM5O3MgbXkgdGFrZSwgdGhpbmtpbmcgaXQgdGhyb3VnaC4uLgoKKipBbmFseXppbmcgYHFjYThrX3JlYWRfc3dpdGNoX2lkYCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcWNhOGtfcmVhZF9zd2l0Y2hfaWRgIGZ1bmN0aW9uLiBGaXJzdCwgSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgUUNBOEsgZGF0YXNoZWV0IOKAkyBnb3R0YSBoYXZlIHRoYXQgYXJjaGl0ZWN0dXJhbCBjb250ZXh0IGxvY2tlZCBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uICpzaG91bGQqIGJlIGRvaW5nLiBPYnZpb3VzbHksIHRoZSBuYW1lIHN1Z2dlc3RzIGl0JiMzOTtzIHJlYWRpbmcgdGhlIGlkZW50aWZpY2F0aW9uIGluZm9ybWF0aW9uIG9mIHRoZSBzd2l0Y2gsIHdoaWNoIHR5cGljYWxseSBpbmNsdWRlcyBtYW51ZmFjdHVyZXIsIG1vZGVsLCByZXZpc2lvbiwgZXRjLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBXaGF0IHJlZ2lzdGVycyBpcyBpdCBhY2Nlc3Npbmc/IFdoYXQmIzM5O3MgdGhlIGV4cGVjdGVkIGRhdGEgZm9ybWF0IGZvciB0aGUgc3dpdGNoIElEPyBJcyB0aGlzIGEgc3RyYWlnaHRmb3J3YXJkIHJlZ2lzdGVyIHJlYWQsIG9yIGRvZXMgaXQgaW52b2x2ZSBhbnkga2luZCBvZiBzZXF1ZW5jZSBvciBjb21tYW5kPyBJIG5lZWQgdG8gbG9vayBmb3IgYW55IHJlZ2lzdGVyIGFkZHJlc3MgY29uc3RhbnRzIGJlaW5nIHVzZWQgLSB0aG9zZSBhcmUgdGhlIGtleXMgdG8gdW5kZXJzdGFuZGluZyB0aGUgaGFyZHdhcmUgaW50ZXJhY3Rpb24uIEFyZSB0aGVyZSBiaXQgbWFza3MgaW52b2x2ZWQ/IFRoYXQmIzM5O3MgZ29pbmcgdG8gdGVsbCBtZSBob3cgdGhlIElEIGlzIHBhY2tlZCwgd2hpY2ggYml0cyByZXByZXNlbnQgd2hpY2ggcGllY2VzIG9mIGluZm9ybWF0aW9uLiBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gV2hhdCBhcmUgdGhlIGVycm9yIGNvZGVzIGRlZmluZWQgYW5kIGhvdyBkb2VzIGl0IGRlYWwgd2l0aCBhbnkgcmVhZCBmYWlsdXJlcz8KCkkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyBwYXJ0IG9mIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgc28gaXQmIzM5O3MgcHJvYmFibHkgY2FsbGVkIGVhcmx5IG9uLiBJdCBzZXRzIHVwIGEgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgaGFyZHdhcmUgd2UgYXJlIGFib3V0IHRvIGNvbnRyb2wuIElzIHRoZXJlIGFueSBkZXZpY2UgdHJlZSBvciBzaW1pbGFyIG1lY2hhbmlzbSB0aGF0IG1heSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24/IElmIHNvLCBpcyB0aGlzIGZ1bmN0aW9uIGp1c3QgYSBiYWNrdXAsIG9yIHZhbGlkYXRpb24/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGluaXRpYWxpemF0aW9uIGZsb3cuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlIGVycm9yIGhhbmRsaW5nIGlzIHJvYnVzdCBlbm91Z2ggdG8gcHJldmVudCBwcm9ibGVtcyBpZiB0aGUgc3dpdGNoIGRvZXMgbm90IGlkZW50aWZ5IGl0c2VsZiBjb3JyZWN0bHkuCgpPa2F5LCBJJiMzOTttIG1lbnRhbGx5IGFzc2VtYmxpbmcgdGhlIHBvc3NpYmlsaXRpZXMuIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgY29kZSwgbG9va2luZyBmb3IgdGhvc2UgcmVnaXN0ZXIgYWNjZXNzZXMsIGJpdCBtYW5pcHVsYXRpb25zLCBlcnJvciBjaGVja3MsIGFuZCBwb3RlbnRpYWwgZGF0YSBwYXJzaW5nLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxOTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstY29tbW9uLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMzA6XHRpbnQgcWNhOGtfcmVhZF9zd2l0Y2hfaWQoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXG4xMjMxOlx0e1xuMTIzMjpcdFx0dTMyIHZhbDtcbjEyMzM6XHRcdHU4IGlkO1xuMTIzNDpcdFx0aW50IHJldDtcbjEyMzU6XHRcbjEyMzY6XHRcdGlmICghcHJpdi1cdTAwM2VpbmZvKVxuMTIzNzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbjEyMzg6XHRcbjEyMzk6XHRcdHJldCA9IHFjYThrX3JlYWQocHJpdiwgUUNBOEtfUkVHX01BU0tfQ1RSTCwgXHUwMDI2dmFsKTtcbjEyNDA6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4xMjQxOlx0XHRcdHJldHVybiAtRU5PREVWO1xuMTI0MjpcdFxuMTI0MzpcdFx0aWQgPSBRQ0E4S19NQVNLX0NUUkxfREVWSUNFX0lEKHZhbCk7XG4xMjQ0Olx0XHRpZiAoaWQgIT0gcHJpdi1cdTAwM2VpbmZvLVx1MDAzZWlkKSB7XG4xMjQ1Olx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsXG4xMjQ2Olx0XHRcdFx0XCYjMzQ7U3dpdGNoIGlkIGRldGVjdGVkICV4IGJ1dCBleHBlY3RlZCAleFwmIzM0OyxcbjEyNDc6XHRcdFx0XHRpZCwgcHJpdi1cdTAwM2VpbmZvLVx1MDAzZWlkKTtcbjEyNDg6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4xMjQ5Olx0XHR9XG4xMjUwOlx0XG4xMjUxOlx0XHRwcml2LVx1MDAzZXN3aXRjaF9pZCA9IGlkO1xuMTI1MjpcdFxuMTI1MzpcdFx0LyogU2F2ZSByZXZpc2lvbiB0byBjb21tdW5pY2F0ZSB0byB0aGUgaW50ZXJuYWwgUEhZIGRyaXZlciAqL1xuMTI1NDpcdFx0cHJpdi1cdTAwM2Vzd2l0Y2hfcmV2aXNpb24gPSBRQ0E4S19NQVNLX0NUUkxfUkVWX0lEKHZhbCk7XG4xMjU1Olx0XG4xMjU2Olx0XHRyZXR1cm4gMDtcbjEyNTc6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1ODgKCQkJCQkJCW91dHB1dDogMTMyCgkJCQkJCQl0aG91Z2h0czogMTQ1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgUGF0Y2ggZm9yIEZ1enppbmcgQXBwbGljYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoLCB3aGljaCB0b3VjaGVzIGBxY2E4ay04eHh4LmNgIChwYXJ0IG9mIHRoZSBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIHVuZGVyIERTQSkgaXMgdW5saWtlbHkgdG8gYmUgZnV6emFibGUuIEZpcnN0LCBsZXQmIzM5O3MgZXN0YWJsaXNoIHRoZSBjb250ZXh0OiBgcWNhOGtgIHNwZWNpZmljYWxseSByZWZlcnMgdG8gcGh5c2ljYWwgRXRoZXJuZXQgc3dpdGNoIGNoaXBzIChRQ0E4MzI3LCBRQ0E4MzM0LCBRQ0E4MzM3KSB0aGF0IGNvbW11bmljYXRlIHZpYSBhbiBNRElPIGJ1cywgdHlwaWNhbGx5IGNvbm5lY3RlZCB0byBhbiBTb0Mgb3IgYW4gRXRoZXJuZXQgTUFDIE1ESU8gY29udHJvbGxlci4gVGhlc2UgY2hpcHMgYXJlIGNvbmZpZ3VyZWQgdGhyb3VnaCBEZXZpY2UgVHJlZSBtYXRjaCBkYXRhLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGhhcmR3YXJlIG9yIGl0cyBNRElPIHN3aXRjaCB0b3BvbG9neSBpcyBlbXVsYXRlZCBpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKS4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgdGhlIGFuc3dlciBpcyBuby4gUUVNVSBkb2VzIG5vdCBlbXVsYXRlIHRoZXNlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoZXMsIG5vciB0aGVpciBNRElPIHN3aXRjaCB0b3BvbG9naWVzLiBJdCBkZW1hbmRzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIC0gcm91dGVyIGJvYXJkcyBvciBwbGF0Zm9ybXMgYnVpbHQgYXJvdW5kIFF1YWxjb21tIEF0aGVyb3MgaGFyZHdhcmUuCgpOb3csIGxldCBtZSBkb3VibGUtY2hlY2sgdGhlICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgY3JpdGVyaWEgdG8gY29uZmlybTogaXQgc3RhdGVzIHRoYXQgYSBwYXRjaCBzaG91bGQgYmUgZGVlbWVkIG5vdCB3b3J0aCBmdXp6aW5nIGlmIGl0JiMzOTtzIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBjaGFuZ2VzLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzL21hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoaW5jbHVkaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgdXNiIGdhZGdldCBvciBtYWM4MDIxMV9od3NpbSksIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgZGVtYW5kIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSwgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy4KClNvLCBsZXQmIzM5O3MgdmVyaWZ5IHRoYXQgdGhlIERTQS9RQ0E4SyBzd2l0Y2hlcyBhcmUgaW5kZWVkIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIFFDQThLIGlzIGFuIE1ESU8tYXR0YWNoZWQgRXRoZXJuZXQgc3dpdGNoIElDIChRQ0E4MzI3LCBRQ0E4MzM0LCBRQ0E4MzM3LCBRQ0E4MzI4KSBmb3IgZW1iZWRkZWQgc3lzdGVtcy4gU2luY2UgdGhlcmUmIzM5O3Mgbm8gaGFyZHdhcmUgZW11bGF0aW9uIGZvciB0aGVzZSBRdWFsY29tbSBRQ0E4eHh4IHN3aXRjaCBjaGlwcyAob3IgTURJTyBEU0Egc3dpdGNoIGNoaXBzKSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgaW4gYHFjYThrLTh4eHguY2AsIHNwZWNpZmljYWxseSBgcWNhOGtfcGNzX2NvbmZpZ2AsIGFyZSBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuCgpMZXQmIzM5O3MgZGlzc2VjdCB0aGUgcGF0Y2ggaXRzZWxmOiBpdCBtb2RpZmllcyBgcWNhOGtfcGNzX2NvbmZpZ2Agd2l0aGluIGBxY2E4ay04eHh4LmNgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBQSFkgTGluayBQQ1MgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiBvbiBRdWFsY29tbSBBdGhlcm9zIFFDQTgzMzcgc3dpdGNoIGNoaXBzLiAgVGhlIHBhdGNoIGluY2x1ZGVzIGEgY29uZGl0aW9uYWwgY2hlY2sgc3BlY2lmaWNhbGx5IGZvciBRQ0E4MzM3IGFuZCBpdHMgYFNHTUlJX0ZPUkNFX01PREVgLCB3aGljaCBjb25maXJtcyB0aGF0IHRoZSBjb2RlIGluZGVlZCBkZWFscyB3aXRoIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZXMuIFRoaXMgcmVxdWlyZXMgYSByZWFsIE1ESU8gc3dpdGNoIG9yIGVtYmVkZGVkIFNvQyB0byBiZSBhY3RpdmF0ZWQuCgpUaGVyZWZvcmUsIHNpbmNlIHRoZSBjb2RlIHBhdGggaW52b2x2ZXMgaGFyZHdhcmUgbm90IHByZXNlbnQgaW4gUUVNVSBvciBHQ0UsIEkmIzM5O20gY29uZmlkZW50IGluIHNldHRpbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gcmVhc29uaW5nIHRoYXQgdGhlIHBhdGNoIG1vZGlmaWVzIGEgZHJpdmVyIGZvciBwaHlzaWNhbCBNRElPIGhhcmR3YXJlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgaW5hY2Nlc3NpYmxlIGZvciBmdXp6aW5nLiBJJiMzOTtsbCBwYXNzIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8gdGhlIGBzZXQtcmVzdWx0c2AgdG9vbDoKCiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKgoqICAgKipGb2N1c1N5bWJvbHM6IFxbIF0qKgoqICAgKipFbmFibGVDb25maWdzOiBcWyBdKioKKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIChgZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNgKSwgc3BlY2lmaWNhbGx5IFBDUyBjb25maWd1cmF0aW9uIGZvciB0aGUgUUNBODMzNyBzd2l0Y2guIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIE1ESU8gaGFyZHdhcmUgLyBlbWJlZGRlZCBTb0Mgc3dpdGNoIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDE5OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTk6MzE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjAxLjg5NTM3MTc4OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0MzI2NTQxMzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6MDEuODk1Mzc2ODM4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjI4OTQ4NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhNDM1NTA4YTM3ZjZmNzhkOTMwYThiN2Q2OWViODY1NGViZGM2YmY3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDE5OjMwOjAxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jIGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNcXG5pbmRleCBhMzZiOGIwNzAzMGUzLi40YzkyODk4M2I4NjIzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNcXG5AQCAtMTUzOCw3ICsxNTM4LDcgQEAgc3RhdGljIGludCBxY2E4a19wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuIHtcXG4gXFx0c3RydWN0IHFjYThrX3ByaXYgKnByaXYgPSBwY3NfdG9fcWNhOGtfcGNzKHBjcyktXFx1MDAzZXByaXY7XFxuIFxcdGludCBjcHVfcG9ydF9pbmRleCwgcmV0LCBwb3J0O1xcbi1cXHR1MzIgcmVnLCB2YWw7XFxuK1xcdHUzMiBtYXNrLCByZWcsIHZhbDtcXG4gXFxuIFxcdHBvcnQgPSBwY3NfdG9fcWNhOGtfcGNzKHBjcyktXFx1MDAzZXBvcnQ7XFxuIFxcdHN3aXRjaCAocG9ydCkge1xcbkBAIC0xNjExLDExICsxNjExLDIxIEBAIHN0YXRpYyBpbnQgcWNhOGtfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbiBcXHRpZiAocHJpdi1cXHUwMDNlcG9ydHNfY29uZmlnLnNnbWlpX3R4X2Nsa19mYWxsaW5nX2VkZ2UpXFxuIFxcdFxcdHZhbCB8PSBRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFO1xcbiBcXG4tXFx0aWYgKHZhbClcXG4tXFx0XFx0cmV0ID0gcWNhOGtfcm13KHByaXYsIHJlZyxcXG4tXFx0XFx0XFx0XFx0UUNBOEtfUE9SVDBfUEFEX1NHTUlJX1JYQ0xLX0ZBTExJTkdfRURHRSB8XFxuLVxcdFxcdFxcdFxcdFFDQThLX1BPUlQwX1BBRF9TR01JSV9UWENMS19GQUxMSU5HX0VER0UsXFxuLVxcdFxcdFxcdFxcdHZhbCk7XFxuK1xcdG1hc2sgPSAodmFsKSA/IChRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHxcXG4rXFx0XFx0XFx0UUNBOEtfUE9SVDBfUEFEX1NHTUlJX1RYQ0xLX0ZBTExJTkdfRURHRSkgOiAwO1xcbitcXG4rXFx0LypcXG4rXFx0ICogKFVuKXNldCBmb3JjZSBtb2RlIG9uIFFDQTgzMzcgb25seSwgZG9uJ3QgaW5jbHVkZSBpdCBpbiB0aGUgbWFzayBmb3JcXG4rXFx0ICogb3RoZXJzLiBJdCBpcyB3cml0dGVuIHRvIHRoZSBQT1JUMCBQQUQgcmVnaXN0ZXIgZm9yIGJvdGggcG9ydCAwIGFuZCA2LlxcbitcXHQgKi9cXG4rXFx0aWYgKHByaXYtXFx1MDAzZXN3aXRjaF9pZCA9PSBRQ0E4S19JRF9RQ0E4MzM3KSB7XFxuK1xcdFxcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfT1VUQkFORClcXG4rXFx0XFx0XFx0dmFsIHw9IFFDQThLX1BPUlRfUEFEX1NHTUlJX0ZPUkNFX01PREU7XFxuK1xcdFxcdG1hc2sgfD0gUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERTtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKG1hc2spXFxuK1xcdFxcdHJldCA9IHFjYThrX3Jtdyhwcml2LCByZWcsIG1hc2ssIHZhbCk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmggYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcXG5pbmRleCBkMDQ2Njc5MjY1ZmE0Li5lZDhmMGI0OTgxMmM0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaFxcbkBAIC01OCw2ICs1OCw3IEBAXFxuICNkZWZpbmVcXHQgIFFDQThLX1BPUlRfUEFEX1JHTUlJX1RYX0RFTEFZX0VOXFx0XFx0QklUKDI1KVxcbiAjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfUkdNSUlfUlhfREVMQVlfRU5cXHRcXHRCSVQoMjQpXFxuICNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9FTlxcdFxcdFxcdEJJVCg3KVxcbisjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfU0dNSUlfRk9SQ0VfTU9ERVxcdFxcdEJJVCgzKVxcbiAjZGVmaW5lIFFDQThLX1JFR19QV1NcXHRcXHRcXHRcXHRcXHQweDAxMFxcbiAjZGVmaW5lICAgUUNBOEtfUFdTX1BPV0VSX09OX1NFTFxcdFxcdFxcdEJJVCgzMSlcXG4gLyogVGhpcyByZWcgaXMgb25seSB2YWxpZCBmb3IgUUNBODMyeCBhbmQgdG9nZ2xlIHRoZSBwYWNrYWdlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjAyLjMxODk1NDU4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo4MzkwMjk0Mzg2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTQzNTUwOGEzN2Y2Zjc4ZDkzMGE4YjdkNjllYjg2NTRlYmRjNmJmN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDE5OjMwOjAxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMgYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguY1xuaW5kZXggYTM2YjhiMDcwMzBlMy4uNGM5Mjg5ODNiODYyMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jXG4rKysgYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguY1xuQEAgLTE1MzgsNyArMTUzOCw3IEBAIHN0YXRpYyBpbnQgcWNhOGtfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuIHtcbiBcdHN0cnVjdCBxY2E4a19wcml2ICpwcml2ID0gcGNzX3RvX3FjYThrX3BjcyhwY3MpLVx1MDAzZXByaXY7XG4gXHRpbnQgY3B1X3BvcnRfaW5kZXgsIHJldCwgcG9ydDtcbi1cdHUzMiByZWcsIHZhbDtcbitcdHUzMiBtYXNrLCByZWcsIHZhbDtcbiBcbiBcdHBvcnQgPSBwY3NfdG9fcWNhOGtfcGNzKHBjcyktXHUwMDNlcG9ydDtcbiBcdHN3aXRjaCAocG9ydCkge1xuQEAgLTE2MTEsMTEgKzE2MTEsMjEgQEAgc3RhdGljIGludCBxY2E4a19wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4gXHRpZiAocHJpdi1cdTAwM2Vwb3J0c19jb25maWcuc2dtaWlfdHhfY2xrX2ZhbGxpbmdfZWRnZSlcbiBcdFx0dmFsIHw9IFFDQThLX1BPUlQwX1BBRF9TR01JSV9UWENMS19GQUxMSU5HX0VER0U7XG4gXG4tXHRpZiAodmFsKVxuLVx0XHRyZXQgPSBxY2E4a19ybXcocHJpdiwgcmVnLFxuLVx0XHRcdFx0UUNBOEtfUE9SVDBfUEFEX1NHTUlJX1JYQ0xLX0ZBTExJTkdfRURHRSB8XG4tXHRcdFx0XHRRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFLFxuLVx0XHRcdFx0dmFsKTtcbitcdG1hc2sgPSAodmFsKSA/IChRQ0E4S19QT1JUMF9QQURfU0dNSUlfUlhDTEtfRkFMTElOR19FREdFIHxcbitcdFx0XHRRQ0E4S19QT1JUMF9QQURfU0dNSUlfVFhDTEtfRkFMTElOR19FREdFKSA6IDA7XG4rXG4rXHQvKlxuK1x0ICogKFVuKXNldCBmb3JjZSBtb2RlIG9uIFFDQTgzMzcgb25seSwgZG9uJ3QgaW5jbHVkZSBpdCBpbiB0aGUgbWFzayBmb3JcbitcdCAqIG90aGVycy4gSXQgaXMgd3JpdHRlbiB0byB0aGUgUE9SVDAgUEFEIHJlZ2lzdGVyIGZvciBib3RoIHBvcnQgMCBhbmQgNi5cbitcdCAqL1xuK1x0aWYgKHByaXYtXHUwMDNlc3dpdGNoX2lkID09IFFDQThLX0lEX1FDQTgzMzcpIHtcbitcdFx0aWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19PVVRCQU5EKVxuK1x0XHRcdHZhbCB8PSBRQ0E4S19QT1JUX1BBRF9TR01JSV9GT1JDRV9NT0RFO1xuK1x0XHRtYXNrIHw9IFFDQThLX1BPUlRfUEFEX1NHTUlJX0ZPUkNFX01PREU7XG4rXHR9XG4rXG4rXHRpZiAobWFzaylcbitcdFx0cmV0ID0gcWNhOGtfcm13KHByaXYsIHJlZywgbWFzaywgdmFsKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmggYi9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcbmluZGV4IGQwNDY2NzkyNjVmYTQuLmVkOGYwYjQ5ODEyYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmhcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaFxuQEAgLTU4LDYgKzU4LDcgQEBcbiAjZGVmaW5lXHQgIFFDQThLX1BPUlRfUEFEX1JHTUlJX1RYX0RFTEFZX0VOXHRcdEJJVCgyNSlcbiAjZGVmaW5lICAgUUNBOEtfUE9SVF9QQURfUkdNSUlfUlhfREVMQVlfRU5cdFx0QklUKDI0KVxuICNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9FTlx0XHRcdEJJVCg3KVxuKyNkZWZpbmUgICBRQ0E4S19QT1JUX1BBRF9TR01JSV9GT1JDRV9NT0RFXHRcdEJJVCgzKVxuICNkZWZpbmUgUUNBOEtfUkVHX1BXU1x0XHRcdFx0XHQweDAxMFxuICNkZWZpbmUgICBRQ0E4S19QV1NfUE9XRVJfT05fU0VMXHRcdFx0QklUKDMxKVxuIC8qIFRoaXMgcmVnIGlzIG9ubHkgdmFsaWQgZm9yIFFDQTgzMnggYW5kIHRvZ2dsZSB0aGUgcGFja2FnZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6MDIuMzE4OTU1OTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDAxMzE3NjgxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIFN3aXRjaCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gcGlucG9pbnQgZXhhY3RseSB3aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggdG91Y2hlcyBgZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNgIGFuZCBgZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay5oYC4gQWgsIHRoYXQgcmluZ3MgYSBiZWxsISBUaGlzIGlzIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIsIHBhcnQgb2YgdGhlIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUg4oCTIERTQS4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaGFyZHdhcmUgaW1wbGljYXRpb25zLiBJcyB0aGlzIHNvbWV0aGluZyB0aGF0J3MgbGlrZWx5IHByZXNlbnQgaW4gYSB2YXJpZXR5IG9mIHN5c3RlbXMgSSBtaWdodCBlbmNvdW50ZXIsIG9yIGlzIGl0IGEgbW9yZSBzcGVjaWFsaXplZCBwaWVjZSBvZiBlcXVpcG1lbnQ/IEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyB1bmRlciBgZHJpdmVycy9uZXQvZHNhL3FjYS9gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNsdWVzIGFib3V0IGhhcmR3YXJlIGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbGwgYWxzbyBkbyBhIHF1aWNrIGdyZXAgZm9yIFwicWNhOGtcIiB0aHJvdWdob3V0IHRoZSBrZXJuZWwgdHJlZSBqdXN0IHRvIGdldCBhIGJyb2FkZXIgcGljdHVyZSBvZiB3aGVyZSB0aGlzIGRyaXZlciBtaWdodCBiZSB1c2VkIGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgbWlnaHQgaW50ZXJhY3Qgd2l0aCBpdC4gS25vd2xlZGdlIGlzIHBvd2VyLCBhbmQga25vd2luZyB0aGUgaGFyZHdhcmUgY29udGV4dCBpcyBjcnVjaWFsIGJlZm9yZSBJIGNhbiBtYWtlIGEganVkZ2VtZW50IG9uIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1OCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjEyLjMzMjEzNDUzOFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwODU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfRFNBX1FDQThLXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnPTI9Y29uZmlnIE5FVF9EU0FfQVI5MzMxXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMTAtXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjExOmNvbmZpZyBORVRfRFNBX1FDQThLXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTEyLVxcdHRyaXN0YXRlIFxcXCJRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWc6MTk6Y29uZmlnIE5FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnLTIwLVxcdGJvb2wgXFxcIlF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBMRURzIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9LY29uZmlnOjIxOlxcdGRlcGVuZHMgb24gTkVUX0RTQV9RQ0E4S1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvS2NvbmZpZzoyMjpcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUUNBOEtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL0tjb25maWctMjMtXFx0ZGVwZW5kcyBvbiBMRURTX1RSSUdHRVJTXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX05FVF9EU0FfQVI5MzMxKVxcdCs9IGFyOTMzMS5vXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9NYWtlZmlsZTozOm9iai0kKENPTkZJR19ORVRfRFNBX1FDQThLKVxcdCs9IHFjYThrLm9cXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlLTQtcWNhOGsteSBcXHRcXHRcXHQrPSBxY2E4ay1jb21tb24ubyBxY2E4ay04eHh4Lm9cXG5kcml2ZXJzL25ldC9kc2EvcWNhL01ha2VmaWxlOjU6aWZkZWYgQ09ORklHX05FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9NYWtlZmlsZS02LXFjYThrLXlcXHRcXHRcXHRcXHQrPSBxY2E4ay1sZWRzLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGtfbGVkcy5oLTYtLyogTGVkcyBTdXBwb3J0IGZ1bmN0aW9uICovXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4a19sZWRzLmg6NzojaWZkZWYgQ09ORklHX05FVF9EU0FfUUNBOEtfTEVEU19TVVBQT1JUXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4a19sZWRzLmgtOC1pbnQgcWNhOGtfc2V0dXBfbGVkX2N0cmwoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozMDoxMi4zNzc2NDU1NTZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NjM4OTgyMjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYHFjYThrYCBEcml2ZXIgUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgcWNhOGtgIGRyaXZlciB0byB1bmRlcnN0YW5kIGl0cyBpbml0aWFsaXphdGlvbiBmbG93LiBNeSBmaXJzdCBwcmlvcml0eSBpcyB0byBwaW4gZG93biAqaG93KiB0aGlzIHRoaW5nIGdldHMgcmVnaXN0ZXJlZC4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgdHlwaWNhbCByb3V0ZXMuIElzIGl0IGFuIE1ESU8gZHJpdmVyPyBUaGF0IHdvdWxkIG1ha2Ugc2Vuc2UgZ2l2ZW4gdGhlIGNvbW1vbiB1c2UgY2FzZS4gT3IgcGVyaGFwcyB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgcGxhdGZvcm0gZHJpdmVyLCBkZXNjcmliaW5nIGEgaGFyZHdhcmUgZGV2aWNlIHdpdGggc3BlY2lmaWMgcmVzb3VyY2UgcmVxdWlyZW1lbnRzLiBBcmUgd2UgaGFuZGxpbmcgaXQgdXNpbmcgU1BJPyBUaGF0J3MgYW5vdGhlciBwb3NzaWJpbGl0eSBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGluaXRpYWxpemF0aW9uIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBkcml2ZXIgcmVnaXN0cmF0aW9uIGZ1bmN0aW9ucywgYW5kIHRoZSBkZXZpY2UgcHJvYmUgZnVuY3Rpb25zLCB0byB1bmRlcnN0YW5kIHdoaWNoIG1lY2hhbmlzbSBpcyB1bHRpbWF0ZWx5IGVtcGxveWVkLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgYmluZGluZyBtZXRob2QuIFRoYXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIHN5c3RlbSdzIHJ1bnRpbWUgYmVoYXZpb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozMDoyMC4wMTY2Mjk3MzVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNTIxODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9tZGlvX2RyaXZlcnxtZGlvX2RyaXZlcl9yZWdpc3RlcnxwbGF0Zm9ybV9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL3FjYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjIwLjA2MTg5MDE1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYxNjc1NjQ5OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgUUNBOEsgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBRQ0E4SyBkcml2ZXIsIHNwZWNpZmljYWxseSB0aGUgcHJvYmluZyBtZWNoYW5pc20uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gaG93IGl0J3MgZG9uZSB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jYCBhbmQgcG90ZW50aWFsbHkgYWxzbyBgcWNhOGstY29tbW9uLmNgLiBUaGVzZSBmaWxlcyBhcmUgdGhlIGxpa2VseSBjYW5kaWRhdGVzIGZvciBjb250YWluaW5nIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgaW5pdGlhbCBkZXZpY2UgZGV0ZWN0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgaWRlbnRpZmllcyB0aGUgaGFyZHdhcmUsIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSByZXNvdXJjZXMsIGFuZCBzdGFydHMgdGhlIHN3aXRjaCBmdW5jdGlvbmFsaXR5LiBMb29raW5nIGF0IHRoZSBwcm9iZSByb3V0aW5lLCBJJ2xsIGJlIGZvY3VzZWQgb24gdGhlIHN0ZXBzIHRha2VuIHRvIGludGVyYWN0IHdpdGggdGhlIGhhcmR3YXJlLCB0aGUgcmVnaXN0ZXJzIGJlaW5nIGFjY2Vzc2VkLCBhbmQgYW55IGNoZWNrcyBmb3IgZGV2aWNlIHByZXNlbmNlIG9yIGNvbmZpZ3VyYXRpb24uIFRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRyaXZlcidzIG9wZXJhdGlvbmFsIGZsb3cgYW5kIHBvc3NpYmxlIGFyZWFzIGZvciBvcHRpbWl6YXRpb24gb3IgZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTQzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6MjYuMjI5NDU3MzkzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODU5ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9xY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9NzgwPXN0YXRpYyBpbnQgYXI5MzMxX3N3X2lycV9tYXAoc3RydWN0IGlycV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtNzg1LVxcdGlycV9zZXRfbmVzdGVkX3RocmVhZChpcnEsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6Nzg2OlxcdGlycV9zZXRfbm9wcm9iZShpcnEpO1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtNzg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYz0xMDI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2J1cyBhcjkzMzFfc3dfYnVzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0xMDMwLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM6MTAzMTpzdGF0aWMgaW50IGFyOTMzMV9zd19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9hcjkzMzEuYy0xMDMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmM9MTEyOD1zdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGFyOTMzMV9zd19tZGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL2FyOTMzMS5jOjExMjk6XFx0LnByb2JlID0gYXI5MzMxX3N3X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvYXI5MzMxLmMtMTEzMC1cXHQucmVtb3ZlID0gYXI5MzMxX3N3X3JlbW92ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTIwNTg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjIwNTk6cWNhOGtfc3dfcHJvYmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIwNjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjA2My1cXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYzoyMDY0OlxcdC8qIGFsbG9jYXRlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0IHNvIHRoYXQgd2UgY2FuIHByb2JlIHRoZSBzd2l0Y2hlc1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIwNjUtXFx0ICogSUQgcmVnaXN0ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jPTIyMjE9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBxY2E4a21kaW9fZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjIyMjI6XFx0LnByb2JlICA9IHFjYThrX3N3X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIyMjMtXFx0LnJlbW92ZSA9IHFjYThrX3N3X3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6MjYuMjcyMzIxNjQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTA4MjQ0MTY3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTURJTyBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoZSBgbWRpb19kcml2ZXJgIGlzIHJlZ2lzdGVyZWQgZm9yIE1ESU8gZGV2aWNlcywgc3BlY2lmaWNhbGx5IHRoZXNlIFF1YWxjb21tIEF0aGVyb3MgRXRoZXJuZXQgc3dpdGNoZXMg4oCTIFFDQTgzMjcsIFFDQTgzMzQsIGFuZCBRQ0E4MzM3LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIEkgZXZlbiAqcmVhY2gqIHRoaXMgZHJpdmVyIGluIGEgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXMgdGhpcyBkcml2ZXIgZW11bGF0ZWQsIG9yIGRvIEkgbmVlZCB0aGUgYWN0dWFsIGhhcmR3YXJlPyBJIG5lZWQgdG8gc3RheSB3aXRoaW4gdGhlIHJ1bGVzLlxuXG5MZXQgbWUgcmVmcmVzaCBteXNlbGYgd2l0aCB0aGUgXCJXb3J0aEZ1enppbmdcIiBjcml0ZXJpYS4gUmlnaHQsIGlmIHRoZSBwYXRjaCBvbmx5IHRvdWNoZXMgY29kZSB0aGF04oCZcyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMg4oCTIGxpa2UgY29kZSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIOKAkyB0aGVuIGl0J3MgYSBuby1nbyBmb3IgZnV6emluZy4gTm8gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIGRyaXZlcnMsIG5vIFNtYXJ0TklDIHN0dWZmLi4uIGFuZCB0aG9zZSBhcmUgb2Z0ZW4gdGhpbmdzIHRoYXQgZGVwZW5kIG9uIHBoeXNpY2FsIGNhcmRzLlxuXG5TbywgYmFjayB0byB0aGUgUUNBOEsgc3dpdGNoZXMuIEFyZSB0aGV5IGRlcGVuZGVudCBvbiBwaHlzaWNhbCBoYXJkd2FyZT8gQXJlIHRoZXNlIGNoaXBzIGNvbW1vbmx5IGZvdW5kIG9uIHJvdXRlcnMgYW5kIGVtYmVkZGVkIHN5c3RlbXM/IFNwZWNpZmljYWxseSwgdGhlIFFDQTgzMzcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIEkgY2FuIHByb2JlIHRoZXNlIGRldmljZXMgd2l0aG91dCB0aGVpciBwaHlzaWNhbCBjb25zdHJhaW50cy4gSSB0aGluayBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIG91dCB0aGUgYHFjYThrX3N3X3Byb2JlYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTUzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMwOjM3LjA5Njc0MTM1NVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjA1OCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjA1ODpcXHRzdGF0aWMgaW50XFxuMjA1OTpcXHRxY2E4a19zd19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuMjA2MDpcXHR7XFxuMjA2MTpcXHRcXHRzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdjtcXG4yMDYyOlxcdFxcdGludCByZXQ7XFxuMjA2MzpcXHRcXG4yMDY0OlxcdFxcdC8qIGFsbG9jYXRlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0IHNvIHRoYXQgd2UgY2FuIHByb2JlIHRoZSBzd2l0Y2hlc1xcbjIwNjU6XFx0XFx0ICogSUQgcmVnaXN0ZXJcXG4yMDY2OlxcdFxcdCAqL1xcbjIwNjc6XFx0XFx0cHJpdiA9IGRldm1fa3phbGxvYyhcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4yMDY4OlxcdFxcdGlmICghcHJpdilcXG4yMDY5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjIwNzA6XFx0XFxuMjA3MTpcXHRcXHRwcml2LVxcdTAwM2VidXMgPSBtZGlvZGV2LVxcdTAwM2VidXM7XFxuMjA3MjpcXHRcXHRwcml2LVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbjIwNzM6XFx0XFx0cHJpdi1cXHUwMDNlaW5mbyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShwcml2LVxcdTAwM2VkZXYpO1xcbjIwNzQ6XFx0XFxuMjA3NTpcXHRcXHRwcml2LVxcdTAwM2VyZXNldF9ncGlvID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwocHJpdi1cXHUwMDNlZGV2LCBcXFwicmVzZXRcXFwiLFxcbjIwNzY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgR1BJT0RfT1VUX0hJR0gpO1xcbjIwNzc6XFx0XFx0aWYgKElTX0VSUihwcml2LVxcdTAwM2VyZXNldF9ncGlvKSlcXG4yMDc4OlxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8pO1xcbjIwNzk6XFx0XFxuMjA4MDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcmVzZXRfZ3Bpbykge1xcbjIwODE6XFx0XFx0XFx0LyogVGhlIGFjdGl2ZSBsb3cgZHVyYXRpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gMTAgbXNcXG4yMDgyOlxcdFxcdFxcdCAqIGFuZCBjaGVja3BhdGNoLnBsIHdhbnRzIDIwIG1zLlxcbjIwODM6XFx0XFx0XFx0ICovXFxuMjA4NDpcXHRcXHRcXHRtc2xlZXAoMjApO1xcbjIwODU6XFx0XFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVwKHByaXYtXFx1MDAzZXJlc2V0X2dwaW8sIDApO1xcbjIwODY6XFx0XFx0fVxcbjIwODc6XFx0XFxuMjA4ODpcXHRcXHQvKiBTdGFydCBieSBzZXR0aW5nIHVwIHRoZSByZWdpc3RlciBtYXBwaW5nICovXFxuMjA4OTpcXHRcXHRwcml2LVxcdTAwM2VyZWdtYXAgPSBkZXZtX3JlZ21hcF9pbml0KFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYsIE5VTEwsIHByaXYsXFxuMjA5MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2cWNhOGtfcmVnbWFwX2NvbmZpZyk7XFxuMjA5MTpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZXJlZ21hcCkpIHtcXG4yMDkyOlxcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwicmVnbWFwIGluaXRpYWxpemF0aW9uIGZhaWxlZFxcXCIpO1xcbjIwOTM6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocHJpdi1cXHUwMDNlcmVnbWFwKTtcXG4yMDk0OlxcdFxcdH1cXG4yMDk1OlxcdFxcbjIwOTY6XFx0XFx0cHJpdi1cXHUwMDNlbWRpb19jYWNoZS5wYWdlID0gMHhmZmZmO1xcbjIwOTc6XFx0XFxuMjA5ODpcXHRcXHQvKiBDaGVjayB0aGUgZGV0ZWN0ZWQgc3dpdGNoIGlkICovXFxuMjA5OTpcXHRcXHRyZXQgPSBxY2E4a19yZWFkX3N3aXRjaF9pZChwcml2KTtcXG4yMTAwOlxcdFxcdGlmIChyZXQpXFxuMjEwMTpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjIxMDI6XFx0XFxuMjEwMzpcXHRcXHRwcml2LVxcdTAwM2VkcyA9IGRldm1fa3phbGxvYyhcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBzaXplb2YoKnByaXYtXFx1MDAzZWRzKSwgR0ZQX0tFUk5FTCk7XFxuMjEwNDpcXHRcXHRpZiAoIXByaXYtXFx1MDAzZWRzKVxcbjIxMDU6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMjEwNjpcXHRcXG4yMTA3OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZW1nbXRfZXRoX2RhdGEubXV0ZXgpO1xcbjIxMDg6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZwcml2LVxcdTAwM2VtZ210X2V0aF9kYXRhLnJ3X2RvbmUpO1xcbjIxMDk6XFx0XFxuMjExMDpcXHRcXHRtdXRleF9pbml0KFxcdTAwMjZwcml2LVxcdTAwM2VtaWJfZXRoX2RhdGEubXV0ZXgpO1xcbjIxMTE6XFx0XFx0aW5pdF9jb21wbGV0aW9uKFxcdTAwMjZwcml2LVxcdTAwM2VtaWJfZXRoX2RhdGEucndfZG9uZSk7XFxuMjExMjpcXHRcXG4yMTEzOlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VkZXYgPSBcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2O1xcbjIxMTQ6XFx0XFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZW51bV9wb3J0cyA9IFFDQThLX05VTV9QT1JUUztcXG4yMTE1OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4yMTE2OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2cWNhOGtfc3dpdGNoX29wcztcXG4yMTE3OlxcdFxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2cWNhOGtfcGh5bGlua19tYWNfb3BzO1xcbjIxMTg6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlcmVnX211dGV4KTtcXG4yMTE5OlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2LCBwcml2KTtcXG4yMTIwOlxcdFxcbjIxMjE6XFx0XFx0cmV0dXJuIGRzYV9yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbjIxMjI6XFx0fVxcbjIxMjM6XFx0XFxuMjEyNDpcXHRzdGF0aWMgdm9pZFxcbjIxMjU6XFx0cWNhOGtfc3dfcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4yMTI2OlxcdHtcXG4yMTI3OlxcdFxcdHN0cnVjdCBxY2E4a19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbjIxMjg6XFx0XFx0aW50IGk7XFxuMjEyOTpcXHRcXG4yMTMwOlxcdFxcdGlmICghcHJpdilcXG4yMTMxOlxcdFxcdFxcdHJldHVybjtcXG4yMTMyOlxcdFxcbjIxMzM6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFFDQThLX05VTV9QT1JUUzsgaSsrKVxcbjIxMzQ6XFx0XFx0XFx0cWNhOGtfcG9ydF9zZXRfc3RhdHVzKHByaXYsIGksIDApO1xcbjIxMzU6XFx0XFxuMjEzNjpcXHRcXHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2gocHJpdi1cXHUwMDNlZHMpO1xcbjIxMzc6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxOTozMDozNy4wOTY4NjgzNjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzE0NTMyODc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBxY2E4a19yZWFkX3N3aXRjaF9pZChwcml2KWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHFjYThrYCBkcml2ZXIgYW5kIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gYHFjYThrX3JlYWRfc3dpdGNoX2lkKHByaXYpYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkga25vdyBgcHJpdmAgbGlrZWx5IHJlZmVycyB0byB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSwgaG9sZGluZyBjb250ZXh0IGZvciB0aGlzIHNwZWNpZmljIGluc3RhbmNlIG9mIHRoZSBRQ0E4SyBzd2l0Y2guIEknbSBhc3N1bWluZyBpdCBjb250YWlucyB0aGUgbmVjZXNzYXJ5IGJhc2UgYWRkcmVzcywgcmVnaXN0ZXIgb2Zmc2V0cywgYW5kIG1heWJlIHNvbWUgY2FjaGVkIHN0YXRlIGluZm9ybWF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGluZm9ybWF0aW9uIHRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgZnJvbSB0aGUgc3dpdGNoIGl0c2VsZiwgcHJlc3VtYWJseSBieSByZWFkaW5nIHNvbWUgcmVnaXN0ZXJzLiBUaGUgXCJzd2l0Y2ggSURcIiBpcyB0aGUga2V5IGhlcmUuIElzIGl0IGEgdW5pcXVlIGlkZW50aWZpZXI/IEEgcHJvZHVjdCByZXZpc2lvbj8gUGVyaGFwcyBhIG1vZGVsIG51bWJlcj8gSSdsbCBiZXQgaXQncyB1c2VkIGZvciBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gb3IgZmVhdHVyZSBkZXRlY3Rpb24gZnVydGhlciBkb3duIHRoZSBsaW5lLiBJJ2xsIG5lZWQgdG8gdHJhY2UgaXRzIHVzYWdlIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBkaWZmZXJlbnQgSURzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4uLmxldCdzIHNlZSB3aGF0IHJlZ2lzdGVyIHJlYWRzIGFyZSBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk5MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6NDAuMjQyMjAwNDQzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzEyNDM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxY2E4a19yZWFkX3N3aXRjaF9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcWNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguYz0yMDU5PXFjYThrX3N3X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jLTIwOTgtXFx0LyogQ2hlY2sgdGhlIGRldGVjdGVkIHN3aXRjaCBpZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstOHh4eC5jOjIwOTk6XFx0cmV0ID0gcWNhOGtfcmVhZF9zd2l0Y2hfaWQocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMtMjEwMC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uYz0xMjI0PWludCBxY2E4a19wb3J0X2xhZ19sZWF2ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uYy0xMjI5LVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGstY29tbW9uLmM6MTIzMDppbnQgcWNhOGtfcmVhZF9zd2l0Y2hfaWQoc3RydWN0IHFjYThrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uYy0xMjMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9xY2EvcWNhOGsuaD01MDU9dm9pZCBxY2E4a19wb3J0X3NldF9zdGF0dXMoc3RydWN0IHFjYThrX3ByaXYgKnByaXYsIGludCBwb3J0LCBpbnQgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLmg6NTA2OmludCBxY2E4a19yZWFkX3N3aXRjaF9pZChzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay5oLTUwNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzA6NDAuMjg1MzMxNDcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI1NDM1ODY1Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgcWNhOGtfcmVhZF9zd2l0Y2hfaWRgLiBIZXJlJ3MgbXkgdGFrZSwgdGhpbmtpbmcgaXQgdGhyb3VnaC4uLlxuXG4qKkFuYWx5emluZyBgcWNhOGtfcmVhZF9zd2l0Y2hfaWRgKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcWNhOGtfcmVhZF9zd2l0Y2hfaWRgIGZ1bmN0aW9uLiBGaXJzdCwgSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHRoZSBRQ0E4SyBkYXRhc2hlZXQg4oCTIGdvdHRhIGhhdmUgdGhhdCBhcmNoaXRlY3R1cmFsIGNvbnRleHQgbG9ja2VkIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gKnNob3VsZCogYmUgZG9pbmcuIE9idmlvdXNseSwgdGhlIG5hbWUgc3VnZ2VzdHMgaXQncyByZWFkaW5nIHRoZSBpZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBvZiB0aGUgc3dpdGNoLCB3aGljaCB0eXBpY2FsbHkgaW5jbHVkZXMgbWFudWZhY3R1cmVyLCBtb2RlbCwgcmV2aXNpb24sIGV0Yy4gVGhhdCdzIHRoZSBiYXNlbGluZS5cblxuTXkgaW1tZWRpYXRlIHF1ZXN0aW9ucyBhcmU6IFdoYXQgcmVnaXN0ZXJzIGlzIGl0IGFjY2Vzc2luZz8gV2hhdCdzIHRoZSBleHBlY3RlZCBkYXRhIGZvcm1hdCBmb3IgdGhlIHN3aXRjaCBJRD8gSXMgdGhpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWdpc3RlciByZWFkLCBvciBkb2VzIGl0IGludm9sdmUgYW55IGtpbmQgb2Ygc2VxdWVuY2Ugb3IgY29tbWFuZD8gSSBuZWVkIHRvIGxvb2sgZm9yIGFueSByZWdpc3RlciBhZGRyZXNzIGNvbnN0YW50cyBiZWluZyB1c2VkIC0gdGhvc2UgYXJlIHRoZSBrZXlzIHRvIHVuZGVyc3RhbmRpbmcgdGhlIGhhcmR3YXJlIGludGVyYWN0aW9uLiBBcmUgdGhlcmUgYml0IG1hc2tzIGludm9sdmVkPyBUaGF0J3MgZ29pbmcgdG8gdGVsbCBtZSBob3cgdGhlIElEIGlzIHBhY2tlZCwgd2hpY2ggYml0cyByZXByZXNlbnQgd2hpY2ggcGllY2VzIG9mIGluZm9ybWF0aW9uLiBJIHNob3VsZCBrZWVwIGFuIGV5ZSBvdXQgZm9yIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgcG90ZW50aWFsIGVycm9ycy4gV2hhdCBhcmUgdGhlIGVycm9yIGNvZGVzIGRlZmluZWQgYW5kIGhvdyBkb2VzIGl0IGRlYWwgd2l0aCBhbnkgcmVhZCBmYWlsdXJlcz9cblxuSSdtIGFzc3VtaW5nIHRoaXMgaXMgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNvIGl0J3MgcHJvYmFibHkgY2FsbGVkIGVhcmx5IG9uLiBJdCBzZXRzIHVwIGEgZnVuZGFtZW50YWwgdW5kZXJzdGFuZGluZyBvZiB0aGUgaGFyZHdhcmUgd2UgYXJlIGFib3V0IHRvIGNvbnRyb2wuIElzIHRoZXJlIGFueSBkZXZpY2UgdHJlZSBvciBzaW1pbGFyIG1lY2hhbmlzbSB0aGF0IG1heSBwcm92aWRlIHRoaXMgaW5mb3JtYXRpb24/IElmIHNvLCBpcyB0aGlzIGZ1bmN0aW9uIGp1c3QgYSBiYWNrdXAsIG9yIHZhbGlkYXRpb24/IEl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgaW5pdGlhbGl6YXRpb24gZmxvdy4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGUgZXJyb3IgaGFuZGxpbmcgaXMgcm9idXN0IGVub3VnaCB0byBwcmV2ZW50IHByb2JsZW1zIGlmIHRoZSBzd2l0Y2ggZG9lcyBub3QgaWRlbnRpZnkgaXRzZWxmIGNvcnJlY3RseS5cblxuT2theSwgSSdtIG1lbnRhbGx5IGFzc2VtYmxpbmcgdGhlIHBvc3NpYmlsaXRpZXMuIEknbGwgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlLCBsb29raW5nIGZvciB0aG9zZSByZWdpc3RlciBhY2Nlc3NlcywgYml0IG1hbmlwdWxhdGlvbnMsIGVycm9yIGNoZWNrcywgYW5kIHBvdGVudGlhbCBkYXRhIHBhcnNpbmcuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcxOSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDE5OjMxOjA1LjcyMTE5OTcwOVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTI5MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay1jb21tb24uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjMwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjMwOlxcdGludCBxY2E4a19yZWFkX3N3aXRjaF9pZChzdHJ1Y3QgcWNhOGtfcHJpdiAqcHJpdilcXG4xMjMxOlxcdHtcXG4xMjMyOlxcdFxcdHUzMiB2YWw7XFxuMTIzMzpcXHRcXHR1OCBpZDtcXG4xMjM0OlxcdFxcdGludCByZXQ7XFxuMTIzNTpcXHRcXG4xMjM2OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlaW5mbylcXG4xMjM3OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjEyMzg6XFx0XFxuMTIzOTpcXHRcXHRyZXQgPSBxY2E4a19yZWFkKHByaXYsIFFDQThLX1JFR19NQVNLX0NUUkwsIFxcdTAwMjZ2YWwpO1xcbjEyNDA6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTI0MTpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4xMjQyOlxcdFxcbjEyNDM6XFx0XFx0aWQgPSBRQ0E4S19NQVNLX0NUUkxfREVWSUNFX0lEKHZhbCk7XFxuMTI0NDpcXHRcXHRpZiAoaWQgIT0gcHJpdi1cXHUwMDNlaW5mby1cXHUwMDNlaWQpIHtcXG4xMjQ1OlxcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LFxcbjEyNDY6XFx0XFx0XFx0XFx0XFxcIlN3aXRjaCBpZCBkZXRlY3RlZCAleCBidXQgZXhwZWN0ZWQgJXhcXFwiLFxcbjEyNDc6XFx0XFx0XFx0XFx0aWQsIHByaXYtXFx1MDAzZWluZm8tXFx1MDAzZWlkKTtcXG4xMjQ4OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjEyNDk6XFx0XFx0fVxcbjEyNTA6XFx0XFxuMTI1MTpcXHRcXHRwcml2LVxcdTAwM2Vzd2l0Y2hfaWQgPSBpZDtcXG4xMjUyOlxcdFxcbjEyNTM6XFx0XFx0LyogU2F2ZSByZXZpc2lvbiB0byBjb21tdW5pY2F0ZSB0byB0aGUgaW50ZXJuYWwgUEhZIGRyaXZlciAqL1xcbjEyNTQ6XFx0XFx0cHJpdi1cXHUwMDNlc3dpdGNoX3JldmlzaW9uID0gUUNBOEtfTUFTS19DVFJMX1JFVl9JRCh2YWwpO1xcbjEyNTU6XFx0XFxuMTI1NjpcXHRcXHRyZXR1cm4gMDtcXG4xMjU3OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzE6MDUuNzIxMzE0NTk5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNTAwNTUzMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBQYXRjaCBmb3IgRnV6emluZyBBcHBsaWNhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoLCB3aGljaCB0b3VjaGVzIGBxY2E4ay04eHh4LmNgIChwYXJ0IG9mIHRoZSBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyIHVuZGVyIERTQSkgaXMgdW5saWtlbHkgdG8gYmUgZnV6emFibGUuIEZpcnN0LCBsZXQncyBlc3RhYmxpc2ggdGhlIGNvbnRleHQ6IGBxY2E4a2Agc3BlY2lmaWNhbGx5IHJlZmVycyB0byBwaHlzaWNhbCBFdGhlcm5ldCBzd2l0Y2ggY2hpcHMgKFFDQTgzMjcsIFFDQTgzMzQsIFFDQTgzMzcpIHRoYXQgY29tbXVuaWNhdGUgdmlhIGFuIE1ESU8gYnVzLCB0eXBpY2FsbHkgY29ubmVjdGVkIHRvIGFuIFNvQyBvciBhbiBFdGhlcm5ldCBNQUMgTURJTyBjb250cm9sbGVyLiBUaGVzZSBjaGlwcyBhcmUgY29uZmlndXJlZCB0aHJvdWdoIERldmljZSBUcmVlIG1hdGNoIGRhdGEuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaGFyZHdhcmUgb3IgaXRzIE1ESU8gc3dpdGNoIHRvcG9sb2d5IGlzIGVtdWxhdGVkIGluIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLiBBbmQsIGFzIEkgc3VzcGVjdGVkLCB0aGUgYW5zd2VyIGlzIG5vLiBRRU1VIGRvZXMgbm90IGVtdWxhdGUgdGhlc2UgUXVhbGNvbW0gQXRoZXJvcyBRQ0E4SyBFdGhlcm5ldCBzd2l0Y2hlcywgbm9yIHRoZWlyIE1ESU8gc3dpdGNoIHRvcG9sb2dpZXMuIEl0IGRlbWFuZHMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgLSByb3V0ZXIgYm9hcmRzIG9yIHBsYXRmb3JtcyBidWlsdCBhcm91bmQgUXVhbGNvbW0gQXRoZXJvcyBoYXJkd2FyZS5cblxuTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBcIldvcnRoRnV6emluZ1wiIGNyaXRlcmlhIHRvIGNvbmZpcm06IGl0IHN0YXRlcyB0aGF0IGEgcGF0Y2ggc2hvdWxkIGJlIGRlZW1lZCBub3Qgd29ydGggZnV6emluZyBpZiBpdCdzIGxpbWl0ZWQgdG8gZG9jdW1lbnRhdGlvbiwgS2NvbmZpZyBjaGFuZ2VzLCBjb21tZW50cywgZGVjb3JhdGl2ZSBsb2dnaW5nLCBjaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzL21hY3JvcyB3aXRob3V0IGZ1bmN0aW9uYWwgaW1wYWN0LCB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoaW5jbHVkaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIGxpa2UgdXNiIGdhZGdldCBvciBtYWM4MDIxMV9od3NpbSksIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgZGVtYW5kIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSwgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcy5cblxuU28sIGxldCdzIHZlcmlmeSB0aGF0IHRoZSBEU0EvUUNBOEsgc3dpdGNoZXMgYXJlIGluZGVlZCB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBRQ0E4SyBpcyBhbiBNRElPLWF0dGFjaGVkIEV0aGVybmV0IHN3aXRjaCBJQyAoUUNBODMyNywgUUNBODMzNCwgUUNBODMzNywgUUNBODMyOCkgZm9yIGVtYmVkZGVkIHN5c3RlbXMuIFNpbmNlIHRoZXJlJ3Mgbm8gaGFyZHdhcmUgZW11bGF0aW9uIGZvciB0aGVzZSBRdWFsY29tbSBRQ0E4eHh4IHN3aXRjaCBjaGlwcyAob3IgTURJTyBEU0Egc3dpdGNoIGNoaXBzKSBpbiBRRU1VIG9yIEdDRSwgdGhlIGNvZGUgcGF0aHMgaW4gYHFjYThrLTh4eHguY2AsIHNwZWNpZmljYWxseSBgcWNhOGtfcGNzX2NvbmZpZ2AsIGFyZSBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aGVzZSBlbnZpcm9ubWVudHMuXG5cbkxldCdzIGRpc3NlY3QgdGhlIHBhdGNoIGl0c2VsZjogaXQgbW9kaWZpZXMgYHFjYThrX3Bjc19jb25maWdgIHdpdGhpbiBgcWNhOGstOHh4eC5jYC4gVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgUEhZIExpbmsgUENTIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gb24gUXVhbGNvbW0gQXRoZXJvcyBRQ0E4MzM3IHN3aXRjaCBjaGlwcy4gIFRoZSBwYXRjaCBpbmNsdWRlcyBhIGNvbmRpdGlvbmFsIGNoZWNrIHNwZWNpZmljYWxseSBmb3IgUUNBODMzNyBhbmQgaXRzIGBTR01JSV9GT1JDRV9NT0RFYCwgd2hpY2ggY29uZmlybXMgdGhhdCB0aGUgY29kZSBpbmRlZWQgZGVhbHMgd2l0aCB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIGZlYXR1cmVzLiBUaGlzIHJlcXVpcmVzIGEgcmVhbCBNRElPIHN3aXRjaCBvciBlbWJlZGRlZCBTb0MgdG8gYmUgYWN0aXZhdGVkLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHRoZSBjb2RlIHBhdGggaW52b2x2ZXMgaGFyZHdhcmUgbm90IHByZXNlbnQgaW4gUUVNVSBvciBHQ0UsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSSBhbSByZWFzb25pbmcgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgYSBkcml2ZXIgZm9yIHBoeXNpY2FsIE1ESU8gaGFyZHdhcmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBpbmFjY2Vzc2libGUgZm9yIGZ1enppbmcuIEknbGwgcGFzcyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2w6XG5cbiogICAqKldvcnRoRnV6emluZzogZmFsc2UqKlxuKiAgICoqRm9jdXNTeW1ib2xzOiBcXFsgXSoqXG4qICAgKipFbmFibGVDb25maWdzOiBcXFsgXSoqXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBRdWFsY29tbSBBdGhlcm9zIFFDQThLIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIgKGBkcml2ZXJzL25ldC9kc2EvcWNhL3FjYThrLTh4eHguY2ApLCBzcGVjaWZpY2FsbHkgUENTIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBRQ0E4MzM3IHN3aXRjaC4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgTURJTyBoYXJkd2FyZSAvIGVtYmVkZGVkIFNvQyBzd2l0Y2ggaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU4OCwiT3V0cHV0VG9rZW5zIjoxMzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDU2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzE6MjYuMjIxODcxMDQ2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFF1YWxjb21tIEF0aGVyb3MgUUNBOEsgRXRoZXJuZXQgc3dpdGNoIGRyaXZlciAoZHJpdmVycy9uZXQvZHNhL3FjYS9xY2E4ay04eHh4LmMpLCBzcGVjaWZpY2FsbHkgU0dNSUkgUENTIGZvcmNlIG1vZGUgY29uZmlndXJhdGlvbiBmb3IgUUNBODMzNyBzd2l0Y2hlcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgZGVkaWNhdGVkIHBoeXNpY2FsIGhhcmR3YXJlIChRdWFsY29tbSBBdGhlcm9zIFFDQTgzeHggRXRoZXJuZXQgc3dpdGNoIGNoaXBzIG9uIE1ESU8pIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIHN1Y2ggYXMgUUVNVSBvciBHQ0UsIG1ha2luZyB0aGVzZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTk6MzE6MjYuMjIxOTAwMzQ2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowl4dt9[1] Phase: Running StartedAt: 2026-08-31 19:31:36 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl4dt9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 19:31:36 +0000 UTC FinishedAt: 2026-08-31 19:31:41 +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,}