Name: series-workflow265fx Phase: Failed StartedAt: 2026-08-07 19:54:17 +0000 UTC FinishedAt: 2026-08-07 20:39:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow265fx[0] Phase: Succeeded StartedAt: 2026-08-07 19:54:17 +0000 UTC FinishedAt: 2026-08-07 20:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow265fx[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 19:54:17 +0000 UTC FinishedAt: 2026-08-07 20:39:34 +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+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBweXRob24gc2NyaXB0IChgeW5sX2dlbl9jLnB5YCkgdXNlZCB0byBnZW5lcmF0ZSBDIGNvZGUgZm9yIHVzZXJzcGFjZSBZTkwgKFlBTUwgTmV0bGluaykgYmluZGluZ3MuIEl0IGFkZHMgbnVsbCBwb2ludGVyIGNoZWNrcyBmb3IgbWVtb3J5IGFsbG9jYXRpb25zIGluIHRoZSBnZW5lcmF0ZWQgdXNlcnNwYWNlIGNvZGUuIFRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBrZXJuZWwgZXhlY3V0aW9uIGZsb3cgb3Iga2VybmVsIGJpbmFyaWVzLCBzbyBpdCBkb2VzIG5vdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTExYWI0NzliOGEyMDVhMWMxZDYyMWU2Njg4ZjUwMjg3ZTE2N2JkOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjA6Mzg6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkgYi90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuaW5kZXggY2RjMzY0NmYyNjQyYy4uMmIzNDgzZGIxYjYwYyAxMDA3NTVcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuQEAgLTUyNiw4ICYjNDM7NTI2LDEwIEBAIGNsYXNzIFR5cGVTdHJpbmcoVHlwZSk6XG4gXG4gICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6XG4gICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LVx1MDAzZV9sZW4uJiMzOTsgJiM0Mzsgc2VsZi5jX25hbWVcbi0gICAgICAgIHJldHVybiBbZlwmIzM0O3tsZW5fbWVtfSA9IGxlbjtcJiMzNDssXG4tICAgICAgICAgICAgICAgIGZcJiMzNDt7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbiAmIzQzOyAxKTtcJiMzNDssXG4mIzQzOyAgICAgICAgcmV0dXJuIFtmXCYjMzQ7e3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4gJiM0MzsgMSk7XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgZlwmIzM0O2lmICghe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSlcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIGZcJiMzNDt7bGVuX21lbX0gPSBsZW47XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7bWVtY3B5KHt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2dldF9zdHIoYXR0ciksIGxlbik7XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7e3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfVtsZW5dID0gMDtcJiMzNDtdLCBcXFxuICAgICAgICAgICAgICAgIFsmIzM5O2xlbiA9IHN0cm5sZW4oeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgeW5sX2F0dHJfZGF0YV9sZW4oYXR0cikpOyYjMzk7XSwgXFxcbkBAIC01ODIsOCAmIzQzOzU4NCwxMCBAQCBjbGFzcyBUeXBlQmluYXJ5KFR5cGUpOlxuIFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxuICAgICAgICAgbGVuX21lbSA9IHZhciAmIzQzOyAmIzM5Oy1cdTAwM2VfbGVuLiYjMzk7ICYjNDM7IHNlbGYuY19uYW1lXG4tICAgICAgICByZXR1cm4gW2ZcJiMzNDt7bGVuX21lbX0gPSBsZW47XCYjMzQ7LFxuLSAgICAgICAgICAgICAgICBmXCYjMzQ7e3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1wmIzM0OyxcbiYjNDM7ICAgICAgICByZXR1cm4gW2ZcJiMzNDt7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgZlwmIzM0O2lmICghe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSlcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIGZcJiMzNDt7bGVuX21lbX0gPSBsZW47XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7bWVtY3B5KHt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2RhdGEoYXR0ciksIGxlbik7XCYjMzQ7XSwgXFxcbiAgICAgICAgICAgICAgICBbJiMzOTtsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsmIzM5O10sIFxcXG4gICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O11cbkBAIC02MDEsMTEgJiM0Mzs2MDUsMTMgQEAgY2xhc3MgVHlwZUJpbmFyeVN0cnVjdChUeXBlQmluYXJ5KTpcbiAgICAgZGVmIF9hdHRyX2dldChzZWxmLCByaSwgdmFyKTpcbiAgICAgICAgIHN0cnVjdF9zeiA9ICYjMzk7c2l6ZW9mKHN0cnVjdCAmIzM5OyAmIzQzOyBjX2xvd2VyKHNlbGYuZ2V0KFwmIzM0O3N0cnVjdFwmIzM0OykpICYjNDM7ICYjMzk7KSYjMzk7XG4gICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LVx1MDAzZV8mIzM5OyAmIzQzOyBzZWxmLnByZXNlbmNlX3R5cGUoKSAmIzQzOyAmIzM5Oy4mIzM5OyAmIzQzOyBzZWxmLmNfbmFtZVxuLSAgICAgICAgcmV0dXJuIFtmXCYjMzQ7e2xlbl9tZW19ID0gbGVuO1wmIzM0Oyxcbi0gICAgICAgICAgICAgICAgZlwmIzM0O2lmIChsZW4gXHUwMDNjIHtzdHJ1Y3Rfc3p9KVwmIzM0OyxcbiYjNDM7ICAgICAgICByZXR1cm4gW2ZcJiMzNDtpZiAobGVuIFx1MDAzYyB7c3RydWN0X3N6fSlcJiMzNDssXG4gICAgICAgICAgICAgICAgIGZcJiMzNDt7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gY2FsbG9jKDEsIHtzdHJ1Y3Rfc3p9KTtcJiMzNDssXG4gICAgICAgICAgICAgICAgIFwmIzM0O2Vsc2VcJiMzNDssXG4gICAgICAgICAgICAgICAgIGZcJiMzNDt7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgZlwmIzM0O2lmICghe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSlcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIGZcJiMzNDt7bGVuX21lbX0gPSBsZW47XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7bWVtY3B5KHt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2RhdGEoYXR0ciksIGxlbik7XCYjMzQ7XSwgXFxcbiAgICAgICAgICAgICAgICBbJiMzOTtsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsmIzM5O10sIFxcXG4gICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O11cbkBAIC02MzEsOSAmIzQzOzYzNywxMSBAQCBjbGFzcyBUeXBlQmluYXJ5U2NhbGFyQXJyYXkoVHlwZUJpbmFyeSk6XG4gXG4gICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6XG4gICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LVx1MDAzZV9jb3VudC4mIzM5OyAmIzQzOyBzZWxmLmNfbmFtZVxuLSAgICAgICAgcmV0dXJuIFtmXCYjMzQ7e2xlbl9tZW19ID0gbGVuIC8gc2l6ZW9mKF9fe3NlbGYuZ2V0KCYjMzk7c3ViLXR5cGUmIzM5Oyl9KTtcJiMzNDssXG4tICAgICAgICAgICAgICAgIGZcJiMzNDtsZW4gPSB7bGVuX21lbX0gKiBzaXplb2YoX197c2VsZi5nZXQoJiMzOTtzdWItdHlwZSYjMzk7KX0pO1wmIzM0OyxcbiYjNDM7ICAgICAgICByZXR1cm4gW2ZcJiMzNDtsZW4gPSAobGVuIC8gc2l6ZW9mKF9fe3NlbGYuZ2V0KCYjMzk7c3ViLXR5cGUmIzM5Oyl9KSkgKiBzaXplb2YoX197c2VsZi5nZXQoJiMzOTtzdWItdHlwZSYjMzk7KX0pO1wmIzM0OyxcbiAgICAgICAgICAgICAgICAgZlwmIzM0O3t2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuKTtcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBmXCYjMzQ7aWYgKCF7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9KVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O3JldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgZlwmIzM0O3tsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgmIzM5O3N1Yi10eXBlJiMzOTspfSk7XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7bWVtY3B5KHt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2RhdGEoYXR0ciksIGxlbik7XCYjMzQ7XSwgXFxcbiAgICAgICAgICAgICAgICBbJiMzOTtsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsmIzM5O10sIFxcXG4gICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O11cbkBAIC0yMjI3LDYgJiM0MzsyMjM1LDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcbiBcbiAgICAgICAgIHJpLmN3LmJsb2NrX3N0YXJ0KGxpbmU9ZlwmIzM0O2lmIChuX3thc3BlYy5jX25hbWV9KVwmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSA9IGNhbGxvYyhuX3thc3BlYy5jX25hbWV9LCBzaXplb2YoKmRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSkpO1wmIzM0OylcbiYjNDM7ICAgICAgICByaS5jdy5wKGZcJiMzNDtpZiAoIWRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSlcJiMzNDspXG4mIzQzOyAgICAgICAgcmkuY3cucChcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2VfY291bnQue2FzcGVjLmNfbmFtZX0gPSBuX3thc3BlYy5jX25hbWV9O1wmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoJiMzOTtpID0gMDsmIzM5OylcbiAgICAgICAgIGlmICYjMzk7bmVzdGVkLWF0dHJpYnV0ZXMmIzM5OyBpbiBhc3BlYzpcbkBAIC0yMjUyLDYgJiM0MzsyMjYyLDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcbiAgICAgICAgIGFzcGVjID0gc3RydWN0W2FyZ11cbiAgICAgICAgIHJpLmN3LmJsb2NrX3N0YXJ0KGxpbmU9ZlwmIzM0O2lmIChuX3thc3BlYy5jX25hbWV9KVwmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSA9IGNhbGxvYyhuX3thc3BlYy5jX25hbWV9LCBzaXplb2YoKmRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSkpO1wmIzM0OylcbiYjNDM7ICAgICAgICByaS5jdy5wKGZcJiMzNDtpZiAoIWRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSlcJiMzNDspXG4mIzQzOyAgICAgICAgcmkuY3cucChcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2VfY291bnQue2FzcGVjLmNfbmFtZX0gPSBuX3thc3BlYy5jX25hbWV9O1wmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoJiMzOTtpID0gMDsmIzM5OylcbiAgICAgICAgIGlmICYjMzk7bmVzdGVkLWF0dHJpYnV0ZXMmIzM5OyBpbiBhc3BlYzpcbkBAIC0yMjc1LDYgJiM0MzsyMjg3LDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcbiAgICAgICAgICAgICByaS5jdy5ubCgpXG4gICAgICAgICAgICAgcmkuY3cucCgmIzM5O2xlbiA9IHN0cm5sZW4oeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgeW5sX2F0dHJfZGF0YV9sZW4oYXR0cikpOyYjMzk7KVxuICAgICAgICAgICAgIHJpLmN3LnAoZiYjMzk7ZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgeW5sX3N0cmluZykgJiM0MzsgbGVuICYjNDM7IDEpOyYjMzk7KVxuJiM0MzsgICAgICAgICAgICByaS5jdy5wKGZcJiMzNDtpZiAoIWRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfVtpXSlcJiMzNDspXG4mIzQzOyAgICAgICAgICAgIHJpLmN3LnAoXCYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcJiMzNDspXG4gICAgICAgICAgICAgcmkuY3cucChmXCYjMzQ7ZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldLVx1MDAzZWxlbiA9IGxlbjtcJiMzNDspXG4gICAgICAgICAgICAgcmkuY3cucChmXCYjMzQ7bWVtY3B5KGRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfVtpXS1cdTAwM2VzdHIsIHlubF9hdHRyX2dldF9zdHIoYXR0ciksIGxlbik7XCYjMzQ7KVxuICAgICAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2V7YXNwZWMuY19uYW1lfVtpXS1cdTAwM2VzdHJbbGVuXSA9IDA7XCYjMzQ7KVxuQEAgLTI0MzQsNiAmIzQzOzI0NDgsOCBAQCBkZWYgcHJpbnRfcmVxKHJpKTpcbiBcbiAgICAgaWYgJiMzOTtyZXBseSYjMzk7IGluIHJpLm9wW3JpLm9wX21vZGVdOlxuICAgICAgICAgcmkuY3cucCgmIzM5O3JzcCA9IGNhbGxvYygxLCBzaXplb2YoKnJzcCkpOyYjMzk7KVxuJiM0MzsgICAgICAgIHJpLmN3LnAoJiMzOTtpZiAoIXJzcCkmIzM5OylcbiYjNDM7ICAgICAgICByaS5jdy5wKGYmIzM5O3JldHVybiB7cmV0X2Vycn07JiMzOTspXG4gICAgICAgICByaS5jdy5wKCYjMzk7eXJzLnlhcmcuZGF0YSA9IHJzcDsmIzM5OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O3lycy5jYiA9IHtvcF9wcmVmaXgocmksICYjMzk7cmVwbHkmIzM5Oyl9X3BhcnNlO1wmIzM0OylcbiAgICAgICAgIGlmIHJpLm9wLnZhbHVlIGlzIG5vdCBOb25lOlxuQEAgLTI3NDcsNiAmIzQzOzI3NjMsOSBAQCBkZWYgcHJpbnRfZHVtcF90eXBlX2ZyZWUocmkpOlxuICAgICByaS5jdy5ibG9ja19zdGFydCgpXG4gICAgIHJpLmN3LnAoZlwmIzM0O3tzdWJfdHlwZX0gKm5leHQgPSByc3A7XCYjMzQ7KVxuICAgICByaS5jdy5ubCgpXG4mIzQzOyAgICByaS5jdy5wKCYjMzk7aWYgKCFuZXh0KSYjMzk7KVxuJiM0MzsgICAgcmkuY3cucCgmIzM5O3JldHVybjsmIzM5OylcbiYjNDM7ICAgIHJpLmN3Lm5sKClcbiAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT0mIzM5O3doaWxlICgodm9pZCAqKW5leHQgIT0gWU5MX0xJU1RfRU5EKSYjMzk7KVxuICAgICBfZnJlZV90eXBlX21lbWJlcnNfaXRlcihyaSwgcmkuc3RydWN0WyYjMzk7cmVwbHkmIzM5O10pXG4gICAgIHJpLmN3LnAoJiMzOTtyc3AgPSBuZXh0OyYjMzk7KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIHB5dGhvbiBzY3JpcHQgKGB5bmxfZ2VuX2MucHlgKSB1c2VkIHRvIGdlbmVyYXRlIEMgY29kZSBmb3IgdXNlcnNwYWNlIFlOTCAoWUFNTCBOZXRsaW5rKSBiaW5kaW5ncy4gSXQgYWRkcyBudWxsIHBvaW50ZXIgY2hlY2tzIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGdlbmVyYXRlZCB1c2Vyc3BhY2UgY29kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGtlcm5lbCBleGVjdXRpb24gZmxvdyBvciBrZXJuZWwgYmluYXJpZXMsIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMTFhYjQ3OWI4YTIwNWExYzFkNjIxZTY2ODhmNTAyODdlMTY3YmQ4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAyMDozODo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkKaW5kZXggY2RjMzY0NmYyNjQyYy4uMmIzNDgzZGIxYjYwYyAxMDA3NTUKLS0tIGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkKQEAgLTUyNiw4ICYjNDM7NTI2LDEwIEBAIGNsYXNzIFR5cGVTdHJpbmcoVHlwZSk6CiAKICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOgogICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LSZndDtfbGVuLiYjMzk7ICYjNDM7IHNlbGYuY19uYW1lCi0gICAgICAgIHJldHVybiBbZiYjMzQ7e2xlbl9tZW19ID0gbGVuOyYjMzQ7LAotICAgICAgICAgICAgICAgIGYmIzM0O3t2YXJ9LSZndDt7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbiAmIzQzOyAxKTsmIzM0OywKJiM0MzsgICAgICAgIHJldHVybiBbZiYjMzQ7e3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuICYjNDM7IDEpOyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICBmJiMzNDtpZiAoIXt2YXJ9LSZndDt7c2VsZi5jX25hbWV9KSYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3JldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7JiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIGYmIzM0O3tsZW5fbWVtfSA9IGxlbjsmIzM0OywKICAgICAgICAgICAgICAgICBmJiMzNDttZW1jcHkoe3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2dldF9zdHIoYXR0ciksIGxlbik7JiMzNDssCiAgICAgICAgICAgICAgICAgZiYjMzQ7e3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX1bbGVuXSA9IDA7JiMzNDtdLCBcCiAgICAgICAgICAgICAgICBbJiMzOTtsZW4gPSBzdHJubGVuKHlubF9hdHRyX2dldF9zdHIoYXR0ciksIHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpKTsmIzM5O10sIFwKQEAgLTU4Miw4ICYjNDM7NTg0LDEwIEBAIGNsYXNzIFR5cGVCaW5hcnkoVHlwZSk6CiAKICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOgogICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LSZndDtfbGVuLiYjMzk7ICYjNDM7IHNlbGYuY19uYW1lCi0gICAgICAgIHJldHVybiBbZiYjMzQ7e2xlbl9tZW19ID0gbGVuOyYjMzQ7LAotICAgICAgICAgICAgICAgIGYmIzM0O3t2YXJ9LSZndDt7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7JiMzNDssCiYjNDM7ICAgICAgICByZXR1cm4gW2YmIzM0O3t2YXJ9LSZndDt7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7JiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIGYmIzM0O2lmICghe3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0pJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjsmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgZiYjMzQ7e2xlbl9tZW19ID0gbGVuOyYjMzQ7LAogICAgICAgICAgICAgICAgIGYmIzM0O21lbWNweSh7dmFyfS0mZ3Q7e3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTsmIzM0O10sIFwKICAgICAgICAgICAgICAgIFsmIzM5O2xlbiA9IHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpOyYjMzk7XSwgXAogICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O10KQEAgLTYwMSwxMSAmIzQzOzYwNSwxMyBAQCBjbGFzcyBUeXBlQmluYXJ5U3RydWN0KFR5cGVCaW5hcnkpOgogICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6CiAgICAgICAgIHN0cnVjdF9zeiA9ICYjMzk7c2l6ZW9mKHN0cnVjdCAmIzM5OyAmIzQzOyBjX2xvd2VyKHNlbGYuZ2V0KCYjMzQ7c3RydWN0JiMzNDspKSAmIzQzOyAmIzM5OykmIzM5OwogICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LSZndDtfJiMzOTsgJiM0Mzsgc2VsZi5wcmVzZW5jZV90eXBlKCkgJiM0MzsgJiMzOTsuJiMzOTsgJiM0Mzsgc2VsZi5jX25hbWUKLSAgICAgICAgcmV0dXJuIFtmJiMzNDt7bGVuX21lbX0gPSBsZW47JiMzNDssCi0gICAgICAgICAgICAgICAgZiYjMzQ7aWYgKGxlbiAmbHQ7IHtzdHJ1Y3Rfc3p9KSYjMzQ7LAomIzQzOyAgICAgICAgcmV0dXJuIFtmJiMzNDtpZiAobGVuICZsdDsge3N0cnVjdF9zen0pJiMzNDssCiAgICAgICAgICAgICAgICAgZiYjMzQ7e3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0gPSBjYWxsb2MoMSwge3N0cnVjdF9zen0pOyYjMzQ7LAogICAgICAgICAgICAgICAgICYjMzQ7ZWxzZSYjMzQ7LAogICAgICAgICAgICAgICAgIGYmIzM0O3t2YXJ9LSZndDt7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7JiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIGYmIzM0O2lmICghe3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0pJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjsmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgZiYjMzQ7e2xlbl9tZW19ID0gbGVuOyYjMzQ7LAogICAgICAgICAgICAgICAgIGYmIzM0O21lbWNweSh7dmFyfS0mZ3Q7e3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTsmIzM0O10sIFwKICAgICAgICAgICAgICAgIFsmIzM5O2xlbiA9IHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpOyYjMzk7XSwgXAogICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O10KQEAgLTYzMSw5ICYjNDM7NjM3LDExIEBAIGNsYXNzIFR5cGVCaW5hcnlTY2FsYXJBcnJheShUeXBlQmluYXJ5KToKIAogICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6CiAgICAgICAgIGxlbl9tZW0gPSB2YXIgJiM0MzsgJiMzOTstJmd0O19jb3VudC4mIzM5OyAmIzQzOyBzZWxmLmNfbmFtZQotICAgICAgICByZXR1cm4gW2YmIzM0O3tsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgmIzM5O3N1Yi10eXBlJiMzOTspfSk7JiMzNDssCi0gICAgICAgICAgICAgICAgZiYjMzQ7bGVuID0ge2xlbl9tZW19ICogc2l6ZW9mKF9fe3NlbGYuZ2V0KCYjMzk7c3ViLXR5cGUmIzM5Oyl9KTsmIzM0OywKJiM0MzsgICAgICAgIHJldHVybiBbZiYjMzQ7bGVuID0gKGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgmIzM5O3N1Yi10eXBlJiMzOTspfSkpICogc2l6ZW9mKF9fe3NlbGYuZ2V0KCYjMzk7c3ViLXR5cGUmIzM5Oyl9KTsmIzM0OywKICAgICAgICAgICAgICAgICBmJiMzNDt7dmFyfS0mZ3Q7e3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pOyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICBmJiMzNDtpZiAoIXt2YXJ9LSZndDt7c2VsZi5jX25hbWV9KSYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3JldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7JiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIGYmIzM0O3tsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgmIzM5O3N1Yi10eXBlJiMzOTspfSk7JiMzNDssCiAgICAgICAgICAgICAgICAgZiYjMzQ7bWVtY3B5KHt2YXJ9LSZndDt7c2VsZi5jX25hbWV9LCB5bmxfYXR0cl9kYXRhKGF0dHIpLCBsZW4pOyYjMzQ7XSwgXAogICAgICAgICAgICAgICAgWyYjMzk7bGVuID0geW5sX2F0dHJfZGF0YV9sZW4oYXR0cik7JiMzOTtdLCBcCiAgICAgICAgICAgICAgICBbJiMzOTt1bnNpZ25lZCBpbnQgbGVuOyYjMzk7XQpAQCAtMjIyNyw2ICYjNDM7MjIzNSw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6CiAKICAgICAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT1mJiMzNDtpZiAobl97YXNwZWMuY19uYW1lfSkmIzM0OykKICAgICAgICAgcmkuY3cucChmJiMzNDtkc3QtJmd0O3thc3BlYy5jX25hbWV9ID0gY2FsbG9jKG5fe2FzcGVjLmNfbmFtZX0sIHNpemVvZigqZHN0LSZndDt7YXNwZWMuY19uYW1lfSkpOyYjMzQ7KQomIzQzOyAgICAgICAgcmkuY3cucChmJiMzNDtpZiAoIWRzdC0mZ3Q7e2FzcGVjLmNfbmFtZX0pJiMzNDspCiYjNDM7ICAgICAgICByaS5jdy5wKCYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjsmIzM0OykKICAgICAgICAgcmkuY3cucChmJiMzNDtkc3QtJmd0O19jb3VudC57YXNwZWMuY19uYW1lfSA9IG5fe2FzcGVjLmNfbmFtZX07JiMzNDspCiAgICAgICAgIHJpLmN3LnAoJiMzOTtpID0gMDsmIzM5OykKICAgICAgICAgaWYgJiMzOTtuZXN0ZWQtYXR0cmlidXRlcyYjMzk7IGluIGFzcGVjOgpAQCAtMjI1Miw2ICYjNDM7MjI2Miw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6CiAgICAgICAgIGFzcGVjID0gc3RydWN0W2FyZ10KICAgICAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT1mJiMzNDtpZiAobl97YXNwZWMuY19uYW1lfSkmIzM0OykKICAgICAgICAgcmkuY3cucChmJiMzNDtkc3QtJmd0O3thc3BlYy5jX25hbWV9ID0gY2FsbG9jKG5fe2FzcGVjLmNfbmFtZX0sIHNpemVvZigqZHN0LSZndDt7YXNwZWMuY19uYW1lfSkpOyYjMzQ7KQomIzQzOyAgICAgICAgcmkuY3cucChmJiMzNDtpZiAoIWRzdC0mZ3Q7e2FzcGVjLmNfbmFtZX0pJiMzNDspCiYjNDM7ICAgICAgICByaS5jdy5wKCYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjsmIzM0OykKICAgICAgICAgcmkuY3cucChmJiMzNDtkc3QtJmd0O19jb3VudC57YXNwZWMuY19uYW1lfSA9IG5fe2FzcGVjLmNfbmFtZX07JiMzNDspCiAgICAgICAgIHJpLmN3LnAoJiMzOTtpID0gMDsmIzM5OykKICAgICAgICAgaWYgJiMzOTtuZXN0ZWQtYXR0cmlidXRlcyYjMzk7IGluIGFzcGVjOgpAQCAtMjI3NSw2ICYjNDM7MjI4Nyw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6CiAgICAgICAgICAgICByaS5jdy5ubCgpCiAgICAgICAgICAgICByaS5jdy5wKCYjMzk7bGVuID0gc3Rybmxlbih5bmxfYXR0cl9nZXRfc3RyKGF0dHIpLCB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKSk7JiMzOTspCiAgICAgICAgICAgICByaS5jdy5wKGYmIzM5O2RzdC0mZ3Q7e2FzcGVjLmNfbmFtZX1baV0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB5bmxfc3RyaW5nKSAmIzQzOyBsZW4gJiM0MzsgMSk7JiMzOTspCiYjNDM7ICAgICAgICAgICAgcmkuY3cucChmJiMzNDtpZiAoIWRzdC0mZ3Q7e2FzcGVjLmNfbmFtZX1baV0pJiMzNDspCiYjNDM7ICAgICAgICAgICAgcmkuY3cucCgmIzM0O3JldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7JiMzNDspCiAgICAgICAgICAgICByaS5jdy5wKGYmIzM0O2RzdC0mZ3Q7e2FzcGVjLmNfbmFtZX1baV0tJmd0O2xlbiA9IGxlbjsmIzM0OykKICAgICAgICAgICAgIHJpLmN3LnAoZiYjMzQ7bWVtY3B5KGRzdC0mZ3Q7e2FzcGVjLmNfbmFtZX1baV0tJmd0O3N0ciwgeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgbGVuKTsmIzM0OykKICAgICAgICAgICAgIHJpLmN3LnAoZiYjMzQ7ZHN0LSZndDt7YXNwZWMuY19uYW1lfVtpXS0mZ3Q7c3RyW2xlbl0gPSAwOyYjMzQ7KQpAQCAtMjQzNCw2ICYjNDM7MjQ0OCw4IEBAIGRlZiBwcmludF9yZXEocmkpOgogCiAgICAgaWYgJiMzOTtyZXBseSYjMzk7IGluIHJpLm9wW3JpLm9wX21vZGVdOgogICAgICAgICByaS5jdy5wKCYjMzk7cnNwID0gY2FsbG9jKDEsIHNpemVvZigqcnNwKSk7JiMzOTspCiYjNDM7ICAgICAgICByaS5jdy5wKCYjMzk7aWYgKCFyc3ApJiMzOTspCiYjNDM7ICAgICAgICByaS5jdy5wKGYmIzM5O3JldHVybiB7cmV0X2Vycn07JiMzOTspCiAgICAgICAgIHJpLmN3LnAoJiMzOTt5cnMueWFyZy5kYXRhID0gcnNwOyYjMzk7KQogICAgICAgICByaS5jdy5wKGYmIzM0O3lycy5jYiA9IHtvcF9wcmVmaXgocmksICYjMzk7cmVwbHkmIzM5Oyl9X3BhcnNlOyYjMzQ7KQogICAgICAgICBpZiByaS5vcC52YWx1ZSBpcyBub3QgTm9uZToKQEAgLTI3NDcsNiAmIzQzOzI3NjMsOSBAQCBkZWYgcHJpbnRfZHVtcF90eXBlX2ZyZWUocmkpOgogICAgIHJpLmN3LmJsb2NrX3N0YXJ0KCkKICAgICByaS5jdy5wKGYmIzM0O3tzdWJfdHlwZX0gKm5leHQgPSByc3A7JiMzNDspCiAgICAgcmkuY3cubmwoKQomIzQzOyAgICByaS5jdy5wKCYjMzk7aWYgKCFuZXh0KSYjMzk7KQomIzQzOyAgICByaS5jdy5wKCYjMzk7cmV0dXJuOyYjMzk7KQomIzQzOyAgICByaS5jdy5ubCgpCiAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT0mIzM5O3doaWxlICgodm9pZCAqKW5leHQgIT0gWU5MX0xJU1RfRU5EKSYjMzk7KQogICAgIF9mcmVlX3R5cGVfbWVtYmVyc19pdGVyKHJpLCByaS5zdHJ1Y3RbJiMzOTtyZXBseSYjMzk7XSkKICAgICByaS5jdy5wKCYjMzk7cnNwID0gbmV4dDsmIzM5OykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxNAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBZTkwgQ29kZSBHZW5lcmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyB0aGUgUHl0aG9uIHNjcmlwdCB0aGF0IGdlbmVyYXRlcyBDIGNvZGUgZm9yIHRob3NlIFlOTCAoWUFNTCBOZXRsaW5rKSB0b29scy4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgY2hlY2tzIGZvciBgbWFsbG9jYC9gY2FsbG9jYCByZXR1cm4gdmFsdWVzIGluIHRoZSBnZW5lcmF0ZWQgQy4gTWFrZXMgc2Vuc2U7IGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBlc3BlY2lhbGx5IGluIEMuCgpNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UuIEl04oCZcyBsb2NhbGl6ZWQgd2l0aGluIGB0b29scy9gLCBpdCYjMzk7cyBqdXN0IGNvZGUgZ2VuZXJhdGlvbiwgbm90IGNvcmUga2VybmVsIGxvZ2ljLiBUaGF0IG1lYW5zIGl0IHNob3VsZG4mIzM5O3QgYmUgYSBmdXp6aW5nIHRhcmdldC4gQnV0IHdhaXQsIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYXNzdW1wdGlvbi4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhlc2UgYXNzZXNzbWVudHMuIEFtIEkgY29ycmVjdCBpbiBhc3N1bWluZyB0aGF0IGNvZGUgaW4gYHRvb2xzL2AgaXMgKmV4Y2x1ZGVkKiBmcm9tIG91ciBmdXp6aW5nIGVmZm9ydHM/IFRoZSB1c3VhbCBmb2N1cyBvZiBmdXp6aW5nIGlzIHRoZSBrZXJuZWwgaXRzZWxmLiBDaGFuZ2VzIHRoYXQgcmVzaWRlIGluIGB0b29scy9gLCBsaWtlIHBlcmYsIGJwZiwgb3IgbmV0L3lubCwgZ2VuZXJhbGx5IGRvbiYjMzk7dCBkaXJlY3RseSBpbXBhY3QgdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdyBvciB0aGUgcmVzdWx0aW5nIGtlcm5lbCBiaW5hcmllcywgdW5sZXNz4oCmIHVubGVzcyB0aGV5IGdlbmVyYXRlIGNvZGUgdGhhdCBlbmRzIHVwIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4KCk5vdywgdGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLCBpc24mIzM5O3QgaXQ/IERvZXMgYHlubF9nZW5fYy5weWAgZ2VuZXJhdGUgY29kZSB0aGF0JiMzOTtzIGV2ZW50dWFsbHkgY29tcGlsZWQgKmludG8qIHRoZSBrZXJuZWw/IEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgc2NyaXB0IGlzIHVzZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaW1lIHRvIGludmVzdGlnYXRlIGl0cyB1c2FnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt5bmxfZ2VuX2MucHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3Q9NjU9VGhpcyBZQU1MIGlzIHVzZWQgdG8gYXV0by1nZW5lcmF0ZSB1c2VyIHNwYWNlIGJpbmRpbmdzIHZpYVxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3Q6NjY6YGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWBgLCBhbmQgZHJpdmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbmV0bGlua1xuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QtNjctYXR0cmlidXRlcyBhbmQgb3BlcmF0aW9ucy5cbi0tXG5Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0bGluay9pbnRyby1zcGVjcy5yc3Q9NzY9dG8gc2VlIG90aGVyIGV4YW1wbGVzLlxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0LTc3LVxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0Ojc4OlRoZSBjb2RlIGdlbmVyYXRpb24gaXRzZWxmIGlzIHBlcmZvcm1lZCBieSBgYHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5YGBcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC03OS1idXQgaXQgdGFrZXMgYSBmZXcgYXJndW1lbnRzIHNvIGNhbGxpbmcgaXQgZGlyZWN0bHkgZm9yIGVhY2ggZmlsZVxuLS1cbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdD04Mj1ZTkwgbGliXG4tLVxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0LTg2LShiYXNlZCBvbiBsaWJtbmwpIHdoaWNoIGludGVncmF0ZXMgd2l0aCBjb2RlIGdlbmVyYXRlZCBieVxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0Ojg3OmBgdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlgYCB0byBjcmVhdGUgZWFzeSB0byB1c2UgbmV0bGluayB3cmFwcGVycy5cbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC04OC1cbi0tXG50b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZT0xOD1ZTkxfR0VOX0FSR19ldGh0b29sOj0tLXVzZXItaGVhZGVyIGxpbnV4L2V0aHRvb2xfbmV0bGluay5oIFxcXG4tLVxudG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUtMjAtXG50b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZToyMTpUT09MOj0uLi9weXlubC95bmxfZ2VuX2MucHlcbnRvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlLTIyLVRPT0xfUlNUOj0uLi9weXlubC95bmxfZ2VuX3JzdC5weVxuLS1cbnRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoLTMtXG50b29scy9uZXQveW5sL3lubC1yZWdlbi5zaDo0OlRPT0w9JChkaXJuYW1lICQocmVhbHBhdGggJDApKS9weXlubC95bmxfZ2VuX2MucHlcbnRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoLTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxMAoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1GYWxzZTogUmVhc29uaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQuIFRoZSBvdXRwdXQgY2xlYXJseSBpbmRpY2F0ZXMgdGhhdCB0aGUgc2NyaXB0IGB5bmxfZ2VuX2MucHlgIGlzIGJlaW5nIGVtcGxveWVkLiBJdHMgcHVycG9zZT8gSXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGluZyB1c2VyIHNwYWNlIGJpbmRpbmdzLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBpbiBtYW55IHByb2plY3RzLiBUaGUgZ2VuZXJhdGVkIGNvZGUgc3BlY2lmaWNhbGx5IHRhcmdldHMgdXNlcnNwYWNlLCBhcyBldmlkZW5jZWQgYnkgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXQmIzM5O3MgdXBkYXRpbmcgKGB0b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZWApLiBDcnVjaWFsbHksIHRoZXJlJiMzOTtzIG5vIGV2aWRlbmNlIG9mIHRoaXMgcGF0Y2ggdG91Y2hpbmcsIGFsdGVyaW5nLCBvciBnZW5lcmF0aW5nICphbnkqIGtlcm5lbCBjb2RlLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBmdXp6aW5nIHRhcmdldHMga2VybmVsLWxldmVsIGNoYW5nZXMgdG8gZXhwb3NlIHZ1bG5lcmFiaWxpdGllcywgdGhlIGltcGxpY2F0aW9ucyBhcmUgY2xlYXIuIFNpbmNlIHRoZXJlJiMzOTtzIG5vIGtlcm5lbCBjb2RlIGludm9sdmVkIGhlcmUsIHRoZXJlJiMzOTtzIG5vdGhpbmcgZm9yIGZ1enplcnMgdG8gZGlyZWN0bHkgZXhwbG9pdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJIHdpbGwgY29uZmlkZW50bHkgYW5kIGFwcHJvcHJpYXRlbHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBzaW1wbHkgbm90IGFwcGxpY2FibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIHB5dGhvbiBzY3JpcHQgKGB5bmxfZ2VuX2MucHlgKSB1c2VkIHRvIGdlbmVyYXRlIEMgY29kZSBmb3IgdXNlcnNwYWNlIFlOTCAoWUFNTCBOZXRsaW5rKSBiaW5kaW5ncy4gSXQgYWRkcyBudWxsIHBvaW50ZXIgY2hlY2tzIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGdlbmVyYXRlZCB1c2Vyc3BhY2UgY29kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGtlcm5lbCBleGVjdXRpb24gZmxvdyBvciBrZXJuZWwgYmluYXJpZXMsIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgcHl0aG9uIHNjcmlwdCAoYHlubF9nZW5fYy5weWApIHVzZWQgdG8gZ2VuZXJhdGUgQyBjb2RlIGZvciB1c2Vyc3BhY2UgWU5MIChZQU1MIE5ldGxpbmspIGJpbmRpbmdzLiBJdCBhZGRzIG51bGwgcG9pbnRlciBjaGVja3MgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyBpbiB0aGUgZ2VuZXJhdGVkIHVzZXJzcGFjZSBjb2RlLiBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUga2VybmVsIGV4ZWN1dGlvbiBmbG93IG9yIGtlcm5lbCBiaW5hcmllcywgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6Mzg6NTEuMTk5ODUzNTgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5OTUxNzg2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIHB5dGhvbiBzY3JpcHQgKGB5bmxfZ2VuX2MucHlgKSB1c2VkIHRvIGdlbmVyYXRlIEMgY29kZSBmb3IgdXNlcnNwYWNlIFlOTCAoWUFNTCBOZXRsaW5rKSBiaW5kaW5ncy4gSXQgYWRkcyBudWxsIHBvaW50ZXIgY2hlY2tzIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGdlbmVyYXRlZCB1c2Vyc3BhY2UgY29kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGtlcm5lbCBleGVjdXRpb24gZmxvdyBvciBrZXJuZWwgYmluYXJpZXMsIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM4OjUxLjE5OTg1OTA5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5OTM1NTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGExMWFiNDc5YjhhMjA1YTFjMWQ2MjFlNjY4OGY1MDI4N2UxNjdiZDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgNyAyMDozODo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuaW5kZXggY2RjMzY0NmYyNjQyYy4uMmIzNDgzZGIxYjYwYyAxMDA3NTVcXG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxcbisrKyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuQEAgLTUyNiw4ICs1MjYsMTAgQEAgY2xhc3MgVHlwZVN0cmluZyhUeXBlKTpcXG4gXFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVxcdTAwM2VfbGVuLicgKyBzZWxmLmNfbmFtZVxcbi0gICAgICAgIHJldHVybiBbZlxcXCJ7bGVuX21lbX0gPSBsZW47XFxcIixcXG4tICAgICAgICAgICAgICAgIGZcXFwie3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuICsgMSk7XFxcIixcXG4rICAgICAgICByZXR1cm4gW2ZcXFwie3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuICsgMSk7XFxcIixcXG4rICAgICAgICAgICAgICAgIGZcXFwiaWYgKCF7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSlcXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInJldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XFxcIixcXG4rICAgICAgICAgICAgICAgIGZcXFwie2xlbl9tZW19ID0gbGVuO1xcXCIsXFxuICAgICAgICAgICAgICAgICBmXFxcIm1lbWNweSh7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgbGVuKTtcXFwiLFxcbiAgICAgICAgICAgICAgICAgZlxcXCJ7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfVtsZW5dID0gMDtcXFwiXSwgXFxcXFxcbiAgICAgICAgICAgICAgICBbJ2xlbiA9IHN0cm5sZW4oeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgeW5sX2F0dHJfZGF0YV9sZW4oYXR0cikpOyddLCBcXFxcXFxuQEAgLTU4Miw4ICs1ODQsMTAgQEAgY2xhc3MgVHlwZUJpbmFyeShUeXBlKTpcXG4gXFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVxcdTAwM2VfbGVuLicgKyBzZWxmLmNfbmFtZVxcbi0gICAgICAgIHJldHVybiBbZlxcXCJ7bGVuX21lbX0gPSBsZW47XFxcIixcXG4tICAgICAgICAgICAgICAgIGZcXFwie3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuKTtcXFwiLFxcbisgICAgICAgIHJldHVybiBbZlxcXCJ7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1xcXCIsXFxuKyAgICAgICAgICAgICAgICBmXFxcImlmICghe3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0pXFxcIixcXG4rICAgICAgICAgICAgICAgIFxcXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1xcXCIsXFxuKyAgICAgICAgICAgICAgICBmXFxcIntsZW5fbWVtfSA9IGxlbjtcXFwiLFxcbiAgICAgICAgICAgICAgICAgZlxcXCJtZW1jcHkoe3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2RhdGEoYXR0ciksIGxlbik7XFxcIl0sIFxcXFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsnXSwgXFxcXFxcbiAgICAgICAgICAgICAgICBbJ3Vuc2lnbmVkIGludCBsZW47J11cXG5AQCAtNjAxLDExICs2MDUsMTMgQEAgY2xhc3MgVHlwZUJpbmFyeVN0cnVjdChUeXBlQmluYXJ5KTpcXG4gICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6XFxuICAgICAgICAgc3RydWN0X3N6ID0gJ3NpemVvZihzdHJ1Y3QgJyArIGNfbG93ZXIoc2VsZi5nZXQoXFxcInN0cnVjdFxcXCIpKSArICcpJ1xcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVxcdTAwM2VfJyArIHNlbGYucHJlc2VuY2VfdHlwZSgpICsgJy4nICsgc2VsZi5jX25hbWVcXG4tICAgICAgICByZXR1cm4gW2ZcXFwie2xlbl9tZW19ID0gbGVuO1xcXCIsXFxuLSAgICAgICAgICAgICAgICBmXFxcImlmIChsZW4gXFx1MDAzYyB7c3RydWN0X3N6fSlcXFwiLFxcbisgICAgICAgIHJldHVybiBbZlxcXCJpZiAobGVuIFxcdTAwM2Mge3N0cnVjdF9zen0pXFxcIixcXG4gICAgICAgICAgICAgICAgIGZcXFwie3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0gPSBjYWxsb2MoMSwge3N0cnVjdF9zen0pO1xcXCIsXFxuICAgICAgICAgICAgICAgICBcXFwiZWxzZVxcXCIsXFxuICAgICAgICAgICAgICAgICBmXFxcInt2YXJ9LVxcdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7XFxcIixcXG4rICAgICAgICAgICAgICAgIGZcXFwiaWYgKCF7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSlcXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInJldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XFxcIixcXG4rICAgICAgICAgICAgICAgIGZcXFwie2xlbl9tZW19ID0gbGVuO1xcXCIsXFxuICAgICAgICAgICAgICAgICBmXFxcIm1lbWNweSh7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcXFwiXSwgXFxcXFxcbiAgICAgICAgICAgICAgICBbJ2xlbiA9IHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpOyddLCBcXFxcXFxuICAgICAgICAgICAgICAgIFsndW5zaWduZWQgaW50IGxlbjsnXVxcbkBAIC02MzEsOSArNjM3LDExIEBAIGNsYXNzIFR5cGVCaW5hcnlTY2FsYXJBcnJheShUeXBlQmluYXJ5KTpcXG4gXFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVxcdTAwM2VfY291bnQuJyArIHNlbGYuY19uYW1lXFxuLSAgICAgICAgcmV0dXJuIFtmXFxcIntsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1xcXCIsXFxuLSAgICAgICAgICAgICAgICBmXFxcImxlbiA9IHtsZW5fbWVtfSAqIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1xcXCIsXFxuKyAgICAgICAgcmV0dXJuIFtmXFxcImxlbiA9IChsZW4gLyBzaXplb2YoX197c2VsZi5nZXQoJ3N1Yi10eXBlJyl9KSkgKiBzaXplb2YoX197c2VsZi5nZXQoJ3N1Yi10eXBlJyl9KTtcXFwiLFxcbiAgICAgICAgICAgICAgICAgZlxcXCJ7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1xcXCIsXFxuKyAgICAgICAgICAgICAgICBmXFxcImlmICghe3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0pXFxcIixcXG4rICAgICAgICAgICAgICAgIFxcXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1xcXCIsXFxuKyAgICAgICAgICAgICAgICBmXFxcIntsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1xcXCIsXFxuICAgICAgICAgICAgICAgICBmXFxcIm1lbWNweSh7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcXFwiXSwgXFxcXFxcbiAgICAgICAgICAgICAgICBbJ2xlbiA9IHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpOyddLCBcXFxcXFxuICAgICAgICAgICAgICAgIFsndW5zaWduZWQgaW50IGxlbjsnXVxcbkBAIC0yMjI3LDYgKzIyMzUsOCBAQCBkZWYgX211bHRpX3BhcnNlKHJpLCBzdHJ1Y3QsIGluaXRfbGluZXMsIGxvY2FsX3ZhcnMpOlxcbiBcXG4gICAgICAgICByaS5jdy5ibG9ja19zdGFydChsaW5lPWZcXFwiaWYgKG5fe2FzcGVjLmNfbmFtZX0pXFxcIilcXG4gICAgICAgICByaS5jdy5wKGZcXFwiZHN0LVxcdTAwM2V7YXNwZWMuY19uYW1lfSA9IGNhbGxvYyhuX3thc3BlYy5jX25hbWV9LCBzaXplb2YoKmRzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX0pKTtcXFwiKVxcbisgICAgICAgIHJpLmN3LnAoZlxcXCJpZiAoIWRzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX0pXFxcIilcXG4rICAgICAgICByaS5jdy5wKFxcXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1xcXCIpXFxuICAgICAgICAgcmkuY3cucChmXFxcImRzdC1cXHUwMDNlX2NvdW50Lnthc3BlYy5jX25hbWV9ID0gbl97YXNwZWMuY19uYW1lfTtcXFwiKVxcbiAgICAgICAgIHJpLmN3LnAoJ2kgPSAwOycpXFxuICAgICAgICAgaWYgJ25lc3RlZC1hdHRyaWJ1dGVzJyBpbiBhc3BlYzpcXG5AQCAtMjI1Miw2ICsyMjYyLDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcXG4gICAgICAgICBhc3BlYyA9IHN0cnVjdFthcmddXFxuICAgICAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT1mXFxcImlmIChuX3thc3BlYy5jX25hbWV9KVxcXCIpXFxuICAgICAgICAgcmkuY3cucChmXFxcImRzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX0gPSBjYWxsb2Mobl97YXNwZWMuY19uYW1lfSwgc2l6ZW9mKCpkc3QtXFx1MDAzZXthc3BlYy5jX25hbWV9KSk7XFxcIilcXG4rICAgICAgICByaS5jdy5wKGZcXFwiaWYgKCFkc3QtXFx1MDAzZXthc3BlYy5jX25hbWV9KVxcXCIpXFxuKyAgICAgICAgcmkuY3cucChcXFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcXFwiKVxcbiAgICAgICAgIHJpLmN3LnAoZlxcXCJkc3QtXFx1MDAzZV9jb3VudC57YXNwZWMuY19uYW1lfSA9IG5fe2FzcGVjLmNfbmFtZX07XFxcIilcXG4gICAgICAgICByaS5jdy5wKCdpID0gMDsnKVxcbiAgICAgICAgIGlmICduZXN0ZWQtYXR0cmlidXRlcycgaW4gYXNwZWM6XFxuQEAgLTIyNzUsNiArMjI4Nyw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6XFxuICAgICAgICAgICAgIHJpLmN3Lm5sKClcXG4gICAgICAgICAgICAgcmkuY3cucCgnbGVuID0gc3Rybmxlbih5bmxfYXR0cl9nZXRfc3RyKGF0dHIpLCB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKSk7JylcXG4gICAgICAgICAgICAgcmkuY3cucChmJ2RzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX1baV0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB5bmxfc3RyaW5nKSArIGxlbiArIDEpOycpXFxuKyAgICAgICAgICAgIHJpLmN3LnAoZlxcXCJpZiAoIWRzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX1baV0pXFxcIilcXG4rICAgICAgICAgICAgcmkuY3cucChcXFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcXFwiKVxcbiAgICAgICAgICAgICByaS5jdy5wKGZcXFwiZHN0LVxcdTAwM2V7YXNwZWMuY19uYW1lfVtpXS1cXHUwMDNlbGVuID0gbGVuO1xcXCIpXFxuICAgICAgICAgICAgIHJpLmN3LnAoZlxcXCJtZW1jcHkoZHN0LVxcdTAwM2V7YXNwZWMuY19uYW1lfVtpXS1cXHUwMDNlc3RyLCB5bmxfYXR0cl9nZXRfc3RyKGF0dHIpLCBsZW4pO1xcXCIpXFxuICAgICAgICAgICAgIHJpLmN3LnAoZlxcXCJkc3QtXFx1MDAzZXthc3BlYy5jX25hbWV9W2ldLVxcdTAwM2VzdHJbbGVuXSA9IDA7XFxcIilcXG5AQCAtMjQzNCw2ICsyNDQ4LDggQEAgZGVmIHByaW50X3JlcShyaSk6XFxuIFxcbiAgICAgaWYgJ3JlcGx5JyBpbiByaS5vcFtyaS5vcF9tb2RlXTpcXG4gICAgICAgICByaS5jdy5wKCdyc3AgPSBjYWxsb2MoMSwgc2l6ZW9mKCpyc3ApKTsnKVxcbisgICAgICAgIHJpLmN3LnAoJ2lmICghcnNwKScpXFxuKyAgICAgICAgcmkuY3cucChmJ3JldHVybiB7cmV0X2Vycn07JylcXG4gICAgICAgICByaS5jdy5wKCd5cnMueWFyZy5kYXRhID0gcnNwOycpXFxuICAgICAgICAgcmkuY3cucChmXFxcInlycy5jYiA9IHtvcF9wcmVmaXgocmksICdyZXBseScpfV9wYXJzZTtcXFwiKVxcbiAgICAgICAgIGlmIHJpLm9wLnZhbHVlIGlzIG5vdCBOb25lOlxcbkBAIC0yNzQ3LDYgKzI3NjMsOSBAQCBkZWYgcHJpbnRfZHVtcF90eXBlX2ZyZWUocmkpOlxcbiAgICAgcmkuY3cuYmxvY2tfc3RhcnQoKVxcbiAgICAgcmkuY3cucChmXFxcIntzdWJfdHlwZX0gKm5leHQgPSByc3A7XFxcIilcXG4gICAgIHJpLmN3Lm5sKClcXG4rICAgIHJpLmN3LnAoJ2lmICghbmV4dCknKVxcbisgICAgcmkuY3cucCgncmV0dXJuOycpXFxuKyAgICByaS5jdy5ubCgpXFxuICAgICByaS5jdy5ibG9ja19zdGFydChsaW5lPSd3aGlsZSAoKHZvaWQgKiluZXh0ICE9IFlOTF9MSVNUX0VORCknKVxcbiAgICAgX2ZyZWVfdHlwZV9tZW1iZXJzX2l0ZXIocmksIHJpLnN0cnVjdFsncmVwbHknXSlcXG4gICAgIHJpLmN3LnAoJ3JzcCA9IG5leHQ7JylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6Mzg6NTIuMjk5OTYyMjQyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTE4OTUwNTQyNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgcHl0aG9uIHNjcmlwdCAoYHlubF9nZW5fYy5weWApIHVzZWQgdG8gZ2VuZXJhdGUgQyBjb2RlIGZvciB1c2Vyc3BhY2UgWU5MIChZQU1MIE5ldGxpbmspIGJpbmRpbmdzLiBJdCBhZGRzIG51bGwgcG9pbnRlciBjaGVja3MgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyBpbiB0aGUgZ2VuZXJhdGVkIHVzZXJzcGFjZSBjb2RlLiBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUga2VybmVsIGV4ZWN1dGlvbiBmbG93IG9yIGtlcm5lbCBiaW5hcmllcywgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTExYWI0NzliOGEyMDVhMWMxZDYyMWU2Njg4ZjUwMjg3ZTE2N2JkOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjA6Mzg6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG5pbmRleCBjZGMzNjQ2ZjI2NDJjLi4yYjM0ODNkYjFiNjBjIDEwMDc1NVxuLS0tIGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbisrKyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG5AQCAtNTI2LDggKzUyNiwxMCBAQCBjbGFzcyBUeXBlU3RyaW5nKFR5cGUpOlxuIFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxuICAgICAgICAgbGVuX21lbSA9IHZhciArICctXHUwMDNlX2xlbi4nICsgc2VsZi5jX25hbWVcbi0gICAgICAgIHJldHVybiBbZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuLSAgICAgICAgICAgICAgICBmXCJ7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbiArIDEpO1wiLFxuKyAgICAgICAgcmV0dXJuIFtmXCJ7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbiArIDEpO1wiLFxuKyAgICAgICAgICAgICAgICBmXCJpZiAoIXt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0pXCIsXG4rICAgICAgICAgICAgICAgIFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcIixcbisgICAgICAgICAgICAgICAgZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuICAgICAgICAgICAgICAgICBmXCJtZW1jcHkoe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgbGVuKTtcIixcbiAgICAgICAgICAgICAgICAgZlwie3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfVtsZW5dID0gMDtcIl0sIFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSBzdHJubGVuKHlubF9hdHRyX2dldF9zdHIoYXR0ciksIHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpKTsnXSwgXFxcbkBAIC01ODIsOCArNTg0LDEwIEBAIGNsYXNzIFR5cGVCaW5hcnkoVHlwZSk6XG4gXG4gICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6XG4gICAgICAgICBsZW5fbWVtID0gdmFyICsgJy1cdTAwM2VfbGVuLicgKyBzZWxmLmNfbmFtZVxuLSAgICAgICAgcmV0dXJuIFtmXCJ7bGVuX21lbX0gPSBsZW47XCIsXG4tICAgICAgICAgICAgICAgIGZcInt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuKTtcIixcbisgICAgICAgIHJldHVybiBbZlwie3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1wiLFxuKyAgICAgICAgICAgICAgICBmXCJpZiAoIXt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0pXCIsXG4rICAgICAgICAgICAgICAgIFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcIixcbisgICAgICAgICAgICAgICAgZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuICAgICAgICAgICAgICAgICBmXCJtZW1jcHkoe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcIl0sIFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsnXSwgXFxcbiAgICAgICAgICAgICAgICBbJ3Vuc2lnbmVkIGludCBsZW47J11cbkBAIC02MDEsMTEgKzYwNSwxMyBAQCBjbGFzcyBUeXBlQmluYXJ5U3RydWN0KFR5cGVCaW5hcnkpOlxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxuICAgICAgICAgc3RydWN0X3N6ID0gJ3NpemVvZihzdHJ1Y3QgJyArIGNfbG93ZXIoc2VsZi5nZXQoXCJzdHJ1Y3RcIikpICsgJyknXG4gICAgICAgICBsZW5fbWVtID0gdmFyICsgJy1cdTAwM2VfJyArIHNlbGYucHJlc2VuY2VfdHlwZSgpICsgJy4nICsgc2VsZi5jX25hbWVcbi0gICAgICAgIHJldHVybiBbZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuLSAgICAgICAgICAgICAgICBmXCJpZiAobGVuIFx1MDAzYyB7c3RydWN0X3N6fSlcIixcbisgICAgICAgIHJldHVybiBbZlwiaWYgKGxlbiBcdTAwM2Mge3N0cnVjdF9zen0pXCIsXG4gICAgICAgICAgICAgICAgIGZcInt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0gPSBjYWxsb2MoMSwge3N0cnVjdF9zen0pO1wiLFxuICAgICAgICAgICAgICAgICBcImVsc2VcIixcbiAgICAgICAgICAgICAgICAgZlwie3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1wiLFxuKyAgICAgICAgICAgICAgICBmXCJpZiAoIXt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0pXCIsXG4rICAgICAgICAgICAgICAgIFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcIixcbisgICAgICAgICAgICAgICAgZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuICAgICAgICAgICAgICAgICBmXCJtZW1jcHkoe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcIl0sIFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsnXSwgXFxcbiAgICAgICAgICAgICAgICBbJ3Vuc2lnbmVkIGludCBsZW47J11cbkBAIC02MzEsOSArNjM3LDExIEBAIGNsYXNzIFR5cGVCaW5hcnlTY2FsYXJBcnJheShUeXBlQmluYXJ5KTpcbiBcbiAgICAgZGVmIF9hdHRyX2dldChzZWxmLCByaSwgdmFyKTpcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVx1MDAzZV9jb3VudC4nICsgc2VsZi5jX25hbWVcbi0gICAgICAgIHJldHVybiBbZlwie2xlbl9tZW19ID0gbGVuIC8gc2l6ZW9mKF9fe3NlbGYuZ2V0KCdzdWItdHlwZScpfSk7XCIsXG4tICAgICAgICAgICAgICAgIGZcImxlbiA9IHtsZW5fbWVtfSAqIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1wiLFxuKyAgICAgICAgcmV0dXJuIFtmXCJsZW4gPSAobGVuIC8gc2l6ZW9mKF9fe3NlbGYuZ2V0KCdzdWItdHlwZScpfSkpICogc2l6ZW9mKF9fe3NlbGYuZ2V0KCdzdWItdHlwZScpfSk7XCIsXG4gICAgICAgICAgICAgICAgIGZcInt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuKTtcIixcbisgICAgICAgICAgICAgICAgZlwiaWYgKCF7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9KVwiLFxuKyAgICAgICAgICAgICAgICBcInJldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XCIsXG4rICAgICAgICAgICAgICAgIGZcIntsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1wiLFxuICAgICAgICAgICAgICAgICBmXCJtZW1jcHkoe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcIl0sIFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsnXSwgXFxcbiAgICAgICAgICAgICAgICBbJ3Vuc2lnbmVkIGludCBsZW47J11cbkBAIC0yMjI3LDYgKzIyMzUsOCBAQCBkZWYgX211bHRpX3BhcnNlKHJpLCBzdHJ1Y3QsIGluaXRfbGluZXMsIGxvY2FsX3ZhcnMpOlxuIFxuICAgICAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT1mXCJpZiAobl97YXNwZWMuY19uYW1lfSlcIilcbiAgICAgICAgIHJpLmN3LnAoZlwiZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9ID0gY2FsbG9jKG5fe2FzcGVjLmNfbmFtZX0sIHNpemVvZigqZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9KSk7XCIpXG4rICAgICAgICByaS5jdy5wKGZcImlmICghZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9KVwiKVxuKyAgICAgICAgcmkuY3cucChcInJldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XCIpXG4gICAgICAgICByaS5jdy5wKGZcImRzdC1cdTAwM2VfY291bnQue2FzcGVjLmNfbmFtZX0gPSBuX3thc3BlYy5jX25hbWV9O1wiKVxuICAgICAgICAgcmkuY3cucCgnaSA9IDA7JylcbiAgICAgICAgIGlmICduZXN0ZWQtYXR0cmlidXRlcycgaW4gYXNwZWM6XG5AQCAtMjI1Miw2ICsyMjYyLDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcbiAgICAgICAgIGFzcGVjID0gc3RydWN0W2FyZ11cbiAgICAgICAgIHJpLmN3LmJsb2NrX3N0YXJ0KGxpbmU9ZlwiaWYgKG5fe2FzcGVjLmNfbmFtZX0pXCIpXG4gICAgICAgICByaS5jdy5wKGZcImRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSA9IGNhbGxvYyhuX3thc3BlYy5jX25hbWV9LCBzaXplb2YoKmRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSkpO1wiKVxuKyAgICAgICAgcmkuY3cucChmXCJpZiAoIWRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSlcIilcbisgICAgICAgIHJpLmN3LnAoXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wiKVxuICAgICAgICAgcmkuY3cucChmXCJkc3QtXHUwMDNlX2NvdW50Lnthc3BlYy5jX25hbWV9ID0gbl97YXNwZWMuY19uYW1lfTtcIilcbiAgICAgICAgIHJpLmN3LnAoJ2kgPSAwOycpXG4gICAgICAgICBpZiAnbmVzdGVkLWF0dHJpYnV0ZXMnIGluIGFzcGVjOlxuQEAgLTIyNzUsNiArMjI4Nyw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6XG4gICAgICAgICAgICAgcmkuY3cubmwoKVxuICAgICAgICAgICAgIHJpLmN3LnAoJ2xlbiA9IHN0cm5sZW4oeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgeW5sX2F0dHJfZGF0YV9sZW4oYXR0cikpOycpXG4gICAgICAgICAgICAgcmkuY3cucChmJ2RzdC1cdTAwM2V7YXNwZWMuY19uYW1lfVtpXSA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHlubF9zdHJpbmcpICsgbGVuICsgMSk7JylcbisgICAgICAgICAgICByaS5jdy5wKGZcImlmICghZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldKVwiKVxuKyAgICAgICAgICAgIHJpLmN3LnAoXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wiKVxuICAgICAgICAgICAgIHJpLmN3LnAoZlwiZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldLVx1MDAzZWxlbiA9IGxlbjtcIilcbiAgICAgICAgICAgICByaS5jdy5wKGZcIm1lbWNweShkc3QtXHUwMDNle2FzcGVjLmNfbmFtZX1baV0tXHUwMDNlc3RyLCB5bmxfYXR0cl9nZXRfc3RyKGF0dHIpLCBsZW4pO1wiKVxuICAgICAgICAgICAgIHJpLmN3LnAoZlwiZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldLVx1MDAzZXN0cltsZW5dID0gMDtcIilcbkBAIC0yNDM0LDYgKzI0NDgsOCBAQCBkZWYgcHJpbnRfcmVxKHJpKTpcbiBcbiAgICAgaWYgJ3JlcGx5JyBpbiByaS5vcFtyaS5vcF9tb2RlXTpcbiAgICAgICAgIHJpLmN3LnAoJ3JzcCA9IGNhbGxvYygxLCBzaXplb2YoKnJzcCkpOycpXG4rICAgICAgICByaS5jdy5wKCdpZiAoIXJzcCknKVxuKyAgICAgICAgcmkuY3cucChmJ3JldHVybiB7cmV0X2Vycn07JylcbiAgICAgICAgIHJpLmN3LnAoJ3lycy55YXJnLmRhdGEgPSByc3A7JylcbiAgICAgICAgIHJpLmN3LnAoZlwieXJzLmNiID0ge29wX3ByZWZpeChyaSwgJ3JlcGx5Jyl9X3BhcnNlO1wiKVxuICAgICAgICAgaWYgcmkub3AudmFsdWUgaXMgbm90IE5vbmU6XG5AQCAtMjc0Nyw2ICsyNzYzLDkgQEAgZGVmIHByaW50X2R1bXBfdHlwZV9mcmVlKHJpKTpcbiAgICAgcmkuY3cuYmxvY2tfc3RhcnQoKVxuICAgICByaS5jdy5wKGZcIntzdWJfdHlwZX0gKm5leHQgPSByc3A7XCIpXG4gICAgIHJpLmN3Lm5sKClcbisgICAgcmkuY3cucCgnaWYgKCFuZXh0KScpXG4rICAgIHJpLmN3LnAoJ3JldHVybjsnKVxuKyAgICByaS5jdy5ubCgpXG4gICAgIHJpLmN3LmJsb2NrX3N0YXJ0KGxpbmU9J3doaWxlICgodm9pZCAqKW5leHQgIT0gWU5MX0xJU1RfRU5EKScpXG4gICAgIF9mcmVlX3R5cGVfbWVtYmVyc19pdGVyKHJpLCByaS5zdHJ1Y3RbJ3JlcGx5J10pXG4gICAgIHJpLmN3LnAoJ3JzcCA9IG5leHQ7JylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM4OjUyLjI5OTk2MzQ5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjM0NTg5ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgWU5MIENvZGUgR2VuZXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyB0aGUgUHl0aG9uIHNjcmlwdCB0aGF0IGdlbmVyYXRlcyBDIGNvZGUgZm9yIHRob3NlIFlOTCAoWUFNTCBOZXRsaW5rKSB0b29scy4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgY2hlY2tzIGZvciBgbWFsbG9jYC9gY2FsbG9jYCByZXR1cm4gdmFsdWVzIGluIHRoZSBnZW5lcmF0ZWQgQy4gTWFrZXMgc2Vuc2U7IGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBlc3BlY2lhbGx5IGluIEMuXG5cbk15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZS4gSXTigJlzIGxvY2FsaXplZCB3aXRoaW4gYHRvb2xzL2AsIGl0J3MganVzdCBjb2RlIGdlbmVyYXRpb24sIG5vdCBjb3JlIGtlcm5lbCBsb2dpYy4gVGhhdCBtZWFucyBpdCBzaG91bGRuJ3QgYmUgYSBmdXp6aW5nIHRhcmdldC4gQnV0IHdhaXQsIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYXNzdW1wdGlvbi4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhlc2UgYXNzZXNzbWVudHMuIEFtIEkgY29ycmVjdCBpbiBhc3N1bWluZyB0aGF0IGNvZGUgaW4gYHRvb2xzL2AgaXMgKmV4Y2x1ZGVkKiBmcm9tIG91ciBmdXp6aW5nIGVmZm9ydHM/IFRoZSB1c3VhbCBmb2N1cyBvZiBmdXp6aW5nIGlzIHRoZSBrZXJuZWwgaXRzZWxmLiBDaGFuZ2VzIHRoYXQgcmVzaWRlIGluIGB0b29scy9gLCBsaWtlIHBlcmYsIGJwZiwgb3IgbmV0L3lubCwgZ2VuZXJhbGx5IGRvbid0IGRpcmVjdGx5IGltcGFjdCB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cgb3IgdGhlIHJlc3VsdGluZyBrZXJuZWwgYmluYXJpZXMsIHVubGVzc+KApiB1bmxlc3MgdGhleSBnZW5lcmF0ZSBjb2RlIHRoYXQgZW5kcyB1cCBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwuXG5cbk5vdywgdGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24sIGlzbid0IGl0PyBEb2VzIGB5bmxfZ2VuX2MucHlgIGdlbmVyYXRlIGNvZGUgdGhhdCdzIGV2ZW50dWFsbHkgY29tcGlsZWQgKmludG8qIHRoZSBrZXJuZWw/IEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgc2NyaXB0IGlzIHVzZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaW1lIHRvIGludmVzdGlnYXRlIGl0cyB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkxNCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM4OjU4LjMyMzQyNTI2NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg2NTkyMjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInlubF9nZW5fYy5weVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdD02NT1UaGlzIFlBTUwgaXMgdXNlZCB0byBhdXRvLWdlbmVyYXRlIHVzZXIgc3BhY2UgYmluZGluZ3MgdmlhXFxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3Q6NjY6YGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWBgLCBhbmQgZHJpdmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbmV0bGlua1xcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0LTY3LWF0dHJpYnV0ZXMgYW5kIG9wZXJhdGlvbnMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0bGluay9pbnRyby1zcGVjcy5yc3Q9NzY9dG8gc2VlIG90aGVyIGV4YW1wbGVzLlxcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC03Ny1cXG5Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0bGluay9pbnRyby1zcGVjcy5yc3Q6Nzg6VGhlIGNvZGUgZ2VuZXJhdGlvbiBpdHNlbGYgaXMgcGVyZm9ybWVkIGJ5IGBgdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlgYFxcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC03OS1idXQgaXQgdGFrZXMgYSBmZXcgYXJndW1lbnRzIHNvIGNhbGxpbmcgaXQgZGlyZWN0bHkgZm9yIGVhY2ggZmlsZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0PTgyPVlOTCBsaWJcXG4tLVxcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC04Ni0oYmFzZWQgb24gbGlibW5sKSB3aGljaCBpbnRlZ3JhdGVzIHdpdGggY29kZSBnZW5lcmF0ZWQgYnlcXG5Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0bGluay9pbnRyby1zcGVjcy5yc3Q6ODc6YGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWBgIHRvIGNyZWF0ZSBlYXN5IHRvIHVzZSBuZXRsaW5rIHdyYXBwZXJzLlxcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC04OC1cXG4tLVxcbnRvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlPTE4PVlOTF9HRU5fQVJHX2V0aHRvb2w6PS0tdXNlci1oZWFkZXIgbGludXgvZXRodG9vbF9uZXRsaW5rLmggXFxcXFxcbi0tXFxudG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUtMjAtXFxudG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGU6MjE6VE9PTDo9Li4vcHl5bmwveW5sX2dlbl9jLnB5XFxudG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUtMjItVE9PTF9SU1Q6PS4uL3B5eW5sL3lubF9nZW5fcnN0LnB5XFxuLS1cXG50b29scy9uZXQveW5sL3lubC1yZWdlbi5zaC0zLVxcbnRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoOjQ6VE9PTD0kKGRpcm5hbWUgJChyZWFscGF0aCAkMCkpL3B5eW5sL3lubF9nZW5fYy5weVxcbnRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoLTUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM5OjAwLjIxMDAyNTA4N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODQ5NTkwMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBSZWFzb25pbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJ3MgbXkgYXNzZXNzbWVudC4gVGhlIG91dHB1dCBjbGVhcmx5IGluZGljYXRlcyB0aGF0IHRoZSBzY3JpcHQgYHlubF9nZW5fYy5weWAgaXMgYmVpbmcgZW1wbG95ZWQuIEl0cyBwdXJwb3NlPyBJdCdzIHJlc3BvbnNpYmxlIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgdXNlciBzcGFjZSBiaW5kaW5ncywgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgaW4gbWFueSBwcm9qZWN0cy4gVGhlIGdlbmVyYXRlZCBjb2RlIHNwZWNpZmljYWxseSB0YXJnZXRzIHVzZXJzcGFjZSwgYXMgZXZpZGVuY2VkIGJ5IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGl0J3MgdXBkYXRpbmcgKGB0b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZWApLiBDcnVjaWFsbHksIHRoZXJlJ3Mgbm8gZXZpZGVuY2Ugb2YgdGhpcyBwYXRjaCB0b3VjaGluZywgYWx0ZXJpbmcsIG9yIGdlbmVyYXRpbmcgKmFueSoga2VybmVsIGNvZGUuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGZ1enppbmcgdGFyZ2V0cyBrZXJuZWwtbGV2ZWwgY2hhbmdlcyB0byBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLCB0aGUgaW1wbGljYXRpb25zIGFyZSBjbGVhci4gU2luY2UgdGhlcmUncyBubyBrZXJuZWwgY29kZSBpbnZvbHZlZCBoZXJlLCB0aGVyZSdzIG5vdGhpbmcgZm9yIGZ1enplcnMgdG8gZGlyZWN0bHkgZXhwbG9pdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJIHdpbGwgY29uZmlkZW50bHkgYW5kIGFwcHJvcHJpYXRlbHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCdzIHNpbXBseSBub3QgYXBwbGljYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAxMCwiT3V0cHV0VG9rZW5zIjo5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM5OjA0LjE5NDk4ODM3OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBweXRob24gc2NyaXB0IChgeW5sX2dlbl9jLnB5YCkgdXNlZCB0byBnZW5lcmF0ZSBDIGNvZGUgZm9yIHVzZXJzcGFjZSBZTkwgKFlBTUwgTmV0bGluaykgYmluZGluZ3MuIEl0IGFkZHMgbnVsbCBwb2ludGVyIGNoZWNrcyBmb3IgbWVtb3J5IGFsbG9jYXRpb25zIGluIHRoZSBnZW5lcmF0ZWQgdXNlcnNwYWNlIGNvZGUuIFRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBrZXJuZWwgZXhlY3V0aW9uIGZsb3cgb3Iga2VybmVsIGJpbmFyaWVzLCBzbyBpdCBkb2VzIG5vdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIHB5dGhvbiBzY3JpcHQgKGB5bmxfZ2VuX2MucHlgKSB1c2VkIHRvIGdlbmVyYXRlIEMgY29kZSBmb3IgdXNlcnNwYWNlIFlOTCAoWUFNTCBOZXRsaW5rKSBiaW5kaW5ncy4gSXQgYWRkcyBudWxsIHBvaW50ZXIgY2hlY2tzIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGdlbmVyYXRlZCB1c2Vyc3BhY2UgY29kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGtlcm5lbCBleGVjdXRpb24gZmxvdyBvciBrZXJuZWwgYmluYXJpZXMsIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM5OjA0LjE5NTAxODU4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow265fx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 19:54:17 +0000 UTC FinishedAt: 2026-08-07 20:39:05 +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+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYSBweXRob24gc2NyaXB0IChgeW5sX2dlbl9jLnB5YCkgdXNlZCB0byBnZW5lcmF0ZSBDIGNvZGUgZm9yIHVzZXJzcGFjZSBZTkwgKFlBTUwgTmV0bGluaykgYmluZGluZ3MuIEl0IGFkZHMgbnVsbCBwb2ludGVyIGNoZWNrcyBmb3IgbWVtb3J5IGFsbG9jYXRpb25zIGluIHRoZSBnZW5lcmF0ZWQgdXNlcnNwYWNlIGNvZGUuIFRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBrZXJuZWwgZXhlY3V0aW9uIGZsb3cgb3Iga2VybmVsIGJpbmFyaWVzLCBzbyBpdCBkb2VzIG5vdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTExYWI0NzliOGEyMDVhMWMxZDYyMWU2Njg4ZjUwMjg3ZTE2N2JkOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjA6Mzg6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkgYi90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuaW5kZXggY2RjMzY0NmYyNjQyYy4uMmIzNDgzZGIxYjYwYyAxMDA3NTVcbi0tLSBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxuQEAgLTUyNiw4ICYjNDM7NTI2LDEwIEBAIGNsYXNzIFR5cGVTdHJpbmcoVHlwZSk6XG4gXG4gICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6XG4gICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LVx1MDAzZV9sZW4uJiMzOTsgJiM0Mzsgc2VsZi5jX25hbWVcbi0gICAgICAgIHJldHVybiBbZlwmIzM0O3tsZW5fbWVtfSA9IGxlbjtcJiMzNDssXG4tICAgICAgICAgICAgICAgIGZcJiMzNDt7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbiAmIzQzOyAxKTtcJiMzNDssXG4mIzQzOyAgICAgICAgcmV0dXJuIFtmXCYjMzQ7e3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4gJiM0MzsgMSk7XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgZlwmIzM0O2lmICghe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSlcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIGZcJiMzNDt7bGVuX21lbX0gPSBsZW47XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7bWVtY3B5KHt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2dldF9zdHIoYXR0ciksIGxlbik7XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7e3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfVtsZW5dID0gMDtcJiMzNDtdLCBcXFxuICAgICAgICAgICAgICAgIFsmIzM5O2xlbiA9IHN0cm5sZW4oeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgeW5sX2F0dHJfZGF0YV9sZW4oYXR0cikpOyYjMzk7XSwgXFxcbkBAIC01ODIsOCAmIzQzOzU4NCwxMCBAQCBjbGFzcyBUeXBlQmluYXJ5KFR5cGUpOlxuIFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxuICAgICAgICAgbGVuX21lbSA9IHZhciAmIzQzOyAmIzM5Oy1cdTAwM2VfbGVuLiYjMzk7ICYjNDM7IHNlbGYuY19uYW1lXG4tICAgICAgICByZXR1cm4gW2ZcJiMzNDt7bGVuX21lbX0gPSBsZW47XCYjMzQ7LFxuLSAgICAgICAgICAgICAgICBmXCYjMzQ7e3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1wmIzM0OyxcbiYjNDM7ICAgICAgICByZXR1cm4gW2ZcJiMzNDt7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgZlwmIzM0O2lmICghe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSlcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIGZcJiMzNDt7bGVuX21lbX0gPSBsZW47XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7bWVtY3B5KHt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2RhdGEoYXR0ciksIGxlbik7XCYjMzQ7XSwgXFxcbiAgICAgICAgICAgICAgICBbJiMzOTtsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsmIzM5O10sIFxcXG4gICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O11cbkBAIC02MDEsMTEgJiM0Mzs2MDUsMTMgQEAgY2xhc3MgVHlwZUJpbmFyeVN0cnVjdChUeXBlQmluYXJ5KTpcbiAgICAgZGVmIF9hdHRyX2dldChzZWxmLCByaSwgdmFyKTpcbiAgICAgICAgIHN0cnVjdF9zeiA9ICYjMzk7c2l6ZW9mKHN0cnVjdCAmIzM5OyAmIzQzOyBjX2xvd2VyKHNlbGYuZ2V0KFwmIzM0O3N0cnVjdFwmIzM0OykpICYjNDM7ICYjMzk7KSYjMzk7XG4gICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LVx1MDAzZV8mIzM5OyAmIzQzOyBzZWxmLnByZXNlbmNlX3R5cGUoKSAmIzQzOyAmIzM5Oy4mIzM5OyAmIzQzOyBzZWxmLmNfbmFtZVxuLSAgICAgICAgcmV0dXJuIFtmXCYjMzQ7e2xlbl9tZW19ID0gbGVuO1wmIzM0Oyxcbi0gICAgICAgICAgICAgICAgZlwmIzM0O2lmIChsZW4gXHUwMDNjIHtzdHJ1Y3Rfc3p9KVwmIzM0OyxcbiYjNDM7ICAgICAgICByZXR1cm4gW2ZcJiMzNDtpZiAobGVuIFx1MDAzYyB7c3RydWN0X3N6fSlcJiMzNDssXG4gICAgICAgICAgICAgICAgIGZcJiMzNDt7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gY2FsbG9jKDEsIHtzdHJ1Y3Rfc3p9KTtcJiMzNDssXG4gICAgICAgICAgICAgICAgIFwmIzM0O2Vsc2VcJiMzNDssXG4gICAgICAgICAgICAgICAgIGZcJiMzNDt7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgZlwmIzM0O2lmICghe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSlcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIGZcJiMzNDt7bGVuX21lbX0gPSBsZW47XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7bWVtY3B5KHt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2RhdGEoYXR0ciksIGxlbik7XCYjMzQ7XSwgXFxcbiAgICAgICAgICAgICAgICBbJiMzOTtsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsmIzM5O10sIFxcXG4gICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O11cbkBAIC02MzEsOSAmIzQzOzYzNywxMSBAQCBjbGFzcyBUeXBlQmluYXJ5U2NhbGFyQXJyYXkoVHlwZUJpbmFyeSk6XG4gXG4gICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6XG4gICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LVx1MDAzZV9jb3VudC4mIzM5OyAmIzQzOyBzZWxmLmNfbmFtZVxuLSAgICAgICAgcmV0dXJuIFtmXCYjMzQ7e2xlbl9tZW19ID0gbGVuIC8gc2l6ZW9mKF9fe3NlbGYuZ2V0KCYjMzk7c3ViLXR5cGUmIzM5Oyl9KTtcJiMzNDssXG4tICAgICAgICAgICAgICAgIGZcJiMzNDtsZW4gPSB7bGVuX21lbX0gKiBzaXplb2YoX197c2VsZi5nZXQoJiMzOTtzdWItdHlwZSYjMzk7KX0pO1wmIzM0OyxcbiYjNDM7ICAgICAgICByZXR1cm4gW2ZcJiMzNDtsZW4gPSAobGVuIC8gc2l6ZW9mKF9fe3NlbGYuZ2V0KCYjMzk7c3ViLXR5cGUmIzM5Oyl9KSkgKiBzaXplb2YoX197c2VsZi5nZXQoJiMzOTtzdWItdHlwZSYjMzk7KX0pO1wmIzM0OyxcbiAgICAgICAgICAgICAgICAgZlwmIzM0O3t2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuKTtcJiMzNDssXG4mIzQzOyAgICAgICAgICAgICAgICBmXCYjMzQ7aWYgKCF7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9KVwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgICAgIFwmIzM0O3JldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICAgICAgZlwmIzM0O3tsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgmIzM5O3N1Yi10eXBlJiMzOTspfSk7XCYjMzQ7LFxuICAgICAgICAgICAgICAgICBmXCYjMzQ7bWVtY3B5KHt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2RhdGEoYXR0ciksIGxlbik7XCYjMzQ7XSwgXFxcbiAgICAgICAgICAgICAgICBbJiMzOTtsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsmIzM5O10sIFxcXG4gICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O11cbkBAIC0yMjI3LDYgJiM0MzsyMjM1LDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcbiBcbiAgICAgICAgIHJpLmN3LmJsb2NrX3N0YXJ0KGxpbmU9ZlwmIzM0O2lmIChuX3thc3BlYy5jX25hbWV9KVwmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSA9IGNhbGxvYyhuX3thc3BlYy5jX25hbWV9LCBzaXplb2YoKmRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSkpO1wmIzM0OylcbiYjNDM7ICAgICAgICByaS5jdy5wKGZcJiMzNDtpZiAoIWRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSlcJiMzNDspXG4mIzQzOyAgICAgICAgcmkuY3cucChcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2VfY291bnQue2FzcGVjLmNfbmFtZX0gPSBuX3thc3BlYy5jX25hbWV9O1wmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoJiMzOTtpID0gMDsmIzM5OylcbiAgICAgICAgIGlmICYjMzk7bmVzdGVkLWF0dHJpYnV0ZXMmIzM5OyBpbiBhc3BlYzpcbkBAIC0yMjUyLDYgJiM0MzsyMjYyLDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcbiAgICAgICAgIGFzcGVjID0gc3RydWN0W2FyZ11cbiAgICAgICAgIHJpLmN3LmJsb2NrX3N0YXJ0KGxpbmU9ZlwmIzM0O2lmIChuX3thc3BlYy5jX25hbWV9KVwmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSA9IGNhbGxvYyhuX3thc3BlYy5jX25hbWV9LCBzaXplb2YoKmRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSkpO1wmIzM0OylcbiYjNDM7ICAgICAgICByaS5jdy5wKGZcJiMzNDtpZiAoIWRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSlcJiMzNDspXG4mIzQzOyAgICAgICAgcmkuY3cucChcJiMzNDtyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2VfY291bnQue2FzcGVjLmNfbmFtZX0gPSBuX3thc3BlYy5jX25hbWV9O1wmIzM0OylcbiAgICAgICAgIHJpLmN3LnAoJiMzOTtpID0gMDsmIzM5OylcbiAgICAgICAgIGlmICYjMzk7bmVzdGVkLWF0dHJpYnV0ZXMmIzM5OyBpbiBhc3BlYzpcbkBAIC0yMjc1LDYgJiM0MzsyMjg3LDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcbiAgICAgICAgICAgICByaS5jdy5ubCgpXG4gICAgICAgICAgICAgcmkuY3cucCgmIzM5O2xlbiA9IHN0cm5sZW4oeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgeW5sX2F0dHJfZGF0YV9sZW4oYXR0cikpOyYjMzk7KVxuICAgICAgICAgICAgIHJpLmN3LnAoZiYjMzk7ZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgeW5sX3N0cmluZykgJiM0MzsgbGVuICYjNDM7IDEpOyYjMzk7KVxuJiM0MzsgICAgICAgICAgICByaS5jdy5wKGZcJiMzNDtpZiAoIWRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfVtpXSlcJiMzNDspXG4mIzQzOyAgICAgICAgICAgIHJpLmN3LnAoXCYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcJiMzNDspXG4gICAgICAgICAgICAgcmkuY3cucChmXCYjMzQ7ZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldLVx1MDAzZWxlbiA9IGxlbjtcJiMzNDspXG4gICAgICAgICAgICAgcmkuY3cucChmXCYjMzQ7bWVtY3B5KGRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfVtpXS1cdTAwM2VzdHIsIHlubF9hdHRyX2dldF9zdHIoYXR0ciksIGxlbik7XCYjMzQ7KVxuICAgICAgICAgICAgIHJpLmN3LnAoZlwmIzM0O2RzdC1cdTAwM2V7YXNwZWMuY19uYW1lfVtpXS1cdTAwM2VzdHJbbGVuXSA9IDA7XCYjMzQ7KVxuQEAgLTI0MzQsNiAmIzQzOzI0NDgsOCBAQCBkZWYgcHJpbnRfcmVxKHJpKTpcbiBcbiAgICAgaWYgJiMzOTtyZXBseSYjMzk7IGluIHJpLm9wW3JpLm9wX21vZGVdOlxuICAgICAgICAgcmkuY3cucCgmIzM5O3JzcCA9IGNhbGxvYygxLCBzaXplb2YoKnJzcCkpOyYjMzk7KVxuJiM0MzsgICAgICAgIHJpLmN3LnAoJiMzOTtpZiAoIXJzcCkmIzM5OylcbiYjNDM7ICAgICAgICByaS5jdy5wKGYmIzM5O3JldHVybiB7cmV0X2Vycn07JiMzOTspXG4gICAgICAgICByaS5jdy5wKCYjMzk7eXJzLnlhcmcuZGF0YSA9IHJzcDsmIzM5OylcbiAgICAgICAgIHJpLmN3LnAoZlwmIzM0O3lycy5jYiA9IHtvcF9wcmVmaXgocmksICYjMzk7cmVwbHkmIzM5Oyl9X3BhcnNlO1wmIzM0OylcbiAgICAgICAgIGlmIHJpLm9wLnZhbHVlIGlzIG5vdCBOb25lOlxuQEAgLTI3NDcsNiAmIzQzOzI3NjMsOSBAQCBkZWYgcHJpbnRfZHVtcF90eXBlX2ZyZWUocmkpOlxuICAgICByaS5jdy5ibG9ja19zdGFydCgpXG4gICAgIHJpLmN3LnAoZlwmIzM0O3tzdWJfdHlwZX0gKm5leHQgPSByc3A7XCYjMzQ7KVxuICAgICByaS5jdy5ubCgpXG4mIzQzOyAgICByaS5jdy5wKCYjMzk7aWYgKCFuZXh0KSYjMzk7KVxuJiM0MzsgICAgcmkuY3cucCgmIzM5O3JldHVybjsmIzM5OylcbiYjNDM7ICAgIHJpLmN3Lm5sKClcbiAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT0mIzM5O3doaWxlICgodm9pZCAqKW5leHQgIT0gWU5MX0xJU1RfRU5EKSYjMzk7KVxuICAgICBfZnJlZV90eXBlX21lbWJlcnNfaXRlcihyaSwgcmkuc3RydWN0WyYjMzk7cmVwbHkmIzM5O10pXG4gICAgIHJpLmN3LnAoJiMzOTtyc3AgPSBuZXh0OyYjMzk7KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIwOjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIHB5dGhvbiBzY3JpcHQgKGB5bmxfZ2VuX2MucHlgKSB1c2VkIHRvIGdlbmVyYXRlIEMgY29kZSBmb3IgdXNlcnNwYWNlIFlOTCAoWUFNTCBOZXRsaW5rKSBiaW5kaW5ncy4gSXQgYWRkcyBudWxsIHBvaW50ZXIgY2hlY2tzIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGdlbmVyYXRlZCB1c2Vyc3BhY2UgY29kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGtlcm5lbCBleGVjdXRpb24gZmxvdyBvciBrZXJuZWwgYmluYXJpZXMsIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMTFhYjQ3OWI4YTIwNWExYzFkNjIxZTY2ODhmNTAyODdlMTY3YmQ4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAyMDozODo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkKaW5kZXggY2RjMzY0NmYyNjQyYy4uMmIzNDgzZGIxYjYwYyAxMDA3NTUKLS0tIGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHkKQEAgLTUyNiw4ICYjNDM7NTI2LDEwIEBAIGNsYXNzIFR5cGVTdHJpbmcoVHlwZSk6CiAKICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOgogICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LSZndDtfbGVuLiYjMzk7ICYjNDM7IHNlbGYuY19uYW1lCi0gICAgICAgIHJldHVybiBbZiYjMzQ7e2xlbl9tZW19ID0gbGVuOyYjMzQ7LAotICAgICAgICAgICAgICAgIGYmIzM0O3t2YXJ9LSZndDt7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbiAmIzQzOyAxKTsmIzM0OywKJiM0MzsgICAgICAgIHJldHVybiBbZiYjMzQ7e3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuICYjNDM7IDEpOyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICBmJiMzNDtpZiAoIXt2YXJ9LSZndDt7c2VsZi5jX25hbWV9KSYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3JldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7JiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIGYmIzM0O3tsZW5fbWVtfSA9IGxlbjsmIzM0OywKICAgICAgICAgICAgICAgICBmJiMzNDttZW1jcHkoe3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2dldF9zdHIoYXR0ciksIGxlbik7JiMzNDssCiAgICAgICAgICAgICAgICAgZiYjMzQ7e3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX1bbGVuXSA9IDA7JiMzNDtdLCBcCiAgICAgICAgICAgICAgICBbJiMzOTtsZW4gPSBzdHJubGVuKHlubF9hdHRyX2dldF9zdHIoYXR0ciksIHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpKTsmIzM5O10sIFwKQEAgLTU4Miw4ICYjNDM7NTg0LDEwIEBAIGNsYXNzIFR5cGVCaW5hcnkoVHlwZSk6CiAKICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOgogICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LSZndDtfbGVuLiYjMzk7ICYjNDM7IHNlbGYuY19uYW1lCi0gICAgICAgIHJldHVybiBbZiYjMzQ7e2xlbl9tZW19ID0gbGVuOyYjMzQ7LAotICAgICAgICAgICAgICAgIGYmIzM0O3t2YXJ9LSZndDt7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7JiMzNDssCiYjNDM7ICAgICAgICByZXR1cm4gW2YmIzM0O3t2YXJ9LSZndDt7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7JiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIGYmIzM0O2lmICghe3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0pJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjsmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgZiYjMzQ7e2xlbl9tZW19ID0gbGVuOyYjMzQ7LAogICAgICAgICAgICAgICAgIGYmIzM0O21lbWNweSh7dmFyfS0mZ3Q7e3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTsmIzM0O10sIFwKICAgICAgICAgICAgICAgIFsmIzM5O2xlbiA9IHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpOyYjMzk7XSwgXAogICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O10KQEAgLTYwMSwxMSAmIzQzOzYwNSwxMyBAQCBjbGFzcyBUeXBlQmluYXJ5U3RydWN0KFR5cGVCaW5hcnkpOgogICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6CiAgICAgICAgIHN0cnVjdF9zeiA9ICYjMzk7c2l6ZW9mKHN0cnVjdCAmIzM5OyAmIzQzOyBjX2xvd2VyKHNlbGYuZ2V0KCYjMzQ7c3RydWN0JiMzNDspKSAmIzQzOyAmIzM5OykmIzM5OwogICAgICAgICBsZW5fbWVtID0gdmFyICYjNDM7ICYjMzk7LSZndDtfJiMzOTsgJiM0Mzsgc2VsZi5wcmVzZW5jZV90eXBlKCkgJiM0MzsgJiMzOTsuJiMzOTsgJiM0Mzsgc2VsZi5jX25hbWUKLSAgICAgICAgcmV0dXJuIFtmJiMzNDt7bGVuX21lbX0gPSBsZW47JiMzNDssCi0gICAgICAgICAgICAgICAgZiYjMzQ7aWYgKGxlbiAmbHQ7IHtzdHJ1Y3Rfc3p9KSYjMzQ7LAomIzQzOyAgICAgICAgcmV0dXJuIFtmJiMzNDtpZiAobGVuICZsdDsge3N0cnVjdF9zen0pJiMzNDssCiAgICAgICAgICAgICAgICAgZiYjMzQ7e3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0gPSBjYWxsb2MoMSwge3N0cnVjdF9zen0pOyYjMzQ7LAogICAgICAgICAgICAgICAgICYjMzQ7ZWxzZSYjMzQ7LAogICAgICAgICAgICAgICAgIGYmIzM0O3t2YXJ9LSZndDt7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7JiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIGYmIzM0O2lmICghe3Zhcn0tJmd0O3tzZWxmLmNfbmFtZX0pJiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgICYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjsmIzM0OywKJiM0MzsgICAgICAgICAgICAgICAgZiYjMzQ7e2xlbl9tZW19ID0gbGVuOyYjMzQ7LAogICAgICAgICAgICAgICAgIGYmIzM0O21lbWNweSh7dmFyfS0mZ3Q7e3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTsmIzM0O10sIFwKICAgICAgICAgICAgICAgIFsmIzM5O2xlbiA9IHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpOyYjMzk7XSwgXAogICAgICAgICAgICAgICAgWyYjMzk7dW5zaWduZWQgaW50IGxlbjsmIzM5O10KQEAgLTYzMSw5ICYjNDM7NjM3LDExIEBAIGNsYXNzIFR5cGVCaW5hcnlTY2FsYXJBcnJheShUeXBlQmluYXJ5KToKIAogICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6CiAgICAgICAgIGxlbl9tZW0gPSB2YXIgJiM0MzsgJiMzOTstJmd0O19jb3VudC4mIzM5OyAmIzQzOyBzZWxmLmNfbmFtZQotICAgICAgICByZXR1cm4gW2YmIzM0O3tsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgmIzM5O3N1Yi10eXBlJiMzOTspfSk7JiMzNDssCi0gICAgICAgICAgICAgICAgZiYjMzQ7bGVuID0ge2xlbl9tZW19ICogc2l6ZW9mKF9fe3NlbGYuZ2V0KCYjMzk7c3ViLXR5cGUmIzM5Oyl9KTsmIzM0OywKJiM0MzsgICAgICAgIHJldHVybiBbZiYjMzQ7bGVuID0gKGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgmIzM5O3N1Yi10eXBlJiMzOTspfSkpICogc2l6ZW9mKF9fe3NlbGYuZ2V0KCYjMzk7c3ViLXR5cGUmIzM5Oyl9KTsmIzM0OywKICAgICAgICAgICAgICAgICBmJiMzNDt7dmFyfS0mZ3Q7e3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pOyYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICBmJiMzNDtpZiAoIXt2YXJ9LSZndDt7c2VsZi5jX25hbWV9KSYjMzQ7LAomIzQzOyAgICAgICAgICAgICAgICAmIzM0O3JldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7JiMzNDssCiYjNDM7ICAgICAgICAgICAgICAgIGYmIzM0O3tsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgmIzM5O3N1Yi10eXBlJiMzOTspfSk7JiMzNDssCiAgICAgICAgICAgICAgICAgZiYjMzQ7bWVtY3B5KHt2YXJ9LSZndDt7c2VsZi5jX25hbWV9LCB5bmxfYXR0cl9kYXRhKGF0dHIpLCBsZW4pOyYjMzQ7XSwgXAogICAgICAgICAgICAgICAgWyYjMzk7bGVuID0geW5sX2F0dHJfZGF0YV9sZW4oYXR0cik7JiMzOTtdLCBcCiAgICAgICAgICAgICAgICBbJiMzOTt1bnNpZ25lZCBpbnQgbGVuOyYjMzk7XQpAQCAtMjIyNyw2ICYjNDM7MjIzNSw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6CiAKICAgICAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT1mJiMzNDtpZiAobl97YXNwZWMuY19uYW1lfSkmIzM0OykKICAgICAgICAgcmkuY3cucChmJiMzNDtkc3QtJmd0O3thc3BlYy5jX25hbWV9ID0gY2FsbG9jKG5fe2FzcGVjLmNfbmFtZX0sIHNpemVvZigqZHN0LSZndDt7YXNwZWMuY19uYW1lfSkpOyYjMzQ7KQomIzQzOyAgICAgICAgcmkuY3cucChmJiMzNDtpZiAoIWRzdC0mZ3Q7e2FzcGVjLmNfbmFtZX0pJiMzNDspCiYjNDM7ICAgICAgICByaS5jdy5wKCYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjsmIzM0OykKICAgICAgICAgcmkuY3cucChmJiMzNDtkc3QtJmd0O19jb3VudC57YXNwZWMuY19uYW1lfSA9IG5fe2FzcGVjLmNfbmFtZX07JiMzNDspCiAgICAgICAgIHJpLmN3LnAoJiMzOTtpID0gMDsmIzM5OykKICAgICAgICAgaWYgJiMzOTtuZXN0ZWQtYXR0cmlidXRlcyYjMzk7IGluIGFzcGVjOgpAQCAtMjI1Miw2ICYjNDM7MjI2Miw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6CiAgICAgICAgIGFzcGVjID0gc3RydWN0W2FyZ10KICAgICAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT1mJiMzNDtpZiAobl97YXNwZWMuY19uYW1lfSkmIzM0OykKICAgICAgICAgcmkuY3cucChmJiMzNDtkc3QtJmd0O3thc3BlYy5jX25hbWV9ID0gY2FsbG9jKG5fe2FzcGVjLmNfbmFtZX0sIHNpemVvZigqZHN0LSZndDt7YXNwZWMuY19uYW1lfSkpOyYjMzQ7KQomIzQzOyAgICAgICAgcmkuY3cucChmJiMzNDtpZiAoIWRzdC0mZ3Q7e2FzcGVjLmNfbmFtZX0pJiMzNDspCiYjNDM7ICAgICAgICByaS5jdy5wKCYjMzQ7cmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjsmIzM0OykKICAgICAgICAgcmkuY3cucChmJiMzNDtkc3QtJmd0O19jb3VudC57YXNwZWMuY19uYW1lfSA9IG5fe2FzcGVjLmNfbmFtZX07JiMzNDspCiAgICAgICAgIHJpLmN3LnAoJiMzOTtpID0gMDsmIzM5OykKICAgICAgICAgaWYgJiMzOTtuZXN0ZWQtYXR0cmlidXRlcyYjMzk7IGluIGFzcGVjOgpAQCAtMjI3NSw2ICYjNDM7MjI4Nyw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6CiAgICAgICAgICAgICByaS5jdy5ubCgpCiAgICAgICAgICAgICByaS5jdy5wKCYjMzk7bGVuID0gc3Rybmxlbih5bmxfYXR0cl9nZXRfc3RyKGF0dHIpLCB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKSk7JiMzOTspCiAgICAgICAgICAgICByaS5jdy5wKGYmIzM5O2RzdC0mZ3Q7e2FzcGVjLmNfbmFtZX1baV0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB5bmxfc3RyaW5nKSAmIzQzOyBsZW4gJiM0MzsgMSk7JiMzOTspCiYjNDM7ICAgICAgICAgICAgcmkuY3cucChmJiMzNDtpZiAoIWRzdC0mZ3Q7e2FzcGVjLmNfbmFtZX1baV0pJiMzNDspCiYjNDM7ICAgICAgICAgICAgcmkuY3cucCgmIzM0O3JldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7JiMzNDspCiAgICAgICAgICAgICByaS5jdy5wKGYmIzM0O2RzdC0mZ3Q7e2FzcGVjLmNfbmFtZX1baV0tJmd0O2xlbiA9IGxlbjsmIzM0OykKICAgICAgICAgICAgIHJpLmN3LnAoZiYjMzQ7bWVtY3B5KGRzdC0mZ3Q7e2FzcGVjLmNfbmFtZX1baV0tJmd0O3N0ciwgeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgbGVuKTsmIzM0OykKICAgICAgICAgICAgIHJpLmN3LnAoZiYjMzQ7ZHN0LSZndDt7YXNwZWMuY19uYW1lfVtpXS0mZ3Q7c3RyW2xlbl0gPSAwOyYjMzQ7KQpAQCAtMjQzNCw2ICYjNDM7MjQ0OCw4IEBAIGRlZiBwcmludF9yZXEocmkpOgogCiAgICAgaWYgJiMzOTtyZXBseSYjMzk7IGluIHJpLm9wW3JpLm9wX21vZGVdOgogICAgICAgICByaS5jdy5wKCYjMzk7cnNwID0gY2FsbG9jKDEsIHNpemVvZigqcnNwKSk7JiMzOTspCiYjNDM7ICAgICAgICByaS5jdy5wKCYjMzk7aWYgKCFyc3ApJiMzOTspCiYjNDM7ICAgICAgICByaS5jdy5wKGYmIzM5O3JldHVybiB7cmV0X2Vycn07JiMzOTspCiAgICAgICAgIHJpLmN3LnAoJiMzOTt5cnMueWFyZy5kYXRhID0gcnNwOyYjMzk7KQogICAgICAgICByaS5jdy5wKGYmIzM0O3lycy5jYiA9IHtvcF9wcmVmaXgocmksICYjMzk7cmVwbHkmIzM5Oyl9X3BhcnNlOyYjMzQ7KQogICAgICAgICBpZiByaS5vcC52YWx1ZSBpcyBub3QgTm9uZToKQEAgLTI3NDcsNiAmIzQzOzI3NjMsOSBAQCBkZWYgcHJpbnRfZHVtcF90eXBlX2ZyZWUocmkpOgogICAgIHJpLmN3LmJsb2NrX3N0YXJ0KCkKICAgICByaS5jdy5wKGYmIzM0O3tzdWJfdHlwZX0gKm5leHQgPSByc3A7JiMzNDspCiAgICAgcmkuY3cubmwoKQomIzQzOyAgICByaS5jdy5wKCYjMzk7aWYgKCFuZXh0KSYjMzk7KQomIzQzOyAgICByaS5jdy5wKCYjMzk7cmV0dXJuOyYjMzk7KQomIzQzOyAgICByaS5jdy5ubCgpCiAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT0mIzM5O3doaWxlICgodm9pZCAqKW5leHQgIT0gWU5MX0xJU1RfRU5EKSYjMzk7KQogICAgIF9mcmVlX3R5cGVfbWVtYmVyc19pdGVyKHJpLCByaS5zdHJ1Y3RbJiMzOTtyZXBseSYjMzk7XSkKICAgICByaS5jdy5wKCYjMzk7cnNwID0gbmV4dDsmIzM5OykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkxNAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBZTkwgQ29kZSBHZW5lcmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyB0aGUgUHl0aG9uIHNjcmlwdCB0aGF0IGdlbmVyYXRlcyBDIGNvZGUgZm9yIHRob3NlIFlOTCAoWUFNTCBOZXRsaW5rKSB0b29scy4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgY2hlY2tzIGZvciBgbWFsbG9jYC9gY2FsbG9jYCByZXR1cm4gdmFsdWVzIGluIHRoZSBnZW5lcmF0ZWQgQy4gTWFrZXMgc2Vuc2U7IGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBlc3BlY2lhbGx5IGluIEMuCgpNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UuIEl04oCZcyBsb2NhbGl6ZWQgd2l0aGluIGB0b29scy9gLCBpdCYjMzk7cyBqdXN0IGNvZGUgZ2VuZXJhdGlvbiwgbm90IGNvcmUga2VybmVsIGxvZ2ljLiBUaGF0IG1lYW5zIGl0IHNob3VsZG4mIzM5O3QgYmUgYSBmdXp6aW5nIHRhcmdldC4gQnV0IHdhaXQsIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYXNzdW1wdGlvbi4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhlc2UgYXNzZXNzbWVudHMuIEFtIEkgY29ycmVjdCBpbiBhc3N1bWluZyB0aGF0IGNvZGUgaW4gYHRvb2xzL2AgaXMgKmV4Y2x1ZGVkKiBmcm9tIG91ciBmdXp6aW5nIGVmZm9ydHM/IFRoZSB1c3VhbCBmb2N1cyBvZiBmdXp6aW5nIGlzIHRoZSBrZXJuZWwgaXRzZWxmLiBDaGFuZ2VzIHRoYXQgcmVzaWRlIGluIGB0b29scy9gLCBsaWtlIHBlcmYsIGJwZiwgb3IgbmV0L3lubCwgZ2VuZXJhbGx5IGRvbiYjMzk7dCBkaXJlY3RseSBpbXBhY3QgdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdyBvciB0aGUgcmVzdWx0aW5nIGtlcm5lbCBiaW5hcmllcywgdW5sZXNz4oCmIHVubGVzcyB0aGV5IGdlbmVyYXRlIGNvZGUgdGhhdCBlbmRzIHVwIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4KCk5vdywgdGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLCBpc24mIzM5O3QgaXQ/IERvZXMgYHlubF9nZW5fYy5weWAgZ2VuZXJhdGUgY29kZSB0aGF0JiMzOTtzIGV2ZW50dWFsbHkgY29tcGlsZWQgKmludG8qIHRoZSBrZXJuZWw/IEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgc2NyaXB0IGlzIHVzZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaW1lIHRvIGludmVzdGlnYXRlIGl0cyB1c2FnZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt5bmxfZ2VuX2MucHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3Q9NjU9VGhpcyBZQU1MIGlzIHVzZWQgdG8gYXV0by1nZW5lcmF0ZSB1c2VyIHNwYWNlIGJpbmRpbmdzIHZpYVxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3Q6NjY6YGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWBgLCBhbmQgZHJpdmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbmV0bGlua1xuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3QtNjctYXR0cmlidXRlcyBhbmQgb3BlcmF0aW9ucy5cbi0tXG5Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0bGluay9pbnRyby1zcGVjcy5yc3Q9NzY9dG8gc2VlIG90aGVyIGV4YW1wbGVzLlxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0LTc3LVxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0Ojc4OlRoZSBjb2RlIGdlbmVyYXRpb24gaXRzZWxmIGlzIHBlcmZvcm1lZCBieSBgYHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5YGBcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC03OS1idXQgaXQgdGFrZXMgYSBmZXcgYXJndW1lbnRzIHNvIGNhbGxpbmcgaXQgZGlyZWN0bHkgZm9yIGVhY2ggZmlsZVxuLS1cbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdD04Mj1ZTkwgbGliXG4tLVxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0LTg2LShiYXNlZCBvbiBsaWJtbmwpIHdoaWNoIGludGVncmF0ZXMgd2l0aCBjb2RlIGdlbmVyYXRlZCBieVxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0Ojg3OmBgdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlgYCB0byBjcmVhdGUgZWFzeSB0byB1c2UgbmV0bGluayB3cmFwcGVycy5cbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC04OC1cbi0tXG50b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZT0xOD1ZTkxfR0VOX0FSR19ldGh0b29sOj0tLXVzZXItaGVhZGVyIGxpbnV4L2V0aHRvb2xfbmV0bGluay5oIFxcXG4tLVxudG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUtMjAtXG50b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZToyMTpUT09MOj0uLi9weXlubC95bmxfZ2VuX2MucHlcbnRvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlLTIyLVRPT0xfUlNUOj0uLi9weXlubC95bmxfZ2VuX3JzdC5weVxuLS1cbnRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoLTMtXG50b29scy9uZXQveW5sL3lubC1yZWdlbi5zaDo0OlRPT0w9JChkaXJuYW1lICQocmVhbHBhdGggJDApKS9weXlubC95bmxfZ2VuX2MucHlcbnRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoLTUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAxMAoJCQkJCQkJb3V0cHV0OiA5OQoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1GYWxzZTogUmVhc29uaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQuIFRoZSBvdXRwdXQgY2xlYXJseSBpbmRpY2F0ZXMgdGhhdCB0aGUgc2NyaXB0IGB5bmxfZ2VuX2MucHlgIGlzIGJlaW5nIGVtcGxveWVkLiBJdHMgcHVycG9zZT8gSXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGluZyB1c2VyIHNwYWNlIGJpbmRpbmdzLCB3aGljaCBpcyBzdGFuZGFyZCBwcmFjdGljZSBpbiBtYW55IHByb2plY3RzLiBUaGUgZ2VuZXJhdGVkIGNvZGUgc3BlY2lmaWNhbGx5IHRhcmdldHMgdXNlcnNwYWNlLCBhcyBldmlkZW5jZWQgYnkgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXQmIzM5O3MgdXBkYXRpbmcgKGB0b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZWApLiBDcnVjaWFsbHksIHRoZXJlJiMzOTtzIG5vIGV2aWRlbmNlIG9mIHRoaXMgcGF0Y2ggdG91Y2hpbmcsIGFsdGVyaW5nLCBvciBnZW5lcmF0aW5nICphbnkqIGtlcm5lbCBjb2RlLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBmdXp6aW5nIHRhcmdldHMga2VybmVsLWxldmVsIGNoYW5nZXMgdG8gZXhwb3NlIHZ1bG5lcmFiaWxpdGllcywgdGhlIGltcGxpY2F0aW9ucyBhcmUgY2xlYXIuIFNpbmNlIHRoZXJlJiMzOTtzIG5vIGtlcm5lbCBjb2RlIGludm9sdmVkIGhlcmUsIHRoZXJlJiMzOTtzIG5vdGhpbmcgZm9yIGZ1enplcnMgdG8gZGlyZWN0bHkgZXhwbG9pdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJIHdpbGwgY29uZmlkZW50bHkgYW5kIGFwcHJvcHJpYXRlbHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBzaW1wbHkgbm90IGFwcGxpY2FibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBhIHB5dGhvbiBzY3JpcHQgKGB5bmxfZ2VuX2MucHlgKSB1c2VkIHRvIGdlbmVyYXRlIEMgY29kZSBmb3IgdXNlcnNwYWNlIFlOTCAoWUFNTCBOZXRsaW5rKSBiaW5kaW5ncy4gSXQgYWRkcyBudWxsIHBvaW50ZXIgY2hlY2tzIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGdlbmVyYXRlZCB1c2Vyc3BhY2UgY29kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGtlcm5lbCBleGVjdXRpb24gZmxvdyBvciBrZXJuZWwgYmluYXJpZXMsIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGEgcHl0aG9uIHNjcmlwdCAoYHlubF9nZW5fYy5weWApIHVzZWQgdG8gZ2VuZXJhdGUgQyBjb2RlIGZvciB1c2Vyc3BhY2UgWU5MIChZQU1MIE5ldGxpbmspIGJpbmRpbmdzLiBJdCBhZGRzIG51bGwgcG9pbnRlciBjaGVja3MgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyBpbiB0aGUgZ2VuZXJhdGVkIHVzZXJzcGFjZSBjb2RlLiBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUga2VybmVsIGV4ZWN1dGlvbiBmbG93IG9yIGtlcm5lbCBiaW5hcmllcywgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMDozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6Mzg6NTEuMTk5ODUzNTgyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI5OTUxNzg2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIHB5dGhvbiBzY3JpcHQgKGB5bmxfZ2VuX2MucHlgKSB1c2VkIHRvIGdlbmVyYXRlIEMgY29kZSBmb3IgdXNlcnNwYWNlIFlOTCAoWUFNTCBOZXRsaW5rKSBiaW5kaW5ncy4gSXQgYWRkcyBudWxsIHBvaW50ZXIgY2hlY2tzIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGdlbmVyYXRlZCB1c2Vyc3BhY2UgY29kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGtlcm5lbCBleGVjdXRpb24gZmxvdyBvciBrZXJuZWwgYmluYXJpZXMsIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM4OjUxLjE5OTg1OTA5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5OTM1NTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGExMWFiNDc5YjhhMjA1YTFjMWQ2MjFlNjY4OGY1MDI4N2UxNjdiZDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgNyAyMDozODo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuaW5kZXggY2RjMzY0NmYyNjQyYy4uMmIzNDgzZGIxYjYwYyAxMDA3NTVcXG4tLS0gYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weVxcbisrKyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XFxuQEAgLTUyNiw4ICs1MjYsMTAgQEAgY2xhc3MgVHlwZVN0cmluZyhUeXBlKTpcXG4gXFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVxcdTAwM2VfbGVuLicgKyBzZWxmLmNfbmFtZVxcbi0gICAgICAgIHJldHVybiBbZlxcXCJ7bGVuX21lbX0gPSBsZW47XFxcIixcXG4tICAgICAgICAgICAgICAgIGZcXFwie3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuICsgMSk7XFxcIixcXG4rICAgICAgICByZXR1cm4gW2ZcXFwie3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuICsgMSk7XFxcIixcXG4rICAgICAgICAgICAgICAgIGZcXFwiaWYgKCF7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSlcXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInJldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XFxcIixcXG4rICAgICAgICAgICAgICAgIGZcXFwie2xlbl9tZW19ID0gbGVuO1xcXCIsXFxuICAgICAgICAgICAgICAgICBmXFxcIm1lbWNweSh7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgbGVuKTtcXFwiLFxcbiAgICAgICAgICAgICAgICAgZlxcXCJ7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfVtsZW5dID0gMDtcXFwiXSwgXFxcXFxcbiAgICAgICAgICAgICAgICBbJ2xlbiA9IHN0cm5sZW4oeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgeW5sX2F0dHJfZGF0YV9sZW4oYXR0cikpOyddLCBcXFxcXFxuQEAgLTU4Miw4ICs1ODQsMTAgQEAgY2xhc3MgVHlwZUJpbmFyeShUeXBlKTpcXG4gXFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVxcdTAwM2VfbGVuLicgKyBzZWxmLmNfbmFtZVxcbi0gICAgICAgIHJldHVybiBbZlxcXCJ7bGVuX21lbX0gPSBsZW47XFxcIixcXG4tICAgICAgICAgICAgICAgIGZcXFwie3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuKTtcXFwiLFxcbisgICAgICAgIHJldHVybiBbZlxcXCJ7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1xcXCIsXFxuKyAgICAgICAgICAgICAgICBmXFxcImlmICghe3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0pXFxcIixcXG4rICAgICAgICAgICAgICAgIFxcXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1xcXCIsXFxuKyAgICAgICAgICAgICAgICBmXFxcIntsZW5fbWVtfSA9IGxlbjtcXFwiLFxcbiAgICAgICAgICAgICAgICAgZlxcXCJtZW1jcHkoe3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0sIHlubF9hdHRyX2RhdGEoYXR0ciksIGxlbik7XFxcIl0sIFxcXFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsnXSwgXFxcXFxcbiAgICAgICAgICAgICAgICBbJ3Vuc2lnbmVkIGludCBsZW47J11cXG5AQCAtNjAxLDExICs2MDUsMTMgQEAgY2xhc3MgVHlwZUJpbmFyeVN0cnVjdChUeXBlQmluYXJ5KTpcXG4gICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6XFxuICAgICAgICAgc3RydWN0X3N6ID0gJ3NpemVvZihzdHJ1Y3QgJyArIGNfbG93ZXIoc2VsZi5nZXQoXFxcInN0cnVjdFxcXCIpKSArICcpJ1xcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVxcdTAwM2VfJyArIHNlbGYucHJlc2VuY2VfdHlwZSgpICsgJy4nICsgc2VsZi5jX25hbWVcXG4tICAgICAgICByZXR1cm4gW2ZcXFwie2xlbl9tZW19ID0gbGVuO1xcXCIsXFxuLSAgICAgICAgICAgICAgICBmXFxcImlmIChsZW4gXFx1MDAzYyB7c3RydWN0X3N6fSlcXFwiLFxcbisgICAgICAgIHJldHVybiBbZlxcXCJpZiAobGVuIFxcdTAwM2Mge3N0cnVjdF9zen0pXFxcIixcXG4gICAgICAgICAgICAgICAgIGZcXFwie3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0gPSBjYWxsb2MoMSwge3N0cnVjdF9zen0pO1xcXCIsXFxuICAgICAgICAgICAgICAgICBcXFwiZWxzZVxcXCIsXFxuICAgICAgICAgICAgICAgICBmXFxcInt2YXJ9LVxcdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbik7XFxcIixcXG4rICAgICAgICAgICAgICAgIGZcXFwiaWYgKCF7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSlcXFwiLFxcbisgICAgICAgICAgICAgICAgXFxcInJldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XFxcIixcXG4rICAgICAgICAgICAgICAgIGZcXFwie2xlbl9tZW19ID0gbGVuO1xcXCIsXFxuICAgICAgICAgICAgICAgICBmXFxcIm1lbWNweSh7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcXFwiXSwgXFxcXFxcbiAgICAgICAgICAgICAgICBbJ2xlbiA9IHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpOyddLCBcXFxcXFxuICAgICAgICAgICAgICAgIFsndW5zaWduZWQgaW50IGxlbjsnXVxcbkBAIC02MzEsOSArNjM3LDExIEBAIGNsYXNzIFR5cGVCaW5hcnlTY2FsYXJBcnJheShUeXBlQmluYXJ5KTpcXG4gXFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVxcdTAwM2VfY291bnQuJyArIHNlbGYuY19uYW1lXFxuLSAgICAgICAgcmV0dXJuIFtmXFxcIntsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1xcXCIsXFxuLSAgICAgICAgICAgICAgICBmXFxcImxlbiA9IHtsZW5fbWVtfSAqIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1xcXCIsXFxuKyAgICAgICAgcmV0dXJuIFtmXFxcImxlbiA9IChsZW4gLyBzaXplb2YoX197c2VsZi5nZXQoJ3N1Yi10eXBlJyl9KSkgKiBzaXplb2YoX197c2VsZi5nZXQoJ3N1Yi10eXBlJyl9KTtcXFwiLFxcbiAgICAgICAgICAgICAgICAgZlxcXCJ7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1xcXCIsXFxuKyAgICAgICAgICAgICAgICBmXFxcImlmICghe3Zhcn0tXFx1MDAzZXtzZWxmLmNfbmFtZX0pXFxcIixcXG4rICAgICAgICAgICAgICAgIFxcXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1xcXCIsXFxuKyAgICAgICAgICAgICAgICBmXFxcIntsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1xcXCIsXFxuICAgICAgICAgICAgICAgICBmXFxcIm1lbWNweSh7dmFyfS1cXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcXFwiXSwgXFxcXFxcbiAgICAgICAgICAgICAgICBbJ2xlbiA9IHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpOyddLCBcXFxcXFxuICAgICAgICAgICAgICAgIFsndW5zaWduZWQgaW50IGxlbjsnXVxcbkBAIC0yMjI3LDYgKzIyMzUsOCBAQCBkZWYgX211bHRpX3BhcnNlKHJpLCBzdHJ1Y3QsIGluaXRfbGluZXMsIGxvY2FsX3ZhcnMpOlxcbiBcXG4gICAgICAgICByaS5jdy5ibG9ja19zdGFydChsaW5lPWZcXFwiaWYgKG5fe2FzcGVjLmNfbmFtZX0pXFxcIilcXG4gICAgICAgICByaS5jdy5wKGZcXFwiZHN0LVxcdTAwM2V7YXNwZWMuY19uYW1lfSA9IGNhbGxvYyhuX3thc3BlYy5jX25hbWV9LCBzaXplb2YoKmRzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX0pKTtcXFwiKVxcbisgICAgICAgIHJpLmN3LnAoZlxcXCJpZiAoIWRzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX0pXFxcIilcXG4rICAgICAgICByaS5jdy5wKFxcXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1xcXCIpXFxuICAgICAgICAgcmkuY3cucChmXFxcImRzdC1cXHUwMDNlX2NvdW50Lnthc3BlYy5jX25hbWV9ID0gbl97YXNwZWMuY19uYW1lfTtcXFwiKVxcbiAgICAgICAgIHJpLmN3LnAoJ2kgPSAwOycpXFxuICAgICAgICAgaWYgJ25lc3RlZC1hdHRyaWJ1dGVzJyBpbiBhc3BlYzpcXG5AQCAtMjI1Miw2ICsyMjYyLDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcXG4gICAgICAgICBhc3BlYyA9IHN0cnVjdFthcmddXFxuICAgICAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT1mXFxcImlmIChuX3thc3BlYy5jX25hbWV9KVxcXCIpXFxuICAgICAgICAgcmkuY3cucChmXFxcImRzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX0gPSBjYWxsb2Mobl97YXNwZWMuY19uYW1lfSwgc2l6ZW9mKCpkc3QtXFx1MDAzZXthc3BlYy5jX25hbWV9KSk7XFxcIilcXG4rICAgICAgICByaS5jdy5wKGZcXFwiaWYgKCFkc3QtXFx1MDAzZXthc3BlYy5jX25hbWV9KVxcXCIpXFxuKyAgICAgICAgcmkuY3cucChcXFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcXFwiKVxcbiAgICAgICAgIHJpLmN3LnAoZlxcXCJkc3QtXFx1MDAzZV9jb3VudC57YXNwZWMuY19uYW1lfSA9IG5fe2FzcGVjLmNfbmFtZX07XFxcIilcXG4gICAgICAgICByaS5jdy5wKCdpID0gMDsnKVxcbiAgICAgICAgIGlmICduZXN0ZWQtYXR0cmlidXRlcycgaW4gYXNwZWM6XFxuQEAgLTIyNzUsNiArMjI4Nyw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6XFxuICAgICAgICAgICAgIHJpLmN3Lm5sKClcXG4gICAgICAgICAgICAgcmkuY3cucCgnbGVuID0gc3Rybmxlbih5bmxfYXR0cl9nZXRfc3RyKGF0dHIpLCB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKSk7JylcXG4gICAgICAgICAgICAgcmkuY3cucChmJ2RzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX1baV0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB5bmxfc3RyaW5nKSArIGxlbiArIDEpOycpXFxuKyAgICAgICAgICAgIHJpLmN3LnAoZlxcXCJpZiAoIWRzdC1cXHUwMDNle2FzcGVjLmNfbmFtZX1baV0pXFxcIilcXG4rICAgICAgICAgICAgcmkuY3cucChcXFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcXFwiKVxcbiAgICAgICAgICAgICByaS5jdy5wKGZcXFwiZHN0LVxcdTAwM2V7YXNwZWMuY19uYW1lfVtpXS1cXHUwMDNlbGVuID0gbGVuO1xcXCIpXFxuICAgICAgICAgICAgIHJpLmN3LnAoZlxcXCJtZW1jcHkoZHN0LVxcdTAwM2V7YXNwZWMuY19uYW1lfVtpXS1cXHUwMDNlc3RyLCB5bmxfYXR0cl9nZXRfc3RyKGF0dHIpLCBsZW4pO1xcXCIpXFxuICAgICAgICAgICAgIHJpLmN3LnAoZlxcXCJkc3QtXFx1MDAzZXthc3BlYy5jX25hbWV9W2ldLVxcdTAwM2VzdHJbbGVuXSA9IDA7XFxcIilcXG5AQCAtMjQzNCw2ICsyNDQ4LDggQEAgZGVmIHByaW50X3JlcShyaSk6XFxuIFxcbiAgICAgaWYgJ3JlcGx5JyBpbiByaS5vcFtyaS5vcF9tb2RlXTpcXG4gICAgICAgICByaS5jdy5wKCdyc3AgPSBjYWxsb2MoMSwgc2l6ZW9mKCpyc3ApKTsnKVxcbisgICAgICAgIHJpLmN3LnAoJ2lmICghcnNwKScpXFxuKyAgICAgICAgcmkuY3cucChmJ3JldHVybiB7cmV0X2Vycn07JylcXG4gICAgICAgICByaS5jdy5wKCd5cnMueWFyZy5kYXRhID0gcnNwOycpXFxuICAgICAgICAgcmkuY3cucChmXFxcInlycy5jYiA9IHtvcF9wcmVmaXgocmksICdyZXBseScpfV9wYXJzZTtcXFwiKVxcbiAgICAgICAgIGlmIHJpLm9wLnZhbHVlIGlzIG5vdCBOb25lOlxcbkBAIC0yNzQ3LDYgKzI3NjMsOSBAQCBkZWYgcHJpbnRfZHVtcF90eXBlX2ZyZWUocmkpOlxcbiAgICAgcmkuY3cuYmxvY2tfc3RhcnQoKVxcbiAgICAgcmkuY3cucChmXFxcIntzdWJfdHlwZX0gKm5leHQgPSByc3A7XFxcIilcXG4gICAgIHJpLmN3Lm5sKClcXG4rICAgIHJpLmN3LnAoJ2lmICghbmV4dCknKVxcbisgICAgcmkuY3cucCgncmV0dXJuOycpXFxuKyAgICByaS5jdy5ubCgpXFxuICAgICByaS5jdy5ibG9ja19zdGFydChsaW5lPSd3aGlsZSAoKHZvaWQgKiluZXh0ICE9IFlOTF9MSVNUX0VORCknKVxcbiAgICAgX2ZyZWVfdHlwZV9tZW1iZXJzX2l0ZXIocmksIHJpLnN0cnVjdFsncmVwbHknXSlcXG4gICAgIHJpLmN3LnAoJ3JzcCA9IG5leHQ7JylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjA6Mzg6NTIuMjk5OTYyMjQyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTE4OTUwNTQyNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGEgcHl0aG9uIHNjcmlwdCAoYHlubF9nZW5fYy5weWApIHVzZWQgdG8gZ2VuZXJhdGUgQyBjb2RlIGZvciB1c2Vyc3BhY2UgWU5MIChZQU1MIE5ldGxpbmspIGJpbmRpbmdzLiBJdCBhZGRzIG51bGwgcG9pbnRlciBjaGVja3MgZm9yIG1lbW9yeSBhbGxvY2F0aW9ucyBpbiB0aGUgZ2VuZXJhdGVkIHVzZXJzcGFjZSBjb2RlLiBUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUga2VybmVsIGV4ZWN1dGlvbiBmbG93IG9yIGtlcm5lbCBiaW5hcmllcywgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTExYWI0NzliOGEyMDVhMWMxZDYyMWU2Njg4ZjUwMjg3ZTE2N2JkOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjA6Mzg6NDkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weSBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG5pbmRleCBjZGMzNjQ2ZjI2NDJjLi4yYjM0ODNkYjFiNjBjIDEwMDc1NVxuLS0tIGEvdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlcbisrKyBiL3Rvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5XG5AQCAtNTI2LDggKzUyNiwxMCBAQCBjbGFzcyBUeXBlU3RyaW5nKFR5cGUpOlxuIFxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxuICAgICAgICAgbGVuX21lbSA9IHZhciArICctXHUwMDNlX2xlbi4nICsgc2VsZi5jX25hbWVcbi0gICAgICAgIHJldHVybiBbZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuLSAgICAgICAgICAgICAgICBmXCJ7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbiArIDEpO1wiLFxuKyAgICAgICAgcmV0dXJuIFtmXCJ7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9ID0gbWFsbG9jKGxlbiArIDEpO1wiLFxuKyAgICAgICAgICAgICAgICBmXCJpZiAoIXt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0pXCIsXG4rICAgICAgICAgICAgICAgIFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcIixcbisgICAgICAgICAgICAgICAgZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuICAgICAgICAgICAgICAgICBmXCJtZW1jcHkoe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgbGVuKTtcIixcbiAgICAgICAgICAgICAgICAgZlwie3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfVtsZW5dID0gMDtcIl0sIFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSBzdHJubGVuKHlubF9hdHRyX2dldF9zdHIoYXR0ciksIHlubF9hdHRyX2RhdGFfbGVuKGF0dHIpKTsnXSwgXFxcbkBAIC01ODIsOCArNTg0LDEwIEBAIGNsYXNzIFR5cGVCaW5hcnkoVHlwZSk6XG4gXG4gICAgIGRlZiBfYXR0cl9nZXQoc2VsZiwgcmksIHZhcik6XG4gICAgICAgICBsZW5fbWVtID0gdmFyICsgJy1cdTAwM2VfbGVuLicgKyBzZWxmLmNfbmFtZVxuLSAgICAgICAgcmV0dXJuIFtmXCJ7bGVuX21lbX0gPSBsZW47XCIsXG4tICAgICAgICAgICAgICAgIGZcInt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuKTtcIixcbisgICAgICAgIHJldHVybiBbZlwie3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1wiLFxuKyAgICAgICAgICAgICAgICBmXCJpZiAoIXt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0pXCIsXG4rICAgICAgICAgICAgICAgIFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcIixcbisgICAgICAgICAgICAgICAgZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuICAgICAgICAgICAgICAgICBmXCJtZW1jcHkoe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcIl0sIFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsnXSwgXFxcbiAgICAgICAgICAgICAgICBbJ3Vuc2lnbmVkIGludCBsZW47J11cbkBAIC02MDEsMTEgKzYwNSwxMyBAQCBjbGFzcyBUeXBlQmluYXJ5U3RydWN0KFR5cGVCaW5hcnkpOlxuICAgICBkZWYgX2F0dHJfZ2V0KHNlbGYsIHJpLCB2YXIpOlxuICAgICAgICAgc3RydWN0X3N6ID0gJ3NpemVvZihzdHJ1Y3QgJyArIGNfbG93ZXIoc2VsZi5nZXQoXCJzdHJ1Y3RcIikpICsgJyknXG4gICAgICAgICBsZW5fbWVtID0gdmFyICsgJy1cdTAwM2VfJyArIHNlbGYucHJlc2VuY2VfdHlwZSgpICsgJy4nICsgc2VsZi5jX25hbWVcbi0gICAgICAgIHJldHVybiBbZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuLSAgICAgICAgICAgICAgICBmXCJpZiAobGVuIFx1MDAzYyB7c3RydWN0X3N6fSlcIixcbisgICAgICAgIHJldHVybiBbZlwiaWYgKGxlbiBcdTAwM2Mge3N0cnVjdF9zen0pXCIsXG4gICAgICAgICAgICAgICAgIGZcInt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0gPSBjYWxsb2MoMSwge3N0cnVjdF9zen0pO1wiLFxuICAgICAgICAgICAgICAgICBcImVsc2VcIixcbiAgICAgICAgICAgICAgICAgZlwie3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSA9IG1hbGxvYyhsZW4pO1wiLFxuKyAgICAgICAgICAgICAgICBmXCJpZiAoIXt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0pXCIsXG4rICAgICAgICAgICAgICAgIFwicmV0dXJuIFlOTF9QQVJTRV9DQl9FUlJPUjtcIixcbisgICAgICAgICAgICAgICAgZlwie2xlbl9tZW19ID0gbGVuO1wiLFxuICAgICAgICAgICAgICAgICBmXCJtZW1jcHkoe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcIl0sIFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsnXSwgXFxcbiAgICAgICAgICAgICAgICBbJ3Vuc2lnbmVkIGludCBsZW47J11cbkBAIC02MzEsOSArNjM3LDExIEBAIGNsYXNzIFR5cGVCaW5hcnlTY2FsYXJBcnJheShUeXBlQmluYXJ5KTpcbiBcbiAgICAgZGVmIF9hdHRyX2dldChzZWxmLCByaSwgdmFyKTpcbiAgICAgICAgIGxlbl9tZW0gPSB2YXIgKyAnLVx1MDAzZV9jb3VudC4nICsgc2VsZi5jX25hbWVcbi0gICAgICAgIHJldHVybiBbZlwie2xlbl9tZW19ID0gbGVuIC8gc2l6ZW9mKF9fe3NlbGYuZ2V0KCdzdWItdHlwZScpfSk7XCIsXG4tICAgICAgICAgICAgICAgIGZcImxlbiA9IHtsZW5fbWVtfSAqIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1wiLFxuKyAgICAgICAgcmV0dXJuIFtmXCJsZW4gPSAobGVuIC8gc2l6ZW9mKF9fe3NlbGYuZ2V0KCdzdWItdHlwZScpfSkpICogc2l6ZW9mKF9fe3NlbGYuZ2V0KCdzdWItdHlwZScpfSk7XCIsXG4gICAgICAgICAgICAgICAgIGZcInt2YXJ9LVx1MDAzZXtzZWxmLmNfbmFtZX0gPSBtYWxsb2MobGVuKTtcIixcbisgICAgICAgICAgICAgICAgZlwiaWYgKCF7dmFyfS1cdTAwM2V7c2VsZi5jX25hbWV9KVwiLFxuKyAgICAgICAgICAgICAgICBcInJldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XCIsXG4rICAgICAgICAgICAgICAgIGZcIntsZW5fbWVtfSA9IGxlbiAvIHNpemVvZihfX3tzZWxmLmdldCgnc3ViLXR5cGUnKX0pO1wiLFxuICAgICAgICAgICAgICAgICBmXCJtZW1jcHkoe3Zhcn0tXHUwMDNle3NlbGYuY19uYW1lfSwgeW5sX2F0dHJfZGF0YShhdHRyKSwgbGVuKTtcIl0sIFxcXG4gICAgICAgICAgICAgICAgWydsZW4gPSB5bmxfYXR0cl9kYXRhX2xlbihhdHRyKTsnXSwgXFxcbiAgICAgICAgICAgICAgICBbJ3Vuc2lnbmVkIGludCBsZW47J11cbkBAIC0yMjI3LDYgKzIyMzUsOCBAQCBkZWYgX211bHRpX3BhcnNlKHJpLCBzdHJ1Y3QsIGluaXRfbGluZXMsIGxvY2FsX3ZhcnMpOlxuIFxuICAgICAgICAgcmkuY3cuYmxvY2tfc3RhcnQobGluZT1mXCJpZiAobl97YXNwZWMuY19uYW1lfSlcIilcbiAgICAgICAgIHJpLmN3LnAoZlwiZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9ID0gY2FsbG9jKG5fe2FzcGVjLmNfbmFtZX0sIHNpemVvZigqZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9KSk7XCIpXG4rICAgICAgICByaS5jdy5wKGZcImlmICghZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9KVwiKVxuKyAgICAgICAgcmkuY3cucChcInJldHVybiBZTkxfUEFSU0VfQ0JfRVJST1I7XCIpXG4gICAgICAgICByaS5jdy5wKGZcImRzdC1cdTAwM2VfY291bnQue2FzcGVjLmNfbmFtZX0gPSBuX3thc3BlYy5jX25hbWV9O1wiKVxuICAgICAgICAgcmkuY3cucCgnaSA9IDA7JylcbiAgICAgICAgIGlmICduZXN0ZWQtYXR0cmlidXRlcycgaW4gYXNwZWM6XG5AQCAtMjI1Miw2ICsyMjYyLDggQEAgZGVmIF9tdWx0aV9wYXJzZShyaSwgc3RydWN0LCBpbml0X2xpbmVzLCBsb2NhbF92YXJzKTpcbiAgICAgICAgIGFzcGVjID0gc3RydWN0W2FyZ11cbiAgICAgICAgIHJpLmN3LmJsb2NrX3N0YXJ0KGxpbmU9ZlwiaWYgKG5fe2FzcGVjLmNfbmFtZX0pXCIpXG4gICAgICAgICByaS5jdy5wKGZcImRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSA9IGNhbGxvYyhuX3thc3BlYy5jX25hbWV9LCBzaXplb2YoKmRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSkpO1wiKVxuKyAgICAgICAgcmkuY3cucChmXCJpZiAoIWRzdC1cdTAwM2V7YXNwZWMuY19uYW1lfSlcIilcbisgICAgICAgIHJpLmN3LnAoXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wiKVxuICAgICAgICAgcmkuY3cucChmXCJkc3QtXHUwMDNlX2NvdW50Lnthc3BlYy5jX25hbWV9ID0gbl97YXNwZWMuY19uYW1lfTtcIilcbiAgICAgICAgIHJpLmN3LnAoJ2kgPSAwOycpXG4gICAgICAgICBpZiAnbmVzdGVkLWF0dHJpYnV0ZXMnIGluIGFzcGVjOlxuQEAgLTIyNzUsNiArMjI4Nyw4IEBAIGRlZiBfbXVsdGlfcGFyc2UocmksIHN0cnVjdCwgaW5pdF9saW5lcywgbG9jYWxfdmFycyk6XG4gICAgICAgICAgICAgcmkuY3cubmwoKVxuICAgICAgICAgICAgIHJpLmN3LnAoJ2xlbiA9IHN0cm5sZW4oeW5sX2F0dHJfZ2V0X3N0cihhdHRyKSwgeW5sX2F0dHJfZGF0YV9sZW4oYXR0cikpOycpXG4gICAgICAgICAgICAgcmkuY3cucChmJ2RzdC1cdTAwM2V7YXNwZWMuY19uYW1lfVtpXSA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHlubF9zdHJpbmcpICsgbGVuICsgMSk7JylcbisgICAgICAgICAgICByaS5jdy5wKGZcImlmICghZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldKVwiKVxuKyAgICAgICAgICAgIHJpLmN3LnAoXCJyZXR1cm4gWU5MX1BBUlNFX0NCX0VSUk9SO1wiKVxuICAgICAgICAgICAgIHJpLmN3LnAoZlwiZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldLVx1MDAzZWxlbiA9IGxlbjtcIilcbiAgICAgICAgICAgICByaS5jdy5wKGZcIm1lbWNweShkc3QtXHUwMDNle2FzcGVjLmNfbmFtZX1baV0tXHUwMDNlc3RyLCB5bmxfYXR0cl9nZXRfc3RyKGF0dHIpLCBsZW4pO1wiKVxuICAgICAgICAgICAgIHJpLmN3LnAoZlwiZHN0LVx1MDAzZXthc3BlYy5jX25hbWV9W2ldLVx1MDAzZXN0cltsZW5dID0gMDtcIilcbkBAIC0yNDM0LDYgKzI0NDgsOCBAQCBkZWYgcHJpbnRfcmVxKHJpKTpcbiBcbiAgICAgaWYgJ3JlcGx5JyBpbiByaS5vcFtyaS5vcF9tb2RlXTpcbiAgICAgICAgIHJpLmN3LnAoJ3JzcCA9IGNhbGxvYygxLCBzaXplb2YoKnJzcCkpOycpXG4rICAgICAgICByaS5jdy5wKCdpZiAoIXJzcCknKVxuKyAgICAgICAgcmkuY3cucChmJ3JldHVybiB7cmV0X2Vycn07JylcbiAgICAgICAgIHJpLmN3LnAoJ3lycy55YXJnLmRhdGEgPSByc3A7JylcbiAgICAgICAgIHJpLmN3LnAoZlwieXJzLmNiID0ge29wX3ByZWZpeChyaSwgJ3JlcGx5Jyl9X3BhcnNlO1wiKVxuICAgICAgICAgaWYgcmkub3AudmFsdWUgaXMgbm90IE5vbmU6XG5AQCAtMjc0Nyw2ICsyNzYzLDkgQEAgZGVmIHByaW50X2R1bXBfdHlwZV9mcmVlKHJpKTpcbiAgICAgcmkuY3cuYmxvY2tfc3RhcnQoKVxuICAgICByaS5jdy5wKGZcIntzdWJfdHlwZX0gKm5leHQgPSByc3A7XCIpXG4gICAgIHJpLmN3Lm5sKClcbisgICAgcmkuY3cucCgnaWYgKCFuZXh0KScpXG4rICAgIHJpLmN3LnAoJ3JldHVybjsnKVxuKyAgICByaS5jdy5ubCgpXG4gICAgIHJpLmN3LmJsb2NrX3N0YXJ0KGxpbmU9J3doaWxlICgodm9pZCAqKW5leHQgIT0gWU5MX0xJU1RfRU5EKScpXG4gICAgIF9mcmVlX3R5cGVfbWVtYmVyc19pdGVyKHJpLCByaS5zdHJ1Y3RbJ3JlcGx5J10pXG4gICAgIHJpLmN3LnAoJ3JzcCA9IG5leHQ7JylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM4OjUyLjI5OTk2MzQ5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwMjM0NTg5ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgWU5MIENvZGUgR2VuZXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL25ldC95bmwvcHl5bmwveW5sX2dlbl9jLnB5YC4gUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyB0aGUgUHl0aG9uIHNjcmlwdCB0aGF0IGdlbmVyYXRlcyBDIGNvZGUgZm9yIHRob3NlIFlOTCAoWUFNTCBOZXRsaW5rKSB0b29scy4gVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgY2hlY2tzIGZvciBgbWFsbG9jYC9gY2FsbG9jYCByZXR1cm4gdmFsdWVzIGluIHRoZSBnZW5lcmF0ZWQgQy4gTWFrZXMgc2Vuc2U7IGdvb2QgZGVmZW5zaXZlIHByb2dyYW1taW5nIHByYWN0aWNlLCBlc3BlY2lhbGx5IGluIEMuXG5cbk15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZS4gSXTigJlzIGxvY2FsaXplZCB3aXRoaW4gYHRvb2xzL2AsIGl0J3MganVzdCBjb2RlIGdlbmVyYXRpb24sIG5vdCBjb3JlIGtlcm5lbCBsb2dpYy4gVGhhdCBtZWFucyBpdCBzaG91bGRuJ3QgYmUgYSBmdXp6aW5nIHRhcmdldC4gQnV0IHdhaXQsIEkgc2hvdWxkIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYXNzdW1wdGlvbi4gV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhlc2UgYXNzZXNzbWVudHMuIEFtIEkgY29ycmVjdCBpbiBhc3N1bWluZyB0aGF0IGNvZGUgaW4gYHRvb2xzL2AgaXMgKmV4Y2x1ZGVkKiBmcm9tIG91ciBmdXp6aW5nIGVmZm9ydHM/IFRoZSB1c3VhbCBmb2N1cyBvZiBmdXp6aW5nIGlzIHRoZSBrZXJuZWwgaXRzZWxmLiBDaGFuZ2VzIHRoYXQgcmVzaWRlIGluIGB0b29scy9gLCBsaWtlIHBlcmYsIGJwZiwgb3IgbmV0L3lubCwgZ2VuZXJhbGx5IGRvbid0IGRpcmVjdGx5IGltcGFjdCB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cgb3IgdGhlIHJlc3VsdGluZyBrZXJuZWwgYmluYXJpZXMsIHVubGVzc+KApiB1bmxlc3MgdGhleSBnZW5lcmF0ZSBjb2RlIHRoYXQgZW5kcyB1cCBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwuXG5cbk5vdywgdGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24sIGlzbid0IGl0PyBEb2VzIGB5bmxfZ2VuX2MucHlgIGdlbmVyYXRlIGNvZGUgdGhhdCdzIGV2ZW50dWFsbHkgY29tcGlsZWQgKmludG8qIHRoZSBrZXJuZWw/IEkgbmVlZCB0byB0cmFjayBkb3duIHdoZXJlIHRoaXMgc2NyaXB0IGlzIHVzZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wYWN0LiBUaW1lIHRvIGludmVzdGlnYXRlIGl0cyB1c2FnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkxNCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM4OjU4LjMyMzQyNTI2NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODg2NTkyMjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInlubF9nZW5fYy5weVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL2dwdS9kcm0tcmFzLnJzdD02NT1UaGlzIFlBTUwgaXMgdXNlZCB0byBhdXRvLWdlbmVyYXRlIHVzZXIgc3BhY2UgYmluZGluZ3MgdmlhXFxuRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXJhcy5yc3Q6NjY6YGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWBgLCBhbmQgZHJpdmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbmV0bGlua1xcbkRvY3VtZW50YXRpb24vZ3B1L2RybS1yYXMucnN0LTY3LWF0dHJpYnV0ZXMgYW5kIG9wZXJhdGlvbnMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0bGluay9pbnRyby1zcGVjcy5yc3Q9NzY9dG8gc2VlIG90aGVyIGV4YW1wbGVzLlxcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC03Ny1cXG5Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0bGluay9pbnRyby1zcGVjcy5yc3Q6Nzg6VGhlIGNvZGUgZ2VuZXJhdGlvbiBpdHNlbGYgaXMgcGVyZm9ybWVkIGJ5IGBgdG9vbHMvbmV0L3lubC9weXlubC95bmxfZ2VuX2MucHlgYFxcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC03OS1idXQgaXQgdGFrZXMgYSBmZXcgYXJndW1lbnRzIHNvIGNhbGxpbmcgaXQgZGlyZWN0bHkgZm9yIGVhY2ggZmlsZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25ldGxpbmsvaW50cm8tc3BlY3MucnN0PTgyPVlOTCBsaWJcXG4tLVxcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC04Ni0oYmFzZWQgb24gbGlibW5sKSB3aGljaCBpbnRlZ3JhdGVzIHdpdGggY29kZSBnZW5lcmF0ZWQgYnlcXG5Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0bGluay9pbnRyby1zcGVjcy5yc3Q6ODc6YGB0b29scy9uZXQveW5sL3B5eW5sL3lubF9nZW5fYy5weWBgIHRvIGNyZWF0ZSBlYXN5IHRvIHVzZSBuZXRsaW5rIHdyYXBwZXJzLlxcbkRvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5rL2ludHJvLXNwZWNzLnJzdC04OC1cXG4tLVxcbnRvb2xzL25ldC95bmwvZ2VuZXJhdGVkL01ha2VmaWxlPTE4PVlOTF9HRU5fQVJHX2V0aHRvb2w6PS0tdXNlci1oZWFkZXIgbGludXgvZXRodG9vbF9uZXRsaW5rLmggXFxcXFxcbi0tXFxudG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUtMjAtXFxudG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGU6MjE6VE9PTDo9Li4vcHl5bmwveW5sX2dlbl9jLnB5XFxudG9vbHMvbmV0L3lubC9nZW5lcmF0ZWQvTWFrZWZpbGUtMjItVE9PTF9SU1Q6PS4uL3B5eW5sL3lubF9nZW5fcnN0LnB5XFxuLS1cXG50b29scy9uZXQveW5sL3lubC1yZWdlbi5zaC0zLVxcbnRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoOjQ6VE9PTD0kKGRpcm5hbWUgJChyZWFscGF0aCAkMCkpL3B5eW5sL3lubF9nZW5fYy5weVxcbnRvb2xzL25ldC95bmwveW5sLXJlZ2VuLnNoLTUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM5OjAwLjIxMDAyNTA4N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODQ5NTkwMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBSZWFzb25pbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2gsIGFuZCBoZXJlJ3MgbXkgYXNzZXNzbWVudC4gVGhlIG91dHB1dCBjbGVhcmx5IGluZGljYXRlcyB0aGF0IHRoZSBzY3JpcHQgYHlubF9nZW5fYy5weWAgaXMgYmVpbmcgZW1wbG95ZWQuIEl0cyBwdXJwb3NlPyBJdCdzIHJlc3BvbnNpYmxlIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgdXNlciBzcGFjZSBiaW5kaW5ncywgd2hpY2ggaXMgc3RhbmRhcmQgcHJhY3RpY2UgaW4gbWFueSBwcm9qZWN0cy4gVGhlIGdlbmVyYXRlZCBjb2RlIHNwZWNpZmljYWxseSB0YXJnZXRzIHVzZXJzcGFjZSwgYXMgZXZpZGVuY2VkIGJ5IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGl0J3MgdXBkYXRpbmcgKGB0b29scy9uZXQveW5sL2dlbmVyYXRlZC9NYWtlZmlsZWApLiBDcnVjaWFsbHksIHRoZXJlJ3Mgbm8gZXZpZGVuY2Ugb2YgdGhpcyBwYXRjaCB0b3VjaGluZywgYWx0ZXJpbmcsIG9yIGdlbmVyYXRpbmcgKmFueSoga2VybmVsIGNvZGUuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGZ1enppbmcgdGFyZ2V0cyBrZXJuZWwtbGV2ZWwgY2hhbmdlcyB0byBleHBvc2UgdnVsbmVyYWJpbGl0aWVzLCB0aGUgaW1wbGljYXRpb25zIGFyZSBjbGVhci4gU2luY2UgdGhlcmUncyBubyBrZXJuZWwgY29kZSBpbnZvbHZlZCBoZXJlLCB0aGVyZSdzIG5vdGhpbmcgZm9yIGZ1enplcnMgdG8gZGlyZWN0bHkgZXhwbG9pdC4gVGhlcmVmb3JlLCBiYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCBJIHdpbGwgY29uZmlkZW50bHkgYW5kIGFwcHJvcHJpYXRlbHkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCdzIHNpbXBseSBub3QgYXBwbGljYWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAxMCwiT3V0cHV0VG9rZW5zIjo5OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM5OjA0LjE5NDk4ODM3OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYwNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYSBweXRob24gc2NyaXB0IChgeW5sX2dlbl9jLnB5YCkgdXNlZCB0byBnZW5lcmF0ZSBDIGNvZGUgZm9yIHVzZXJzcGFjZSBZTkwgKFlBTUwgTmV0bGluaykgYmluZGluZ3MuIEl0IGFkZHMgbnVsbCBwb2ludGVyIGNoZWNrcyBmb3IgbWVtb3J5IGFsbG9jYXRpb25zIGluIHRoZSBnZW5lcmF0ZWQgdXNlcnNwYWNlIGNvZGUuIFRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBrZXJuZWwgZXhlY3V0aW9uIGZsb3cgb3Iga2VybmVsIGJpbmFyaWVzLCBzbyBpdCBkb2VzIG5vdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBhIHB5dGhvbiBzY3JpcHQgKGB5bmxfZ2VuX2MucHlgKSB1c2VkIHRvIGdlbmVyYXRlIEMgY29kZSBmb3IgdXNlcnNwYWNlIFlOTCAoWUFNTCBOZXRsaW5rKSBiaW5kaW5ncy4gSXQgYWRkcyBudWxsIHBvaW50ZXIgY2hlY2tzIGZvciBtZW1vcnkgYWxsb2NhdGlvbnMgaW4gdGhlIGdlbmVyYXRlZCB1c2Vyc3BhY2UgY29kZS4gVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGtlcm5lbCBleGVjdXRpb24gZmxvdyBvciBrZXJuZWwgYmluYXJpZXMsIHNvIGl0IGRvZXMgbm90IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIwOjM5OjA0LjE5NTAxODU4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow265fx[1] Phase: Running StartedAt: 2026-08-07 20:39:34 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow265fx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-07 20:39:34 +0000 UTC FinishedAt: 2026-08-07 20:39:39 +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,}