Name: series-workflowd4bx8 Phase: Failed StartedAt: 2026-06-30 23:01:55 +0000 UTC FinishedAt: 2026-06-30 23:14:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4bx8[0] Phase: Succeeded StartedAt: 2026-06-30 23:01:55 +0000 UTC FinishedAt: 2026-06-30 23:13:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4bx8[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 23:01:55 +0000 UTC FinishedAt: 2026-06-30 23:13:49 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDIzOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZWFybHkgYm9vdCBpbml0aWFsaXphdGlvbiBjb2RlIChmdW5jdGlvbnMgbWFya2VkIHdpdGggX19pbml0LCBzdWNoIGFzIGthc2FuX2luaXQsIGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXMsIGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIHN5c3RlbSBzdGFydHVwIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIHJlYWNoZWQgdmlhIHVzZXItc3BhY2UgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjM6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzNGU4N2NmY2ZmZDM2NWJiODZiYmZjNTJiZGQ2NzNkOWI5YjM0NzFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMjM6MTI6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jIGIvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jXG5pbmRleCBjNjYyNWU4MDhiZjg1ZS4uMWY3Yzc0YzVkZjllOTggMTAwNjQ0XG4tLS0gYS9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL21tL2thc2FuX2luaXQuY1xuQEAgLTI2MiwxMiAmIzQzOzI2Miw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbiBcdFx0XHRcdFx1MDAyNnBhX3N0YXJ0LCBcdTAwMjZwYV9lbmQsIFx1MDAyNmFybV9sb3dtZW1fbGltaXQpO1xuIFx0XHRcdGVuZCA9IF9fdmEoYXJtX2xvd21lbV9saW1pdCk7XG4gXHRcdH1cbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKSB7XG4tXHRcdFx0cHJfaW5mbyhcJiMzNDtTa2lwcGluZyBpbnZhbGlkIG1lbW9yeSBibG9jayAlcGEtJXBhICh2aXJ0dWFsICVwLSVwKVxcblwmIzM0Oyxcbi1cdFx0XHRcdFx1MDAyNnBhX3N0YXJ0LCBcdTAwMjZwYV9lbmQsIHN0YXJ0LCBlbmQpO1xuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9XG4tXG4gXHRcdGNyZWF0ZV9tYXBwaW5nKHN0YXJ0LCBlbmQpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmNcbmluZGV4IDNmY2FkOTU2ZmRmN2NiLi40NWZiZGNlNjg0Yzg5YyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuY1xuQEAgLTM1Myw5ICYjNDM7MzUzLDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfc2hhZG93KHZvaWQpXG4gXHRcdHZvaWQgKnN0YXJ0ID0gKHZvaWQgKilfX3BoeXNfdG9fdmlydChwYV9zdGFydCk7XG4gXHRcdHZvaWQgKmVuZCA9ICh2b2lkICopX19waHlzX3RvX3ZpcnQocGFfZW5kKTtcbiBcbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRcdGJyZWFrO1xuLVxuIFx0XHRrYXNhbl9tYXBfcG9wdWxhdGUoKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksXG4gXHRcdFx0XHQgICAodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCksXG4gXHRcdFx0XHQgICBlYXJseV9wZm5fdG9fbmlkKHZpcnRfdG9fcGZuKHN0YXJ0KSkpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuYyBiL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuY1xuaW5kZXggMGZjMDJjYTA2NDU3MzguLjkyY2EwYmE4NjQwNjFlIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbW0va2FzYW5faW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmNcbkBAIC0zMDUsOSAmIzQzOzMwNSw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbiBcdFx0dm9pZCAqc3RhcnQgPSAodm9pZCAqKXBoeXNfdG9fdmlydChwYV9zdGFydCk7XG4gXHRcdHZvaWQgKmVuZCAgID0gKHZvaWQgKilwaHlzX3RvX3ZpcnQocGFfZW5kKTtcbiBcbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRcdGJyZWFrO1xuLVxuIFx0XHRrYXNhbl9tYXBfcG9wdWxhdGUoKHVuc2lnbmVkIGxvbmcpbWVtX3RvX3NoYWRvdyhzdGFydCksXG4gXHRcdFx0KHVuc2lnbmVkIGxvbmcpbWVtX3RvX3NoYWRvdyhlbmQpLCBOVU1BX05PX05PREUpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jIGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmNcbmluZGV4IDBkM2E3M2Q2ZDRiMGJiLi4wZWQzNzJmYjhiMDk2ZSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuY1xuQEAgLTY4LDkgJiM0Mzs2OCw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG4gXHR1bnNpZ25lZCBsb25nIGtfc3RhcnQsIGtfZW5kLCBrX2N1cjtcbiBcdHZvaWQgKnZhO1xuIFxuLVx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRrX3N0YXJ0ID0gQUxJR05fRE9XTigodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KHN0YXJ0KSwgUEFHRV9TSVpFKTtcbiBcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jIGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmNcbmluZGV4IGRjYWZhNjQxODA0YzBhLi5jY2ZiZmI4OTQ2Mzc2NiAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuY1xuQEAgLTI0LDkgJiM0MzsyNCw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG4gXHR1bnNpZ25lZCBsb25nIGtfc3RhcnQsIGtfZW5kLCBrX2N1cjtcbiBcdHZvaWQgKnZhO1xuIFxuLVx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRrX3N0YXJ0ID0gQUxJR05fRE9XTigodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KHN0YXJ0KSwgUEFHRV9TSVpFKTtcbiBcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9pbml0LmNcbmluZGV4IDViMWIzYzg4YjRkMTMwLi5lYjkzYzJhYzA1YTY4MiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xuQEAgLTEyMjksOCAmIzQzOzEyMjksNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgY3JlYXRlX2xpbmVhcl9tYXBwaW5nX3BhZ2VfdGFibGUodm9pZClcbiBcbiBcdC8qIE1hcCBhbGwgbWVtb3J5IGJhbmtzIGluIHRoZSBsaW5lYXIgbWFwcGluZyAqL1xuIFx0Zm9yX2VhY2hfbWVtX3JhbmdlKGksIFx1MDAyNnN0YXJ0LCBcdTAwMjZlbmQpIHtcbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRcdGJyZWFrO1xuIFx0XHRpZiAoc3RhcnQgXHUwMDNjPSBfX3BhKFBBR0VfT0ZGU0VUKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIF9fcGEoUEFHRV9PRkZTRVQpIFx1MDAzYyBlbmQpXG4gXHRcdFx0c3RhcnQgPSBfX3BhKFBBR0VfT0ZGU0VUKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuYyBiL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jXG5pbmRleCBjNGEyYTllNTU4NmU3NS4uMWYzYWE5NjExMTg3ZjYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmNcbkBAIC01MTIsOSAmIzQzOzUxMiw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbiBcdFx0dm9pZCAqc3RhcnQgPSAodm9pZCAqKV9fdmEocF9zdGFydCk7XG4gXHRcdHZvaWQgKmVuZCA9ICh2b2lkICopX192YShwX2VuZCk7XG4gXG4tXHRcdGlmIChzdGFydCBcdTAwM2U9IGVuZClcbi1cdFx0XHRicmVhaztcbi1cbiBcdFx0a2FzYW5fcG9wdWxhdGUoa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIGthc2FuX21lbV90b19zaGFkb3coZW5kKSk7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jXG5pbmRleCA1NzEyMTJiODA4MzVlYy4uNGY3MDIwOTYyNDg2ZDkgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2V0bGIuY1xuQEAgLTQ0NDQsMTUgJiM0Mzs0NDQ0LDEyIEBAIGh1Z2V0bGJfZWFybHlfcGFyYW0oXCYjMzQ7ZGVmYXVsdF9odWdlcGFnZXN6XCYjMzQ7LCBkZWZhdWx0X2h1Z2VwYWdlc3pfc2V0dXApO1xuIHZvaWQgX19pbml0IGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXModm9pZClcbiB7XG4gXHRpbnQgaSwgbmlkO1xuLVx0dW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVuZF9wZm47XG4gXG4gXHRpZiAoIW5vZGVzX2VtcHR5KGh1Z2V0bGJfYm9vdG1lbV9ub2RlcykpXG4gXHRcdHJldHVybjtcbiBcbi1cdGZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCBcdTAwMjZzdGFydF9wZm4sIFx1MDAyNmVuZF9wZm4sIFx1MDAyNm5pZCkge1xuLVx0XHRpZiAoZW5kX3BmbiBcdTAwM2Ugc3RhcnRfcGZuKVxuLVx0XHRcdG5vZGVfc2V0KG5pZCwgaHVnZXRsYl9ib290bWVtX25vZGVzKTtcbi1cdH1cbiYjNDM7XHRmb3JfZWFjaF9tZW1fcGZuX3JhbmdlKGksIE1BWF9OVU1OT0RFUywgTlVMTCwgTlVMTCwgXHUwMDI2bmlkKVxuJiM0MztcdFx0bm9kZV9zZXQobmlkLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpO1xuIH1cbiBcbiB2b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1fYWxsb2Modm9pZClcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcbmluZGV4IDBmNjQ5MDllOGQyMGUyLi4xNzQ5OGExM2ViOTkyNCAxMDA2NDRcbi0tLSBhL21tL21tX2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW1faW5pdC5jXG5AQCAtMzMyLDggJiM0MzszMzIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgZWFybHlfY2FsY3VsYXRlX3RvdGFscGFnZXModm9pZClcbiBcdFx0dW5zaWduZWQgbG9uZyBwYWdlcyA9IGVuZF9wZm4gLSBzdGFydF9wZm47XG4gXG4gXHRcdHRvdGFscGFnZXMgJiM0Mzs9IHBhZ2VzO1xuLVx0XHRpZiAocGFnZXMpXG4tXHRcdFx0bm9kZV9zZXRfc3RhdGUobmlkLCBOX01FTU9SWSk7XG4mIzQzO1x0XHRub2RlX3NldF9zdGF0ZShuaWQsIE5fTUVNT1JZKTtcbiBcdH1cbiBcdHJldHVybiB0b3RhbHBhZ2VzO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMzoxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGVhcmx5IGJvb3QgaW5pdGlhbGl6YXRpb24gY29kZSAoZnVuY3Rpb25zIG1hcmtlZCB3aXRoIF9faW5pdCwgc3VjaCBhcyBrYXNhbl9pbml0LCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzLCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgZXhhY3RseSBvbmNlIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciByZWFjaGVkIHZpYSB1c2VyLXNwYWNlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNGU4N2NmY2ZmZDM2NWJiODZiYmZjNTJiZGQ2NzNkOWI5YjM0NzFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMjM6MTI6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmMKaW5kZXggYzY2MjVlODA4YmY4NWUuLjFmN2M3NGM1ZGY5ZTk4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jCkBAIC0yNjIsMTIgJiM0MzsyNjIsNiBAQCB2b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpCiAJCQkJJmFtcDtwYV9zdGFydCwgJmFtcDtwYV9lbmQsICZhbXA7YXJtX2xvd21lbV9saW1pdCk7CiAJCQllbmQgPSBfX3ZhKGFybV9sb3dtZW1fbGltaXQpOwogCQl9Ci0JCWlmIChzdGFydCAmZ3Q7PSBlbmQpIHsKLQkJCXByX2luZm8oJiMzNDtTa2lwcGluZyBpbnZhbGlkIG1lbW9yeSBibG9jayAlcGEtJXBhICh2aXJ0dWFsICVwLSVwKVxuJiMzNDssCi0JCQkJJmFtcDtwYV9zdGFydCwgJmFtcDtwYV9lbmQsIHN0YXJ0LCBlbmQpOwotCQkJY29udGludWU7Ci0JCX0KLQogCQljcmVhdGVfbWFwcGluZyhzdGFydCwgZW5kKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmMKaW5kZXggM2ZjYWQ5NTZmZGY3Y2IuLjQ1ZmJkY2U2ODRjODljIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYwpAQCAtMzUzLDkgJiM0MzszNTMsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQga2FzYW5faW5pdF9zaGFkb3codm9pZCkKIAkJdm9pZCAqc3RhcnQgPSAodm9pZCAqKV9fcGh5c190b192aXJ0KHBhX3N0YXJ0KTsKIAkJdm9pZCAqZW5kID0gKHZvaWQgKilfX3BoeXNfdG9fdmlydChwYV9lbmQpOwogCi0JCWlmIChzdGFydCAmZ3Q7PSBlbmQpCi0JCQlicmVhazsKLQogCQlrYXNhbl9tYXBfcG9wdWxhdGUoKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksCiAJCQkJICAgKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLAogCQkJCSAgIGVhcmx5X3Bmbl90b19uaWQodmlydF90b19wZm4oc3RhcnQpKSk7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmMKaW5kZXggMGZjMDJjYTA2NDU3MzguLjkyY2EwYmE4NjQwNjFlIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbW0va2FzYW5faW5pdC5jCkBAIC0zMDUsOSAmIzQzOzMwNSw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZCkKIAkJdm9pZCAqc3RhcnQgPSAodm9pZCAqKXBoeXNfdG9fdmlydChwYV9zdGFydCk7CiAJCXZvaWQgKmVuZCAgID0gKHZvaWQgKilwaHlzX3RvX3ZpcnQocGFfZW5kKTsKIAotCQlpZiAoc3RhcnQgJmd0Oz0gZW5kKQotCQkJYnJlYWs7Ci0KIAkJa2FzYW5fbWFwX3BvcHVsYXRlKCh1bnNpZ25lZCBsb25nKW1lbV90b19zaGFkb3coc3RhcnQpLAogCQkJKHVuc2lnbmVkIGxvbmcpbWVtX3RvX3NoYWRvdyhlbmQpLCBOVU1BX05PX05PREUpOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jIGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmMKaW5kZXggMGQzYTczZDZkNGIwYmIuLjBlZDM3MmZiOGIwOTZlIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYwpAQCAtNjgsOSAmIzQzOzY4LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfcGh5c19yZWdpb24odm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkKIAl1bnNpZ25lZCBsb25nIGtfc3RhcnQsIGtfZW5kLCBrX2N1cjsKIAl2b2lkICp2YTsKIAotCWlmIChzdGFydCAmZ3Q7PSBlbmQpCi0JCXJldHVybjsKLQogCWtfc3RhcnQgPSBBTElHTl9ET1dOKCh1bnNpZ25lZCBsb25nKWthc2FuX21lbV90b19zaGFkb3coc3RhcnQpLCBQQUdFX1NJWkUpOwogCWtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpOwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jCmluZGV4IGRjYWZhNjQxODA0YzBhLi5jY2ZiZmI4OTQ2Mzc2NiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMKQEAgLTI0LDkgJiM0MzsyNCw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpCiAJdW5zaWduZWQgbG9uZyBrX3N0YXJ0LCBrX2VuZCwga19jdXI7CiAJdm9pZCAqdmE7CiAKLQlpZiAoc3RhcnQgJmd0Oz0gZW5kKQotCQlyZXR1cm47Ci0KIAlrX3N0YXJ0ID0gQUxJR05fRE9XTigodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KHN0YXJ0KSwgUEFHRV9TSVpFKTsKIAlrX2VuZCA9IEFMSUdOKCh1bnNpZ25lZCBsb25nKWthc2FuX21lbV90b19zaGFkb3coZW5kKSwgUEFHRV9TSVpFKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuYwppbmRleCA1YjFiM2M4OGI0ZDEzMC4uZWI5M2MyYWMwNWE2ODIgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jCkBAIC0xMjI5LDggJiM0MzsxMjI5LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGNyZWF0ZV9saW5lYXJfbWFwcGluZ19wYWdlX3RhYmxlKHZvaWQpCiAKIAkvKiBNYXAgYWxsIG1lbW9yeSBiYW5rcyBpbiB0aGUgbGluZWFyIG1hcHBpbmcgKi8KIAlmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgJmFtcDtzdGFydCwgJmFtcDtlbmQpIHsKLQkJaWYgKHN0YXJ0ICZndDs9IGVuZCkKLQkJCWJyZWFrOwogCQlpZiAoc3RhcnQgJmx0Oz0gX19wYShQQUdFX09GRlNFVCkgJmFtcDsmYW1wOwogCQkgICAgX19wYShQQUdFX09GRlNFVCkgJmx0OyBlbmQpCiAJCQlzdGFydCA9IF9fcGEoUEFHRV9PRkZTRVQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuYwppbmRleCBjNGEyYTllNTU4NmU3NS4uMWYzYWE5NjExMTg3ZjYgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jCkBAIC01MTIsOSAmIzQzOzUxMiw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZCkKIAkJdm9pZCAqc3RhcnQgPSAodm9pZCAqKV9fdmEocF9zdGFydCk7CiAJCXZvaWQgKmVuZCA9ICh2b2lkICopX192YShwX2VuZCk7CiAKLQkJaWYgKHN0YXJ0ICZndDs9IGVuZCkKLQkJCWJyZWFrOwotCiAJCWthc2FuX3BvcHVsYXRlKGthc2FuX21lbV90b19zaGFkb3coc3RhcnQpLCBrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCkpOwogCX0KIApkaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jCmluZGV4IDU3MTIxMmI4MDgzNWVjLi40ZjcwMjA5NjI0ODZkOSAxMDA2NDQKLS0tIGEvbW0vaHVnZXRsYi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2V0bGIuYwpAQCAtNDQ0NCwxNSAmIzQzOzQ0NDQsMTIgQEAgaHVnZXRsYl9lYXJseV9wYXJhbSgmIzM0O2RlZmF1bHRfaHVnZXBhZ2VzeiYjMzQ7LCBkZWZhdWx0X2h1Z2VwYWdlc3pfc2V0dXApOwogdm9pZCBfX2luaXQgaHVnZXRsYl9ib290bWVtX3NldF9ub2Rlcyh2b2lkKQogewogCWludCBpLCBuaWQ7Ci0JdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVuZF9wZm47CiAKIAlpZiAoIW5vZGVzX2VtcHR5KGh1Z2V0bGJfYm9vdG1lbV9ub2RlcykpCiAJCXJldHVybjsKIAotCWZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCAmYW1wO3N0YXJ0X3BmbiwgJmFtcDtlbmRfcGZuLCAmYW1wO25pZCkgewotCQlpZiAoZW5kX3BmbiAmZ3Q7IHN0YXJ0X3BmbikKLQkJCW5vZGVfc2V0KG5pZCwgaHVnZXRsYl9ib290bWVtX25vZGVzKTsKLQl9CiYjNDM7CWZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCBOVUxMLCBOVUxMLCAmYW1wO25pZCkKJiM0MzsJCW5vZGVfc2V0KG5pZCwgaHVnZXRsYl9ib290bWVtX25vZGVzKTsKIH0KIAogdm9pZCBfX2luaXQgaHVnZXRsYl9ib290bWVtX2FsbG9jKHZvaWQpCmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmMKaW5kZXggMGY2NDkwOWU4ZDIwZTIuLjE3NDk4YTEzZWI5OTI0IDEwMDY0NAotLS0gYS9tbS9tbV9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW1faW5pdC5jCkBAIC0zMzIsOCAmIzQzOzMzMiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcyh2b2lkKQogCQl1bnNpZ25lZCBsb25nIHBhZ2VzID0gZW5kX3BmbiAtIHN0YXJ0X3BmbjsKIAogCQl0b3RhbHBhZ2VzICYjNDM7PSBwYWdlczsKLQkJaWYgKHBhZ2VzKQotCQkJbm9kZV9zZXRfc3RhdGUobmlkLCBOX01FTU9SWSk7CiYjNDM7CQlub2RlX3NldF9zdGF0ZShuaWQsIE5fTUVNT1JZKTsKIAl9CiAJcmV0dXJuIHRvdGFscGFnZXM7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEFuYWx5c2lzOiBSZWR1bmRhbnQgQ2hlY2tzIGluIEVhcmx5IEJvb3QgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHJlbW92ZXMgYGlmIChzdGFydCAmZ3Q7PSBlbmQpYCBvciBgaWYgKGVuZF9wZm4gJmd0OyBzdGFydF9wZm4pYCBjaGVja3MgaW4gdmFyaW91cyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWVtb3J5IGluaXRpYWxpemF0aW9uIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gS0FTQU4gaW5pdGlhbGl6YXRpb24gYWNyb3NzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgKEFSTSwgQVJNNjQsIExvb25nQXJjaCwgUG93ZXJQQywgUklTQy1WKSwgYW5kIGFsc28gaW4gYG1tL2h1Z2V0bGIuY2AgYW5kIGBtbS9tbV9pbml0LmNgLiBUaGUgcGF0Y2ggb3JpZ2luYXRlZCBmcm9tIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCwgYnV0IGl0JiMzOTtzIGFscmVhZHkgYmVlbiBhcHBsaWVkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIG5lZWRzIGFueSBmdXp6aW5nIGF0dGVudGlvbi4gVGhlIGNoYW5nZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZDogcmVkdW5kYW50IGNoZWNrcyBhcmUgYmVpbmcgcmVtb3ZlZC4gSSBzZWUgdGhlc2UgY2hlY2tzIGFyZSB3aXRoaW4gYF9faW5pdGAgZnVuY3Rpb25zLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIHRoZSB2ZXJ5IGVhcmx5IGJvb3QgcHJvY2Vzcy4gU3l6a2FsbGVyLCBpbiBpdHMgY3VycmVudCBzZXR1cCwgcHJpbWFyaWx5IGZvY3VzZXMgb24gc3lzY2FsbHMgYW5kIGludGVyYWN0aW9ucyB0aGF0IG9jY3VyIGFmdGVyIHRoZSBzeXN0ZW0gaGFzIGluaXRpYWxpemVkIGFuZCBpcyBydW5uaW5nLiBJdCYjMzk7cyBoaWdobHkgdW5saWtlbHkgdGhhdCB0aGlzIHdvdWxkIGJlIHJlYWNoYWJsZSBvciBleHBsb2l0YWJsZSB2aWEgdGhlIHVzdWFsIGZ1enppbmcgbWV0aG9kcy4KCkxvb2tpbmcgY2xvc2VyLCB0aGUgcGF0Y2ggaXMganVzdCByZW1vdmluZyBjaGVja3MgdGhhdCBhcmUgYWx3YXlzIGZhbHNlIG9yIHRoYXQgd291bGQgb25seSB0cmlnZ2VyIGlmIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHdlcmUgd3JvbmcsIGJ1dCBzaW5jZSB0aGUgc3Vycm91bmRpbmcgY29kZSBndWFyYW50ZWVzIHRoYXQgYHN0YXJ0ICZsdDsgZW5kYCBvciBgc3RhcnRfcGZuICZsdDsgZW5kX3BmbmAsIGl0IGFwcGVhcnMgdGhlc2UgY2hlY2tzIHdlcmUgaW5kZWVkIHJlZHVuZGFudC4KCkkgbmVlZCB0byBjb25maXJtIHRoZXNlIGZ1bmN0aW9ucyBjYW4gKm9ubHkqIGJlIGNhbGxlZCBkdXJpbmcgZWFybHkgYm9vdC4gSSYjMzk7bSBzZWVpbmcgYGthc2FuX2luaXRgLCBgY3JlYXRlX2xpbmVhcl9tYXBwaW5nX3BhZ2VfdGFibGVgLCBgaHVnZXRsYl9ib290bWVtX3NldF9ub2Rlc2AsIGFuZCBgZWFybHlfY2FsY3VsYXRlX3RvdGFscGFnZXNgIGFyZSBhbGwgYF9faW5pdGAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBLQVNBTiBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBhcmUgYWxsIG1hcmtlZCBhcyBzdWNoLiBUaGUgc3BlY2lmaWMgYGthc2FuX2luaXRfcGh5c19yZWdpb25gIGluIHBvd2VycGMgaXMgYWxzbyBgX19pbml0YC4KCkkmIzM5O20gY29uZmlkZW50IHRoZXNlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHRoZSBlYXJseSBib290IHN0YWdlLiBTaW5jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgdGhyb3VnaCBzeXNjYWxscyBvciB1c2VyLXNwYWNlIGludGVyYWN0aW9ucywgZnV6emluZyBpc24mIzM5O3QgYSBjb25zaWRlcmF0aW9uIGhlcmUuCgpJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgd2l0aCBncmVwcGVyLCBqdXN0IHRvIGJlIHN1cmUsIGFuZCBJIHdpbGwgYmUgY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2FzYW5faW5pdF9waHlzX3JlZ2lvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYz0zMj1zdGF0aWMgaW50IF9faW5pdCBrYXNhbl9tYXBfa2VybmVsX3BhZ2UodW5zaWduZWQgbG9uZyBlYSwgdW5zaWduZWQgbG9uZyBwYSwgcGdwcm90X3QgcHJvdClcbi0tXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy02NS1cbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jOjY2OnN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy02Ny17XG4tLVxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmM9MTA1PXZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy0xMTEtXHRmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgXHUwMDI2c3RhcnQsIFx1MDAyNmVuZClcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jOjExMjpcdFx0a2FzYW5faW5pdF9waHlzX3JlZ2lvbihwaHlzX3RvX3ZpcnQoc3RhcnQpLCBwaHlzX3RvX3ZpcnQoZW5kKSk7XG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy0xMTMtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMtMjEtXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYzoyMjpzdGF0aWMgdm9pZCBfX2luaXQga2FzYW5faW5pdF9waHlzX3JlZ2lvbih2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMtMjMte1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jPTM1PXZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYy01OS1cdGZvcl9lYWNoX21lbV9yYW5nZShpLCBcdTAwMjZzdGFydCwgXHUwMDI2ZW5kKVxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmM6NjA6XHRcdGthc2FuX2luaXRfcGh5c19yZWdpb24ocGh5c190b192aXJ0KHN0YXJ0KSwgcGh5c190b192aXJ0KGVuZCkpO1xuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMtNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0NAoJCQkJCQkJb3V0cHV0OiA5MwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgQXBwbGljYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBleGFtaW5lZCB0aGUgY29kZSBjaGFuZ2UsIGFuZCBteSBpbW1lZGlhdGUgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgc2VjdGlvbiByZWFsbHkgYm9pbHMgZG93biB0byBgX19pbml0YCBmdW5jdGlvbnMuIFRoYXQmIzM5O3MgdGhlIGtleSBoZXJlLiBHaXZlbiB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGluaXRpYWwgYm9vdCBjb2RlLCBpdCBiZWNvbWVzIGNsZWFyIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaGFwcGVuaW5nIHZlcnkgZWFybHkgaW4gdGhlIHN5c3RlbSBzdGFydHVwLgoKVGhlcmVmb3JlLCBkZXNwaXRlIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgbWFkZSB0byBpbml0IGZ1bmN0aW9ucywgSSB3aWxsIGJlIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlIHByaW1hcnkgcmVhc29uIGlzIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGJvb3QgcHJvY2VzcyBpcyBzaW1wbHkgbm90IGFjY2Vzc2libGUgb3IgcmVhY2hhYmxlIHRocm91Z2ggYW55IHN0YW5kYXJkIHVzZXItc3BhY2UgZnV6emluZyB0ZWNobmlxdWVzLiBUcnlpbmcgdG8gdGFyZ2V0IHRoaXMgcGFydCB3aXRoIHRob3NlIHRvb2xzIHdvdWxkIGJlIGEgZnV0aWxlIGVmZm9ydCwgZ2l2ZW4gdGhlIGNvbnN0cmFpbnRzIG9mIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgYXQgdGhhdCBzdGFnZS4gV2Ugc2hvdWxkIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gY29kZSBtb3JlIGFtZW5hYmxlIHRvIHRoaXMgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGVhcmx5IGJvb3QgaW5pdGlhbGl6YXRpb24gY29kZSAoZnVuY3Rpb25zIG1hcmtlZCB3aXRoIF9faW5pdCwgc3VjaCBhcyBrYXNhbl9pbml0LCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzLCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgZXhhY3RseSBvbmNlIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciByZWFjaGVkIHZpYSB1c2VyLXNwYWNlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGVhcmx5IGJvb3QgaW5pdGlhbGl6YXRpb24gY29kZSAoZnVuY3Rpb25zIG1hcmtlZCB3aXRoIF9faW5pdCwgc3VjaCBhcyBrYXNhbl9pbml0LCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzLCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgZXhhY3RseSBvbmNlIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciByZWFjaGVkIHZpYSB1c2VyLXNwYWNlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjM6MTI6MzkuMDE5MDE0MjUzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyOTEzNDY1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZWFybHkgYm9vdCBpbml0aWFsaXphdGlvbiBjb2RlIChmdW5jdGlvbnMgbWFya2VkIHdpdGggX19pbml0LCBzdWNoIGFzIGthc2FuX2luaXQsIGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXMsIGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIHN5c3RlbSBzdGFydHVwIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIHJlYWNoZWQgdmlhIHVzZXItc3BhY2UgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIzOjEyOjM5LjAxOTAyNzQwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUwNjcwNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzRlODdjZmNmZmQzNjViYjg2YmJmYzUyYmRkNjczZDliOWIzNDcxYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAyMzoxMjozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmNcXG5pbmRleCBjNjYyNWU4MDhiZjg1ZS4uMWY3Yzc0YzVkZjllOTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jXFxuKysrIGIvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jXFxuQEAgLTI2MiwxMiArMjYyLDYgQEAgdm9pZCBfX2luaXQga2FzYW5faW5pdCh2b2lkKVxcbiBcXHRcXHRcXHRcXHRcXHUwMDI2cGFfc3RhcnQsIFxcdTAwMjZwYV9lbmQsIFxcdTAwMjZhcm1fbG93bWVtX2xpbWl0KTtcXG4gXFx0XFx0XFx0ZW5kID0gX192YShhcm1fbG93bWVtX2xpbWl0KTtcXG4gXFx0XFx0fVxcbi1cXHRcXHRpZiAoc3RhcnQgXFx1MDAzZT0gZW5kKSB7XFxuLVxcdFxcdFxcdHByX2luZm8oXFxcIlNraXBwaW5nIGludmFsaWQgbWVtb3J5IGJsb2NrICVwYS0lcGEgKHZpcnR1YWwgJXAtJXApXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHUwMDI2cGFfc3RhcnQsIFxcdTAwMjZwYV9lbmQsIHN0YXJ0LCBlbmQpO1xcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0fVxcbi1cXG4gXFx0XFx0Y3JlYXRlX21hcHBpbmcoc3RhcnQsIGVuZCk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmNcXG5pbmRleCAzZmNhZDk1NmZkZjdjYi4uNDVmYmRjZTY4NGM4OWMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmNcXG4rKysgYi9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuY1xcbkBAIC0zNTMsOSArMzUzLDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfc2hhZG93KHZvaWQpXFxuIFxcdFxcdHZvaWQgKnN0YXJ0ID0gKHZvaWQgKilfX3BoeXNfdG9fdmlydChwYV9zdGFydCk7XFxuIFxcdFxcdHZvaWQgKmVuZCA9ICh2b2lkICopX19waHlzX3RvX3ZpcnQocGFfZW5kKTtcXG4gXFxuLVxcdFxcdGlmIChzdGFydCBcXHUwMDNlPSBlbmQpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4gXFx0XFx0a2FzYW5fbWFwX3BvcHVsYXRlKCh1bnNpZ25lZCBsb25nKWthc2FuX21lbV90b19zaGFkb3coc3RhcnQpLFxcbiBcXHRcXHRcXHRcXHQgICAodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCksXFxuIFxcdFxcdFxcdFxcdCAgIGVhcmx5X3Bmbl90b19uaWQodmlydF90b19wZm4oc3RhcnQpKSk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuYyBiL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuY1xcbmluZGV4IDBmYzAyY2EwNjQ1NzM4Li45MmNhMGJhODY0MDYxZSAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmNcXG5AQCAtMzA1LDkgKzMwNSw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcXG4gXFx0XFx0dm9pZCAqc3RhcnQgPSAodm9pZCAqKXBoeXNfdG9fdmlydChwYV9zdGFydCk7XFxuIFxcdFxcdHZvaWQgKmVuZCAgID0gKHZvaWQgKilwaHlzX3RvX3ZpcnQocGFfZW5kKTtcXG4gXFxuLVxcdFxcdGlmIChzdGFydCBcXHUwMDNlPSBlbmQpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4gXFx0XFx0a2FzYW5fbWFwX3BvcHVsYXRlKCh1bnNpZ25lZCBsb25nKW1lbV90b19zaGFkb3coc3RhcnQpLFxcbiBcXHRcXHRcXHQodW5zaWduZWQgbG9uZyltZW1fdG9fc2hhZG93KGVuZCksIE5VTUFfTk9fTk9ERSk7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmMgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuY1xcbmluZGV4IDBkM2E3M2Q2ZDRiMGJiLi4wZWQzNzJmYjhiMDk2ZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuY1xcbisrKyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jXFxuQEAgLTY4LDkgKzY4LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfcGh5c19yZWdpb24odm9pZCAqc3RhcnQsIHZvaWQgKmVuZClcXG4gXFx0dW5zaWduZWQgbG9uZyBrX3N0YXJ0LCBrX2VuZCwga19jdXI7XFxuIFxcdHZvaWQgKnZhO1xcbiBcXG4tXFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXG4gXFx0a19zdGFydCA9IEFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIFBBR0VfU0laRSk7XFxuIFxcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuY1xcbmluZGV4IGRjYWZhNjQxODA0YzBhLi5jY2ZiZmI4OTQ2Mzc2NiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuY1xcbisrKyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jXFxuQEAgLTI0LDkgKzI0LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfcGh5c19yZWdpb24odm9pZCAqc3RhcnQsIHZvaWQgKmVuZClcXG4gXFx0dW5zaWduZWQgbG9uZyBrX3N0YXJ0LCBrX2VuZCwga19jdXI7XFxuIFxcdHZvaWQgKnZhO1xcbiBcXG4tXFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXG4gXFx0a19zdGFydCA9IEFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIFBBR0VfU0laRSk7XFxuIFxcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xcbmluZGV4IDViMWIzYzg4YjRkMTMwLi5lYjkzYzJhYzA1YTY4MiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L21tL2luaXQuY1xcbisrKyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jXFxuQEAgLTEyMjksOCArMTIyOSw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjcmVhdGVfbGluZWFyX21hcHBpbmdfcGFnZV90YWJsZSh2b2lkKVxcbiBcXG4gXFx0LyogTWFwIGFsbCBtZW1vcnkgYmFua3MgaW4gdGhlIGxpbmVhciBtYXBwaW5nICovXFxuIFxcdGZvcl9lYWNoX21lbV9yYW5nZShpLCBcXHUwMDI2c3RhcnQsIFxcdTAwMjZlbmQpIHtcXG4tXFx0XFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZClcXG4tXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGlmIChzdGFydCBcXHUwMDNjPSBfX3BhKFBBR0VfT0ZGU0VUKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgX19wYShQQUdFX09GRlNFVCkgXFx1MDAzYyBlbmQpXFxuIFxcdFxcdFxcdHN0YXJ0ID0gX19wYShQQUdFX09GRlNFVCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmNcXG5pbmRleCBjNGEyYTllNTU4NmU3NS4uMWYzYWE5NjExMTg3ZjYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmNcXG4rKysgYi9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuY1xcbkBAIC01MTIsOSArNTEyLDYgQEAgdm9pZCBfX2luaXQga2FzYW5faW5pdCh2b2lkKVxcbiBcXHRcXHR2b2lkICpzdGFydCA9ICh2b2lkICopX192YShwX3N0YXJ0KTtcXG4gXFx0XFx0dm9pZCAqZW5kID0gKHZvaWQgKilfX3ZhKHBfZW5kKTtcXG4gXFxuLVxcdFxcdGlmIChzdGFydCBcXHUwMDNlPSBlbmQpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4gXFx0XFx0a2FzYW5fcG9wdWxhdGUoa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIGthc2FuX21lbV90b19zaGFkb3coZW5kKSk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuY1xcbmluZGV4IDU3MTIxMmI4MDgzNWVjLi40ZjcwMjA5NjI0ODZkOSAxMDA2NDRcXG4tLS0gYS9tbS9odWdldGxiLmNcXG4rKysgYi9tbS9odWdldGxiLmNcXG5AQCAtNDQ0NCwxNSArNDQ0NCwxMiBAQCBodWdldGxiX2Vhcmx5X3BhcmFtKFxcXCJkZWZhdWx0X2h1Z2VwYWdlc3pcXFwiLCBkZWZhdWx0X2h1Z2VwYWdlc3pfc2V0dXApO1xcbiB2b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzKHZvaWQpXFxuIHtcXG4gXFx0aW50IGksIG5pZDtcXG4tXFx0dW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVuZF9wZm47XFxuIFxcbiBcXHRpZiAoIW5vZGVzX2VtcHR5KGh1Z2V0bGJfYm9vdG1lbV9ub2RlcykpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdGZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCBcXHUwMDI2c3RhcnRfcGZuLCBcXHUwMDI2ZW5kX3BmbiwgXFx1MDAyNm5pZCkge1xcbi1cXHRcXHRpZiAoZW5kX3BmbiBcXHUwMDNlIHN0YXJ0X3BmbilcXG4tXFx0XFx0XFx0bm9kZV9zZXQobmlkLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpO1xcbi1cXHR9XFxuK1xcdGZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCBOVUxMLCBOVUxMLCBcXHUwMDI2bmlkKVxcbitcXHRcXHRub2RlX3NldChuaWQsIGh1Z2V0bGJfYm9vdG1lbV9ub2Rlcyk7XFxuIH1cXG4gXFxuIHZvaWQgX19pbml0IGh1Z2V0bGJfYm9vdG1lbV9hbGxvYyh2b2lkKVxcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcXG5pbmRleCAwZjY0OTA5ZThkMjBlMi4uMTc0OThhMTNlYjk5MjQgMTAwNjQ0XFxuLS0tIGEvbW0vbW1faW5pdC5jXFxuKysrIGIvbW0vbW1faW5pdC5jXFxuQEAgLTMzMiw4ICszMzIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgZWFybHlfY2FsY3VsYXRlX3RvdGFscGFnZXModm9pZClcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyBwYWdlcyA9IGVuZF9wZm4gLSBzdGFydF9wZm47XFxuIFxcbiBcXHRcXHR0b3RhbHBhZ2VzICs9IHBhZ2VzO1xcbi1cXHRcXHRpZiAocGFnZXMpXFxuLVxcdFxcdFxcdG5vZGVfc2V0X3N0YXRlKG5pZCwgTl9NRU1PUlkpO1xcbitcXHRcXHRub2RlX3NldF9zdGF0ZShuaWQsIE5fTUVNT1JZKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gdG90YWxwYWdlcztcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMzoxMjozOS43NzA0OTkzMTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NTM5ODUzMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGVhcmx5IGJvb3QgaW5pdGlhbGl6YXRpb24gY29kZSAoZnVuY3Rpb25zIG1hcmtlZCB3aXRoIF9faW5pdCwgc3VjaCBhcyBrYXNhbl9pbml0LCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzLCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgZXhhY3RseSBvbmNlIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciByZWFjaGVkIHZpYSB1c2VyLXNwYWNlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM0ZTg3Y2ZjZmZkMzY1YmI4NmJiZmM1MmJkZDY3M2Q5YjliMzQ3MWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAyMzoxMjozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL2thc2FuX2luaXQuYyBiL2FyY2gvYXJtL21tL2thc2FuX2luaXQuY1xuaW5kZXggYzY2MjVlODA4YmY4NWUuLjFmN2M3NGM1ZGY5ZTk4IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jXG4rKysgYi9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmNcbkBAIC0yNjIsMTIgKzI2Miw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbiBcdFx0XHRcdFx1MDAyNnBhX3N0YXJ0LCBcdTAwMjZwYV9lbmQsIFx1MDAyNmFybV9sb3dtZW1fbGltaXQpO1xuIFx0XHRcdGVuZCA9IF9fdmEoYXJtX2xvd21lbV9saW1pdCk7XG4gXHRcdH1cbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKSB7XG4tXHRcdFx0cHJfaW5mbyhcIlNraXBwaW5nIGludmFsaWQgbWVtb3J5IGJsb2NrICVwYS0lcGEgKHZpcnR1YWwgJXAtJXApXFxuXCIsXG4tXHRcdFx0XHRcdTAwMjZwYV9zdGFydCwgXHUwMDI2cGFfZW5kLCBzdGFydCwgZW5kKTtcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHRjcmVhdGVfbWFwcGluZyhzdGFydCwgZW5kKTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYyBiL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jXG5pbmRleCAzZmNhZDk1NmZkZjdjYi4uNDVmYmRjZTY4NGM4OWMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuY1xuKysrIGIvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmNcbkBAIC0zNTMsOSArMzUzLDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfc2hhZG93KHZvaWQpXG4gXHRcdHZvaWQgKnN0YXJ0ID0gKHZvaWQgKilfX3BoeXNfdG9fdmlydChwYV9zdGFydCk7XG4gXHRcdHZvaWQgKmVuZCA9ICh2b2lkICopX19waHlzX3RvX3ZpcnQocGFfZW5kKTtcbiBcbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRcdGJyZWFrO1xuLVxuIFx0XHRrYXNhbl9tYXBfcG9wdWxhdGUoKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksXG4gXHRcdFx0XHQgICAodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCksXG4gXHRcdFx0XHQgICBlYXJseV9wZm5fdG9fbmlkKHZpcnRfdG9fcGZuKHN0YXJ0KSkpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuYyBiL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuY1xuaW5kZXggMGZjMDJjYTA2NDU3MzguLjkyY2EwYmE4NjQwNjFlIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbW0va2FzYW5faW5pdC5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmNcbkBAIC0zMDUsOSArMzA1LDYgQEAgdm9pZCBfX2luaXQga2FzYW5faW5pdCh2b2lkKVxuIFx0XHR2b2lkICpzdGFydCA9ICh2b2lkICopcGh5c190b192aXJ0KHBhX3N0YXJ0KTtcbiBcdFx0dm9pZCAqZW5kICAgPSAodm9pZCAqKXBoeXNfdG9fdmlydChwYV9lbmQpO1xuIFxuLVx0XHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4tXHRcdFx0YnJlYWs7XG4tXG4gXHRcdGthc2FuX21hcF9wb3B1bGF0ZSgodW5zaWduZWQgbG9uZyltZW1fdG9fc2hhZG93KHN0YXJ0KSxcbiBcdFx0XHQodW5zaWduZWQgbG9uZyltZW1fdG9fc2hhZG93KGVuZCksIE5VTUFfTk9fTk9ERSk7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmMgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuY1xuaW5kZXggMGQzYTczZDZkNGIwYmIuLjBlZDM3MmZiOGIwOTZlIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmNcbisrKyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jXG5AQCAtNjgsOSArNjgsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQga2FzYW5faW5pdF9waHlzX3JlZ2lvbih2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxuIFx0dW5zaWduZWQgbG9uZyBrX3N0YXJ0LCBrX2VuZCwga19jdXI7XG4gXHR2b2lkICp2YTtcbiBcbi1cdGlmIChzdGFydCBcdTAwM2U9IGVuZClcbi1cdFx0cmV0dXJuO1xuLVxuIFx0a19zdGFydCA9IEFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIFBBR0VfU0laRSk7XG4gXHRrX2VuZCA9IEFMSUdOKCh1bnNpZ25lZCBsb25nKWthc2FuX21lbV90b19zaGFkb3coZW5kKSwgUEFHRV9TSVpFKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jXG5pbmRleCBkY2FmYTY0MTgwNGMwYS4uY2NmYmZiODk0NjM3NjYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuY1xuKysrIGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmNcbkBAIC0yNCw5ICsyNCw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG4gXHR1bnNpZ25lZCBsb25nIGtfc3RhcnQsIGtfZW5kLCBrX2N1cjtcbiBcdHZvaWQgKnZhO1xuIFxuLVx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRrX3N0YXJ0ID0gQUxJR05fRE9XTigodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KHN0YXJ0KSwgUEFHRV9TSVpFKTtcbiBcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9pbml0LmNcbmluZGV4IDViMWIzYzg4YjRkMTMwLi5lYjkzYzJhYzA1YTY4MiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jXG4rKysgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xuQEAgLTEyMjksOCArMTIyOSw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjcmVhdGVfbGluZWFyX21hcHBpbmdfcGFnZV90YWJsZSh2b2lkKVxuIFxuIFx0LyogTWFwIGFsbCBtZW1vcnkgYmFua3MgaW4gdGhlIGxpbmVhciBtYXBwaW5nICovXG4gXHRmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgXHUwMDI2c3RhcnQsIFx1MDAyNmVuZCkge1xuLVx0XHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4tXHRcdFx0YnJlYWs7XG4gXHRcdGlmIChzdGFydCBcdTAwM2M9IF9fcGEoUEFHRV9PRkZTRVQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgX19wYShQQUdFX09GRlNFVCkgXHUwMDNjIGVuZClcbiBcdFx0XHRzdGFydCA9IF9fcGEoUEFHRV9PRkZTRVQpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmNcbmluZGV4IGM0YTJhOWU1NTg2ZTc1Li4xZjNhYTk2MTExODdmNiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jXG4rKysgYi9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuY1xuQEAgLTUxMiw5ICs1MTIsNiBAQCB2b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpXG4gXHRcdHZvaWQgKnN0YXJ0ID0gKHZvaWQgKilfX3ZhKHBfc3RhcnQpO1xuIFx0XHR2b2lkICplbmQgPSAodm9pZCAqKV9fdmEocF9lbmQpO1xuIFxuLVx0XHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4tXHRcdFx0YnJlYWs7XG4tXG4gXHRcdGthc2FuX3BvcHVsYXRlKGthc2FuX21lbV90b19zaGFkb3coc3RhcnQpLCBrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCkpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuY1xuaW5kZXggNTcxMjEyYjgwODM1ZWMuLjRmNzAyMDk2MjQ4NmQ5IDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYi5jXG4rKysgYi9tbS9odWdldGxiLmNcbkBAIC00NDQ0LDE1ICs0NDQ0LDEyIEBAIGh1Z2V0bGJfZWFybHlfcGFyYW0oXCJkZWZhdWx0X2h1Z2VwYWdlc3pcIiwgZGVmYXVsdF9odWdlcGFnZXN6X3NldHVwKTtcbiB2b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzKHZvaWQpXG4ge1xuIFx0aW50IGksIG5pZDtcbi1cdHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCBlbmRfcGZuO1xuIFxuIFx0aWYgKCFub2Rlc19lbXB0eShodWdldGxiX2Jvb3RtZW1fbm9kZXMpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRmb3JfZWFjaF9tZW1fcGZuX3JhbmdlKGksIE1BWF9OVU1OT0RFUywgXHUwMDI2c3RhcnRfcGZuLCBcdTAwMjZlbmRfcGZuLCBcdTAwMjZuaWQpIHtcbi1cdFx0aWYgKGVuZF9wZm4gXHUwMDNlIHN0YXJ0X3Bmbilcbi1cdFx0XHRub2RlX3NldChuaWQsIGh1Z2V0bGJfYm9vdG1lbV9ub2Rlcyk7XG4tXHR9XG4rXHRmb3JfZWFjaF9tZW1fcGZuX3JhbmdlKGksIE1BWF9OVU1OT0RFUywgTlVMTCwgTlVMTCwgXHUwMDI2bmlkKVxuK1x0XHRub2RlX3NldChuaWQsIGh1Z2V0bGJfYm9vdG1lbV9ub2Rlcyk7XG4gfVxuIFxuIHZvaWQgX19pbml0IGh1Z2V0bGJfYm9vdG1lbV9hbGxvYyh2b2lkKVxuZGlmZiAtLWdpdCBhL21tL21tX2luaXQuYyBiL21tL21tX2luaXQuY1xuaW5kZXggMGY2NDkwOWU4ZDIwZTIuLjE3NDk4YTEzZWI5OTI0IDEwMDY0NFxuLS0tIGEvbW0vbW1faW5pdC5jXG4rKysgYi9tbS9tbV9pbml0LmNcbkBAIC0zMzIsOCArMzMyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKHZvaWQpXG4gXHRcdHVuc2lnbmVkIGxvbmcgcGFnZXMgPSBlbmRfcGZuIC0gc3RhcnRfcGZuO1xuIFxuIFx0XHR0b3RhbHBhZ2VzICs9IHBhZ2VzO1xuLVx0XHRpZiAocGFnZXMpXG4tXHRcdFx0bm9kZV9zZXRfc3RhdGUobmlkLCBOX01FTU9SWSk7XG4rXHRcdG5vZGVfc2V0X3N0YXRlKG5pZCwgTl9NRU1PUlkpO1xuIFx0fVxuIFx0cmV0dXJuIHRvdGFscGFnZXM7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjM6MTI6MzkuNzcwNTAyODYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxMDc2NTk4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IFJlZHVuZGFudCBDaGVja3MgaW4gRWFybHkgQm9vdCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHJlbW92ZXMgYGlmIChzdGFydCBcdTAwM2U9IGVuZClgIG9yIGBpZiAoZW5kX3BmbiBcdTAwM2Ugc3RhcnRfcGZuKWAgY2hlY2tzIGluIHZhcmlvdXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1lbW9yeSBpbml0aWFsaXphdGlvbiBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIEtBU0FOIGluaXRpYWxpemF0aW9uIGFjcm9zcyBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzIChBUk0sIEFSTTY0LCBMb29uZ0FyY2gsIFBvd2VyUEMsIFJJU0MtViksIGFuZCBhbHNvIGluIGBtbS9odWdldGxiLmNgIGFuZCBgbW0vbW1faW5pdC5jYC4gVGhlIHBhdGNoIG9yaWdpbmF0ZWQgZnJvbSBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLCBidXQgaXQncyBhbHJlYWR5IGJlZW4gYXBwbGllZC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIG5lZWRzIGFueSBmdXp6aW5nIGF0dGVudGlvbi4gVGhlIGNoYW5nZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZDogcmVkdW5kYW50IGNoZWNrcyBhcmUgYmVpbmcgcmVtb3ZlZC4gSSBzZWUgdGhlc2UgY2hlY2tzIGFyZSB3aXRoaW4gYF9faW5pdGAgZnVuY3Rpb25zLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIHRoZSB2ZXJ5IGVhcmx5IGJvb3QgcHJvY2Vzcy4gU3l6a2FsbGVyLCBpbiBpdHMgY3VycmVudCBzZXR1cCwgcHJpbWFyaWx5IGZvY3VzZXMgb24gc3lzY2FsbHMgYW5kIGludGVyYWN0aW9ucyB0aGF0IG9jY3VyIGFmdGVyIHRoZSBzeXN0ZW0gaGFzIGluaXRpYWxpemVkIGFuZCBpcyBydW5uaW5nLiBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHRoaXMgd291bGQgYmUgcmVhY2hhYmxlIG9yIGV4cGxvaXRhYmxlIHZpYSB0aGUgdXN1YWwgZnV6emluZyBtZXRob2RzLlxuXG5Mb29raW5nIGNsb3NlciwgdGhlIHBhdGNoIGlzIGp1c3QgcmVtb3ZpbmcgY2hlY2tzIHRoYXQgYXJlIGFsd2F5cyBmYWxzZSBvciB0aGF0IHdvdWxkIG9ubHkgdHJpZ2dlciBpZiB0aGUgaW5wdXQgcGFyYW1ldGVycyB3ZXJlIHdyb25nLCBidXQgc2luY2UgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZ3VhcmFudGVlcyB0aGF0IGBzdGFydCBcdTAwM2MgZW5kYCBvciBgc3RhcnRfcGZuIFx1MDAzYyBlbmRfcGZuYCwgaXQgYXBwZWFycyB0aGVzZSBjaGVja3Mgd2VyZSBpbmRlZWQgcmVkdW5kYW50LlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGVzZSBmdW5jdGlvbnMgY2FuICpvbmx5KiBiZSBjYWxsZWQgZHVyaW5nIGVhcmx5IGJvb3QuIEknbSBzZWVpbmcgYGthc2FuX2luaXRgLCBgY3JlYXRlX2xpbmVhcl9tYXBwaW5nX3BhZ2VfdGFibGVgLCBgaHVnZXRsYl9ib290bWVtX3NldF9ub2Rlc2AsIGFuZCBgZWFybHlfY2FsY3VsYXRlX3RvdGFscGFnZXNgIGFyZSBhbGwgYF9faW5pdGAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBLQVNBTiBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBhcmUgYWxsIG1hcmtlZCBhcyBzdWNoLiBUaGUgc3BlY2lmaWMgYGthc2FuX2luaXRfcGh5c19yZWdpb25gIGluIHBvd2VycGMgaXMgYWxzbyBgX19pbml0YC5cblxuSSdtIGNvbmZpZGVudCB0aGVzZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byB0aGUgZWFybHkgYm9vdCBzdGFnZS4gU2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcmVhY2hhYmxlIHRocm91Z2ggc3lzY2FsbHMgb3IgdXNlci1zcGFjZSBpbnRlcmFjdGlvbnMsIGZ1enppbmcgaXNuJ3QgYSBjb25zaWRlcmF0aW9uIGhlcmUuXG5cbkknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHdpdGggZ3JlcHBlciwganVzdCB0byBiZSBzdXJlLCBhbmQgSSB3aWxsIGJlIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODUwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIzOjEyOjUxLjg3ODE2NTk1MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzU4MTQzOTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImthc2FuX2luaXRfcGh5c19yZWdpb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmM9MzI9c3RhdGljIGludCBfX2luaXQga2FzYW5fbWFwX2tlcm5lbF9wYWdlKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgcGEsIHBncHJvdF90IHByb3QpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy02NS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYzo2NjpzdGF0aWMgdm9pZCBfX2luaXQga2FzYW5faW5pdF9waHlzX3JlZ2lvbih2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jLTY3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jPTEwNT12b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy0xMTEtXFx0Zm9yX2VhY2hfbWVtX3JhbmdlKGksIFxcdTAwMjZzdGFydCwgXFx1MDAyNmVuZClcXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYzoxMTI6XFx0XFx0a2FzYW5faW5pdF9waHlzX3JlZ2lvbihwaHlzX3RvX3ZpcnQoc3RhcnQpLCBwaHlzX3RvX3ZpcnQoZW5kKSk7XFxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmMtMTEzLVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMtMjEtXFxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmM6MjI6c3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfcGh5c19yZWdpb24odm9pZCAqc3RhcnQsIHZvaWQgKmVuZClcXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYy0yMy17XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYz0zNT12b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYy01OS1cXHRmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgXFx1MDAyNnN0YXJ0LCBcXHUwMDI2ZW5kKVxcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jOjYwOlxcdFxcdGthc2FuX2luaXRfcGh5c19yZWdpb24ocGh5c190b192aXJ0KHN0YXJ0KSwgcGh5c190b192aXJ0KGVuZCkpO1xcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jLTYxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMzoxMjo1NS42MzYzMjc3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzM5ODU5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBBcHBsaWNhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBleGFtaW5lZCB0aGUgY29kZSBjaGFuZ2UsIGFuZCBteSBpbW1lZGlhdGUgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgc2VjdGlvbiByZWFsbHkgYm9pbHMgZG93biB0byBgX19pbml0YCBmdW5jdGlvbnMuIFRoYXQncyB0aGUga2V5IGhlcmUuIEdpdmVuIHRoYXQgd2UncmUgdGFsa2luZyBhYm91dCBpbml0aWFsIGJvb3QgY29kZSwgaXQgYmVjb21lcyBjbGVhciB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGhhcHBlbmluZyB2ZXJ5IGVhcmx5IGluIHRoZSBzeXN0ZW0gc3RhcnR1cC5cblxuVGhlcmVmb3JlLCBkZXNwaXRlIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgbWFkZSB0byBpbml0IGZ1bmN0aW9ucywgSSB3aWxsIGJlIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlIHByaW1hcnkgcmVhc29uIGlzIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGJvb3QgcHJvY2VzcyBpcyBzaW1wbHkgbm90IGFjY2Vzc2libGUgb3IgcmVhY2hhYmxlIHRocm91Z2ggYW55IHN0YW5kYXJkIHVzZXItc3BhY2UgZnV6emluZyB0ZWNobmlxdWVzLiBUcnlpbmcgdG8gdGFyZ2V0IHRoaXMgcGFydCB3aXRoIHRob3NlIHRvb2xzIHdvdWxkIGJlIGEgZnV0aWxlIGVmZm9ydCwgZ2l2ZW4gdGhlIGNvbnN0cmFpbnRzIG9mIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgYXQgdGhhdCBzdGFnZS4gV2Ugc2hvdWxkIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gY29kZSBtb3JlIGFtZW5hYmxlIHRvIHRoaXMgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NDQsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMzoxMjo1OS4zMTAzMTY3NDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZWFybHkgYm9vdCBpbml0aWFsaXphdGlvbiBjb2RlIChmdW5jdGlvbnMgbWFya2VkIHdpdGggX19pbml0LCBzdWNoIGFzIGthc2FuX2luaXQsIGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXMsIGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIHN5c3RlbSBzdGFydHVwIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIHJlYWNoZWQgdmlhIHVzZXItc3BhY2UgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZWFybHkgYm9vdCBpbml0aWFsaXphdGlvbiBjb2RlIChmdW5jdGlvbnMgbWFya2VkIHdpdGggX19pbml0LCBzdWNoIGFzIGthc2FuX2luaXQsIGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXMsIGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIHN5c3RlbSBzdGFydHVwIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIHJlYWNoZWQgdmlhIHVzZXItc3BhY2UgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowd4bx8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 23:01:55 +0000 UTC FinishedAt: 2026-06-30 23:13:00 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDIzOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZWFybHkgYm9vdCBpbml0aWFsaXphdGlvbiBjb2RlIChmdW5jdGlvbnMgbWFya2VkIHdpdGggX19pbml0LCBzdWNoIGFzIGthc2FuX2luaXQsIGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXMsIGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIHN5c3RlbSBzdGFydHVwIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIHJlYWNoZWQgdmlhIHVzZXItc3BhY2UgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjM6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzNGU4N2NmY2ZmZDM2NWJiODZiYmZjNTJiZGQ2NzNkOWI5YjM0NzFiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMjM6MTI6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jIGIvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jXG5pbmRleCBjNjYyNWU4MDhiZjg1ZS4uMWY3Yzc0YzVkZjllOTggMTAwNjQ0XG4tLS0gYS9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvYXJtL21tL2thc2FuX2luaXQuY1xuQEAgLTI2MiwxMiAmIzQzOzI2Miw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbiBcdFx0XHRcdFx1MDAyNnBhX3N0YXJ0LCBcdTAwMjZwYV9lbmQsIFx1MDAyNmFybV9sb3dtZW1fbGltaXQpO1xuIFx0XHRcdGVuZCA9IF9fdmEoYXJtX2xvd21lbV9saW1pdCk7XG4gXHRcdH1cbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKSB7XG4tXHRcdFx0cHJfaW5mbyhcJiMzNDtTa2lwcGluZyBpbnZhbGlkIG1lbW9yeSBibG9jayAlcGEtJXBhICh2aXJ0dWFsICVwLSVwKVxcblwmIzM0Oyxcbi1cdFx0XHRcdFx1MDAyNnBhX3N0YXJ0LCBcdTAwMjZwYV9lbmQsIHN0YXJ0LCBlbmQpO1xuLVx0XHRcdGNvbnRpbnVlO1xuLVx0XHR9XG4tXG4gXHRcdGNyZWF0ZV9tYXBwaW5nKHN0YXJ0LCBlbmQpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmNcbmluZGV4IDNmY2FkOTU2ZmRmN2NiLi40NWZiZGNlNjg0Yzg5YyAxMDA2NDRcbi0tLSBhL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuY1xuQEAgLTM1Myw5ICYjNDM7MzUzLDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfc2hhZG93KHZvaWQpXG4gXHRcdHZvaWQgKnN0YXJ0ID0gKHZvaWQgKilfX3BoeXNfdG9fdmlydChwYV9zdGFydCk7XG4gXHRcdHZvaWQgKmVuZCA9ICh2b2lkICopX19waHlzX3RvX3ZpcnQocGFfZW5kKTtcbiBcbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRcdGJyZWFrO1xuLVxuIFx0XHRrYXNhbl9tYXBfcG9wdWxhdGUoKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksXG4gXHRcdFx0XHQgICAodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCksXG4gXHRcdFx0XHQgICBlYXJseV9wZm5fdG9fbmlkKHZpcnRfdG9fcGZuKHN0YXJ0KSkpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuYyBiL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuY1xuaW5kZXggMGZjMDJjYTA2NDU3MzguLjkyY2EwYmE4NjQwNjFlIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbW0va2FzYW5faW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmNcbkBAIC0zMDUsOSAmIzQzOzMwNSw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbiBcdFx0dm9pZCAqc3RhcnQgPSAodm9pZCAqKXBoeXNfdG9fdmlydChwYV9zdGFydCk7XG4gXHRcdHZvaWQgKmVuZCAgID0gKHZvaWQgKilwaHlzX3RvX3ZpcnQocGFfZW5kKTtcbiBcbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRcdGJyZWFrO1xuLVxuIFx0XHRrYXNhbl9tYXBfcG9wdWxhdGUoKHVuc2lnbmVkIGxvbmcpbWVtX3RvX3NoYWRvdyhzdGFydCksXG4gXHRcdFx0KHVuc2lnbmVkIGxvbmcpbWVtX3RvX3NoYWRvdyhlbmQpLCBOVU1BX05PX05PREUpO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jIGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmNcbmluZGV4IDBkM2E3M2Q2ZDRiMGJiLi4wZWQzNzJmYjhiMDk2ZSAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuY1xuQEAgLTY4LDkgJiM0Mzs2OCw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG4gXHR1bnNpZ25lZCBsb25nIGtfc3RhcnQsIGtfZW5kLCBrX2N1cjtcbiBcdHZvaWQgKnZhO1xuIFxuLVx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRrX3N0YXJ0ID0gQUxJR05fRE9XTigodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KHN0YXJ0KSwgUEFHRV9TSVpFKTtcbiBcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jIGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmNcbmluZGV4IGRjYWZhNjQxODA0YzBhLi5jY2ZiZmI4OTQ2Mzc2NiAxMDA2NDRcbi0tLSBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuY1xuQEAgLTI0LDkgJiM0MzsyNCw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG4gXHR1bnNpZ25lZCBsb25nIGtfc3RhcnQsIGtfZW5kLCBrX2N1cjtcbiBcdHZvaWQgKnZhO1xuIFxuLVx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRrX3N0YXJ0ID0gQUxJR05fRE9XTigodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KHN0YXJ0KSwgUEFHRV9TSVpFKTtcbiBcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9pbml0LmNcbmluZGV4IDViMWIzYzg4YjRkMTMwLi5lYjkzYzJhYzA1YTY4MiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xuQEAgLTEyMjksOCAmIzQzOzEyMjksNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgY3JlYXRlX2xpbmVhcl9tYXBwaW5nX3BhZ2VfdGFibGUodm9pZClcbiBcbiBcdC8qIE1hcCBhbGwgbWVtb3J5IGJhbmtzIGluIHRoZSBsaW5lYXIgbWFwcGluZyAqL1xuIFx0Zm9yX2VhY2hfbWVtX3JhbmdlKGksIFx1MDAyNnN0YXJ0LCBcdTAwMjZlbmQpIHtcbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRcdGJyZWFrO1xuIFx0XHRpZiAoc3RhcnQgXHUwMDNjPSBfX3BhKFBBR0VfT0ZGU0VUKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIF9fcGEoUEFHRV9PRkZTRVQpIFx1MDAzYyBlbmQpXG4gXHRcdFx0c3RhcnQgPSBfX3BhKFBBR0VfT0ZGU0VUKTtcbmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuYyBiL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jXG5pbmRleCBjNGEyYTllNTU4NmU3NS4uMWYzYWE5NjExMTg3ZjYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmNcbkBAIC01MTIsOSAmIzQzOzUxMiw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbiBcdFx0dm9pZCAqc3RhcnQgPSAodm9pZCAqKV9fdmEocF9zdGFydCk7XG4gXHRcdHZvaWQgKmVuZCA9ICh2b2lkICopX192YShwX2VuZCk7XG4gXG4tXHRcdGlmIChzdGFydCBcdTAwM2U9IGVuZClcbi1cdFx0XHRicmVhaztcbi1cbiBcdFx0a2FzYW5fcG9wdWxhdGUoa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIGthc2FuX21lbV90b19zaGFkb3coZW5kKSk7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jXG5pbmRleCA1NzEyMTJiODA4MzVlYy4uNGY3MDIwOTYyNDg2ZDkgMTAwNjQ0XG4tLS0gYS9tbS9odWdldGxiLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2V0bGIuY1xuQEAgLTQ0NDQsMTUgJiM0Mzs0NDQ0LDEyIEBAIGh1Z2V0bGJfZWFybHlfcGFyYW0oXCYjMzQ7ZGVmYXVsdF9odWdlcGFnZXN6XCYjMzQ7LCBkZWZhdWx0X2h1Z2VwYWdlc3pfc2V0dXApO1xuIHZvaWQgX19pbml0IGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXModm9pZClcbiB7XG4gXHRpbnQgaSwgbmlkO1xuLVx0dW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVuZF9wZm47XG4gXG4gXHRpZiAoIW5vZGVzX2VtcHR5KGh1Z2V0bGJfYm9vdG1lbV9ub2RlcykpXG4gXHRcdHJldHVybjtcbiBcbi1cdGZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCBcdTAwMjZzdGFydF9wZm4sIFx1MDAyNmVuZF9wZm4sIFx1MDAyNm5pZCkge1xuLVx0XHRpZiAoZW5kX3BmbiBcdTAwM2Ugc3RhcnRfcGZuKVxuLVx0XHRcdG5vZGVfc2V0KG5pZCwgaHVnZXRsYl9ib290bWVtX25vZGVzKTtcbi1cdH1cbiYjNDM7XHRmb3JfZWFjaF9tZW1fcGZuX3JhbmdlKGksIE1BWF9OVU1OT0RFUywgTlVMTCwgTlVMTCwgXHUwMDI2bmlkKVxuJiM0MztcdFx0bm9kZV9zZXQobmlkLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpO1xuIH1cbiBcbiB2b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1fYWxsb2Modm9pZClcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcbmluZGV4IDBmNjQ5MDllOGQyMGUyLi4xNzQ5OGExM2ViOTkyNCAxMDA2NDRcbi0tLSBhL21tL21tX2luaXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW1faW5pdC5jXG5AQCAtMzMyLDggJiM0MzszMzIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgZWFybHlfY2FsY3VsYXRlX3RvdGFscGFnZXModm9pZClcbiBcdFx0dW5zaWduZWQgbG9uZyBwYWdlcyA9IGVuZF9wZm4gLSBzdGFydF9wZm47XG4gXG4gXHRcdHRvdGFscGFnZXMgJiM0Mzs9IHBhZ2VzO1xuLVx0XHRpZiAocGFnZXMpXG4tXHRcdFx0bm9kZV9zZXRfc3RhdGUobmlkLCBOX01FTU9SWSk7XG4mIzQzO1x0XHRub2RlX3NldF9zdGF0ZShuaWQsIE5fTUVNT1JZKTtcbiBcdH1cbiBcdHJldHVybiB0b3RhbHBhZ2VzO1xuIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMzoxMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGVhcmx5IGJvb3QgaW5pdGlhbGl6YXRpb24gY29kZSAoZnVuY3Rpb25zIG1hcmtlZCB3aXRoIF9faW5pdCwgc3VjaCBhcyBrYXNhbl9pbml0LCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzLCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgZXhhY3RseSBvbmNlIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciByZWFjaGVkIHZpYSB1c2VyLXNwYWNlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNGU4N2NmY2ZmZDM2NWJiODZiYmZjNTJiZGQ2NzNkOWI5YjM0NzFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMjM6MTI6MzcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmMKaW5kZXggYzY2MjVlODA4YmY4NWUuLjFmN2M3NGM1ZGY5ZTk4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jCkBAIC0yNjIsMTIgJiM0MzsyNjIsNiBAQCB2b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpCiAJCQkJJmFtcDtwYV9zdGFydCwgJmFtcDtwYV9lbmQsICZhbXA7YXJtX2xvd21lbV9saW1pdCk7CiAJCQllbmQgPSBfX3ZhKGFybV9sb3dtZW1fbGltaXQpOwogCQl9Ci0JCWlmIChzdGFydCAmZ3Q7PSBlbmQpIHsKLQkJCXByX2luZm8oJiMzNDtTa2lwcGluZyBpbnZhbGlkIG1lbW9yeSBibG9jayAlcGEtJXBhICh2aXJ0dWFsICVwLSVwKVxuJiMzNDssCi0JCQkJJmFtcDtwYV9zdGFydCwgJmFtcDtwYV9lbmQsIHN0YXJ0LCBlbmQpOwotCQkJY29udGludWU7Ci0JCX0KLQogCQljcmVhdGVfbWFwcGluZyhzdGFydCwgZW5kKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmMKaW5kZXggM2ZjYWQ5NTZmZGY3Y2IuLjQ1ZmJkY2U2ODRjODljIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYwpAQCAtMzUzLDkgJiM0MzszNTMsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQga2FzYW5faW5pdF9zaGFkb3codm9pZCkKIAkJdm9pZCAqc3RhcnQgPSAodm9pZCAqKV9fcGh5c190b192aXJ0KHBhX3N0YXJ0KTsKIAkJdm9pZCAqZW5kID0gKHZvaWQgKilfX3BoeXNfdG9fdmlydChwYV9lbmQpOwogCi0JCWlmIChzdGFydCAmZ3Q7PSBlbmQpCi0JCQlicmVhazsKLQogCQlrYXNhbl9tYXBfcG9wdWxhdGUoKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksCiAJCQkJICAgKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLAogCQkJCSAgIGVhcmx5X3Bmbl90b19uaWQodmlydF90b19wZm4oc3RhcnQpKSk7CmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmMKaW5kZXggMGZjMDJjYTA2NDU3MzguLjkyY2EwYmE4NjQwNjFlIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbW0va2FzYW5faW5pdC5jCkBAIC0zMDUsOSAmIzQzOzMwNSw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZCkKIAkJdm9pZCAqc3RhcnQgPSAodm9pZCAqKXBoeXNfdG9fdmlydChwYV9zdGFydCk7CiAJCXZvaWQgKmVuZCAgID0gKHZvaWQgKilwaHlzX3RvX3ZpcnQocGFfZW5kKTsKIAotCQlpZiAoc3RhcnQgJmd0Oz0gZW5kKQotCQkJYnJlYWs7Ci0KIAkJa2FzYW5fbWFwX3BvcHVsYXRlKCh1bnNpZ25lZCBsb25nKW1lbV90b19zaGFkb3coc3RhcnQpLAogCQkJKHVuc2lnbmVkIGxvbmcpbWVtX3RvX3NoYWRvdyhlbmQpLCBOVU1BX05PX05PREUpOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jIGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmMKaW5kZXggMGQzYTczZDZkNGIwYmIuLjBlZDM3MmZiOGIwOTZlIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYwpAQCAtNjgsOSAmIzQzOzY4LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfcGh5c19yZWdpb24odm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkKIAl1bnNpZ25lZCBsb25nIGtfc3RhcnQsIGtfZW5kLCBrX2N1cjsKIAl2b2lkICp2YTsKIAotCWlmIChzdGFydCAmZ3Q7PSBlbmQpCi0JCXJldHVybjsKLQogCWtfc3RhcnQgPSBBTElHTl9ET1dOKCh1bnNpZ25lZCBsb25nKWthc2FuX21lbV90b19zaGFkb3coc3RhcnQpLCBQQUdFX1NJWkUpOwogCWtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpOwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jCmluZGV4IGRjYWZhNjQxODA0YzBhLi5jY2ZiZmI4OTQ2Mzc2NiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMKQEAgLTI0LDkgJiM0MzsyNCw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpCiAJdW5zaWduZWQgbG9uZyBrX3N0YXJ0LCBrX2VuZCwga19jdXI7CiAJdm9pZCAqdmE7CiAKLQlpZiAoc3RhcnQgJmd0Oz0gZW5kKQotCQlyZXR1cm47Ci0KIAlrX3N0YXJ0ID0gQUxJR05fRE9XTigodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KHN0YXJ0KSwgUEFHRV9TSVpFKTsKIAlrX2VuZCA9IEFMSUdOKCh1bnNpZ25lZCBsb25nKWthc2FuX21lbV90b19zaGFkb3coZW5kKSwgUEFHRV9TSVpFKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuYwppbmRleCA1YjFiM2M4OGI0ZDEzMC4uZWI5M2MyYWMwNWE2ODIgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jCkBAIC0xMjI5LDggJiM0MzsxMjI5LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGNyZWF0ZV9saW5lYXJfbWFwcGluZ19wYWdlX3RhYmxlKHZvaWQpCiAKIAkvKiBNYXAgYWxsIG1lbW9yeSBiYW5rcyBpbiB0aGUgbGluZWFyIG1hcHBpbmcgKi8KIAlmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgJmFtcDtzdGFydCwgJmFtcDtlbmQpIHsKLQkJaWYgKHN0YXJ0ICZndDs9IGVuZCkKLQkJCWJyZWFrOwogCQlpZiAoc3RhcnQgJmx0Oz0gX19wYShQQUdFX09GRlNFVCkgJmFtcDsmYW1wOwogCQkgICAgX19wYShQQUdFX09GRlNFVCkgJmx0OyBlbmQpCiAJCQlzdGFydCA9IF9fcGEoUEFHRV9PRkZTRVQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuYwppbmRleCBjNGEyYTllNTU4NmU3NS4uMWYzYWE5NjExMTg3ZjYgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jCkBAIC01MTIsOSAmIzQzOzUxMiw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZCkKIAkJdm9pZCAqc3RhcnQgPSAodm9pZCAqKV9fdmEocF9zdGFydCk7CiAJCXZvaWQgKmVuZCA9ICh2b2lkICopX192YShwX2VuZCk7CiAKLQkJaWYgKHN0YXJ0ICZndDs9IGVuZCkKLQkJCWJyZWFrOwotCiAJCWthc2FuX3BvcHVsYXRlKGthc2FuX21lbV90b19zaGFkb3coc3RhcnQpLCBrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCkpOwogCX0KIApkaWZmIC0tZ2l0IGEvbW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jCmluZGV4IDU3MTIxMmI4MDgzNWVjLi40ZjcwMjA5NjI0ODZkOSAxMDA2NDQKLS0tIGEvbW0vaHVnZXRsYi5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2V0bGIuYwpAQCAtNDQ0NCwxNSAmIzQzOzQ0NDQsMTIgQEAgaHVnZXRsYl9lYXJseV9wYXJhbSgmIzM0O2RlZmF1bHRfaHVnZXBhZ2VzeiYjMzQ7LCBkZWZhdWx0X2h1Z2VwYWdlc3pfc2V0dXApOwogdm9pZCBfX2luaXQgaHVnZXRsYl9ib290bWVtX3NldF9ub2Rlcyh2b2lkKQogewogCWludCBpLCBuaWQ7Ci0JdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVuZF9wZm47CiAKIAlpZiAoIW5vZGVzX2VtcHR5KGh1Z2V0bGJfYm9vdG1lbV9ub2RlcykpCiAJCXJldHVybjsKIAotCWZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCAmYW1wO3N0YXJ0X3BmbiwgJmFtcDtlbmRfcGZuLCAmYW1wO25pZCkgewotCQlpZiAoZW5kX3BmbiAmZ3Q7IHN0YXJ0X3BmbikKLQkJCW5vZGVfc2V0KG5pZCwgaHVnZXRsYl9ib290bWVtX25vZGVzKTsKLQl9CiYjNDM7CWZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCBOVUxMLCBOVUxMLCAmYW1wO25pZCkKJiM0MzsJCW5vZGVfc2V0KG5pZCwgaHVnZXRsYl9ib290bWVtX25vZGVzKTsKIH0KIAogdm9pZCBfX2luaXQgaHVnZXRsYl9ib290bWVtX2FsbG9jKHZvaWQpCmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmMKaW5kZXggMGY2NDkwOWU4ZDIwZTIuLjE3NDk4YTEzZWI5OTI0IDEwMDY0NAotLS0gYS9tbS9tbV9pbml0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbW1faW5pdC5jCkBAIC0zMzIsOCAmIzQzOzMzMiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcyh2b2lkKQogCQl1bnNpZ25lZCBsb25nIHBhZ2VzID0gZW5kX3BmbiAtIHN0YXJ0X3BmbjsKIAogCQl0b3RhbHBhZ2VzICYjNDM7PSBwYWdlczsKLQkJaWYgKHBhZ2VzKQotCQkJbm9kZV9zZXRfc3RhdGUobmlkLCBOX01FTU9SWSk7CiYjNDM7CQlub2RlX3NldF9zdGF0ZShuaWQsIE5fTUVNT1JZKTsKIAl9CiAJcmV0dXJuIHRvdGFscGFnZXM7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIzOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTAKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlBhdGNoIEFuYWx5c2lzOiBSZWR1bmRhbnQgQ2hlY2tzIGluIEVhcmx5IEJvb3QgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHJlbW92ZXMgYGlmIChzdGFydCAmZ3Q7PSBlbmQpYCBvciBgaWYgKGVuZF9wZm4gJmd0OyBzdGFydF9wZm4pYCBjaGVja3MgaW4gdmFyaW91cyBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWVtb3J5IGluaXRpYWxpemF0aW9uIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gS0FTQU4gaW5pdGlhbGl6YXRpb24gYWNyb3NzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgKEFSTSwgQVJNNjQsIExvb25nQXJjaCwgUG93ZXJQQywgUklTQy1WKSwgYW5kIGFsc28gaW4gYG1tL2h1Z2V0bGIuY2AgYW5kIGBtbS9tbV9pbml0LmNgLiBUaGUgcGF0Y2ggb3JpZ2luYXRlZCBmcm9tIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YCwgYnV0IGl0JiMzOTtzIGFscmVhZHkgYmVlbiBhcHBsaWVkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIG5lZWRzIGFueSBmdXp6aW5nIGF0dGVudGlvbi4gVGhlIGNoYW5nZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZDogcmVkdW5kYW50IGNoZWNrcyBhcmUgYmVpbmcgcmVtb3ZlZC4gSSBzZWUgdGhlc2UgY2hlY2tzIGFyZSB3aXRoaW4gYF9faW5pdGAgZnVuY3Rpb25zLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIHRoZSB2ZXJ5IGVhcmx5IGJvb3QgcHJvY2Vzcy4gU3l6a2FsbGVyLCBpbiBpdHMgY3VycmVudCBzZXR1cCwgcHJpbWFyaWx5IGZvY3VzZXMgb24gc3lzY2FsbHMgYW5kIGludGVyYWN0aW9ucyB0aGF0IG9jY3VyIGFmdGVyIHRoZSBzeXN0ZW0gaGFzIGluaXRpYWxpemVkIGFuZCBpcyBydW5uaW5nLiBJdCYjMzk7cyBoaWdobHkgdW5saWtlbHkgdGhhdCB0aGlzIHdvdWxkIGJlIHJlYWNoYWJsZSBvciBleHBsb2l0YWJsZSB2aWEgdGhlIHVzdWFsIGZ1enppbmcgbWV0aG9kcy4KCkxvb2tpbmcgY2xvc2VyLCB0aGUgcGF0Y2ggaXMganVzdCByZW1vdmluZyBjaGVja3MgdGhhdCBhcmUgYWx3YXlzIGZhbHNlIG9yIHRoYXQgd291bGQgb25seSB0cmlnZ2VyIGlmIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIHdlcmUgd3JvbmcsIGJ1dCBzaW5jZSB0aGUgc3Vycm91bmRpbmcgY29kZSBndWFyYW50ZWVzIHRoYXQgYHN0YXJ0ICZsdDsgZW5kYCBvciBgc3RhcnRfcGZuICZsdDsgZW5kX3BmbmAsIGl0IGFwcGVhcnMgdGhlc2UgY2hlY2tzIHdlcmUgaW5kZWVkIHJlZHVuZGFudC4KCkkgbmVlZCB0byBjb25maXJtIHRoZXNlIGZ1bmN0aW9ucyBjYW4gKm9ubHkqIGJlIGNhbGxlZCBkdXJpbmcgZWFybHkgYm9vdC4gSSYjMzk7bSBzZWVpbmcgYGthc2FuX2luaXRgLCBgY3JlYXRlX2xpbmVhcl9tYXBwaW5nX3BhZ2VfdGFibGVgLCBgaHVnZXRsYl9ib290bWVtX3NldF9ub2Rlc2AsIGFuZCBgZWFybHlfY2FsY3VsYXRlX3RvdGFscGFnZXNgIGFyZSBhbGwgYF9faW5pdGAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBLQVNBTiBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBhcmUgYWxsIG1hcmtlZCBhcyBzdWNoLiBUaGUgc3BlY2lmaWMgYGthc2FuX2luaXRfcGh5c19yZWdpb25gIGluIHBvd2VycGMgaXMgYWxzbyBgX19pbml0YC4KCkkmIzM5O20gY29uZmlkZW50IHRoZXNlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIHRoZSBlYXJseSBib290IHN0YWdlLiBTaW5jZSB0aGVzZSBmdW5jdGlvbnMgYXJlIG5vdCByZWFjaGFibGUgdGhyb3VnaCBzeXNjYWxscyBvciB1c2VyLXNwYWNlIGludGVyYWN0aW9ucywgZnV6emluZyBpc24mIzM5O3QgYSBjb25zaWRlcmF0aW9uIGhlcmUuCgpJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgd2l0aCBncmVwcGVyLCBqdXN0IHRvIGJlIHN1cmUsIGFuZCBJIHdpbGwgYmUgY29uZmlkZW50IGluIG15IGFzc2Vzc21lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a2FzYW5faW5pdF9waHlzX3JlZ2lvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYz0zMj1zdGF0aWMgaW50IF9faW5pdCBrYXNhbl9tYXBfa2VybmVsX3BhZ2UodW5zaWduZWQgbG9uZyBlYSwgdW5zaWduZWQgbG9uZyBwYSwgcGdwcm90X3QgcHJvdClcbi0tXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy02NS1cbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jOjY2OnN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy02Ny17XG4tLVxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmM9MTA1PXZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy0xMTEtXHRmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgXHUwMDI2c3RhcnQsIFx1MDAyNmVuZClcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jOjExMjpcdFx0a2FzYW5faW5pdF9waHlzX3JlZ2lvbihwaHlzX3RvX3ZpcnQoc3RhcnQpLCBwaHlzX3RvX3ZpcnQoZW5kKSk7XG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy0xMTMtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMtMjEtXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYzoyMjpzdGF0aWMgdm9pZCBfX2luaXQga2FzYW5faW5pdF9waHlzX3JlZ2lvbih2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMtMjMte1xuLS1cbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jPTM1PXZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYy01OS1cdGZvcl9lYWNoX21lbV9yYW5nZShpLCBcdTAwMjZzdGFydCwgXHUwMDI2ZW5kKVxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmM6NjA6XHRcdGthc2FuX2luaXRfcGh5c19yZWdpb24ocGh5c190b192aXJ0KHN0YXJ0KSwgcGh5c190b192aXJ0KGVuZCkpO1xuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMtNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjM6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0NAoJCQkJCQkJb3V0cHV0OiA5MwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZ1enppbmcgQXBwbGljYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBleGFtaW5lZCB0aGUgY29kZSBjaGFuZ2UsIGFuZCBteSBpbW1lZGlhdGUgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgc2VjdGlvbiByZWFsbHkgYm9pbHMgZG93biB0byBgX19pbml0YCBmdW5jdGlvbnMuIFRoYXQmIzM5O3MgdGhlIGtleSBoZXJlLiBHaXZlbiB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGluaXRpYWwgYm9vdCBjb2RlLCBpdCBiZWNvbWVzIGNsZWFyIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaGFwcGVuaW5nIHZlcnkgZWFybHkgaW4gdGhlIHN5c3RlbSBzdGFydHVwLgoKVGhlcmVmb3JlLCBkZXNwaXRlIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgbWFkZSB0byBpbml0IGZ1bmN0aW9ucywgSSB3aWxsIGJlIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlIHByaW1hcnkgcmVhc29uIGlzIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGJvb3QgcHJvY2VzcyBpcyBzaW1wbHkgbm90IGFjY2Vzc2libGUgb3IgcmVhY2hhYmxlIHRocm91Z2ggYW55IHN0YW5kYXJkIHVzZXItc3BhY2UgZnV6emluZyB0ZWNobmlxdWVzLiBUcnlpbmcgdG8gdGFyZ2V0IHRoaXMgcGFydCB3aXRoIHRob3NlIHRvb2xzIHdvdWxkIGJlIGEgZnV0aWxlIGVmZm9ydCwgZ2l2ZW4gdGhlIGNvbnN0cmFpbnRzIG9mIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgYXQgdGhhdCBzdGFnZS4gV2Ugc2hvdWxkIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gY29kZSBtb3JlIGFtZW5hYmxlIHRvIHRoaXMgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMjM6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGVhcmx5IGJvb3QgaW5pdGlhbGl6YXRpb24gY29kZSAoZnVuY3Rpb25zIG1hcmtlZCB3aXRoIF9faW5pdCwgc3VjaCBhcyBrYXNhbl9pbml0LCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzLCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgZXhhY3RseSBvbmNlIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciByZWFjaGVkIHZpYSB1c2VyLXNwYWNlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGVhcmx5IGJvb3QgaW5pdGlhbGl6YXRpb24gY29kZSAoZnVuY3Rpb25zIG1hcmtlZCB3aXRoIF9faW5pdCwgc3VjaCBhcyBrYXNhbl9pbml0LCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzLCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgZXhhY3RseSBvbmNlIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciByZWFjaGVkIHZpYSB1c2VyLXNwYWNlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjM6MTI6MzkuMDE5MDE0MjUzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyOTEzNDY1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZWFybHkgYm9vdCBpbml0aWFsaXphdGlvbiBjb2RlIChmdW5jdGlvbnMgbWFya2VkIHdpdGggX19pbml0LCBzdWNoIGFzIGthc2FuX2luaXQsIGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXMsIGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIHN5c3RlbSBzdGFydHVwIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIHJlYWNoZWQgdmlhIHVzZXItc3BhY2UgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIzOjEyOjM5LjAxOTAyNzQwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzUwNjcwNzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzRlODdjZmNmZmQzNjViYjg2YmJmYzUyYmRkNjczZDliOWIzNDcxYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAyMzoxMjozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmMgYi9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmNcXG5pbmRleCBjNjYyNWU4MDhiZjg1ZS4uMWY3Yzc0YzVkZjllOTggMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jXFxuKysrIGIvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jXFxuQEAgLTI2MiwxMiArMjYyLDYgQEAgdm9pZCBfX2luaXQga2FzYW5faW5pdCh2b2lkKVxcbiBcXHRcXHRcXHRcXHRcXHUwMDI2cGFfc3RhcnQsIFxcdTAwMjZwYV9lbmQsIFxcdTAwMjZhcm1fbG93bWVtX2xpbWl0KTtcXG4gXFx0XFx0XFx0ZW5kID0gX192YShhcm1fbG93bWVtX2xpbWl0KTtcXG4gXFx0XFx0fVxcbi1cXHRcXHRpZiAoc3RhcnQgXFx1MDAzZT0gZW5kKSB7XFxuLVxcdFxcdFxcdHByX2luZm8oXFxcIlNraXBwaW5nIGludmFsaWQgbWVtb3J5IGJsb2NrICVwYS0lcGEgKHZpcnR1YWwgJXAtJXApXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHUwMDI2cGFfc3RhcnQsIFxcdTAwMjZwYV9lbmQsIHN0YXJ0LCBlbmQpO1xcbi1cXHRcXHRcXHRjb250aW51ZTtcXG4tXFx0XFx0fVxcbi1cXG4gXFx0XFx0Y3JlYXRlX21hcHBpbmcoc3RhcnQsIGVuZCk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmNcXG5pbmRleCAzZmNhZDk1NmZkZjdjYi4uNDVmYmRjZTY4NGM4OWMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmNcXG4rKysgYi9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuY1xcbkBAIC0zNTMsOSArMzUzLDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfc2hhZG93KHZvaWQpXFxuIFxcdFxcdHZvaWQgKnN0YXJ0ID0gKHZvaWQgKilfX3BoeXNfdG9fdmlydChwYV9zdGFydCk7XFxuIFxcdFxcdHZvaWQgKmVuZCA9ICh2b2lkICopX19waHlzX3RvX3ZpcnQocGFfZW5kKTtcXG4gXFxuLVxcdFxcdGlmIChzdGFydCBcXHUwMDNlPSBlbmQpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4gXFx0XFx0a2FzYW5fbWFwX3BvcHVsYXRlKCh1bnNpZ25lZCBsb25nKWthc2FuX21lbV90b19zaGFkb3coc3RhcnQpLFxcbiBcXHRcXHRcXHRcXHQgICAodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCksXFxuIFxcdFxcdFxcdFxcdCAgIGVhcmx5X3Bmbl90b19uaWQodmlydF90b19wZm4oc3RhcnQpKSk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuYyBiL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuY1xcbmluZGV4IDBmYzAyY2EwNjQ1NzM4Li45MmNhMGJhODY0MDYxZSAxMDA2NDRcXG4tLS0gYS9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmNcXG5AQCAtMzA1LDkgKzMwNSw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcXG4gXFx0XFx0dm9pZCAqc3RhcnQgPSAodm9pZCAqKXBoeXNfdG9fdmlydChwYV9zdGFydCk7XFxuIFxcdFxcdHZvaWQgKmVuZCAgID0gKHZvaWQgKilwaHlzX3RvX3ZpcnQocGFfZW5kKTtcXG4gXFxuLVxcdFxcdGlmIChzdGFydCBcXHUwMDNlPSBlbmQpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4gXFx0XFx0a2FzYW5fbWFwX3BvcHVsYXRlKCh1bnNpZ25lZCBsb25nKW1lbV90b19zaGFkb3coc3RhcnQpLFxcbiBcXHRcXHRcXHQodW5zaWduZWQgbG9uZyltZW1fdG9fc2hhZG93KGVuZCksIE5VTUFfTk9fTk9ERSk7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmMgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuY1xcbmluZGV4IDBkM2E3M2Q2ZDRiMGJiLi4wZWQzNzJmYjhiMDk2ZSAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuY1xcbisrKyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jXFxuQEAgLTY4LDkgKzY4LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfcGh5c19yZWdpb24odm9pZCAqc3RhcnQsIHZvaWQgKmVuZClcXG4gXFx0dW5zaWduZWQgbG9uZyBrX3N0YXJ0LCBrX2VuZCwga19jdXI7XFxuIFxcdHZvaWQgKnZhO1xcbiBcXG4tXFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXG4gXFx0a19zdGFydCA9IEFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIFBBR0VfU0laRSk7XFxuIFxcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuY1xcbmluZGV4IGRjYWZhNjQxODA0YzBhLi5jY2ZiZmI4OTQ2Mzc2NiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuY1xcbisrKyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jXFxuQEAgLTI0LDkgKzI0LDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfcGh5c19yZWdpb24odm9pZCAqc3RhcnQsIHZvaWQgKmVuZClcXG4gXFx0dW5zaWduZWQgbG9uZyBrX3N0YXJ0LCBrX2VuZCwga19jdXI7XFxuIFxcdHZvaWQgKnZhO1xcbiBcXG4tXFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZClcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXG4gXFx0a19zdGFydCA9IEFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIFBBR0VfU0laRSk7XFxuIFxcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xcbmluZGV4IDViMWIzYzg4YjRkMTMwLi5lYjkzYzJhYzA1YTY4MiAxMDA2NDRcXG4tLS0gYS9hcmNoL3Jpc2N2L21tL2luaXQuY1xcbisrKyBiL2FyY2gvcmlzY3YvbW0vaW5pdC5jXFxuQEAgLTEyMjksOCArMTIyOSw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjcmVhdGVfbGluZWFyX21hcHBpbmdfcGFnZV90YWJsZSh2b2lkKVxcbiBcXG4gXFx0LyogTWFwIGFsbCBtZW1vcnkgYmFua3MgaW4gdGhlIGxpbmVhciBtYXBwaW5nICovXFxuIFxcdGZvcl9lYWNoX21lbV9yYW5nZShpLCBcXHUwMDI2c3RhcnQsIFxcdTAwMjZlbmQpIHtcXG4tXFx0XFx0aWYgKHN0YXJ0IFxcdTAwM2U9IGVuZClcXG4tXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGlmIChzdGFydCBcXHUwMDNjPSBfX3BhKFBBR0VfT0ZGU0VUKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgX19wYShQQUdFX09GRlNFVCkgXFx1MDAzYyBlbmQpXFxuIFxcdFxcdFxcdHN0YXJ0ID0gX19wYShQQUdFX09GRlNFVCk7XFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmNcXG5pbmRleCBjNGEyYTllNTU4NmU3NS4uMWYzYWE5NjExMTg3ZjYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmNcXG4rKysgYi9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuY1xcbkBAIC01MTIsOSArNTEyLDYgQEAgdm9pZCBfX2luaXQga2FzYW5faW5pdCh2b2lkKVxcbiBcXHRcXHR2b2lkICpzdGFydCA9ICh2b2lkICopX192YShwX3N0YXJ0KTtcXG4gXFx0XFx0dm9pZCAqZW5kID0gKHZvaWQgKilfX3ZhKHBfZW5kKTtcXG4gXFxuLVxcdFxcdGlmIChzdGFydCBcXHUwMDNlPSBlbmQpXFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXG4gXFx0XFx0a2FzYW5fcG9wdWxhdGUoa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIGthc2FuX21lbV90b19zaGFkb3coZW5kKSk7XFxuIFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuY1xcbmluZGV4IDU3MTIxMmI4MDgzNWVjLi40ZjcwMjA5NjI0ODZkOSAxMDA2NDRcXG4tLS0gYS9tbS9odWdldGxiLmNcXG4rKysgYi9tbS9odWdldGxiLmNcXG5AQCAtNDQ0NCwxNSArNDQ0NCwxMiBAQCBodWdldGxiX2Vhcmx5X3BhcmFtKFxcXCJkZWZhdWx0X2h1Z2VwYWdlc3pcXFwiLCBkZWZhdWx0X2h1Z2VwYWdlc3pfc2V0dXApO1xcbiB2b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzKHZvaWQpXFxuIHtcXG4gXFx0aW50IGksIG5pZDtcXG4tXFx0dW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIGVuZF9wZm47XFxuIFxcbiBcXHRpZiAoIW5vZGVzX2VtcHR5KGh1Z2V0bGJfYm9vdG1lbV9ub2RlcykpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuLVxcdGZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCBcXHUwMDI2c3RhcnRfcGZuLCBcXHUwMDI2ZW5kX3BmbiwgXFx1MDAyNm5pZCkge1xcbi1cXHRcXHRpZiAoZW5kX3BmbiBcXHUwMDNlIHN0YXJ0X3BmbilcXG4tXFx0XFx0XFx0bm9kZV9zZXQobmlkLCBodWdldGxiX2Jvb3RtZW1fbm9kZXMpO1xcbi1cXHR9XFxuK1xcdGZvcl9lYWNoX21lbV9wZm5fcmFuZ2UoaSwgTUFYX05VTU5PREVTLCBOVUxMLCBOVUxMLCBcXHUwMDI2bmlkKVxcbitcXHRcXHRub2RlX3NldChuaWQsIGh1Z2V0bGJfYm9vdG1lbV9ub2Rlcyk7XFxuIH1cXG4gXFxuIHZvaWQgX19pbml0IGh1Z2V0bGJfYm9vdG1lbV9hbGxvYyh2b2lkKVxcbmRpZmYgLS1naXQgYS9tbS9tbV9pbml0LmMgYi9tbS9tbV9pbml0LmNcXG5pbmRleCAwZjY0OTA5ZThkMjBlMi4uMTc0OThhMTNlYjk5MjQgMTAwNjQ0XFxuLS0tIGEvbW0vbW1faW5pdC5jXFxuKysrIGIvbW0vbW1faW5pdC5jXFxuQEAgLTMzMiw4ICszMzIsNyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgZWFybHlfY2FsY3VsYXRlX3RvdGFscGFnZXModm9pZClcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyBwYWdlcyA9IGVuZF9wZm4gLSBzdGFydF9wZm47XFxuIFxcbiBcXHRcXHR0b3RhbHBhZ2VzICs9IHBhZ2VzO1xcbi1cXHRcXHRpZiAocGFnZXMpXFxuLVxcdFxcdFxcdG5vZGVfc2V0X3N0YXRlKG5pZCwgTl9NRU1PUlkpO1xcbitcXHRcXHRub2RlX3NldF9zdGF0ZShuaWQsIE5fTUVNT1JZKTtcXG4gXFx0fVxcbiBcXHRyZXR1cm4gdG90YWxwYWdlcztcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMzoxMjozOS43NzA0OTkzMTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NTM5ODUzMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGVhcmx5IGJvb3QgaW5pdGlhbGl6YXRpb24gY29kZSAoZnVuY3Rpb25zIG1hcmtlZCB3aXRoIF9faW5pdCwgc3VjaCBhcyBrYXNhbl9pbml0LCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzLCBlYXJseV9jYWxjdWxhdGVfdG90YWxwYWdlcykuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgZXhhY3RseSBvbmNlIGR1cmluZyBzeXN0ZW0gc3RhcnR1cCBhbmQgY2Fubm90IGJlIHRyaWdnZXJlZCBvciByZWFjaGVkIHZpYSB1c2VyLXNwYWNlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM0ZTg3Y2ZjZmZkMzY1YmI4NmJiZmM1MmJkZDY3M2Q5YjliMzQ3MWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAyMzoxMjozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL2thc2FuX2luaXQuYyBiL2FyY2gvYXJtL21tL2thc2FuX2luaXQuY1xuaW5kZXggYzY2MjVlODA4YmY4NWUuLjFmN2M3NGM1ZGY5ZTk4IDEwMDY0NFxuLS0tIGEvYXJjaC9hcm0vbW0va2FzYW5faW5pdC5jXG4rKysgYi9hcmNoL2FybS9tbS9rYXNhbl9pbml0LmNcbkBAIC0yNjIsMTIgKzI2Miw2IEBAIHZvaWQgX19pbml0IGthc2FuX2luaXQodm9pZClcbiBcdFx0XHRcdFx1MDAyNnBhX3N0YXJ0LCBcdTAwMjZwYV9lbmQsIFx1MDAyNmFybV9sb3dtZW1fbGltaXQpO1xuIFx0XHRcdGVuZCA9IF9fdmEoYXJtX2xvd21lbV9saW1pdCk7XG4gXHRcdH1cbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKSB7XG4tXHRcdFx0cHJfaW5mbyhcIlNraXBwaW5nIGludmFsaWQgbWVtb3J5IGJsb2NrICVwYS0lcGEgKHZpcnR1YWwgJXAtJXApXFxuXCIsXG4tXHRcdFx0XHRcdTAwMjZwYV9zdGFydCwgXHUwMDI2cGFfZW5kLCBzdGFydCwgZW5kKTtcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0fVxuLVxuIFx0XHRjcmVhdGVfbWFwcGluZyhzdGFydCwgZW5kKTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuYyBiL2FyY2gvYXJtNjQvbW0va2FzYW5faW5pdC5jXG5pbmRleCAzZmNhZDk1NmZkZjdjYi4uNDVmYmRjZTY4NGM4OWMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L21tL2thc2FuX2luaXQuY1xuKysrIGIvYXJjaC9hcm02NC9tbS9rYXNhbl9pbml0LmNcbkBAIC0zNTMsOSArMzUzLDYgQEAgc3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfc2hhZG93KHZvaWQpXG4gXHRcdHZvaWQgKnN0YXJ0ID0gKHZvaWQgKilfX3BoeXNfdG9fdmlydChwYV9zdGFydCk7XG4gXHRcdHZvaWQgKmVuZCA9ICh2b2lkICopX19waHlzX3RvX3ZpcnQocGFfZW5kKTtcbiBcbi1cdFx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRcdGJyZWFrO1xuLVxuIFx0XHRrYXNhbl9tYXBfcG9wdWxhdGUoKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksXG4gXHRcdFx0XHQgICAodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCksXG4gXHRcdFx0XHQgICBlYXJseV9wZm5fdG9fbmlkKHZpcnRfdG9fcGZuKHN0YXJ0KSkpO1xuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuYyBiL2FyY2gvbG9vbmdhcmNoL21tL2thc2FuX2luaXQuY1xuaW5kZXggMGZjMDJjYTA2NDU3MzguLjkyY2EwYmE4NjQwNjFlIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbW0va2FzYW5faW5pdC5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9tbS9rYXNhbl9pbml0LmNcbkBAIC0zMDUsOSArMzA1LDYgQEAgdm9pZCBfX2luaXQga2FzYW5faW5pdCh2b2lkKVxuIFx0XHR2b2lkICpzdGFydCA9ICh2b2lkICopcGh5c190b192aXJ0KHBhX3N0YXJ0KTtcbiBcdFx0dm9pZCAqZW5kICAgPSAodm9pZCAqKXBoeXNfdG9fdmlydChwYV9lbmQpO1xuIFxuLVx0XHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4tXHRcdFx0YnJlYWs7XG4tXG4gXHRcdGthc2FuX21hcF9wb3B1bGF0ZSgodW5zaWduZWQgbG9uZyltZW1fdG9fc2hhZG93KHN0YXJ0KSxcbiBcdFx0XHQodW5zaWduZWQgbG9uZyltZW1fdG9fc2hhZG93KGVuZCksIE5VTUFfTk9fTk9ERSk7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmMgYi9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuY1xuaW5kZXggMGQzYTczZDZkNGIwYmIuLjBlZDM3MmZiOGIwOTZlIDEwMDY0NFxuLS0tIGEvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmNcbisrKyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jXG5AQCAtNjgsOSArNjgsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQga2FzYW5faW5pdF9waHlzX3JlZ2lvbih2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxuIFx0dW5zaWduZWQgbG9uZyBrX3N0YXJ0LCBrX2VuZCwga19jdXI7XG4gXHR2b2lkICp2YTtcbiBcbi1cdGlmIChzdGFydCBcdTAwM2U9IGVuZClcbi1cdFx0cmV0dXJuO1xuLVxuIFx0a19zdGFydCA9IEFMSUdOX0RPV04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhzdGFydCksIFBBR0VfU0laRSk7XG4gXHRrX2VuZCA9IEFMSUdOKCh1bnNpZ25lZCBsb25nKWthc2FuX21lbV90b19zaGFkb3coZW5kKSwgUEFHRV9TSVpFKTtcbiBcbmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYyBiL2FyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jXG5pbmRleCBkY2FmYTY0MTgwNGMwYS4uY2NmYmZiODk0NjM3NjYgMTAwNjQ0XG4tLS0gYS9hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuY1xuKysrIGIvYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmNcbkBAIC0yNCw5ICsyNCw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBrYXNhbl9pbml0X3BoeXNfcmVnaW9uKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpXG4gXHR1bnNpZ25lZCBsb25nIGtfc3RhcnQsIGtfZW5kLCBrX2N1cjtcbiBcdHZvaWQgKnZhO1xuIFxuLVx0aWYgKHN0YXJ0IFx1MDAzZT0gZW5kKVxuLVx0XHRyZXR1cm47XG4tXG4gXHRrX3N0YXJ0ID0gQUxJR05fRE9XTigodW5zaWduZWQgbG9uZylrYXNhbl9tZW1fdG9fc2hhZG93KHN0YXJ0KSwgUEFHRV9TSVpFKTtcbiBcdGtfZW5kID0gQUxJR04oKHVuc2lnbmVkIGxvbmcpa2FzYW5fbWVtX3RvX3NoYWRvdyhlbmQpLCBQQUdFX1NJWkUpO1xuIFxuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9pbml0LmNcbmluZGV4IDViMWIzYzg4YjRkMTMwLi5lYjkzYzJhYzA1YTY4MiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbW0vaW5pdC5jXG4rKysgYi9hcmNoL3Jpc2N2L21tL2luaXQuY1xuQEAgLTEyMjksOCArMTIyOSw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBjcmVhdGVfbGluZWFyX21hcHBpbmdfcGFnZV90YWJsZSh2b2lkKVxuIFxuIFx0LyogTWFwIGFsbCBtZW1vcnkgYmFua3MgaW4gdGhlIGxpbmVhciBtYXBwaW5nICovXG4gXHRmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgXHUwMDI2c3RhcnQsIFx1MDAyNmVuZCkge1xuLVx0XHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4tXHRcdFx0YnJlYWs7XG4gXHRcdGlmIChzdGFydCBcdTAwM2M9IF9fcGEoUEFHRV9PRkZTRVQpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgX19wYShQQUdFX09GRlNFVCkgXHUwMDNjIGVuZClcbiBcdFx0XHRzdGFydCA9IF9fcGEoUEFHRV9PRkZTRVQpO1xuZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmNcbmluZGV4IGM0YTJhOWU1NTg2ZTc1Li4xZjNhYTk2MTExODdmNiAxMDA2NDRcbi0tLSBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jXG4rKysgYi9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuY1xuQEAgLTUxMiw5ICs1MTIsNiBAQCB2b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpXG4gXHRcdHZvaWQgKnN0YXJ0ID0gKHZvaWQgKilfX3ZhKHBfc3RhcnQpO1xuIFx0XHR2b2lkICplbmQgPSAodm9pZCAqKV9fdmEocF9lbmQpO1xuIFxuLVx0XHRpZiAoc3RhcnQgXHUwMDNlPSBlbmQpXG4tXHRcdFx0YnJlYWs7XG4tXG4gXHRcdGthc2FuX3BvcHVsYXRlKGthc2FuX21lbV90b19zaGFkb3coc3RhcnQpLCBrYXNhbl9tZW1fdG9fc2hhZG93KGVuZCkpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuY1xuaW5kZXggNTcxMjEyYjgwODM1ZWMuLjRmNzAyMDk2MjQ4NmQ5IDEwMDY0NFxuLS0tIGEvbW0vaHVnZXRsYi5jXG4rKysgYi9tbS9odWdldGxiLmNcbkBAIC00NDQ0LDE1ICs0NDQ0LDEyIEBAIGh1Z2V0bGJfZWFybHlfcGFyYW0oXCJkZWZhdWx0X2h1Z2VwYWdlc3pcIiwgZGVmYXVsdF9odWdlcGFnZXN6X3NldHVwKTtcbiB2b2lkIF9faW5pdCBodWdldGxiX2Jvb3RtZW1fc2V0X25vZGVzKHZvaWQpXG4ge1xuIFx0aW50IGksIG5pZDtcbi1cdHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCBlbmRfcGZuO1xuIFxuIFx0aWYgKCFub2Rlc19lbXB0eShodWdldGxiX2Jvb3RtZW1fbm9kZXMpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRmb3JfZWFjaF9tZW1fcGZuX3JhbmdlKGksIE1BWF9OVU1OT0RFUywgXHUwMDI2c3RhcnRfcGZuLCBcdTAwMjZlbmRfcGZuLCBcdTAwMjZuaWQpIHtcbi1cdFx0aWYgKGVuZF9wZm4gXHUwMDNlIHN0YXJ0X3Bmbilcbi1cdFx0XHRub2RlX3NldChuaWQsIGh1Z2V0bGJfYm9vdG1lbV9ub2Rlcyk7XG4tXHR9XG4rXHRmb3JfZWFjaF9tZW1fcGZuX3JhbmdlKGksIE1BWF9OVU1OT0RFUywgTlVMTCwgTlVMTCwgXHUwMDI2bmlkKVxuK1x0XHRub2RlX3NldChuaWQsIGh1Z2V0bGJfYm9vdG1lbV9ub2Rlcyk7XG4gfVxuIFxuIHZvaWQgX19pbml0IGh1Z2V0bGJfYm9vdG1lbV9hbGxvYyh2b2lkKVxuZGlmZiAtLWdpdCBhL21tL21tX2luaXQuYyBiL21tL21tX2luaXQuY1xuaW5kZXggMGY2NDkwOWU4ZDIwZTIuLjE3NDk4YTEzZWI5OTI0IDEwMDY0NFxuLS0tIGEvbW0vbW1faW5pdC5jXG4rKysgYi9tbS9tbV9pbml0LmNcbkBAIC0zMzIsOCArMzMyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKHZvaWQpXG4gXHRcdHVuc2lnbmVkIGxvbmcgcGFnZXMgPSBlbmRfcGZuIC0gc3RhcnRfcGZuO1xuIFxuIFx0XHR0b3RhbHBhZ2VzICs9IHBhZ2VzO1xuLVx0XHRpZiAocGFnZXMpXG4tXHRcdFx0bm9kZV9zZXRfc3RhdGUobmlkLCBOX01FTU9SWSk7XG4rXHRcdG5vZGVfc2V0X3N0YXRlKG5pZCwgTl9NRU1PUlkpO1xuIFx0fVxuIFx0cmV0dXJuIHRvdGFscGFnZXM7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjM6MTI6MzkuNzcwNTAyODYzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIxMDc2NTk4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUGF0Y2ggQW5hbHlzaXM6IFJlZHVuZGFudCBDaGVja3MgaW4gRWFybHkgQm9vdCBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHJlbW92ZXMgYGlmIChzdGFydCBcdTAwM2U9IGVuZClgIG9yIGBpZiAoZW5kX3BmbiBcdTAwM2Ugc3RhcnRfcGZuKWAgY2hlY2tzIGluIHZhcmlvdXMgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1lbW9yeSBpbml0aWFsaXphdGlvbiBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIEtBU0FOIGluaXRpYWxpemF0aW9uIGFjcm9zcyBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzIChBUk0sIEFSTTY0LCBMb29uZ0FyY2gsIFBvd2VyUEMsIFJJU0MtViksIGFuZCBhbHNvIGluIGBtbS9odWdldGxiLmNgIGFuZCBgbW0vbW1faW5pdC5jYC4gVGhlIHBhdGNoIG9yaWdpbmF0ZWQgZnJvbSBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLCBidXQgaXQncyBhbHJlYWR5IGJlZW4gYXBwbGllZC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGFzc2VzcyBpZiB0aGlzIG5lZWRzIGFueSBmdXp6aW5nIGF0dGVudGlvbi4gVGhlIGNoYW5nZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZDogcmVkdW5kYW50IGNoZWNrcyBhcmUgYmVpbmcgcmVtb3ZlZC4gSSBzZWUgdGhlc2UgY2hlY2tzIGFyZSB3aXRoaW4gYF9faW5pdGAgZnVuY3Rpb25zLiBUaGlzIG1lYW5zIHRoZXkgYXJlIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIHRoZSB2ZXJ5IGVhcmx5IGJvb3QgcHJvY2Vzcy4gU3l6a2FsbGVyLCBpbiBpdHMgY3VycmVudCBzZXR1cCwgcHJpbWFyaWx5IGZvY3VzZXMgb24gc3lzY2FsbHMgYW5kIGludGVyYWN0aW9ucyB0aGF0IG9jY3VyIGFmdGVyIHRoZSBzeXN0ZW0gaGFzIGluaXRpYWxpemVkIGFuZCBpcyBydW5uaW5nLiBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHRoaXMgd291bGQgYmUgcmVhY2hhYmxlIG9yIGV4cGxvaXRhYmxlIHZpYSB0aGUgdXN1YWwgZnV6emluZyBtZXRob2RzLlxuXG5Mb29raW5nIGNsb3NlciwgdGhlIHBhdGNoIGlzIGp1c3QgcmVtb3ZpbmcgY2hlY2tzIHRoYXQgYXJlIGFsd2F5cyBmYWxzZSBvciB0aGF0IHdvdWxkIG9ubHkgdHJpZ2dlciBpZiB0aGUgaW5wdXQgcGFyYW1ldGVycyB3ZXJlIHdyb25nLCBidXQgc2luY2UgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZ3VhcmFudGVlcyB0aGF0IGBzdGFydCBcdTAwM2MgZW5kYCBvciBgc3RhcnRfcGZuIFx1MDAzYyBlbmRfcGZuYCwgaXQgYXBwZWFycyB0aGVzZSBjaGVja3Mgd2VyZSBpbmRlZWQgcmVkdW5kYW50LlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGVzZSBmdW5jdGlvbnMgY2FuICpvbmx5KiBiZSBjYWxsZWQgZHVyaW5nIGVhcmx5IGJvb3QuIEknbSBzZWVpbmcgYGthc2FuX2luaXRgLCBgY3JlYXRlX2xpbmVhcl9tYXBwaW5nX3BhZ2VfdGFibGVgLCBgaHVnZXRsYl9ib290bWVtX3NldF9ub2Rlc2AsIGFuZCBgZWFybHlfY2FsY3VsYXRlX3RvdGFscGFnZXNgIGFyZSBhbGwgYF9faW5pdGAgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBLQVNBTiBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBhcmUgYWxsIG1hcmtlZCBhcyBzdWNoLiBUaGUgc3BlY2lmaWMgYGthc2FuX2luaXRfcGh5c19yZWdpb25gIGluIHBvd2VycGMgaXMgYWxzbyBgX19pbml0YC5cblxuSSdtIGNvbmZpZGVudCB0aGVzZSBjaGFuZ2VzIGFyZSBjb25maW5lZCB0byB0aGUgZWFybHkgYm9vdCBzdGFnZS4gU2luY2UgdGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcmVhY2hhYmxlIHRocm91Z2ggc3lzY2FsbHMgb3IgdXNlci1zcGFjZSBpbnRlcmFjdGlvbnMsIGZ1enppbmcgaXNuJ3QgYSBjb25zaWRlcmF0aW9uIGhlcmUuXG5cbkknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHdpdGggZ3JlcHBlciwganVzdCB0byBiZSBzdXJlLCBhbmQgSSB3aWxsIGJlIGNvbmZpZGVudCBpbiBteSBhc3Nlc3NtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODUwLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIzOjEyOjUxLjg3ODE2NTk1MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzU4MTQzOTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImthc2FuX2luaXRfcGh5c19yZWdpb25cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmM9MzI9c3RhdGljIGludCBfX2luaXQga2FzYW5fbWFwX2tlcm5lbF9wYWdlKHVuc2lnbmVkIGxvbmcgZWEsIHVuc2lnbmVkIGxvbmcgcGEsIHBncHJvdF90IHByb3QpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy02NS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYzo2NjpzdGF0aWMgdm9pZCBfX2luaXQga2FzYW5faW5pdF9waHlzX3JlZ2lvbih2b2lkICpzdGFydCwgdm9pZCAqZW5kKVxcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jLTY3LXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szZV82NC5jPTEwNT12b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYy0xMTEtXFx0Zm9yX2VhY2hfbWVtX3JhbmdlKGksIFxcdTAwMjZzdGFydCwgXFx1MDAyNmVuZClcXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM2VfNjQuYzoxMTI6XFx0XFx0a2FzYW5faW5pdF9waHlzX3JlZ2lvbihwaHlzX3RvX3ZpcnQoc3RhcnQpLCBwaHlzX3RvX3ZpcnQoZW5kKSk7XFxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNlXzY0LmMtMTEzLVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmMtMjEtXFxuYXJjaC9wb3dlcnBjL21tL2thc2FuL2luaXRfYm9vazNzXzY0LmM6MjI6c3RhdGljIHZvaWQgX19pbml0IGthc2FuX2luaXRfcGh5c19yZWdpb24odm9pZCAqc3RhcnQsIHZvaWQgKmVuZClcXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYy0yMy17XFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYz0zNT12b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0va2FzYW4vaW5pdF9ib29rM3NfNjQuYy01OS1cXHRmb3JfZWFjaF9tZW1fcmFuZ2UoaSwgXFx1MDAyNnN0YXJ0LCBcXHUwMDI2ZW5kKVxcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jOjYwOlxcdFxcdGthc2FuX2luaXRfcGh5c19yZWdpb24ocGh5c190b192aXJ0KHN0YXJ0KSwgcGh5c190b192aXJ0KGVuZCkpO1xcbmFyY2gvcG93ZXJwYy9tbS9rYXNhbi9pbml0X2Jvb2szc182NC5jLTYxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMzoxMjo1NS42MzYzMjc3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzM5ODU5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnV6emluZyBBcHBsaWNhYmlsaXR5KipcblxuT2theSwgc28gSSd2ZSBleGFtaW5lZCB0aGUgY29kZSBjaGFuZ2UsIGFuZCBteSBpbW1lZGlhdGUgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgc2VjdGlvbiByZWFsbHkgYm9pbHMgZG93biB0byBgX19pbml0YCBmdW5jdGlvbnMuIFRoYXQncyB0aGUga2V5IGhlcmUuIEdpdmVuIHRoYXQgd2UncmUgdGFsa2luZyBhYm91dCBpbml0aWFsIGJvb3QgY29kZSwgaXQgYmVjb21lcyBjbGVhciB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGhhcHBlbmluZyB2ZXJ5IGVhcmx5IGluIHRoZSBzeXN0ZW0gc3RhcnR1cC5cblxuVGhlcmVmb3JlLCBkZXNwaXRlIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgbWFkZSB0byBpbml0IGZ1bmN0aW9ucywgSSB3aWxsIGJlIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYC4gVGhlIHByaW1hcnkgcmVhc29uIGlzIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIHNlY3Rpb24gb2YgdGhlIGJvb3QgcHJvY2VzcyBpcyBzaW1wbHkgbm90IGFjY2Vzc2libGUgb3IgcmVhY2hhYmxlIHRocm91Z2ggYW55IHN0YW5kYXJkIHVzZXItc3BhY2UgZnV6emluZyB0ZWNobmlxdWVzLiBUcnlpbmcgdG8gdGFyZ2V0IHRoaXMgcGFydCB3aXRoIHRob3NlIHRvb2xzIHdvdWxkIGJlIGEgZnV0aWxlIGVmZm9ydCwgZ2l2ZW4gdGhlIGNvbnN0cmFpbnRzIG9mIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgYXQgdGhhdCBzdGFnZS4gV2Ugc2hvdWxkIGZvY3VzIG91ciBmdXp6aW5nIGVmZm9ydHMgb24gY29kZSBtb3JlIGFtZW5hYmxlIHRvIHRoaXMgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NDQsIk91dHB1dFRva2VucyI6OTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMzoxMjo1OS4zMTAzMTY3NDVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZWFybHkgYm9vdCBpbml0aWFsaXphdGlvbiBjb2RlIChmdW5jdGlvbnMgbWFya2VkIHdpdGggX19pbml0LCBzdWNoIGFzIGthc2FuX2luaXQsIGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXMsIGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIHN5c3RlbSBzdGFydHVwIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIHJlYWNoZWQgdmlhIHVzZXItc3BhY2UgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgZWFybHkgYm9vdCBpbml0aWFsaXphdGlvbiBjb2RlIChmdW5jdGlvbnMgbWFya2VkIHdpdGggX19pbml0LCBzdWNoIGFzIGthc2FuX2luaXQsIGh1Z2V0bGJfYm9vdG1lbV9zZXRfbm9kZXMsIGVhcmx5X2NhbGN1bGF0ZV90b3RhbHBhZ2VzKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBleGFjdGx5IG9uY2UgZHVyaW5nIHN5c3RlbSBzdGFydHVwIGFuZCBjYW5ub3QgYmUgdHJpZ2dlcmVkIG9yIHJlYWNoZWQgdmlhIHVzZXItc3BhY2UgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowd4bx8[1] Phase: Running StartedAt: 2026-06-30 23:13:49 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowd4bx8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-30 23:13:49 +0000 UTC FinishedAt: 2026-06-30 23:14:48 +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,}