Name: series-workflowchxwt Phase: Failed StartedAt: 2026-06-22 16:21:10 +0000 UTC FinishedAt: 2026-06-22 16:29:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchxwt[0] Phase: Succeeded StartedAt: 2026-06-22 16:21:10 +0000 UTC FinishedAt: 2026-06-22 16:28:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchxwt[0].run-triage Phase: Succeeded StartedAt: 2026-06-22 16:21:10 +0000 UTC FinishedAt: 2026-06-22 16:28:56 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDE2OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZjNlYzNiYWEwOTViNjdjNGFiNjhhNGRiZGZhYWNiYWZjYzM2NjZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMTY6Mjg6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdGVzdHMvYmxvY2svMDQ0IGIvdGVzdHMvYmxvY2svMDQ0XG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhiYWY5ZmE1OWM2OGE0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90ZXN0cy9ibG9jay8wNDRcbkBAIC0wLDAgJiM0MzsxLDcxIEBAXG4mIzQzOyMhL2Jpbi9iYXNoXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7IyBDb3B5cmlnaHQgKGMpIDIwMjYgQ2hyaXN0b3BoIEhlbGx3aWcuXG4mIzQzOyNcbiYjNDM7IyBCYXNpYyBibG9jayBlcnJvciBpbmplY3Rpb24gdGVzdC5cbiYjNDM7XG4mIzQzOy4gdGVzdHMvYmxvY2svcmNcbiYjNDM7LiBjb21tb24vc2NzaV9kZWJ1Z1xuJiM0MztcbiYjNDM7REVTQ1JJUFRJT049XCYjMzQ7YmFzaWMgYmxvY2sgZXJyb3IgaW5qZWN0aW9uIHRlc3RcJiMzNDtcbiYjNDM7UVVJQ0s9MVxuJiM0MztcbiYjNDM7cmVxdWlyZXMoKVxuJiM0Mzt7XHRcbiYjNDM7XHRfaGF2ZV9sb2FkYWJsZV9zY3NpX2RlYnVnXG4mIzQzO1x0X2hhdmVfcHJvZ3JhbSB4ZnNfaW9cbiYjNDM7fVxuJiM0MztcbiYjNDM7IyBsb2FkIGFuZCByZW1vdmUgc2NzaV9kZWJ1ZyBvbmNlIHRvIHRlc3QgdGhlIHN0YXRpY19rZXkgYnVnIGluIHRoZVxuJiM0MzsjIGluaXRpYWwgY29tbWl0XG4mIzQzO190ZXN0X2xvYWRfdW5sb2FkKClcbiYjNDM7e1xuJiM0MztcdGlmICEgX2luaXRfc2NzaV9kZWJ1ZyBkZXZfc2l6ZV9tYj01MDA7IHRoZW5cbiYjNDM7XHRcdHJldHVybiAxXG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0bG9jYWwgZGV2PSR7U0NTSV9ERUJVR19ERVZJQ0VTWzBdfVxuJiM0MztcdGxvY2FsIGRlYnVnZnNfZmlsZT1cJiMzNDsvc3lzL2tlcm5lbC9kZWJ1Zy9ibG9jay8kZGV2L2Vycm9yX2luamVjdGlvblwmIzM0O1xuJiM0MztcdGlmIFtbICEgLWYgXCYjMzQ7JHtkZWJ1Z2ZzX2ZpbGV9XCYjMzQ7IF1dOyB0aGVuXG4mIzQzO1x0XHRTS0lQX1JFQVNPTlMmIzQzOz0oXCYjMzQ7ZXJyb3IgaW5qZWN0aW9uIG5vdCBzdXBwb3J0ZWRcJiMzNDspXG4mIzQzO1x0XHRfZXhpdF9zY3NpX2RlYnVnXG4mIzQzO1x0XHRyZXR1cm4gMVxuJiM0MztcdGZpXG4mIzQzO1x0ZWNobyBcJiMzNDtUZXN0aW5nIHVubG9hZCB3aXRob3V0IHJ1bGVzXCYjMzQ7XG4mIzQzO1x0X2V4aXRfc2NzaV9kZWJ1Z1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfdGVzdF9ydWxlcygpXG4mIzQzO3tcbiYjNDM7XHRpZiAhIF9pbml0X3Njc2lfZGVidWcgZGV2X3NpemVfbWI9NTAwOyB0aGVuXG4mIzQzO1x0XHRyZXR1cm4gMVxuJiM0MztcdGZpXG4mIzQzO1xuJiM0MztcdGxvY2FsIGRldj0ke1NDU0lfREVCVUdfREVWSUNFU1swXX1cbiYjNDM7XHRsb2NhbCBkZWJ1Z2ZzX2ZpbGU9XCYjMzQ7L3N5cy9rZXJuZWwvZGVidWcvYmxvY2svJGRldi9lcnJvcl9pbmplY3Rpb25cJiMzNDtcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDtUZXN0aW5nIHZhbGlkIHJ1bGVzXCYjMzQ7XG4mIzQzO1x0ZWNobyBcJiMzNDthZGQsb3A9V1JJVEUsc3RhdHVzPVJFU09VUkNFLHN0YXJ0PTAsbnJfc2VjdG9ycz04XCYjMzQ7IFx1MDAzZSAkZGVidWdmc19maWxlXG4mIzQzO1x0ZWNobyBcJiMzNDthZGQsb3A9UkVBRCxzdGF0dXM9SU9FUlIsc3RhcnQ9MTYsbnJfc2VjdG9ycz04XCYjMzQ7IFx1MDAzZSAkZGVidWdmc19maWxlXG4mIzQzO1x0eGZzX2lvIC1kIC1jICYjMzk7cHdyaXRlIC1xIDAgNDA5NiYjMzk7IC9kZXYvJGRldlxuJiM0MztcdHhmc19pbyAtZCAtYyAmIzM5O3ByZWFkIC1xIDAgNDA5NiYjMzk7IC9kZXYvJGRldlxuJiM0MztcdHhmc19pbyAtZCAtYyAmIzM5O3B3cml0ZSAtcSA0MDk2IDQwOTYmIzM5OyAvZGV2LyRkZXZcbiYjNDM7XHR4ZnNfaW8gLWQgLWMgJiMzOTtwcmVhZCAtcSA4MTkyIDgxOTImIzM5OyAvZGV2LyRkZXZcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDtUZXN0aW5nIGludmFsaWQgcnVsZXNcJiMzNDtcbiYjNDM7XHRlY2hvIFwmIzM0O29wPVJFQUQsc3RhdHVzPUlPRVJSXCYjMzQ7IFx1MDAzZSAkZGVidWdmc19maWxlXG4mIzQzO1x0ZWNobyBcJiMzNDthZGQsb3A9UkVBRCxzdGF0dXM9RUlPLHN0YXJ0PTMyXCYjMzQ7IFx1MDAzZSAkZGVidWdmc19maWxlXG4mIzQzO1x0X2V4aXRfc2NzaV9kZWJ1Z1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt0ZXN0KClcbiYjNDM7e1xuJiM0MztcdGVjaG8gXCYjMzQ7UnVubmluZyAke1RFU1RfTkFNRX1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0bG9jYWwgcmV0XG4mIzQzO1xuJiM0MztcdF90ZXN0X2xvYWRfdW5sb2FkXG4mIzQzO1x0X3Rlc3RfcnVsZXNcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDtUZXN0IGNvbXBsZXRlXCYjMzQ7XG4mIzQzO31cbmRpZmYgLS1naXQgYS90ZXN0cy9ibG9jay8wNDQub3V0IGIvdGVzdHMvYmxvY2svMDQ0Lm91dFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45MmVmY2RkZjdjOGU2MlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdGVzdHMvYmxvY2svMDQ0Lm91dFxuQEAgLTAsMCAmIzQzOzEsOSBAQFxuJiM0MztSdW5uaW5nIGJsb2NrLzA0NFxuJiM0MztUZXN0aW5nIHVubG9hZCB3aXRob3V0IHJ1bGVzXG4mIzQzO1Rlc3RpbmcgdmFsaWQgcnVsZXNcbiYjNDM7cHdyaXRlOiBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5XG4mIzQzO3ByZWFkOiBJbnB1dC9vdXRwdXQgZXJyb3JcbiYjNDM7VGVzdGluZyBpbnZhbGlkIHJ1bGVzXG4mIzQzO3Rlc3RzL2Jsb2NrLzA0NDogbGluZSA1NjogZWNobzogd3JpdGUgZXJyb3I6IEludmFsaWQgYXJndW1lbnRcbiYjNDM7dGVzdHMvYmxvY2svMDQ0OiBsaW5lIDU3OiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudFxuJiM0MztUZXN0IGNvbXBsZXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgdGVzdCBzY3JpcHQgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWYzZWMzYmFhMDk1YjY3YzRhYjY4YTRkYmRmYWFjYmFmY2MzNjY2YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDIyIDE2OjI4OjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdGVzdHMvYmxvY2svMDQ0IGIvdGVzdHMvYmxvY2svMDQ0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi44YmFmOWZhNTljNjhhNAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rlc3RzL2Jsb2NrLzA0NApAQCAtMCwwICYjNDM7MSw3MSBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMgQ29weXJpZ2h0IChjKSAyMDI2IENocmlzdG9waCBIZWxsd2lnLgomIzQzOyMKJiM0MzsjIEJhc2ljIGJsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0LgomIzQzOwomIzQzOy4gdGVzdHMvYmxvY2svcmMKJiM0MzsuIGNvbW1vbi9zY3NpX2RlYnVnCiYjNDM7CiYjNDM7REVTQ1JJUFRJT049JiMzNDtiYXNpYyBibG9jayBlcnJvciBpbmplY3Rpb24gdGVzdCYjMzQ7CiYjNDM7UVVJQ0s9MQomIzQzOwomIzQzO3JlcXVpcmVzKCkKJiM0Mzt7CQomIzQzOwlfaGF2ZV9sb2FkYWJsZV9zY3NpX2RlYnVnCiYjNDM7CV9oYXZlX3Byb2dyYW0geGZzX2lvCiYjNDM7fQomIzQzOwomIzQzOyMgbG9hZCBhbmQgcmVtb3ZlIHNjc2lfZGVidWcgb25jZSB0byB0ZXN0IHRoZSBzdGF0aWNfa2V5IGJ1ZyBpbiB0aGUKJiM0MzsjIGluaXRpYWwgY29tbWl0CiYjNDM7X3Rlc3RfbG9hZF91bmxvYWQoKQomIzQzO3sKJiM0MzsJaWYgISBfaW5pdF9zY3NpX2RlYnVnIGRldl9zaXplX21iPTUwMDsgdGhlbgomIzQzOwkJcmV0dXJuIDEKJiM0MzsJZmkKJiM0MzsKJiM0MzsJbG9jYWwgZGV2PSR7U0NTSV9ERUJVR19ERVZJQ0VTWzBdfQomIzQzOwlsb2NhbCBkZWJ1Z2ZzX2ZpbGU9JiMzNDsvc3lzL2tlcm5lbC9kZWJ1Zy9ibG9jay8kZGV2L2Vycm9yX2luamVjdGlvbiYjMzQ7CiYjNDM7CWlmIFtbICEgLWYgJiMzNDske2RlYnVnZnNfZmlsZX0mIzM0OyBdXTsgdGhlbgomIzQzOwkJU0tJUF9SRUFTT05TJiM0Mzs9KCYjMzQ7ZXJyb3IgaW5qZWN0aW9uIG5vdCBzdXBwb3J0ZWQmIzM0OykKJiM0MzsJCV9leGl0X3Njc2lfZGVidWcKJiM0MzsJCXJldHVybiAxCiYjNDM7CWZpCiYjNDM7CWVjaG8gJiMzNDtUZXN0aW5nIHVubG9hZCB3aXRob3V0IHJ1bGVzJiMzNDsKJiM0MzsJX2V4aXRfc2NzaV9kZWJ1ZwomIzQzO30KJiM0MzsKJiM0MztfdGVzdF9ydWxlcygpCiYjNDM7ewomIzQzOwlpZiAhIF9pbml0X3Njc2lfZGVidWcgZGV2X3NpemVfbWI9NTAwOyB0aGVuCiYjNDM7CQlyZXR1cm4gMQomIzQzOwlmaQomIzQzOwomIzQzOwlsb2NhbCBkZXY9JHtTQ1NJX0RFQlVHX0RFVklDRVNbMF19CiYjNDM7CWxvY2FsIGRlYnVnZnNfZmlsZT0mIzM0Oy9zeXMva2VybmVsL2RlYnVnL2Jsb2NrLyRkZXYvZXJyb3JfaW5qZWN0aW9uJiMzNDsKJiM0MzsKJiM0MzsJZWNobyAmIzM0O1Rlc3RpbmcgdmFsaWQgcnVsZXMmIzM0OwomIzQzOwllY2hvICYjMzQ7YWRkLG9wPVdSSVRFLHN0YXR1cz1SRVNPVVJDRSxzdGFydD0wLG5yX3NlY3RvcnM9OCYjMzQ7ICZndDsgJGRlYnVnZnNfZmlsZQomIzQzOwllY2hvICYjMzQ7YWRkLG9wPVJFQUQsc3RhdHVzPUlPRVJSLHN0YXJ0PTE2LG5yX3NlY3RvcnM9OCYjMzQ7ICZndDsgJGRlYnVnZnNfZmlsZQomIzQzOwl4ZnNfaW8gLWQgLWMgJiMzOTtwd3JpdGUgLXEgMCA0MDk2JiMzOTsgL2Rldi8kZGV2CiYjNDM7CXhmc19pbyAtZCAtYyAmIzM5O3ByZWFkIC1xIDAgNDA5NiYjMzk7IC9kZXYvJGRldgomIzQzOwl4ZnNfaW8gLWQgLWMgJiMzOTtwd3JpdGUgLXEgNDA5NiA0MDk2JiMzOTsgL2Rldi8kZGV2CiYjNDM7CXhmc19pbyAtZCAtYyAmIzM5O3ByZWFkIC1xIDgxOTIgODE5MiYjMzk7IC9kZXYvJGRldgomIzQzOwomIzQzOwllY2hvICYjMzQ7VGVzdGluZyBpbnZhbGlkIHJ1bGVzJiMzNDsKJiM0MzsJZWNobyAmIzM0O29wPVJFQUQsc3RhdHVzPUlPRVJSJiMzNDsgJmd0OyAkZGVidWdmc19maWxlCiYjNDM7CWVjaG8gJiMzNDthZGQsb3A9UkVBRCxzdGF0dXM9RUlPLHN0YXJ0PTMyJiMzNDsgJmd0OyAkZGVidWdmc19maWxlCiYjNDM7CV9leGl0X3Njc2lfZGVidWcKJiM0Mzt9CiYjNDM7CiYjNDM7dGVzdCgpCiYjNDM7ewomIzQzOwllY2hvICYjMzQ7UnVubmluZyAke1RFU1RfTkFNRX0mIzM0OwomIzQzOwomIzQzOwlsb2NhbCByZXQKJiM0MzsKJiM0MzsJX3Rlc3RfbG9hZF91bmxvYWQKJiM0MzsJX3Rlc3RfcnVsZXMKJiM0MzsKJiM0MzsJZWNobyAmIzM0O1Rlc3QgY29tcGxldGUmIzM0OwomIzQzO30KZGlmZiAtLWdpdCBhL3Rlc3RzL2Jsb2NrLzA0NC5vdXQgYi90ZXN0cy9ibG9jay8wNDQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi45MmVmY2RkZjdjOGU2MgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rlc3RzL2Jsb2NrLzA0NC5vdXQKQEAgLTAsMCAmIzQzOzEsOSBAQAomIzQzO1J1bm5pbmcgYmxvY2svMDQ0CiYjNDM7VGVzdGluZyB1bmxvYWQgd2l0aG91dCBydWxlcwomIzQzO1Rlc3RpbmcgdmFsaWQgcnVsZXMKJiM0Mztwd3JpdGU6IENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkKJiM0MztwcmVhZDogSW5wdXQvb3V0cHV0IGVycm9yCiYjNDM7VGVzdGluZyBpbnZhbGlkIHJ1bGVzCiYjNDM7dGVzdHMvYmxvY2svMDQ0OiBsaW5lIDU2OiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudAomIzQzO3Rlc3RzL2Jsb2NrLzA0NDogbGluZSA1NzogZWNobzogd3JpdGUgZXJyb3I6IEludmFsaWQgYXJndW1lbnQKJiM0MztUZXN0IGNvbXBsZXRlCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVGVzdCBTY3JpcHQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRlc3Qgc2NyaXB0LCBgdGVzdHMvYmxvY2svMDQ0YCwgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIFJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyAmIzM0O2Jsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0JiMzNDsg4oCTIHNvbWV0aGluZyBJJiMzOTtkIHR5cGljYWxseSBmaW5kIGluIGBibGt0ZXN0c2Agb3IgYSBzaW1pbGFyIHRlc3RpbmcgZnJhbWV3b3JrLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gYW5kIHRoZSBwYXRoIHdpdGhpbiBgdGVzdHMvYmxvY2svYCBkZWZpbml0ZWx5IHN1Z2dlc3QgYSB0ZXN0IHN1aXRlLgoKV2FpdCBhIHNlY29uZOKApiB0aGUgcGF0aCBpcyBgdGVzdHMvYmxvY2svMDQ0YC4gVGhpcyBpc24mIzM5O3Qga2VybmVsIHNvdXJjZTsgaXQmIzM5O3MgYSAqdGVzdCBzY3JpcHQqLiBUaGF0IHRocm93cyBhIGZsYWcuIExldCBtZSBxdWlja2x5IGpvZyBteSBtZW1vcnk6IGRvZXMgdGhlIGtlcm5lbCB0cmVlICpldmVuKiBoYXZlIGEgYHRlc3RzL2Jsb2NrL2AgZGlyZWN0b3J5PyBObywgdXN1YWxseSBzZWxmdGVzdHMgYXJlIHVuZGVyIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLiBBaGEhIGBibGt0ZXN0c2AgKmRvZXMqIGhhdmUgYSBgdGVzdHMvYmxvY2svYCBkaXJlY3RvcnkuIElzIHRoaXMgcGF0Y2ggZm9yIGBibGt0ZXN0c2AsIHRoZW4/IFRoYXQmIzM5O3MgdGhlIGtleSBxdWVzdGlvbi4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0uIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0ICpvbmx5KiBjb250YWlucyBhZGRpdGlvbnMgb2YgYHRlc3RzL2Jsb2NrLzA0NGAgYW5kIGl0cyBvdXRwdXQuIFRoZXJlJiMzOTtzIHplcm8ga2VybmVsIGNvZGUgaGVyZS4gR2l2ZW4gdGhhdCB0aGlzIGlzIHB1cmVseSBhIHRlc3Qgc2NyaXB0IGFuZCBubyBmdW5jdGlvbmFsIGNvZGUsIGl0JiMzOTtzIHByZXR0eSBjbGVhcjogdGhpcyAqc2hvdWxkIG5vdCogYmUgZnV6emVkLiBJdCYjMzk7cyBhIHRlc3Qgc2NyaXB0LCBub3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHRhcmdldGVkIGZvciBmdXp6aW5nLgoKTGV0IG1lIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9uIGFib3V0IHRoZSBgdGVzdHMvYmxvY2svYCBkaXJlY3RvcnkuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nLCBJJiMzOTtsbCBydW4gYGNvZGVzZWFyY2gtZGlyLWluZGV4YCBvbiBgdGVzdHMvYmxvY2svYC4gSnVzdCBhIHNhbml0eSBjaGVjay4gQnV0LCBiYXJyaW5nIGFueSBzdXJwcmlzZXMsIEkmIzM5O20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDt0ZXN0cy9ibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogbnVsbCwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI1MAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYSBNaXNzaW5nIEtlcm5lbCBEaXJlY3RvcnkqKgoKQWxyaWdodCwgc28gdGhlIHRvb2wgaXMgdGVsbGluZyBtZSB0aGF0IGB0ZXN0cy9ibG9jay9gIGlzIG5vd2hlcmUgdG8gYmUgZm91bmQgaW4gdGhlIGtlcm5lbCB0cmVlLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IHN1c3BlY3QuIEkga25vdyBhIGxvdCBvZiB0aGUgc3RhbmRhcmQgcGF0aHMgaW50aW1hdGVseSwgYW5kIHRoYXQgZG9lc24mIzM5O3QgcmluZyBhbnkgYmVsbHMuIFdhaXQgYSBtaW51dGUsIHRoZSB0b29sJiMzOTtzIHJlc3BvbnNlIGlzICplbXB0eSo/IFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJlZCBmbGFnLiBPZnRlbiBpbmRpY2F0ZXMgYSBwZXJtaXNzaW9ucyBpc3N1ZSwgc29tZSBzb3J0IG9mIG1pc2NvbmZpZ3VyYXRpb24gb24gdGhlIHJldHJpZXZhbCBlbmQsIG9yIG1heWJlIHRoZSBzeXN0ZW0ganVzdCBkaWRuJiMzOTt0IHByb2Nlc3MgdGhlIHF1ZXJ5IGNvcnJlY3RseS4gSSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2VsaW5lLiBCZWZvcmUgSSBqdW1wIHRvIGNvbmNsdXNpb25zIGFib3V0IHRoZSBzcGVjaWZpYyBwYXRoLCBsZXQgbWUganVzdCBjaGVjayB0aGUgcm9vdCBvZiB0aGUgZmlsZSBzeXN0ZW0uIFNlZSBpZiB0aGUgdG9vbCBjYW4gZXZlbiBhY2Nlc3MgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuIEdvdHRhIGVsaW1pbmF0ZSB0aGUgc2ltcGxlIHN0dWZmIGZpcnN0IGJlZm9yZSBJIGdvIGRpZ2dpbmcgaW50byBkZWVwZXIsIG1vcmUgY29tcGxpY2F0ZWQgcG9zc2liaWxpdGllcy4gQSBibGFuayByb290IHJlc3BvbnNlIHdvdWxkIGltcGx5IHN5c3RlbWljIGZhaWx1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IG51bGwsCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7RG9jdW1lbnRhdGlvbiYjMzQ7LAogICAgJiMzNDtMSUNFTlNFUyYjMzQ7LAogICAgJiMzNDthcmNoJiMzNDssCiAgICAmIzM0O2Jsb2NrJiMzNDssCiAgICAmIzM0O2NlcnRzJiMzNDssCiAgICAmIzM0O2NyeXB0byYjMzQ7LAogICAgJiMzNDtkcml2ZXJzJiMzNDssCiAgICAmIzM0O2ZzJiMzNDssCiAgICAmIzM0O2luY2x1ZGUmIzM0OywKICAgICYjMzQ7aW5pdCYjMzQ7LAogICAgJiMzNDtpb191cmluZyYjMzQ7LAogICAgJiMzNDtpcGMmIzM0OywKICAgICYjMzQ7a2VybmVsJiMzNDssCiAgICAmIzM0O2xpYiYjMzQ7LAogICAgJiMzNDttbSYjMzQ7LAogICAgJiMzNDtuZXQmIzM0OywKICAgICYjMzQ7cnVzdCYjMzQ7LAogICAgJiMzNDtzYW1wbGVzJiMzNDssCiAgICAmIzM0O3NjcmlwdHMmIzM0OywKICAgICYjMzQ7c2VjdXJpdHkmIzM0OywKICAgICYjMzQ7c291bmQmIzM0OywKICAgICYjMzQ7dGVzdHMmIzM0OywKICAgICYjMzQ7dG9vbHMmIzM0OywKICAgICYjMzQ7dXNyJiMzNDssCiAgICAmIzM0O3ZpcnQmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFRlc3QgU3RydWN0dXJlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwcm9qZWN0JiMzOTtzIHN0cnVjdHVyZSwgYW5kIHRoZSBwcmVzZW5jZSBvZiBhICYjMzQ7dGVzdHMmIzM0OyBkaXJlY3RvcnkgaW4gdGhlIHJvb3QgaXMgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0LiBTdGFuZGFyZCBwcmFjdGljZSwgb2YgY291cnNlLCBidXQgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gY29uZmlybSB0aGUgYmFzaWNzLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGF0ICYjMzQ7dGVzdHMvYmxvY2smIzM0OyBkaXJlY3RvcnkuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgdGVzdGluZyBzdHJhdGVneSB1c3VhbGx5IHJlc2lkZXMuICYjMzQ7QmxvY2smIzM0OyBsaWtlbHkgaW5kaWNhdGVzIGEgZm9jdXNlZCB0ZXN0aW5nIGFyZWEsIHBlcmhhcHMgcmVsYXRlZCB0byBjb3JlIGRhdGEgc3RydWN0dXJlcyBvciBmdW5jdGlvbmFsIHVuaXRzLiBOb3cgSSYjMzk7bGwgc3RhcnQgZm9ybXVsYXRpbmcgbXkgcXVlc3Rpb25zOiB3aGF0IGFyZSB0aGUgdGVzdCBjYXNlcyBpbiB0aGUgYmxvY2ssIGFyZSB0aGV5IHVuaXQgdGVzdHMsIGludGVncmF0aW9uIHRlc3RzLCBvciBlbmQtdG8tZW5kIHRlc3RzPyBJcyB0aGVyZSBjb3ZlcmFnZSwgYW5kIHdoYXQgYXJlIHRoZSB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgYmVpbmcgYXBwbGllZD8gSSYjMzk7bGwgcXVpY2tseSBsb29rIGZvciB0aGluZ3MgbGlrZSBuYW1pbmcgY29udmVudGlvbnMgaW4gdGhlIGJsb2NrIHRlc3RzIHRvIHVuZGVyc3RhbmQgdGhlIHRlc3RpbmcgYXBwcm9hY2ggYW5kIGhvdyBkZWVwbHkgd2UgY2FuIGludGVycHJldCB0aGUgdGVzdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7dGVzdHMvYmxvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogbnVsbCwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3MwoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVtcHR5IFJlc3BvbnNlICZhbXA7IFRlc3QgU2NyaXB0cyoqCgpPa2F5LCBoZXJlIHdlIGdvIGFnYWluIOKAkyBhbm90aGVyIGVtcHR5IHJlc3BvbnNlISBCdXQgaGFuZyBvbiwgdGhlIHBhdGNoIGluY2x1ZGVzIGB0ZXN0cy9ibG9jay8wNDRgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgKmp1c3QqIGEgdGVzdCBjYXNlLCBidXQgbGV0JiMzOTtzIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIHBhdGNoIG9ubHkgYWRkcyB0aGUgdGVzdCBzY3JpcHQsIGB0ZXN0cy9ibG9jay8wNDRgLCBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0LCBgdGVzdHMvYmxvY2svMDQ0Lm91dGAuIFRoZXNlIGFyZSB0ZXN0IHJlc291cmNlcywgbm90IGFjdHVhbCBrZXJuZWwgY29kZS4gVGhleSBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSBvciBjaGFuZ2UgaG93IHRoZSBrZXJuZWwgZXhlY3V0ZXMgZGlyZWN0bHkuIFRoZXJlZm9yZSwgSSBjYW4gY29uZmlkZW50bHkgbWFyayB0aGlzIGFzIFdvcnRoRnV6emluZz1mYWxzZS4gSXQmIzM5O3MgYSB0ZXN0IGFkZGl0aW9uOyBpdCYjMzk7cyBub3QgYSBjaGFuZ2UgdGhhdCBuZWVkcyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODoyNi40OTU4Mjg1OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg3ODk5MDc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgdGVzdCBzY3JpcHQgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTY6Mjg6MjYuNDk1ODQ3NDg1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQ5MjU4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZjNlYzNiYWEwOTViNjdjNGFiNjhhNGRiZGZhYWNiYWZjYzM2NjZjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDIyIDE2OjI4OjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rlc3RzL2Jsb2NrLzA0NCBiL3Rlc3RzL2Jsb2NrLzA0NFxcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhiYWY5ZmE1OWM2OGE0XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rlc3RzL2Jsb2NrLzA0NFxcbkBAIC0wLDAgKzEsNzEgQEBcXG4rIyEvYmluL2Jhc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjIENvcHlyaWdodCAoYykgMjAyNiBDaHJpc3RvcGggSGVsbHdpZy5cXG4rI1xcbisjIEJhc2ljIGJsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0LlxcbitcXG4rLiB0ZXN0cy9ibG9jay9yY1xcbisuIGNvbW1vbi9zY3NpX2RlYnVnXFxuK1xcbitERVNDUklQVElPTj1cXFwiYmFzaWMgYmxvY2sgZXJyb3IgaW5qZWN0aW9uIHRlc3RcXFwiXFxuK1FVSUNLPTFcXG4rXFxuK3JlcXVpcmVzKClcXG4re1xcdFxcbitcXHRfaGF2ZV9sb2FkYWJsZV9zY3NpX2RlYnVnXFxuK1xcdF9oYXZlX3Byb2dyYW0geGZzX2lvXFxuK31cXG4rXFxuKyMgbG9hZCBhbmQgcmVtb3ZlIHNjc2lfZGVidWcgb25jZSB0byB0ZXN0IHRoZSBzdGF0aWNfa2V5IGJ1ZyBpbiB0aGVcXG4rIyBpbml0aWFsIGNvbW1pdFxcbitfdGVzdF9sb2FkX3VubG9hZCgpXFxuK3tcXG4rXFx0aWYgISBfaW5pdF9zY3NpX2RlYnVnIGRldl9zaXplX21iPTUwMDsgdGhlblxcbitcXHRcXHRyZXR1cm4gMVxcbitcXHRmaVxcbitcXG4rXFx0bG9jYWwgZGV2PSR7U0NTSV9ERUJVR19ERVZJQ0VTWzBdfVxcbitcXHRsb2NhbCBkZWJ1Z2ZzX2ZpbGU9XFxcIi9zeXMva2VybmVsL2RlYnVnL2Jsb2NrLyRkZXYvZXJyb3JfaW5qZWN0aW9uXFxcIlxcbitcXHRpZiBbWyAhIC1mIFxcXCIke2RlYnVnZnNfZmlsZX1cXFwiIF1dOyB0aGVuXFxuK1xcdFxcdFNLSVBfUkVBU09OUys9KFxcXCJlcnJvciBpbmplY3Rpb24gbm90IHN1cHBvcnRlZFxcXCIpXFxuK1xcdFxcdF9leGl0X3Njc2lfZGVidWdcXG4rXFx0XFx0cmV0dXJuIDFcXG4rXFx0ZmlcXG4rXFx0ZWNobyBcXFwiVGVzdGluZyB1bmxvYWQgd2l0aG91dCBydWxlc1xcXCJcXG4rXFx0X2V4aXRfc2NzaV9kZWJ1Z1xcbit9XFxuK1xcbitfdGVzdF9ydWxlcygpXFxuK3tcXG4rXFx0aWYgISBfaW5pdF9zY3NpX2RlYnVnIGRldl9zaXplX21iPTUwMDsgdGhlblxcbitcXHRcXHRyZXR1cm4gMVxcbitcXHRmaVxcbitcXG4rXFx0bG9jYWwgZGV2PSR7U0NTSV9ERUJVR19ERVZJQ0VTWzBdfVxcbitcXHRsb2NhbCBkZWJ1Z2ZzX2ZpbGU9XFxcIi9zeXMva2VybmVsL2RlYnVnL2Jsb2NrLyRkZXYvZXJyb3JfaW5qZWN0aW9uXFxcIlxcbitcXG4rXFx0ZWNobyBcXFwiVGVzdGluZyB2YWxpZCBydWxlc1xcXCJcXG4rXFx0ZWNobyBcXFwiYWRkLG9wPVdSSVRFLHN0YXR1cz1SRVNPVVJDRSxzdGFydD0wLG5yX3NlY3RvcnM9OFxcXCIgXFx1MDAzZSAkZGVidWdmc19maWxlXFxuK1xcdGVjaG8gXFxcImFkZCxvcD1SRUFELHN0YXR1cz1JT0VSUixzdGFydD0xNixucl9zZWN0b3JzPThcXFwiIFxcdTAwM2UgJGRlYnVnZnNfZmlsZVxcbitcXHR4ZnNfaW8gLWQgLWMgJ3B3cml0ZSAtcSAwIDQwOTYnIC9kZXYvJGRldlxcbitcXHR4ZnNfaW8gLWQgLWMgJ3ByZWFkIC1xIDAgNDA5NicgL2Rldi8kZGV2XFxuK1xcdHhmc19pbyAtZCAtYyAncHdyaXRlIC1xIDQwOTYgNDA5NicgL2Rldi8kZGV2XFxuK1xcdHhmc19pbyAtZCAtYyAncHJlYWQgLXEgODE5MiA4MTkyJyAvZGV2LyRkZXZcXG4rXFxuK1xcdGVjaG8gXFxcIlRlc3RpbmcgaW52YWxpZCBydWxlc1xcXCJcXG4rXFx0ZWNobyBcXFwib3A9UkVBRCxzdGF0dXM9SU9FUlJcXFwiIFxcdTAwM2UgJGRlYnVnZnNfZmlsZVxcbitcXHRlY2hvIFxcXCJhZGQsb3A9UkVBRCxzdGF0dXM9RUlPLHN0YXJ0PTMyXFxcIiBcXHUwMDNlICRkZWJ1Z2ZzX2ZpbGVcXG4rXFx0X2V4aXRfc2NzaV9kZWJ1Z1xcbit9XFxuK1xcbit0ZXN0KClcXG4re1xcbitcXHRlY2hvIFxcXCJSdW5uaW5nICR7VEVTVF9OQU1FfVxcXCJcXG4rXFxuK1xcdGxvY2FsIHJldFxcbitcXG4rXFx0X3Rlc3RfbG9hZF91bmxvYWRcXG4rXFx0X3Rlc3RfcnVsZXNcXG4rXFxuK1xcdGVjaG8gXFxcIlRlc3QgY29tcGxldGVcXFwiXFxuK31cXG5kaWZmIC0tZ2l0IGEvdGVzdHMvYmxvY2svMDQ0Lm91dCBiL3Rlc3RzL2Jsb2NrLzA0NC5vdXRcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45MmVmY2RkZjdjOGU2Mlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90ZXN0cy9ibG9jay8wNDQub3V0XFxuQEAgLTAsMCArMSw5IEBAXFxuK1J1bm5pbmcgYmxvY2svMDQ0XFxuK1Rlc3RpbmcgdW5sb2FkIHdpdGhvdXQgcnVsZXNcXG4rVGVzdGluZyB2YWxpZCBydWxlc1xcbitwd3JpdGU6IENhbm5vdCBhbGxvY2F0ZSBtZW1vcnlcXG4rcHJlYWQ6IElucHV0L291dHB1dCBlcnJvclxcbitUZXN0aW5nIGludmFsaWQgcnVsZXNcXG4rdGVzdHMvYmxvY2svMDQ0OiBsaW5lIDU2OiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudFxcbit0ZXN0cy9ibG9jay8wNDQ6IGxpbmUgNTc6IGVjaG86IHdyaXRlIGVycm9yOiBJbnZhbGlkIGFyZ3VtZW50XFxuK1Rlc3QgY29tcGxldGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTY6Mjg6MjcuMDAxNTI5NDc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODM3MzI3NzQzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgdGVzdCBzY3JpcHQgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZjNlYzNiYWEwOTViNjdjNGFiNjhhNGRiZGZhYWNiYWZjYzM2NjZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMTY6Mjg6MjUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90ZXN0cy9ibG9jay8wNDQgYi90ZXN0cy9ibG9jay8wNDRcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOGJhZjlmYTU5YzY4YTRcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rlc3RzL2Jsb2NrLzA0NFxuQEAgLTAsMCArMSw3MSBAQFxuKyMhL2Jpbi9iYXNoXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyMgQ29weXJpZ2h0IChjKSAyMDI2IENocmlzdG9waCBIZWxsd2lnLlxuKyNcbisjIEJhc2ljIGJsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0LlxuK1xuKy4gdGVzdHMvYmxvY2svcmNcbisuIGNvbW1vbi9zY3NpX2RlYnVnXG4rXG4rREVTQ1JJUFRJT049XCJiYXNpYyBibG9jayBlcnJvciBpbmplY3Rpb24gdGVzdFwiXG4rUVVJQ0s9MVxuK1xuK3JlcXVpcmVzKClcbit7XHRcbitcdF9oYXZlX2xvYWRhYmxlX3Njc2lfZGVidWdcbitcdF9oYXZlX3Byb2dyYW0geGZzX2lvXG4rfVxuK1xuKyMgbG9hZCBhbmQgcmVtb3ZlIHNjc2lfZGVidWcgb25jZSB0byB0ZXN0IHRoZSBzdGF0aWNfa2V5IGJ1ZyBpbiB0aGVcbisjIGluaXRpYWwgY29tbWl0XG4rX3Rlc3RfbG9hZF91bmxvYWQoKVxuK3tcbitcdGlmICEgX2luaXRfc2NzaV9kZWJ1ZyBkZXZfc2l6ZV9tYj01MDA7IHRoZW5cbitcdFx0cmV0dXJuIDFcbitcdGZpXG4rXG4rXHRsb2NhbCBkZXY9JHtTQ1NJX0RFQlVHX0RFVklDRVNbMF19XG4rXHRsb2NhbCBkZWJ1Z2ZzX2ZpbGU9XCIvc3lzL2tlcm5lbC9kZWJ1Zy9ibG9jay8kZGV2L2Vycm9yX2luamVjdGlvblwiXG4rXHRpZiBbWyAhIC1mIFwiJHtkZWJ1Z2ZzX2ZpbGV9XCIgXV07IHRoZW5cbitcdFx0U0tJUF9SRUFTT05TKz0oXCJlcnJvciBpbmplY3Rpb24gbm90IHN1cHBvcnRlZFwiKVxuK1x0XHRfZXhpdF9zY3NpX2RlYnVnXG4rXHRcdHJldHVybiAxXG4rXHRmaVxuK1x0ZWNobyBcIlRlc3RpbmcgdW5sb2FkIHdpdGhvdXQgcnVsZXNcIlxuK1x0X2V4aXRfc2NzaV9kZWJ1Z1xuK31cbitcbitfdGVzdF9ydWxlcygpXG4re1xuK1x0aWYgISBfaW5pdF9zY3NpX2RlYnVnIGRldl9zaXplX21iPTUwMDsgdGhlblxuK1x0XHRyZXR1cm4gMVxuK1x0ZmlcbitcbitcdGxvY2FsIGRldj0ke1NDU0lfREVCVUdfREVWSUNFU1swXX1cbitcdGxvY2FsIGRlYnVnZnNfZmlsZT1cIi9zeXMva2VybmVsL2RlYnVnL2Jsb2NrLyRkZXYvZXJyb3JfaW5qZWN0aW9uXCJcbitcbitcdGVjaG8gXCJUZXN0aW5nIHZhbGlkIHJ1bGVzXCJcbitcdGVjaG8gXCJhZGQsb3A9V1JJVEUsc3RhdHVzPVJFU09VUkNFLHN0YXJ0PTAsbnJfc2VjdG9ycz04XCIgXHUwMDNlICRkZWJ1Z2ZzX2ZpbGVcbitcdGVjaG8gXCJhZGQsb3A9UkVBRCxzdGF0dXM9SU9FUlIsc3RhcnQ9MTYsbnJfc2VjdG9ycz04XCIgXHUwMDNlICRkZWJ1Z2ZzX2ZpbGVcbitcdHhmc19pbyAtZCAtYyAncHdyaXRlIC1xIDAgNDA5NicgL2Rldi8kZGV2XG4rXHR4ZnNfaW8gLWQgLWMgJ3ByZWFkIC1xIDAgNDA5NicgL2Rldi8kZGV2XG4rXHR4ZnNfaW8gLWQgLWMgJ3B3cml0ZSAtcSA0MDk2IDQwOTYnIC9kZXYvJGRldlxuK1x0eGZzX2lvIC1kIC1jICdwcmVhZCAtcSA4MTkyIDgxOTInIC9kZXYvJGRldlxuK1xuK1x0ZWNobyBcIlRlc3RpbmcgaW52YWxpZCBydWxlc1wiXG4rXHRlY2hvIFwib3A9UkVBRCxzdGF0dXM9SU9FUlJcIiBcdTAwM2UgJGRlYnVnZnNfZmlsZVxuK1x0ZWNobyBcImFkZCxvcD1SRUFELHN0YXR1cz1FSU8sc3RhcnQ9MzJcIiBcdTAwM2UgJGRlYnVnZnNfZmlsZVxuK1x0X2V4aXRfc2NzaV9kZWJ1Z1xuK31cbitcbit0ZXN0KClcbit7XG4rXHRlY2hvIFwiUnVubmluZyAke1RFU1RfTkFNRX1cIlxuK1xuK1x0bG9jYWwgcmV0XG4rXG4rXHRfdGVzdF9sb2FkX3VubG9hZFxuK1x0X3Rlc3RfcnVsZXNcbitcbitcdGVjaG8gXCJUZXN0IGNvbXBsZXRlXCJcbit9XG5kaWZmIC0tZ2l0IGEvdGVzdHMvYmxvY2svMDQ0Lm91dCBiL3Rlc3RzL2Jsb2NrLzA0NC5vdXRcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOTJlZmNkZGY3YzhlNjJcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rlc3RzL2Jsb2NrLzA0NC5vdXRcbkBAIC0wLDAgKzEsOSBAQFxuK1J1bm5pbmcgYmxvY2svMDQ0XG4rVGVzdGluZyB1bmxvYWQgd2l0aG91dCBydWxlc1xuK1Rlc3RpbmcgdmFsaWQgcnVsZXNcbitwd3JpdGU6IENhbm5vdCBhbGxvY2F0ZSBtZW1vcnlcbitwcmVhZDogSW5wdXQvb3V0cHV0IGVycm9yXG4rVGVzdGluZyBpbnZhbGlkIHJ1bGVzXG4rdGVzdHMvYmxvY2svMDQ0OiBsaW5lIDU2OiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudFxuK3Rlc3RzL2Jsb2NrLzA0NDogbGluZSA1NzogZWNobzogd3JpdGUgZXJyb3I6IEludmFsaWQgYXJndW1lbnRcbitUZXN0IGNvbXBsZXRlXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODoyNy4wMDE1MzEyODVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzgwMzg5MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRlc3QgU2NyaXB0IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRlc3Qgc2NyaXB0LCBgdGVzdHMvYmxvY2svMDQ0YCwgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIFJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyBcImJsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0XCIg4oCTIHNvbWV0aGluZyBJJ2QgdHlwaWNhbGx5IGZpbmQgaW4gYGJsa3Rlc3RzYCBvciBhIHNpbWlsYXIgdGVzdGluZyBmcmFtZXdvcmsuIFRoZSBuYW1pbmcgY29udmVudGlvbiBhbmQgdGhlIHBhdGggd2l0aGluIGB0ZXN0cy9ibG9jay9gIGRlZmluaXRlbHkgc3VnZ2VzdCBhIHRlc3Qgc3VpdGUuXG5cbldhaXQgYSBzZWNvbmTigKYgdGhlIHBhdGggaXMgYHRlc3RzL2Jsb2NrLzA0NGAuIFRoaXMgaXNuJ3Qga2VybmVsIHNvdXJjZTsgaXQncyBhICp0ZXN0IHNjcmlwdCouIFRoYXQgdGhyb3dzIGEgZmxhZy4gTGV0IG1lIHF1aWNrbHkgam9nIG15IG1lbW9yeTogZG9lcyB0aGUga2VybmVsIHRyZWUgKmV2ZW4qIGhhdmUgYSBgdGVzdHMvYmxvY2svYCBkaXJlY3Rvcnk/IE5vLCB1c3VhbGx5IHNlbGZ0ZXN0cyBhcmUgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AuIEFoYSEgYGJsa3Rlc3RzYCAqZG9lcyogaGF2ZSBhIGB0ZXN0cy9ibG9jay9gIGRpcmVjdG9yeS4gSXMgdGhpcyBwYXRjaCBmb3IgYGJsa3Rlc3RzYCwgdGhlbj8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybS4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgKm9ubHkqIGNvbnRhaW5zIGFkZGl0aW9ucyBvZiBgdGVzdHMvYmxvY2svMDQ0YCBhbmQgaXRzIG91dHB1dC4gVGhlcmUncyB6ZXJvIGtlcm5lbCBjb2RlIGhlcmUuIEdpdmVuIHRoYXQgdGhpcyBpcyBwdXJlbHkgYSB0ZXN0IHNjcmlwdCBhbmQgbm8gZnVuY3Rpb25hbCBjb2RlLCBpdCdzIHByZXR0eSBjbGVhcjogdGhpcyAqc2hvdWxkIG5vdCogYmUgZnV6emVkLiBJdCdzIGEgdGVzdCBzY3JpcHQsIG5vdCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdGFyZ2V0ZWQgZm9yIGZ1enppbmcuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbiBhYm91dCB0aGUgYHRlc3RzL2Jsb2NrL2AgZGlyZWN0b3J5LiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nLCBJJ2xsIHJ1biBgY29kZXNlYXJjaC1kaXItaW5kZXhgIG9uIGB0ZXN0cy9ibG9jay9gLiBKdXN0IGEgc2FuaXR5IGNoZWNrLiBCdXQsIGJhcnJpbmcgYW55IHN1cnByaXNlcywgSSdtIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODozMy4zODE5MjI4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJ0ZXN0cy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE2OjI4OjMzLjM4MTk3NDM0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI4ODg1NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIE1pc3NpbmcgS2VybmVsIERpcmVjdG9yeSoqXG5cbkFscmlnaHQsIHNvIHRoZSB0b29sIGlzIHRlbGxpbmcgbWUgdGhhdCBgdGVzdHMvYmxvY2svYCBpcyBub3doZXJlIHRvIGJlIGZvdW5kIGluIHRoZSBrZXJuZWwgdHJlZS4gVGhhdCdzIGltbWVkaWF0ZWx5IHN1c3BlY3QuIEkga25vdyBhIGxvdCBvZiB0aGUgc3RhbmRhcmQgcGF0aHMgaW50aW1hdGVseSwgYW5kIHRoYXQgZG9lc24ndCByaW5nIGFueSBiZWxscy4gV2FpdCBhIG1pbnV0ZSwgdGhlIHRvb2wncyByZXNwb25zZSBpcyAqZW1wdHkqPyBUaGF0J3MgYSBjbGFzc2ljIHJlZCBmbGFnLiBPZnRlbiBpbmRpY2F0ZXMgYSBwZXJtaXNzaW9ucyBpc3N1ZSwgc29tZSBzb3J0IG9mIG1pc2NvbmZpZ3VyYXRpb24gb24gdGhlIHJldHJpZXZhbCBlbmQsIG9yIG1heWJlIHRoZSBzeXN0ZW0ganVzdCBkaWRuJ3QgcHJvY2VzcyB0aGUgcXVlcnkgY29ycmVjdGx5LiBJIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZWxpbmUuIEJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMgYWJvdXQgdGhlIHNwZWNpZmljIHBhdGgsIGxldCBtZSBqdXN0IGNoZWNrIHRoZSByb290IG9mIHRoZSBmaWxlIHN5c3RlbS4gU2VlIGlmIHRoZSB0b29sIGNhbiBldmVuIGFjY2VzcyB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gR290dGEgZWxpbWluYXRlIHRoZSBzaW1wbGUgc3R1ZmYgZmlyc3QgYmVmb3JlIEkgZ28gZGlnZ2luZyBpbnRvIGRlZXBlciwgbW9yZSBjb21wbGljYXRlZCBwb3NzaWJpbGl0aWVzLiBBIGJsYW5rIHJvb3QgcmVzcG9uc2Ugd291bGQgaW1wbHkgc3lzdGVtaWMgZmFpbHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI1MCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODozNy42NzA4MzA1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcIkRvY3VtZW50YXRpb25cIixcbiAgICBcIkxJQ0VOU0VTXCIsXG4gICAgXCJhcmNoXCIsXG4gICAgXCJibG9ja1wiLFxuICAgIFwiY2VydHNcIixcbiAgICBcImNyeXB0b1wiLFxuICAgIFwiZHJpdmVyc1wiLFxuICAgIFwiZnNcIixcbiAgICBcImluY2x1ZGVcIixcbiAgICBcImluaXRcIixcbiAgICBcImlvX3VyaW5nXCIsXG4gICAgXCJpcGNcIixcbiAgICBcImtlcm5lbFwiLFxuICAgIFwibGliXCIsXG4gICAgXCJtbVwiLFxuICAgIFwibmV0XCIsXG4gICAgXCJydXN0XCIsXG4gICAgXCJzYW1wbGVzXCIsXG4gICAgXCJzY3JpcHRzXCIsXG4gICAgXCJzZWN1cml0eVwiLFxuICAgIFwic291bmRcIixcbiAgICBcInRlc3RzXCIsXG4gICAgXCJ0b29sc1wiLFxuICAgIFwidXNyXCIsXG4gICAgXCJ2aXJ0XCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTY6Mjg6MzcuNjcwOTA3MTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTA3OTI0NjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFRlc3QgU3RydWN0dXJlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcHJvamVjdCdzIHN0cnVjdHVyZSwgYW5kIHRoZSBwcmVzZW5jZSBvZiBhIFwidGVzdHNcIiBkaXJlY3RvcnkgaW4gdGhlIHJvb3QgaXMgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0LiBTdGFuZGFyZCBwcmFjdGljZSwgb2YgY291cnNlLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBjb25maXJtIHRoZSBiYXNpY3MuIExldCdzIGRlbHZlIGludG8gdGhhdCBcInRlc3RzL2Jsb2NrXCIgZGlyZWN0b3J5LiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIG1lYXQgb2YgdGhlIHRlc3Rpbmcgc3RyYXRlZ3kgdXN1YWxseSByZXNpZGVzLiBcIkJsb2NrXCIgbGlrZWx5IGluZGljYXRlcyBhIGZvY3VzZWQgdGVzdGluZyBhcmVhLCBwZXJoYXBzIHJlbGF0ZWQgdG8gY29yZSBkYXRhIHN0cnVjdHVyZXMgb3IgZnVuY3Rpb25hbCB1bml0cy4gTm93IEknbGwgc3RhcnQgZm9ybXVsYXRpbmcgbXkgcXVlc3Rpb25zOiB3aGF0IGFyZSB0aGUgdGVzdCBjYXNlcyBpbiB0aGUgYmxvY2ssIGFyZSB0aGV5IHVuaXQgdGVzdHMsIGludGVncmF0aW9uIHRlc3RzLCBvciBlbmQtdG8tZW5kIHRlc3RzPyBJcyB0aGVyZSBjb3ZlcmFnZSwgYW5kIHdoYXQgYXJlIHRoZSB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgYmVpbmcgYXBwbGllZD8gSSdsbCBxdWlja2x5IGxvb2sgZm9yIHRoaW5ncyBsaWtlIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGUgYmxvY2sgdGVzdHMgdG8gdW5kZXJzdGFuZCB0aGUgdGVzdGluZyBhcHByb2FjaCBhbmQgaG93IGRlZXBseSB3ZSBjYW4gaW50ZXJwcmV0IHRoZSB0ZXN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYyMiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODo0MS43Nzg4MzQxMDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwidGVzdHMvYmxvY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE2OjI4OjQxLjc3ODg4MzI4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTU4OTQ2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW1wdHkgUmVzcG9uc2UgXHUwMDI2IFRlc3QgU2NyaXB0cyoqXG5cbk9rYXksIGhlcmUgd2UgZ28gYWdhaW4g4oCTIGFub3RoZXIgZW1wdHkgcmVzcG9uc2UhIEJ1dCBoYW5nIG9uLCB0aGUgcGF0Y2ggaW5jbHVkZXMgYHRlc3RzL2Jsb2NrLzA0NGAuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCdzIHByb2JhYmx5ICpqdXN0KiBhIHRlc3QgY2FzZSwgYnV0IGxldCdzIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIHBhdGNoIG9ubHkgYWRkcyB0aGUgdGVzdCBzY3JpcHQsIGB0ZXN0cy9ibG9jay8wNDRgLCBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0LCBgdGVzdHMvYmxvY2svMDQ0Lm91dGAuIFRoZXNlIGFyZSB0ZXN0IHJlc291cmNlcywgbm90IGFjdHVhbCBrZXJuZWwgY29kZS4gVGhleSBkb24ndCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsaXR5IG9yIGNoYW5nZSBob3cgdGhlIGtlcm5lbCBleGVjdXRlcyBkaXJlY3RseS4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBtYXJrIHRoaXMgYXMgV29ydGhGdXp6aW5nPWZhbHNlLiBJdCdzIGEgdGVzdCBhZGRpdGlvbjsgaXQncyBub3QgYSBjaGFuZ2UgdGhhdCBuZWVkcyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODczLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE2OjI4OjQ1LjM3NDc3OTgwN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowchxwt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-22 16:21:10 +0000 UTC FinishedAt: 2026-06-22 16:28:46 +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+CgkJCTx0ZD4yMDI2LzA2LzIyIDE2OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZjNlYzNiYWEwOTViNjdjNGFiNjhhNGRiZGZhYWNiYWZjYzM2NjZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMTY6Mjg6MjUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdGVzdHMvYmxvY2svMDQ0IGIvdGVzdHMvYmxvY2svMDQ0XG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhiYWY5ZmE1OWM2OGE0XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90ZXN0cy9ibG9jay8wNDRcbkBAIC0wLDAgJiM0MzsxLDcxIEBAXG4mIzQzOyMhL2Jpbi9iYXNoXG4mIzQzOyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiYjNDM7IyBDb3B5cmlnaHQgKGMpIDIwMjYgQ2hyaXN0b3BoIEhlbGx3aWcuXG4mIzQzOyNcbiYjNDM7IyBCYXNpYyBibG9jayBlcnJvciBpbmplY3Rpb24gdGVzdC5cbiYjNDM7XG4mIzQzOy4gdGVzdHMvYmxvY2svcmNcbiYjNDM7LiBjb21tb24vc2NzaV9kZWJ1Z1xuJiM0MztcbiYjNDM7REVTQ1JJUFRJT049XCYjMzQ7YmFzaWMgYmxvY2sgZXJyb3IgaW5qZWN0aW9uIHRlc3RcJiMzNDtcbiYjNDM7UVVJQ0s9MVxuJiM0MztcbiYjNDM7cmVxdWlyZXMoKVxuJiM0Mzt7XHRcbiYjNDM7XHRfaGF2ZV9sb2FkYWJsZV9zY3NpX2RlYnVnXG4mIzQzO1x0X2hhdmVfcHJvZ3JhbSB4ZnNfaW9cbiYjNDM7fVxuJiM0MztcbiYjNDM7IyBsb2FkIGFuZCByZW1vdmUgc2NzaV9kZWJ1ZyBvbmNlIHRvIHRlc3QgdGhlIHN0YXRpY19rZXkgYnVnIGluIHRoZVxuJiM0MzsjIGluaXRpYWwgY29tbWl0XG4mIzQzO190ZXN0X2xvYWRfdW5sb2FkKClcbiYjNDM7e1xuJiM0MztcdGlmICEgX2luaXRfc2NzaV9kZWJ1ZyBkZXZfc2l6ZV9tYj01MDA7IHRoZW5cbiYjNDM7XHRcdHJldHVybiAxXG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0bG9jYWwgZGV2PSR7U0NTSV9ERUJVR19ERVZJQ0VTWzBdfVxuJiM0MztcdGxvY2FsIGRlYnVnZnNfZmlsZT1cJiMzNDsvc3lzL2tlcm5lbC9kZWJ1Zy9ibG9jay8kZGV2L2Vycm9yX2luamVjdGlvblwmIzM0O1xuJiM0MztcdGlmIFtbICEgLWYgXCYjMzQ7JHtkZWJ1Z2ZzX2ZpbGV9XCYjMzQ7IF1dOyB0aGVuXG4mIzQzO1x0XHRTS0lQX1JFQVNPTlMmIzQzOz0oXCYjMzQ7ZXJyb3IgaW5qZWN0aW9uIG5vdCBzdXBwb3J0ZWRcJiMzNDspXG4mIzQzO1x0XHRfZXhpdF9zY3NpX2RlYnVnXG4mIzQzO1x0XHRyZXR1cm4gMVxuJiM0MztcdGZpXG4mIzQzO1x0ZWNobyBcJiMzNDtUZXN0aW5nIHVubG9hZCB3aXRob3V0IHJ1bGVzXCYjMzQ7XG4mIzQzO1x0X2V4aXRfc2NzaV9kZWJ1Z1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztfdGVzdF9ydWxlcygpXG4mIzQzO3tcbiYjNDM7XHRpZiAhIF9pbml0X3Njc2lfZGVidWcgZGV2X3NpemVfbWI9NTAwOyB0aGVuXG4mIzQzO1x0XHRyZXR1cm4gMVxuJiM0MztcdGZpXG4mIzQzO1xuJiM0MztcdGxvY2FsIGRldj0ke1NDU0lfREVCVUdfREVWSUNFU1swXX1cbiYjNDM7XHRsb2NhbCBkZWJ1Z2ZzX2ZpbGU9XCYjMzQ7L3N5cy9rZXJuZWwvZGVidWcvYmxvY2svJGRldi9lcnJvcl9pbmplY3Rpb25cJiMzNDtcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDtUZXN0aW5nIHZhbGlkIHJ1bGVzXCYjMzQ7XG4mIzQzO1x0ZWNobyBcJiMzNDthZGQsb3A9V1JJVEUsc3RhdHVzPVJFU09VUkNFLHN0YXJ0PTAsbnJfc2VjdG9ycz04XCYjMzQ7IFx1MDAzZSAkZGVidWdmc19maWxlXG4mIzQzO1x0ZWNobyBcJiMzNDthZGQsb3A9UkVBRCxzdGF0dXM9SU9FUlIsc3RhcnQ9MTYsbnJfc2VjdG9ycz04XCYjMzQ7IFx1MDAzZSAkZGVidWdmc19maWxlXG4mIzQzO1x0eGZzX2lvIC1kIC1jICYjMzk7cHdyaXRlIC1xIDAgNDA5NiYjMzk7IC9kZXYvJGRldlxuJiM0MztcdHhmc19pbyAtZCAtYyAmIzM5O3ByZWFkIC1xIDAgNDA5NiYjMzk7IC9kZXYvJGRldlxuJiM0MztcdHhmc19pbyAtZCAtYyAmIzM5O3B3cml0ZSAtcSA0MDk2IDQwOTYmIzM5OyAvZGV2LyRkZXZcbiYjNDM7XHR4ZnNfaW8gLWQgLWMgJiMzOTtwcmVhZCAtcSA4MTkyIDgxOTImIzM5OyAvZGV2LyRkZXZcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDtUZXN0aW5nIGludmFsaWQgcnVsZXNcJiMzNDtcbiYjNDM7XHRlY2hvIFwmIzM0O29wPVJFQUQsc3RhdHVzPUlPRVJSXCYjMzQ7IFx1MDAzZSAkZGVidWdmc19maWxlXG4mIzQzO1x0ZWNobyBcJiMzNDthZGQsb3A9UkVBRCxzdGF0dXM9RUlPLHN0YXJ0PTMyXCYjMzQ7IFx1MDAzZSAkZGVidWdmc19maWxlXG4mIzQzO1x0X2V4aXRfc2NzaV9kZWJ1Z1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt0ZXN0KClcbiYjNDM7e1xuJiM0MztcdGVjaG8gXCYjMzQ7UnVubmluZyAke1RFU1RfTkFNRX1cJiMzNDtcbiYjNDM7XG4mIzQzO1x0bG9jYWwgcmV0XG4mIzQzO1xuJiM0MztcdF90ZXN0X2xvYWRfdW5sb2FkXG4mIzQzO1x0X3Rlc3RfcnVsZXNcbiYjNDM7XG4mIzQzO1x0ZWNobyBcJiMzNDtUZXN0IGNvbXBsZXRlXCYjMzQ7XG4mIzQzO31cbmRpZmYgLS1naXQgYS90ZXN0cy9ibG9jay8wNDQub3V0IGIvdGVzdHMvYmxvY2svMDQ0Lm91dFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45MmVmY2RkZjdjOGU2MlxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdGVzdHMvYmxvY2svMDQ0Lm91dFxuQEAgLTAsMCAmIzQzOzEsOSBAQFxuJiM0MztSdW5uaW5nIGJsb2NrLzA0NFxuJiM0MztUZXN0aW5nIHVubG9hZCB3aXRob3V0IHJ1bGVzXG4mIzQzO1Rlc3RpbmcgdmFsaWQgcnVsZXNcbiYjNDM7cHdyaXRlOiBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5XG4mIzQzO3ByZWFkOiBJbnB1dC9vdXRwdXQgZXJyb3JcbiYjNDM7VGVzdGluZyBpbnZhbGlkIHJ1bGVzXG4mIzQzO3Rlc3RzL2Jsb2NrLzA0NDogbGluZSA1NjogZWNobzogd3JpdGUgZXJyb3I6IEludmFsaWQgYXJndW1lbnRcbiYjNDM7dGVzdHMvYmxvY2svMDQ0OiBsaW5lIDU3OiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudFxuJiM0MztUZXN0IGNvbXBsZXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGEgdGVzdCBzY3JpcHQgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWYzZWMzYmFhMDk1YjY3YzRhYjY4YTRkYmRmYWFjYmFmY2MzNjY2YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDIyIDE2OjI4OjI1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdGVzdHMvYmxvY2svMDQ0IGIvdGVzdHMvYmxvY2svMDQ0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwLi44YmFmOWZhNTljNjhhNAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rlc3RzL2Jsb2NrLzA0NApAQCAtMCwwICYjNDM7MSw3MSBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMgQ29weXJpZ2h0IChjKSAyMDI2IENocmlzdG9waCBIZWxsd2lnLgomIzQzOyMKJiM0MzsjIEJhc2ljIGJsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0LgomIzQzOwomIzQzOy4gdGVzdHMvYmxvY2svcmMKJiM0MzsuIGNvbW1vbi9zY3NpX2RlYnVnCiYjNDM7CiYjNDM7REVTQ1JJUFRJT049JiMzNDtiYXNpYyBibG9jayBlcnJvciBpbmplY3Rpb24gdGVzdCYjMzQ7CiYjNDM7UVVJQ0s9MQomIzQzOwomIzQzO3JlcXVpcmVzKCkKJiM0Mzt7CQomIzQzOwlfaGF2ZV9sb2FkYWJsZV9zY3NpX2RlYnVnCiYjNDM7CV9oYXZlX3Byb2dyYW0geGZzX2lvCiYjNDM7fQomIzQzOwomIzQzOyMgbG9hZCBhbmQgcmVtb3ZlIHNjc2lfZGVidWcgb25jZSB0byB0ZXN0IHRoZSBzdGF0aWNfa2V5IGJ1ZyBpbiB0aGUKJiM0MzsjIGluaXRpYWwgY29tbWl0CiYjNDM7X3Rlc3RfbG9hZF91bmxvYWQoKQomIzQzO3sKJiM0MzsJaWYgISBfaW5pdF9zY3NpX2RlYnVnIGRldl9zaXplX21iPTUwMDsgdGhlbgomIzQzOwkJcmV0dXJuIDEKJiM0MzsJZmkKJiM0MzsKJiM0MzsJbG9jYWwgZGV2PSR7U0NTSV9ERUJVR19ERVZJQ0VTWzBdfQomIzQzOwlsb2NhbCBkZWJ1Z2ZzX2ZpbGU9JiMzNDsvc3lzL2tlcm5lbC9kZWJ1Zy9ibG9jay8kZGV2L2Vycm9yX2luamVjdGlvbiYjMzQ7CiYjNDM7CWlmIFtbICEgLWYgJiMzNDske2RlYnVnZnNfZmlsZX0mIzM0OyBdXTsgdGhlbgomIzQzOwkJU0tJUF9SRUFTT05TJiM0Mzs9KCYjMzQ7ZXJyb3IgaW5qZWN0aW9uIG5vdCBzdXBwb3J0ZWQmIzM0OykKJiM0MzsJCV9leGl0X3Njc2lfZGVidWcKJiM0MzsJCXJldHVybiAxCiYjNDM7CWZpCiYjNDM7CWVjaG8gJiMzNDtUZXN0aW5nIHVubG9hZCB3aXRob3V0IHJ1bGVzJiMzNDsKJiM0MzsJX2V4aXRfc2NzaV9kZWJ1ZwomIzQzO30KJiM0MzsKJiM0MztfdGVzdF9ydWxlcygpCiYjNDM7ewomIzQzOwlpZiAhIF9pbml0X3Njc2lfZGVidWcgZGV2X3NpemVfbWI9NTAwOyB0aGVuCiYjNDM7CQlyZXR1cm4gMQomIzQzOwlmaQomIzQzOwomIzQzOwlsb2NhbCBkZXY9JHtTQ1NJX0RFQlVHX0RFVklDRVNbMF19CiYjNDM7CWxvY2FsIGRlYnVnZnNfZmlsZT0mIzM0Oy9zeXMva2VybmVsL2RlYnVnL2Jsb2NrLyRkZXYvZXJyb3JfaW5qZWN0aW9uJiMzNDsKJiM0MzsKJiM0MzsJZWNobyAmIzM0O1Rlc3RpbmcgdmFsaWQgcnVsZXMmIzM0OwomIzQzOwllY2hvICYjMzQ7YWRkLG9wPVdSSVRFLHN0YXR1cz1SRVNPVVJDRSxzdGFydD0wLG5yX3NlY3RvcnM9OCYjMzQ7ICZndDsgJGRlYnVnZnNfZmlsZQomIzQzOwllY2hvICYjMzQ7YWRkLG9wPVJFQUQsc3RhdHVzPUlPRVJSLHN0YXJ0PTE2LG5yX3NlY3RvcnM9OCYjMzQ7ICZndDsgJGRlYnVnZnNfZmlsZQomIzQzOwl4ZnNfaW8gLWQgLWMgJiMzOTtwd3JpdGUgLXEgMCA0MDk2JiMzOTsgL2Rldi8kZGV2CiYjNDM7CXhmc19pbyAtZCAtYyAmIzM5O3ByZWFkIC1xIDAgNDA5NiYjMzk7IC9kZXYvJGRldgomIzQzOwl4ZnNfaW8gLWQgLWMgJiMzOTtwd3JpdGUgLXEgNDA5NiA0MDk2JiMzOTsgL2Rldi8kZGV2CiYjNDM7CXhmc19pbyAtZCAtYyAmIzM5O3ByZWFkIC1xIDgxOTIgODE5MiYjMzk7IC9kZXYvJGRldgomIzQzOwomIzQzOwllY2hvICYjMzQ7VGVzdGluZyBpbnZhbGlkIHJ1bGVzJiMzNDsKJiM0MzsJZWNobyAmIzM0O29wPVJFQUQsc3RhdHVzPUlPRVJSJiMzNDsgJmd0OyAkZGVidWdmc19maWxlCiYjNDM7CWVjaG8gJiMzNDthZGQsb3A9UkVBRCxzdGF0dXM9RUlPLHN0YXJ0PTMyJiMzNDsgJmd0OyAkZGVidWdmc19maWxlCiYjNDM7CV9leGl0X3Njc2lfZGVidWcKJiM0Mzt9CiYjNDM7CiYjNDM7dGVzdCgpCiYjNDM7ewomIzQzOwllY2hvICYjMzQ7UnVubmluZyAke1RFU1RfTkFNRX0mIzM0OwomIzQzOwomIzQzOwlsb2NhbCByZXQKJiM0MzsKJiM0MzsJX3Rlc3RfbG9hZF91bmxvYWQKJiM0MzsJX3Rlc3RfcnVsZXMKJiM0MzsKJiM0MzsJZWNobyAmIzM0O1Rlc3QgY29tcGxldGUmIzM0OwomIzQzO30KZGlmZiAtLWdpdCBhL3Rlc3RzL2Jsb2NrLzA0NC5vdXQgYi90ZXN0cy9ibG9jay8wNDQub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi45MmVmY2RkZjdjOGU2MgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3Rlc3RzL2Jsb2NrLzA0NC5vdXQKQEAgLTAsMCAmIzQzOzEsOSBAQAomIzQzO1J1bm5pbmcgYmxvY2svMDQ0CiYjNDM7VGVzdGluZyB1bmxvYWQgd2l0aG91dCBydWxlcwomIzQzO1Rlc3RpbmcgdmFsaWQgcnVsZXMKJiM0Mztwd3JpdGU6IENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkKJiM0MztwcmVhZDogSW5wdXQvb3V0cHV0IGVycm9yCiYjNDM7VGVzdGluZyBpbnZhbGlkIHJ1bGVzCiYjNDM7dGVzdHMvYmxvY2svMDQ0OiBsaW5lIDU2OiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudAomIzQzO3Rlc3RzL2Jsb2NrLzA0NDogbGluZSA1NzogZWNobzogd3JpdGUgZXJyb3I6IEludmFsaWQgYXJndW1lbnQKJiM0MztUZXN0IGNvbXBsZXRlCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1OTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVGVzdCBTY3JpcHQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRlc3Qgc2NyaXB0LCBgdGVzdHMvYmxvY2svMDQ0YCwgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIFJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyAmIzM0O2Jsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0JiMzNDsg4oCTIHNvbWV0aGluZyBJJiMzOTtkIHR5cGljYWxseSBmaW5kIGluIGBibGt0ZXN0c2Agb3IgYSBzaW1pbGFyIHRlc3RpbmcgZnJhbWV3b3JrLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gYW5kIHRoZSBwYXRoIHdpdGhpbiBgdGVzdHMvYmxvY2svYCBkZWZpbml0ZWx5IHN1Z2dlc3QgYSB0ZXN0IHN1aXRlLgoKV2FpdCBhIHNlY29uZOKApiB0aGUgcGF0aCBpcyBgdGVzdHMvYmxvY2svMDQ0YC4gVGhpcyBpc24mIzM5O3Qga2VybmVsIHNvdXJjZTsgaXQmIzM5O3MgYSAqdGVzdCBzY3JpcHQqLiBUaGF0IHRocm93cyBhIGZsYWcuIExldCBtZSBxdWlja2x5IGpvZyBteSBtZW1vcnk6IGRvZXMgdGhlIGtlcm5lbCB0cmVlICpldmVuKiBoYXZlIGEgYHRlc3RzL2Jsb2NrL2AgZGlyZWN0b3J5PyBObywgdXN1YWxseSBzZWxmdGVzdHMgYXJlIHVuZGVyIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9gLiBBaGEhIGBibGt0ZXN0c2AgKmRvZXMqIGhhdmUgYSBgdGVzdHMvYmxvY2svYCBkaXJlY3RvcnkuIElzIHRoaXMgcGF0Y2ggZm9yIGBibGt0ZXN0c2AsIHRoZW4/IFRoYXQmIzM5O3MgdGhlIGtleSBxdWVzdGlvbi4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0uIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0ICpvbmx5KiBjb250YWlucyBhZGRpdGlvbnMgb2YgYHRlc3RzL2Jsb2NrLzA0NGAgYW5kIGl0cyBvdXRwdXQuIFRoZXJlJiMzOTtzIHplcm8ga2VybmVsIGNvZGUgaGVyZS4gR2l2ZW4gdGhhdCB0aGlzIGlzIHB1cmVseSBhIHRlc3Qgc2NyaXB0IGFuZCBubyBmdW5jdGlvbmFsIGNvZGUsIGl0JiMzOTtzIHByZXR0eSBjbGVhcjogdGhpcyAqc2hvdWxkIG5vdCogYmUgZnV6emVkLiBJdCYjMzk7cyBhIHRlc3Qgc2NyaXB0LCBub3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIHRhcmdldGVkIGZvciBmdXp6aW5nLgoKTGV0IG1lIGRvdWJsZS1jaGVjayBteSBhc3N1bXB0aW9uIGFib3V0IHRoZSBgdGVzdHMvYmxvY2svYCBkaXJlY3RvcnkuIEp1c3QgdG8gYmUgY29tcGxldGVseSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nLCBJJiMzOTtsbCBydW4gYGNvZGVzZWFyY2gtZGlyLWluZGV4YCBvbiBgdGVzdHMvYmxvY2svYC4gSnVzdCBhIHNhbml0eSBjaGVjay4gQnV0LCBiYXJyaW5nIGFueSBzdXJwcmlzZXMsIEkmIzM5O20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDt0ZXN0cy9ibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogbnVsbCwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI1MAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYSBNaXNzaW5nIEtlcm5lbCBEaXJlY3RvcnkqKgoKQWxyaWdodCwgc28gdGhlIHRvb2wgaXMgdGVsbGluZyBtZSB0aGF0IGB0ZXN0cy9ibG9jay9gIGlzIG5vd2hlcmUgdG8gYmUgZm91bmQgaW4gdGhlIGtlcm5lbCB0cmVlLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IHN1c3BlY3QuIEkga25vdyBhIGxvdCBvZiB0aGUgc3RhbmRhcmQgcGF0aHMgaW50aW1hdGVseSwgYW5kIHRoYXQgZG9lc24mIzM5O3QgcmluZyBhbnkgYmVsbHMuIFdhaXQgYSBtaW51dGUsIHRoZSB0b29sJiMzOTtzIHJlc3BvbnNlIGlzICplbXB0eSo/IFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJlZCBmbGFnLiBPZnRlbiBpbmRpY2F0ZXMgYSBwZXJtaXNzaW9ucyBpc3N1ZSwgc29tZSBzb3J0IG9mIG1pc2NvbmZpZ3VyYXRpb24gb24gdGhlIHJldHJpZXZhbCBlbmQsIG9yIG1heWJlIHRoZSBzeXN0ZW0ganVzdCBkaWRuJiMzOTt0IHByb2Nlc3MgdGhlIHF1ZXJ5IGNvcnJlY3RseS4gSSBuZWVkIHRvIGVzdGFibGlzaCBhIGJhc2VsaW5lLiBCZWZvcmUgSSBqdW1wIHRvIGNvbmNsdXNpb25zIGFib3V0IHRoZSBzcGVjaWZpYyBwYXRoLCBsZXQgbWUganVzdCBjaGVjayB0aGUgcm9vdCBvZiB0aGUgZmlsZSBzeXN0ZW0uIFNlZSBpZiB0aGUgdG9vbCBjYW4gZXZlbiBhY2Nlc3MgdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuIEdvdHRhIGVsaW1pbmF0ZSB0aGUgc2ltcGxlIHN0dWZmIGZpcnN0IGJlZm9yZSBJIGdvIGRpZ2dpbmcgaW50byBkZWVwZXIsIG1vcmUgY29tcGxpY2F0ZWQgcG9zc2liaWxpdGllcy4gQSBibGFuayByb290IHJlc3BvbnNlIHdvdWxkIGltcGx5IHN5c3RlbWljIGZhaWx1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGVzJiMzNDs6IG51bGwsCiAgJiMzNDtTdWJkaXJzJiMzNDs6IFsKICAgICYjMzQ7RG9jdW1lbnRhdGlvbiYjMzQ7LAogICAgJiMzNDtMSUNFTlNFUyYjMzQ7LAogICAgJiMzNDthcmNoJiMzNDssCiAgICAmIzM0O2Jsb2NrJiMzNDssCiAgICAmIzM0O2NlcnRzJiMzNDssCiAgICAmIzM0O2NyeXB0byYjMzQ7LAogICAgJiMzNDtkcml2ZXJzJiMzNDssCiAgICAmIzM0O2ZzJiMzNDssCiAgICAmIzM0O2luY2x1ZGUmIzM0OywKICAgICYjMzQ7aW5pdCYjMzQ7LAogICAgJiMzNDtpb191cmluZyYjMzQ7LAogICAgJiMzNDtpcGMmIzM0OywKICAgICYjMzQ7a2VybmVsJiMzNDssCiAgICAmIzM0O2xpYiYjMzQ7LAogICAgJiMzNDttbSYjMzQ7LAogICAgJiMzNDtuZXQmIzM0OywKICAgICYjMzQ7cnVzdCYjMzQ7LAogICAgJiMzNDtzYW1wbGVzJiMzNDssCiAgICAmIzM0O3NjcmlwdHMmIzM0OywKICAgICYjMzQ7c2VjdXJpdHkmIzM0OywKICAgICYjMzQ7c291bmQmIzM0OywKICAgICYjMzQ7dGVzdHMmIzM0OywKICAgICYjMzQ7dG9vbHMmIzM0OywKICAgICYjMzQ7dXNyJiMzNDssCiAgICAmIzM0O3ZpcnQmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIyIDE2OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjIKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFRlc3QgU3RydWN0dXJlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwcm9qZWN0JiMzOTtzIHN0cnVjdHVyZSwgYW5kIHRoZSBwcmVzZW5jZSBvZiBhICYjMzQ7dGVzdHMmIzM0OyBkaXJlY3RvcnkgaW4gdGhlIHJvb3QgaXMgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0LiBTdGFuZGFyZCBwcmFjdGljZSwgb2YgY291cnNlLCBidXQgaXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gY29uZmlybSB0aGUgYmFzaWNzLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGF0ICYjMzQ7dGVzdHMvYmxvY2smIzM0OyBkaXJlY3RvcnkuIFRoaXMgaXMgd2hlcmUgdGhlIHJlYWwgbWVhdCBvZiB0aGUgdGVzdGluZyBzdHJhdGVneSB1c3VhbGx5IHJlc2lkZXMuICYjMzQ7QmxvY2smIzM0OyBsaWtlbHkgaW5kaWNhdGVzIGEgZm9jdXNlZCB0ZXN0aW5nIGFyZWEsIHBlcmhhcHMgcmVsYXRlZCB0byBjb3JlIGRhdGEgc3RydWN0dXJlcyBvciBmdW5jdGlvbmFsIHVuaXRzLiBOb3cgSSYjMzk7bGwgc3RhcnQgZm9ybXVsYXRpbmcgbXkgcXVlc3Rpb25zOiB3aGF0IGFyZSB0aGUgdGVzdCBjYXNlcyBpbiB0aGUgYmxvY2ssIGFyZSB0aGV5IHVuaXQgdGVzdHMsIGludGVncmF0aW9uIHRlc3RzLCBvciBlbmQtdG8tZW5kIHRlc3RzPyBJcyB0aGVyZSBjb3ZlcmFnZSwgYW5kIHdoYXQgYXJlIHRoZSB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgYmVpbmcgYXBwbGllZD8gSSYjMzk7bGwgcXVpY2tseSBsb29rIGZvciB0aGluZ3MgbGlrZSBuYW1pbmcgY29udmVudGlvbnMgaW4gdGhlIGJsb2NrIHRlc3RzIHRvIHVuZGVyc3RhbmQgdGhlIHRlc3RpbmcgYXBwcm9hY2ggYW5kIGhvdyBkZWVwbHkgd2UgY2FuIGludGVycHJldCB0aGUgdGVzdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7dGVzdHMvYmxvY2smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogbnVsbCwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjIgMTY6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg3MwoJCQkJCQkJb3V0cHV0OiA1MgoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkVtcHR5IFJlc3BvbnNlICZhbXA7IFRlc3QgU2NyaXB0cyoqCgpPa2F5LCBoZXJlIHdlIGdvIGFnYWluIOKAkyBhbm90aGVyIGVtcHR5IHJlc3BvbnNlISBCdXQgaGFuZyBvbiwgdGhlIHBhdGNoIGluY2x1ZGVzIGB0ZXN0cy9ibG9jay8wNDRgLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgKmp1c3QqIGEgdGVzdCBjYXNlLCBidXQgbGV0JiMzOTtzIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIHBhdGNoIG9ubHkgYWRkcyB0aGUgdGVzdCBzY3JpcHQsIGB0ZXN0cy9ibG9jay8wNDRgLCBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0LCBgdGVzdHMvYmxvY2svMDQ0Lm91dGAuIFRoZXNlIGFyZSB0ZXN0IHJlc291cmNlcywgbm90IGFjdHVhbCBrZXJuZWwgY29kZS4gVGhleSBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgZnVuY3Rpb25hbGl0eSBvciBjaGFuZ2UgaG93IHRoZSBrZXJuZWwgZXhlY3V0ZXMgZGlyZWN0bHkuIFRoZXJlZm9yZSwgSSBjYW4gY29uZmlkZW50bHkgbWFyayB0aGlzIGFzIFdvcnRoRnV6emluZz1mYWxzZS4gSXQmIzM5O3MgYSB0ZXN0IGFkZGl0aW9uOyBpdCYjMzk7cyBub3QgYSBjaGFuZ2UgdGhhdCBuZWVkcyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMiAxNjoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODoyNi40OTU4Mjg1OTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg3ODk5MDc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgdGVzdCBzY3JpcHQgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTY6Mjg6MjYuNDk1ODQ3NDg1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQ5MjU4NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1ZjNlYzNiYWEwOTViNjdjNGFiNjhhNGRiZGZhYWNiYWZjYzM2NjZjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVuIDIyIDE2OjI4OjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rlc3RzL2Jsb2NrLzA0NCBiL3Rlc3RzL2Jsb2NrLzA0NFxcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhiYWY5ZmE1OWM2OGE0XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rlc3RzL2Jsb2NrLzA0NFxcbkBAIC0wLDAgKzEsNzEgQEBcXG4rIyEvYmluL2Jhc2hcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjIENvcHlyaWdodCAoYykgMjAyNiBDaHJpc3RvcGggSGVsbHdpZy5cXG4rI1xcbisjIEJhc2ljIGJsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0LlxcbitcXG4rLiB0ZXN0cy9ibG9jay9yY1xcbisuIGNvbW1vbi9zY3NpX2RlYnVnXFxuK1xcbitERVNDUklQVElPTj1cXFwiYmFzaWMgYmxvY2sgZXJyb3IgaW5qZWN0aW9uIHRlc3RcXFwiXFxuK1FVSUNLPTFcXG4rXFxuK3JlcXVpcmVzKClcXG4re1xcdFxcbitcXHRfaGF2ZV9sb2FkYWJsZV9zY3NpX2RlYnVnXFxuK1xcdF9oYXZlX3Byb2dyYW0geGZzX2lvXFxuK31cXG4rXFxuKyMgbG9hZCBhbmQgcmVtb3ZlIHNjc2lfZGVidWcgb25jZSB0byB0ZXN0IHRoZSBzdGF0aWNfa2V5IGJ1ZyBpbiB0aGVcXG4rIyBpbml0aWFsIGNvbW1pdFxcbitfdGVzdF9sb2FkX3VubG9hZCgpXFxuK3tcXG4rXFx0aWYgISBfaW5pdF9zY3NpX2RlYnVnIGRldl9zaXplX21iPTUwMDsgdGhlblxcbitcXHRcXHRyZXR1cm4gMVxcbitcXHRmaVxcbitcXG4rXFx0bG9jYWwgZGV2PSR7U0NTSV9ERUJVR19ERVZJQ0VTWzBdfVxcbitcXHRsb2NhbCBkZWJ1Z2ZzX2ZpbGU9XFxcIi9zeXMva2VybmVsL2RlYnVnL2Jsb2NrLyRkZXYvZXJyb3JfaW5qZWN0aW9uXFxcIlxcbitcXHRpZiBbWyAhIC1mIFxcXCIke2RlYnVnZnNfZmlsZX1cXFwiIF1dOyB0aGVuXFxuK1xcdFxcdFNLSVBfUkVBU09OUys9KFxcXCJlcnJvciBpbmplY3Rpb24gbm90IHN1cHBvcnRlZFxcXCIpXFxuK1xcdFxcdF9leGl0X3Njc2lfZGVidWdcXG4rXFx0XFx0cmV0dXJuIDFcXG4rXFx0ZmlcXG4rXFx0ZWNobyBcXFwiVGVzdGluZyB1bmxvYWQgd2l0aG91dCBydWxlc1xcXCJcXG4rXFx0X2V4aXRfc2NzaV9kZWJ1Z1xcbit9XFxuK1xcbitfdGVzdF9ydWxlcygpXFxuK3tcXG4rXFx0aWYgISBfaW5pdF9zY3NpX2RlYnVnIGRldl9zaXplX21iPTUwMDsgdGhlblxcbitcXHRcXHRyZXR1cm4gMVxcbitcXHRmaVxcbitcXG4rXFx0bG9jYWwgZGV2PSR7U0NTSV9ERUJVR19ERVZJQ0VTWzBdfVxcbitcXHRsb2NhbCBkZWJ1Z2ZzX2ZpbGU9XFxcIi9zeXMva2VybmVsL2RlYnVnL2Jsb2NrLyRkZXYvZXJyb3JfaW5qZWN0aW9uXFxcIlxcbitcXG4rXFx0ZWNobyBcXFwiVGVzdGluZyB2YWxpZCBydWxlc1xcXCJcXG4rXFx0ZWNobyBcXFwiYWRkLG9wPVdSSVRFLHN0YXR1cz1SRVNPVVJDRSxzdGFydD0wLG5yX3NlY3RvcnM9OFxcXCIgXFx1MDAzZSAkZGVidWdmc19maWxlXFxuK1xcdGVjaG8gXFxcImFkZCxvcD1SRUFELHN0YXR1cz1JT0VSUixzdGFydD0xNixucl9zZWN0b3JzPThcXFwiIFxcdTAwM2UgJGRlYnVnZnNfZmlsZVxcbitcXHR4ZnNfaW8gLWQgLWMgJ3B3cml0ZSAtcSAwIDQwOTYnIC9kZXYvJGRldlxcbitcXHR4ZnNfaW8gLWQgLWMgJ3ByZWFkIC1xIDAgNDA5NicgL2Rldi8kZGV2XFxuK1xcdHhmc19pbyAtZCAtYyAncHdyaXRlIC1xIDQwOTYgNDA5NicgL2Rldi8kZGV2XFxuK1xcdHhmc19pbyAtZCAtYyAncHJlYWQgLXEgODE5MiA4MTkyJyAvZGV2LyRkZXZcXG4rXFxuK1xcdGVjaG8gXFxcIlRlc3RpbmcgaW52YWxpZCBydWxlc1xcXCJcXG4rXFx0ZWNobyBcXFwib3A9UkVBRCxzdGF0dXM9SU9FUlJcXFwiIFxcdTAwM2UgJGRlYnVnZnNfZmlsZVxcbitcXHRlY2hvIFxcXCJhZGQsb3A9UkVBRCxzdGF0dXM9RUlPLHN0YXJ0PTMyXFxcIiBcXHUwMDNlICRkZWJ1Z2ZzX2ZpbGVcXG4rXFx0X2V4aXRfc2NzaV9kZWJ1Z1xcbit9XFxuK1xcbit0ZXN0KClcXG4re1xcbitcXHRlY2hvIFxcXCJSdW5uaW5nICR7VEVTVF9OQU1FfVxcXCJcXG4rXFxuK1xcdGxvY2FsIHJldFxcbitcXG4rXFx0X3Rlc3RfbG9hZF91bmxvYWRcXG4rXFx0X3Rlc3RfcnVsZXNcXG4rXFxuK1xcdGVjaG8gXFxcIlRlc3QgY29tcGxldGVcXFwiXFxuK31cXG5kaWZmIC0tZ2l0IGEvdGVzdHMvYmxvY2svMDQ0Lm91dCBiL3Rlc3RzL2Jsb2NrLzA0NC5vdXRcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi45MmVmY2RkZjdjOGU2Mlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90ZXN0cy9ibG9jay8wNDQub3V0XFxuQEAgLTAsMCArMSw5IEBAXFxuK1J1bm5pbmcgYmxvY2svMDQ0XFxuK1Rlc3RpbmcgdW5sb2FkIHdpdGhvdXQgcnVsZXNcXG4rVGVzdGluZyB2YWxpZCBydWxlc1xcbitwd3JpdGU6IENhbm5vdCBhbGxvY2F0ZSBtZW1vcnlcXG4rcHJlYWQ6IElucHV0L291dHB1dCBlcnJvclxcbitUZXN0aW5nIGludmFsaWQgcnVsZXNcXG4rdGVzdHMvYmxvY2svMDQ0OiBsaW5lIDU2OiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudFxcbit0ZXN0cy9ibG9jay8wNDQ6IGxpbmUgNTc6IGVjaG86IHdyaXRlIGVycm9yOiBJbnZhbGlkIGFyZ3VtZW50XFxuK1Rlc3QgY29tcGxldGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTY6Mjg6MjcuMDAxNTI5NDc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODM3MzI3NzQzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGEgdGVzdCBzY3JpcHQgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZjNlYzNiYWEwOTViNjdjNGFiNjhhNGRiZGZhYWNiYWZjYzM2NjZjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjIgMTY6Mjg6MjUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90ZXN0cy9ibG9jay8wNDQgYi90ZXN0cy9ibG9jay8wNDRcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOGJhZjlmYTU5YzY4YTRcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rlc3RzL2Jsb2NrLzA0NFxuQEAgLTAsMCArMSw3MSBAQFxuKyMhL2Jpbi9iYXNoXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyMgQ29weXJpZ2h0IChjKSAyMDI2IENocmlzdG9waCBIZWxsd2lnLlxuKyNcbisjIEJhc2ljIGJsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0LlxuK1xuKy4gdGVzdHMvYmxvY2svcmNcbisuIGNvbW1vbi9zY3NpX2RlYnVnXG4rXG4rREVTQ1JJUFRJT049XCJiYXNpYyBibG9jayBlcnJvciBpbmplY3Rpb24gdGVzdFwiXG4rUVVJQ0s9MVxuK1xuK3JlcXVpcmVzKClcbit7XHRcbitcdF9oYXZlX2xvYWRhYmxlX3Njc2lfZGVidWdcbitcdF9oYXZlX3Byb2dyYW0geGZzX2lvXG4rfVxuK1xuKyMgbG9hZCBhbmQgcmVtb3ZlIHNjc2lfZGVidWcgb25jZSB0byB0ZXN0IHRoZSBzdGF0aWNfa2V5IGJ1ZyBpbiB0aGVcbisjIGluaXRpYWwgY29tbWl0XG4rX3Rlc3RfbG9hZF91bmxvYWQoKVxuK3tcbitcdGlmICEgX2luaXRfc2NzaV9kZWJ1ZyBkZXZfc2l6ZV9tYj01MDA7IHRoZW5cbitcdFx0cmV0dXJuIDFcbitcdGZpXG4rXG4rXHRsb2NhbCBkZXY9JHtTQ1NJX0RFQlVHX0RFVklDRVNbMF19XG4rXHRsb2NhbCBkZWJ1Z2ZzX2ZpbGU9XCIvc3lzL2tlcm5lbC9kZWJ1Zy9ibG9jay8kZGV2L2Vycm9yX2luamVjdGlvblwiXG4rXHRpZiBbWyAhIC1mIFwiJHtkZWJ1Z2ZzX2ZpbGV9XCIgXV07IHRoZW5cbitcdFx0U0tJUF9SRUFTT05TKz0oXCJlcnJvciBpbmplY3Rpb24gbm90IHN1cHBvcnRlZFwiKVxuK1x0XHRfZXhpdF9zY3NpX2RlYnVnXG4rXHRcdHJldHVybiAxXG4rXHRmaVxuK1x0ZWNobyBcIlRlc3RpbmcgdW5sb2FkIHdpdGhvdXQgcnVsZXNcIlxuK1x0X2V4aXRfc2NzaV9kZWJ1Z1xuK31cbitcbitfdGVzdF9ydWxlcygpXG4re1xuK1x0aWYgISBfaW5pdF9zY3NpX2RlYnVnIGRldl9zaXplX21iPTUwMDsgdGhlblxuK1x0XHRyZXR1cm4gMVxuK1x0ZmlcbitcbitcdGxvY2FsIGRldj0ke1NDU0lfREVCVUdfREVWSUNFU1swXX1cbitcdGxvY2FsIGRlYnVnZnNfZmlsZT1cIi9zeXMva2VybmVsL2RlYnVnL2Jsb2NrLyRkZXYvZXJyb3JfaW5qZWN0aW9uXCJcbitcbitcdGVjaG8gXCJUZXN0aW5nIHZhbGlkIHJ1bGVzXCJcbitcdGVjaG8gXCJhZGQsb3A9V1JJVEUsc3RhdHVzPVJFU09VUkNFLHN0YXJ0PTAsbnJfc2VjdG9ycz04XCIgXHUwMDNlICRkZWJ1Z2ZzX2ZpbGVcbitcdGVjaG8gXCJhZGQsb3A9UkVBRCxzdGF0dXM9SU9FUlIsc3RhcnQ9MTYsbnJfc2VjdG9ycz04XCIgXHUwMDNlICRkZWJ1Z2ZzX2ZpbGVcbitcdHhmc19pbyAtZCAtYyAncHdyaXRlIC1xIDAgNDA5NicgL2Rldi8kZGV2XG4rXHR4ZnNfaW8gLWQgLWMgJ3ByZWFkIC1xIDAgNDA5NicgL2Rldi8kZGV2XG4rXHR4ZnNfaW8gLWQgLWMgJ3B3cml0ZSAtcSA0MDk2IDQwOTYnIC9kZXYvJGRldlxuK1x0eGZzX2lvIC1kIC1jICdwcmVhZCAtcSA4MTkyIDgxOTInIC9kZXYvJGRldlxuK1xuK1x0ZWNobyBcIlRlc3RpbmcgaW52YWxpZCBydWxlc1wiXG4rXHRlY2hvIFwib3A9UkVBRCxzdGF0dXM9SU9FUlJcIiBcdTAwM2UgJGRlYnVnZnNfZmlsZVxuK1x0ZWNobyBcImFkZCxvcD1SRUFELHN0YXR1cz1FSU8sc3RhcnQ9MzJcIiBcdTAwM2UgJGRlYnVnZnNfZmlsZVxuK1x0X2V4aXRfc2NzaV9kZWJ1Z1xuK31cbitcbit0ZXN0KClcbit7XG4rXHRlY2hvIFwiUnVubmluZyAke1RFU1RfTkFNRX1cIlxuK1xuK1x0bG9jYWwgcmV0XG4rXG4rXHRfdGVzdF9sb2FkX3VubG9hZFxuK1x0X3Rlc3RfcnVsZXNcbitcbitcdGVjaG8gXCJUZXN0IGNvbXBsZXRlXCJcbit9XG5kaWZmIC0tZ2l0IGEvdGVzdHMvYmxvY2svMDQ0Lm91dCBiL3Rlc3RzL2Jsb2NrLzA0NC5vdXRcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOTJlZmNkZGY3YzhlNjJcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rlc3RzL2Jsb2NrLzA0NC5vdXRcbkBAIC0wLDAgKzEsOSBAQFxuK1J1bm5pbmcgYmxvY2svMDQ0XG4rVGVzdGluZyB1bmxvYWQgd2l0aG91dCBydWxlc1xuK1Rlc3RpbmcgdmFsaWQgcnVsZXNcbitwd3JpdGU6IENhbm5vdCBhbGxvY2F0ZSBtZW1vcnlcbitwcmVhZDogSW5wdXQvb3V0cHV0IGVycm9yXG4rVGVzdGluZyBpbnZhbGlkIHJ1bGVzXG4rdGVzdHMvYmxvY2svMDQ0OiBsaW5lIDU2OiBlY2hvOiB3cml0ZSBlcnJvcjogSW52YWxpZCBhcmd1bWVudFxuK3Rlc3RzL2Jsb2NrLzA0NDogbGluZSA1NzogZWNobzogd3JpdGUgZXJyb3I6IEludmFsaWQgYXJndW1lbnRcbitUZXN0IGNvbXBsZXRlXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODoyNy4wMDE1MzEyODVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzgwMzg5MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFRlc3QgU2NyaXB0IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRlc3Qgc2NyaXB0LCBgdGVzdHMvYmxvY2svMDQ0YCwgYW5kIGl0cyBleHBlY3RlZCBvdXRwdXQuIFJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyBcImJsb2NrIGVycm9yIGluamVjdGlvbiB0ZXN0XCIg4oCTIHNvbWV0aGluZyBJJ2QgdHlwaWNhbGx5IGZpbmQgaW4gYGJsa3Rlc3RzYCBvciBhIHNpbWlsYXIgdGVzdGluZyBmcmFtZXdvcmsuIFRoZSBuYW1pbmcgY29udmVudGlvbiBhbmQgdGhlIHBhdGggd2l0aGluIGB0ZXN0cy9ibG9jay9gIGRlZmluaXRlbHkgc3VnZ2VzdCBhIHRlc3Qgc3VpdGUuXG5cbldhaXQgYSBzZWNvbmTigKYgdGhlIHBhdGggaXMgYHRlc3RzL2Jsb2NrLzA0NGAuIFRoaXMgaXNuJ3Qga2VybmVsIHNvdXJjZTsgaXQncyBhICp0ZXN0IHNjcmlwdCouIFRoYXQgdGhyb3dzIGEgZmxhZy4gTGV0IG1lIHF1aWNrbHkgam9nIG15IG1lbW9yeTogZG9lcyB0aGUga2VybmVsIHRyZWUgKmV2ZW4qIGhhdmUgYSBgdGVzdHMvYmxvY2svYCBkaXJlY3Rvcnk/IE5vLCB1c3VhbGx5IHNlbGZ0ZXN0cyBhcmUgdW5kZXIgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2AuIEFoYSEgYGJsa3Rlc3RzYCAqZG9lcyogaGF2ZSBhIGB0ZXN0cy9ibG9jay9gIGRpcmVjdG9yeS4gSXMgdGhpcyBwYXRjaCBmb3IgYGJsa3Rlc3RzYCwgdGhlbj8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybS4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgKm9ubHkqIGNvbnRhaW5zIGFkZGl0aW9ucyBvZiBgdGVzdHMvYmxvY2svMDQ0YCBhbmQgaXRzIG91dHB1dC4gVGhlcmUncyB6ZXJvIGtlcm5lbCBjb2RlIGhlcmUuIEdpdmVuIHRoYXQgdGhpcyBpcyBwdXJlbHkgYSB0ZXN0IHNjcmlwdCBhbmQgbm8gZnVuY3Rpb25hbCBjb2RlLCBpdCdzIHByZXR0eSBjbGVhcjogdGhpcyAqc2hvdWxkIG5vdCogYmUgZnV6emVkLiBJdCdzIGEgdGVzdCBzY3JpcHQsIG5vdCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgdGFyZ2V0ZWQgZm9yIGZ1enppbmcuXG5cbkxldCBtZSBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbiBhYm91dCB0aGUgYHRlc3RzL2Jsb2NrL2AgZGlyZWN0b3J5LiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgc3VyZSBJJ20gbm90IG1pc3Npbmcgc29tZXRoaW5nLCBJJ2xsIHJ1biBgY29kZXNlYXJjaC1kaXItaW5kZXhgIG9uIGB0ZXN0cy9ibG9jay9gLiBKdXN0IGEgc2FuaXR5IGNoZWNrLiBCdXQsIGJhcnJpbmcgYW55IHN1cnByaXNlcywgSSdtIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTIsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODozMy4zODE5MjI4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJ0ZXN0cy9ibG9jay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE2OjI4OjMzLjM4MTk3NDM0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI4ODg1NDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBhIE1pc3NpbmcgS2VybmVsIERpcmVjdG9yeSoqXG5cbkFscmlnaHQsIHNvIHRoZSB0b29sIGlzIHRlbGxpbmcgbWUgdGhhdCBgdGVzdHMvYmxvY2svYCBpcyBub3doZXJlIHRvIGJlIGZvdW5kIGluIHRoZSBrZXJuZWwgdHJlZS4gVGhhdCdzIGltbWVkaWF0ZWx5IHN1c3BlY3QuIEkga25vdyBhIGxvdCBvZiB0aGUgc3RhbmRhcmQgcGF0aHMgaW50aW1hdGVseSwgYW5kIHRoYXQgZG9lc24ndCByaW5nIGFueSBiZWxscy4gV2FpdCBhIG1pbnV0ZSwgdGhlIHRvb2wncyByZXNwb25zZSBpcyAqZW1wdHkqPyBUaGF0J3MgYSBjbGFzc2ljIHJlZCBmbGFnLiBPZnRlbiBpbmRpY2F0ZXMgYSBwZXJtaXNzaW9ucyBpc3N1ZSwgc29tZSBzb3J0IG9mIG1pc2NvbmZpZ3VyYXRpb24gb24gdGhlIHJldHJpZXZhbCBlbmQsIG9yIG1heWJlIHRoZSBzeXN0ZW0ganVzdCBkaWRuJ3QgcHJvY2VzcyB0aGUgcXVlcnkgY29ycmVjdGx5LiBJIG5lZWQgdG8gZXN0YWJsaXNoIGEgYmFzZWxpbmUuIEJlZm9yZSBJIGp1bXAgdG8gY29uY2x1c2lvbnMgYWJvdXQgdGhlIHNwZWNpZmljIHBhdGgsIGxldCBtZSBqdXN0IGNoZWNrIHRoZSByb290IG9mIHRoZSBmaWxlIHN5c3RlbS4gU2VlIGlmIHRoZSB0b29sIGNhbiBldmVuIGFjY2VzcyB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gR290dGEgZWxpbWluYXRlIHRoZSBzaW1wbGUgc3R1ZmYgZmlyc3QgYmVmb3JlIEkgZ28gZGlnZ2luZyBpbnRvIGRlZXBlciwgbW9yZSBjb21wbGljYXRlZCBwb3NzaWJpbGl0aWVzLiBBIGJsYW5rIHJvb3QgcmVzcG9uc2Ugd291bGQgaW1wbHkgc3lzdGVtaWMgZmFpbHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI1MCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODozNy42NzA4MzA1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ4MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcIkRvY3VtZW50YXRpb25cIixcbiAgICBcIkxJQ0VOU0VTXCIsXG4gICAgXCJhcmNoXCIsXG4gICAgXCJibG9ja1wiLFxuICAgIFwiY2VydHNcIixcbiAgICBcImNyeXB0b1wiLFxuICAgIFwiZHJpdmVyc1wiLFxuICAgIFwiZnNcIixcbiAgICBcImluY2x1ZGVcIixcbiAgICBcImluaXRcIixcbiAgICBcImlvX3VyaW5nXCIsXG4gICAgXCJpcGNcIixcbiAgICBcImtlcm5lbFwiLFxuICAgIFwibGliXCIsXG4gICAgXCJtbVwiLFxuICAgIFwibmV0XCIsXG4gICAgXCJydXN0XCIsXG4gICAgXCJzYW1wbGVzXCIsXG4gICAgXCJzY3JpcHRzXCIsXG4gICAgXCJzZWN1cml0eVwiLFxuICAgIFwic291bmRcIixcbiAgICBcInRlc3RzXCIsXG4gICAgXCJ0b29sc1wiLFxuICAgIFwidXNyXCIsXG4gICAgXCJ2aXJ0XCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjJUMTY6Mjg6MzcuNjcwOTA3MTJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTA3OTI0NjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFRlc3QgU3RydWN0dXJlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcHJvamVjdCdzIHN0cnVjdHVyZSwgYW5kIHRoZSBwcmVzZW5jZSBvZiBhIFwidGVzdHNcIiBkaXJlY3RvcnkgaW4gdGhlIHJvb3QgaXMgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0LiBTdGFuZGFyZCBwcmFjdGljZSwgb2YgY291cnNlLCBidXQgaXQncyBhbHdheXMgZ29vZCB0byBjb25maXJtIHRoZSBiYXNpY3MuIExldCdzIGRlbHZlIGludG8gdGhhdCBcInRlc3RzL2Jsb2NrXCIgZGlyZWN0b3J5LiBUaGlzIGlzIHdoZXJlIHRoZSByZWFsIG1lYXQgb2YgdGhlIHRlc3Rpbmcgc3RyYXRlZ3kgdXN1YWxseSByZXNpZGVzLiBcIkJsb2NrXCIgbGlrZWx5IGluZGljYXRlcyBhIGZvY3VzZWQgdGVzdGluZyBhcmVhLCBwZXJoYXBzIHJlbGF0ZWQgdG8gY29yZSBkYXRhIHN0cnVjdHVyZXMgb3IgZnVuY3Rpb25hbCB1bml0cy4gTm93IEknbGwgc3RhcnQgZm9ybXVsYXRpbmcgbXkgcXVlc3Rpb25zOiB3aGF0IGFyZSB0aGUgdGVzdCBjYXNlcyBpbiB0aGUgYmxvY2ssIGFyZSB0aGV5IHVuaXQgdGVzdHMsIGludGVncmF0aW9uIHRlc3RzLCBvciBlbmQtdG8tZW5kIHRlc3RzPyBJcyB0aGVyZSBjb3ZlcmFnZSwgYW5kIHdoYXQgYXJlIHRoZSB0ZXN0aW5nIG1ldGhvZG9sb2dpZXMgYmVpbmcgYXBwbGllZD8gSSdsbCBxdWlja2x5IGxvb2sgZm9yIHRoaW5ncyBsaWtlIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGUgYmxvY2sgdGVzdHMgdG8gdW5kZXJzdGFuZCB0aGUgdGVzdGluZyBhcHByb2FjaCBhbmQgaG93IGRlZXBseSB3ZSBjYW4gaW50ZXJwcmV0IHRoZSB0ZXN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYyMiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMlQxNjoyODo0MS43Nzg4MzQxMDNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwidGVzdHMvYmxvY2tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE2OjI4OjQxLjc3ODg4MzI4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTU4OTQ2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRW1wdHkgUmVzcG9uc2UgXHUwMDI2IFRlc3QgU2NyaXB0cyoqXG5cbk9rYXksIGhlcmUgd2UgZ28gYWdhaW4g4oCTIGFub3RoZXIgZW1wdHkgcmVzcG9uc2UhIEJ1dCBoYW5nIG9uLCB0aGUgcGF0Y2ggaW5jbHVkZXMgYHRlc3RzL2Jsb2NrLzA0NGAuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCBpdCdzIHByb2JhYmx5ICpqdXN0KiBhIHRlc3QgY2FzZSwgYnV0IGxldCdzIGJlIGFic29sdXRlbHkgY2VydGFpbi4gVGhlIHBhdGNoIG9ubHkgYWRkcyB0aGUgdGVzdCBzY3JpcHQsIGB0ZXN0cy9ibG9jay8wNDRgLCBhbmQgaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0LCBgdGVzdHMvYmxvY2svMDQ0Lm91dGAuIFRoZXNlIGFyZSB0ZXN0IHJlc291cmNlcywgbm90IGFjdHVhbCBrZXJuZWwgY29kZS4gVGhleSBkb24ndCBpbnRyb2R1Y2UgYW55IG5ldyBmdW5jdGlvbmFsaXR5IG9yIGNoYW5nZSBob3cgdGhlIGtlcm5lbCBleGVjdXRlcyBkaXJlY3RseS4gVGhlcmVmb3JlLCBJIGNhbiBjb25maWRlbnRseSBtYXJrIHRoaXMgYXMgV29ydGhGdXp6aW5nPWZhbHNlLiBJdCdzIGEgdGVzdCBhZGRpdGlvbjsgaXQncyBub3QgYSBjaGFuZ2UgdGhhdCBuZWVkcyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODczLCJPdXRwdXRUb2tlbnMiOjUyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODMsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIyVDE2OjI4OjQ1LjM3NDc3OTgwN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBhIHRlc3Qgc2NyaXB0IGFuZCBpdHMgZXhwZWN0ZWQgb3V0cHV0LiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowchxwt[1] Phase: Running StartedAt: 2026-06-22 16:28:56 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchxwt[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-22 16:28:56 +0000 UTC FinishedAt: 2026-06-22 16:29:00 +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,}