Name: series-workflowppknl Phase: Failed StartedAt: 2026-08-27 07:27:40 +0000 UTC FinishedAt: 2026-08-27 07:31:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowppknl[0] Phase: Succeeded StartedAt: 2026-08-27 07:27:40 +0000 UTC FinishedAt: 2026-08-27 07:30:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowppknl[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 07:27:40 +0000 UTC FinishedAt: 2026-08-27 07:30:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA3OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIEV0aGVybmV0IGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgY2FyZCBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBieSB0aGUgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNzoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEwMTliYjdjMzQ4YTNjNzcwZGEyYjY2Y2RhYjc4NjdmMGQwZDMwNTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNzoyOTo1NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5pbmRleCA5YzJjYzUwMjc2YTU5Li40ODA1ZWU2M2VkOGYyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5AQCAtMTM3OTEsNiAmIzQzOzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCxcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4gXHRpbnQgb2ZmID0gMDtcbiBcbiYjNDM7XHQvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgYWxsIHVuaWNhc3QgaXMgYWNjZXB0ZWQgdGhyb3VnaCB0aGVcbiYjNDM7XHQgKiBwcm9taXNjdW91cyBSWCBtYXNrIGFuZCBubyBzZWNvbmRhcnkgTDIgZmlsdGVycyBhcmUgaW4gdXNlLFxuJiM0MztcdCAqIHNvIHRoZSBsaXN0IG9ubHkgbmVlZHMgcmVwcm9ncmFtbWluZyBvbmNlIGl0IGZpdHMgdGhlXG4mIzQzO1x0ICogYXZhaWxhYmxlIGZpbHRlcnMgYWdhaW4uICBSZXBvcnRpbmcgYW4gdXBkYXRlIGhlcmUgd291bGRcbiYjNDM7XHQgKiByZXNlbmQgYW4gaWRlbnRpY2FsIFNFVF9SWF9NQVNLIG9uIGV2ZXJ5IGNhbGxiYWNrLCB3aGljaFxuJiM0MztcdCAqIGNhdXNlcyBicmllZiBSWCBwYWNrZXQgbG9zcyBvbiBzb21lIGNoaXBzLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICh2bmljLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKVxuJiM0MztcdFx0cmV0dXJuIG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFx1MDAzYz0gKEJOWFRfTUFYX1VDX0FERFJTIC0gMSk7XG4mIzQzO1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICE9ICh2bmljLVx1MDAzZXVjX2ZpbHRlcl9jb3VudCAtIDEpKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbkBAIC0xMzgyNiw2ICYjNDM7MTM4MzYsMTMgQEAgc3RhdGljIGludCBibnh0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQylcbiBcdFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4gXG4mIzQzO1x0LyogS2VlcCB0aGUgcHJvbWlzY3VvdXMgYml0IHdoaWxlIHRoZSBVQyBsaXN0IGlzIGxvbmdlciB0aGFuIHRoZVxuJiM0MztcdCAqIGF2YWlsYWJsZSBMMiBmaWx0ZXJzLCBzbyB0aGF0IGFuIHVuY2hhbmdlZCByeCBtb2RlIGlzIG5vdFxuJiM0MztcdCAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpIFx1MDAyNlx1MDAyNiBibnh0X3Byb21pc2Nfb2soYnApKVxuJiM0MztcdFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4mIzQzO1xuIFx0dWNfdXBkYXRlID0gYm54dF91Y19saXN0X3VwZGF0ZWQoYnAsIHVjKTtcbiBcbiBcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9CUk9BRENBU1QpXG5AQCAtMTM4NjksNyAmIzQzOzEzODg2LDExIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdG5ldGlmX2FkZHJfbG9ja19iaChkZXYpO1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFx1MDAzZSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKSkge1xuIFx0XHR2bmljLVx1MDAzZXJ4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuJiM0MztcdFx0dm5pYy1cdTAwM2VmbGFncyB8PSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xuIFx0fSBlbHNlIHtcbiYjNDM7XHRcdHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+Qk5YVF9WTklDX1VDX1BST01JU0NfRkxBRztcbiYjNDM7XHRcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpKVxuJiM0MztcdFx0XHR2bmljLVx1MDAzZXJ4X21hc2sgXHUwMDI2PSB+Q0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuIFx0XHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1Yykge1xuIFx0XHRcdG1lbWNweSh2bmljLVx1MDAzZXVjX2xpc3QgJiM0Mzsgb2ZmLCBoYS1cdTAwM2VhZGRyLCBFVEhfQUxFTik7XG4gXHRcdFx0b2ZmICYjNDM7PSBFVEhfQUxFTjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG5pbmRleCBhYjg5NGY4YWRkZWY1Li41M2FkMzlmNDQ0MWQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG5AQCAtMTMzMiw2ICYjNDM7MTMzMiw3IEBAIHN0cnVjdCBibnh0X3ZuaWNfaW5mbyB7XG4gI2RlZmluZSBCTlhUX1ZOSUNfUkZTX05FV19SU1NfRkxBR1x0MHgxMFxuICNkZWZpbmUgQk5YVF9WTklDX05UVVBMRV9GTEFHXHRcdDB4MjBcbiAjZGVmaW5lIEJOWFRfVk5JQ19SU1NDVFhfRkxBR1x0XHQweDQwXG4mIzQzOyNkZWZpbmUgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBR1x0MHg4MFxuIFx0c3RydWN0IGV0aHRvb2xfcnhmaF9jb250ZXh0ICpyc3NfY3R4O1xuIFx0dTMyXHRcdHZuaWNfaWQ7XG4gXHR1MTZcdFx0ZGVmYXVsdF9yeF9yaW5nO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA3OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBjYXJkIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTAxOWJiN2MzNDhhM2M3NzBkYTJiNjZjZGFiNzg2N2YwZDBkMzA1NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDA3OjI5OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwppbmRleCA5YzJjYzUwMjc2YTU5Li40ODA1ZWU2M2VkOGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwpAQCAtMTM3OTEsNiAmIzQzOzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCwKIAlzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhOwogCWludCBvZmYgPSAwOwogCiYjNDM7CS8qIEluIHRoZSBvdmVyZmxvdyBzdGF0ZSBhbGwgdW5pY2FzdCBpcyBhY2NlcHRlZCB0aHJvdWdoIHRoZQomIzQzOwkgKiBwcm9taXNjdW91cyBSWCBtYXNrIGFuZCBubyBzZWNvbmRhcnkgTDIgZmlsdGVycyBhcmUgaW4gdXNlLAomIzQzOwkgKiBzbyB0aGUgbGlzdCBvbmx5IG5lZWRzIHJlcHJvZ3JhbW1pbmcgb25jZSBpdCBmaXRzIHRoZQomIzQzOwkgKiBhdmFpbGFibGUgZmlsdGVycyBhZ2Fpbi4gIFJlcG9ydGluZyBhbiB1cGRhdGUgaGVyZSB3b3VsZAomIzQzOwkgKiByZXNlbmQgYW4gaWRlbnRpY2FsIFNFVF9SWF9NQVNLIG9uIGV2ZXJ5IGNhbGxiYWNrLCB3aGljaAomIzQzOwkgKiBjYXVzZXMgYnJpZWYgUlggcGFja2V0IGxvc3Mgb24gc29tZSBjaGlwcy4KJiM0MzsJICovCiYjNDM7CWlmICh2bmljLSZndDtmbGFncyAmYW1wOyBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKQomIzQzOwkJcmV0dXJuIG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICZsdDs9IChCTlhUX01BWF9VQ19BRERSUyAtIDEpOwomIzQzOwogCWlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSAhPSAodm5pYy0mZ3Q7dWNfZmlsdGVyX2NvdW50IC0gMSkpCiAJCXJldHVybiB0cnVlOwogCkBAIC0xMzgyNiw2ICYjNDM7MTM4MzYsMTMgQEAgc3RhdGljIGludCBibnh0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKGRldi0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1BST01JU0MpCiAJCW1hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTOwogCiYjNDM7CS8qIEtlZXAgdGhlIHByb21pc2N1b3VzIGJpdCB3aGlsZSB0aGUgVUMgbGlzdCBpcyBsb25nZXIgdGhhbiB0aGUKJiM0MzsJICogYXZhaWxhYmxlIEwyIGZpbHRlcnMsIHNvIHRoYXQgYW4gdW5jaGFuZ2VkIHJ4IG1vZGUgaXMgbm90CiYjNDM7CSAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS4KJiM0MzsJICovCiYjNDM7CWlmICgodm5pYy0mZ3Q7ZmxhZ3MgJmFtcDsgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRykgJmFtcDsmYW1wOyBibnh0X3Byb21pc2Nfb2soYnApKQomIzQzOwkJbWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7CiYjNDM7CiAJdWNfdXBkYXRlID0gYm54dF91Y19saXN0X3VwZGF0ZWQoYnAsIHVjKTsKIAogCWlmIChkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9CUk9BRENBU1QpCkBAIC0xMzg2OSw3ICYjNDM7MTM4ODYsMTEgQEAgc3RhdGljIGludCBibnh0X2NmZ19yeF9tb2RlKHN0cnVjdCBibnh0ICpicCwgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLAogCW5ldGlmX2FkZHJfbG9ja19iaChkZXYpOwogCWlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSAmZ3Q7IChCTlhUX01BWF9VQ19BRERSUyAtIDEpKSB7CiAJCXZuaWMtJmd0O3J4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTOwomIzQzOwkJdm5pYy0mZ3Q7ZmxhZ3MgfD0gQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRzsKIAl9IGVsc2UgewomIzQzOwkJdm5pYy0mZ3Q7ZmxhZ3MgJmFtcDs9IH5CTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHOwomIzQzOwkJaWYgKCEoZGV2LSZndDtmbGFncyAmYW1wOyBJRkZfUFJPTUlTQykpCiYjNDM7CQkJdm5pYy0mZ3Q7cnhfbWFzayAmYW1wOz0gfkNGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUzsKIAkJbmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHsKIAkJCW1lbWNweSh2bmljLSZndDt1Y19saXN0ICYjNDM7IG9mZiwgaGEtJmd0O2FkZHIsIEVUSF9BTEVOKTsKIAkJCW9mZiAmIzQzOz0gRVRIX0FMRU47CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oCmluZGV4IGFiODk0ZjhhZGRlZjUuLjUzYWQzOWY0NDQxZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oCkBAIC0xMzMyLDYgJiM0MzsxMzMyLDcgQEAgc3RydWN0IGJueHRfdm5pY19pbmZvIHsKICNkZWZpbmUgQk5YVF9WTklDX1JGU19ORVdfUlNTX0ZMQUcJMHgxMAogI2RlZmluZSBCTlhUX1ZOSUNfTlRVUExFX0ZMQUcJCTB4MjAKICNkZWZpbmUgQk5YVF9WTklDX1JTU0NUWF9GTEFHCQkweDQwCiYjNDM7I2RlZmluZSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHCTB4ODAKIAlzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQgKnJzc19jdHg7CiAJdTMyCQl2bmljX2lkOwogCXUxNgkJZGVmYXVsdF9yeF9yaW5nOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTI2CgkJCQkJCQlvdXRwdXQ6IDEwMQoJCQkJCQkJdGhvdWdodHM6IDQzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IEJyb2FkY29tIGJueHQgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGJueHQuY2AgYW5kIGBibnh0LmhgLCBzcGVjaWZpY2FsbHkgZnVuY3Rpb25zIGxpa2UgYGJueHRfdWNfbGlzdF91cGRhdGVkYCwgYGJueHRfc2V0X3J4X21vZGVgLCBhbmQgYGJueHRfY2ZnX3J4X21vZGVgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIGRyaXZlciwgdGhlIGBibnh0YCBkcml2ZXIuIFRoZXNlIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIOKAkyAxMCwgMjUsIDQwLCBhbmQgNTAgZ2lnYWJpdCBFdGhlcm5ldCBOSUNzLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/JiMzNDsgQmVjYXVzZSwgb2J2aW91c2x5LCBmdXp6aW5nIGhhcmR3YXJlIGRyaXZlcnMgaXMgc2lnbmlmaWNhbnRseSBtb3JlIGNvbXBsZXggdGhhbiBmdXp6aW5nIGEgZHJpdmVyIHRoYXQgKmNhbiogcnVuIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGFuc3dlciBpcyBhIHF1aWNrICYjMzQ7bm8sJiMzNDsgYnV0IGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGltcGxpY2F0aW9ucyBmb3IgZnV6emFiaWxpdHkuCgpUaGVuIHRoZSBwcm9tcHQgY29uZmlybWVkIGl0OiB0aGUgYm54dCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGV4Y2x1ZGVzIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnMsIGFzIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IHNldHRsZXMgaXQuIEl0JiMzOTtzIG5vdCBmdXp6YWJsZSBpbiBhIHN0YW5kYXJkIGVudmlyb25tZW50LCBzbyBJIG5lZWQgdG8gY2hlY2sgZm9yIHNvZnR3YXJlIGVtdWxhdGlvbi4KCk9rYXksIEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUgaXMgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgYm54dC4gU2luY2UgSSBkb24mIzM5O3QgaGF2ZSB0aGUgUUVNVSBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBhdmFpbGFibGUsIEkmIzM5O2xsIGhhdmUgdG8gcmVseSBvbiBteSBnZW5lcmFsIGtub3dsZWRnZSBoZXJlLiBJIGtub3cgdGhlIGNvbW1vbiBlbXVsYXRlZCBOSUNzIGFyZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZteG5ldDMsIHZpcnRpby1uZXQsIGlnYiwgYW5kIHR1bGlwLiBOb3BlLCBubyBgYm54dGAgdGhlcmUuCgpMb29raW5nIGJhY2ssIHRoZSBjaGFuZ2VzIGNvbmZpcm0gdGhpczogV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgYGJueHRgIGRyaXZlciwgYW5kIHRoZXNlIGFyZSBhbGwgY29yZSBuZXR3b3JrIGZ1bmN0aW9ucy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLgoKU28sIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDc6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBjYXJkIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBjYXJkIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA3OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNzoyOTo1NS4wMjUxMTQ1NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQwODU4NjA3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGNhcmQgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2VkIGZvciBmdXp6aW5nLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgYnkgdGhlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA3OjI5OjU1LjAyNTEyMTE1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzODYyMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTAxOWJiN2MzNDhhM2M3NzBkYTJiNjZjZGFiNzg2N2YwZDBkMzA1NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNzoyOTo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXFxuaW5kZXggOWMyY2M1MDI3NmE1OS4uNDgwNWVlNjNlZDhmMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXFxuQEAgLTEzNzkxLDYgKzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCxcXG4gXFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcXG4gXFx0aW50IG9mZiA9IDA7XFxuIFxcbitcXHQvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgYWxsIHVuaWNhc3QgaXMgYWNjZXB0ZWQgdGhyb3VnaCB0aGVcXG4rXFx0ICogcHJvbWlzY3VvdXMgUlggbWFzayBhbmQgbm8gc2Vjb25kYXJ5IEwyIGZpbHRlcnMgYXJlIGluIHVzZSxcXG4rXFx0ICogc28gdGhlIGxpc3Qgb25seSBuZWVkcyByZXByb2dyYW1taW5nIG9uY2UgaXQgZml0cyB0aGVcXG4rXFx0ICogYXZhaWxhYmxlIGZpbHRlcnMgYWdhaW4uICBSZXBvcnRpbmcgYW4gdXBkYXRlIGhlcmUgd291bGRcXG4rXFx0ICogcmVzZW5kIGFuIGlkZW50aWNhbCBTRVRfUlhfTUFTSyBvbiBldmVyeSBjYWxsYmFjaywgd2hpY2hcXG4rXFx0ICogY2F1c2VzIGJyaWVmIFJYIHBhY2tldCBsb3NzIG9uIHNvbWUgY2hpcHMuXFxuK1xcdCAqL1xcbitcXHRpZiAodm5pYy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKVxcbitcXHRcXHRyZXR1cm4gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgXFx1MDAzYz0gKEJOWFRfTUFYX1VDX0FERFJTIC0gMSk7XFxuK1xcbiBcXHRpZiAobmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgIT0gKHZuaWMtXFx1MDAzZXVjX2ZpbHRlcl9jb3VudCAtIDEpKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuQEAgLTEzODI2LDYgKzEzODM2LDEzIEBAIHN0YXRpYyBpbnQgYm54dF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKVxcbiBcXHRcXHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcXG4gXFxuK1xcdC8qIEtlZXAgdGhlIHByb21pc2N1b3VzIGJpdCB3aGlsZSB0aGUgVUMgbGlzdCBpcyBsb25nZXIgdGhhbiB0aGVcXG4rXFx0ICogYXZhaWxhYmxlIEwyIGZpbHRlcnMsIHNvIHRoYXQgYW4gdW5jaGFuZ2VkIHJ4IG1vZGUgaXMgbm90XFxuK1xcdCAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS5cXG4rXFx0ICovXFxuK1xcdGlmICgodm5pYy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKSBcXHUwMDI2XFx1MDAyNiBibnh0X3Byb21pc2Nfb2soYnApKVxcbitcXHRcXHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcXG4rXFxuIFxcdHVjX3VwZGF0ZSA9IGJueHRfdWNfbGlzdF91cGRhdGVkKGJwLCB1Yyk7XFxuIFxcbiBcXHRpZiAoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9CUk9BRENBU1QpXFxuQEAgLTEzODY5LDcgKzEzODg2LDExIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4gXFx0bmV0aWZfYWRkcl9sb2NrX2JoKGRldik7XFxuIFxcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSBcXHUwMDNlIChCTlhUX01BWF9VQ19BRERSUyAtIDEpKSB7XFxuIFxcdFxcdHZuaWMtXFx1MDAzZXJ4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xcbitcXHRcXHR2bmljLVxcdTAwM2VmbGFncyB8PSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xcbiBcXHR9IGVsc2Uge1xcbitcXHRcXHR2bmljLVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+Qk5YVF9WTklDX1VDX1BST01JU0NfRkxBRztcXG4rXFx0XFx0aWYgKCEoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSlcXG4rXFx0XFx0XFx0dm5pYy1cXHUwMDNlcnhfbWFzayBcXHUwMDI2PSB+Q0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xcbiBcXHRcXHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1Yykge1xcbiBcXHRcXHRcXHRtZW1jcHkodm5pYy1cXHUwMDNldWNfbGlzdCArIG9mZiwgaGEtXFx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcXG4gXFx0XFx0XFx0b2ZmICs9IEVUSF9BTEVOO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXFxuaW5kZXggYWI4OTRmOGFkZGVmNS4uNTNhZDM5ZjQ0NDFkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXFxuQEAgLTEzMzIsNiArMTMzMiw3IEBAIHN0cnVjdCBibnh0X3ZuaWNfaW5mbyB7XFxuICNkZWZpbmUgQk5YVF9WTklDX1JGU19ORVdfUlNTX0ZMQUdcXHQweDEwXFxuICNkZWZpbmUgQk5YVF9WTklDX05UVVBMRV9GTEFHXFx0XFx0MHgyMFxcbiAjZGVmaW5lIEJOWFRfVk5JQ19SU1NDVFhfRkxBR1xcdFxcdDB4NDBcXG4rI2RlZmluZSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHXFx0MHg4MFxcbiBcXHRzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQgKnJzc19jdHg7XFxuIFxcdHUzMlxcdFxcdHZuaWNfaWQ7XFxuIFxcdHUxNlxcdFxcdGRlZmF1bHRfcnhfcmluZztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDc6Mjk6NTUuNTY5NjA5NjI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTE4NjQwODA3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGNhcmQgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2VkIGZvciBmdXp6aW5nLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgYnkgdGhlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwMTliYjdjMzQ4YTNjNzcwZGEyYjY2Y2RhYjc4NjdmMGQwZDMwNTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNzoyOTo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbmluZGV4IDljMmNjNTAyNzZhNTkuLjQ4MDVlZTYzZWQ4ZjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbkBAIC0xMzc5MSw2ICsxMzc5MSwxNiBAQCBzdGF0aWMgYm9vbCBibnh0X3VjX2xpc3RfdXBkYXRlZChzdHJ1Y3QgYm54dCAqYnAsXG4gXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuIFx0aW50IG9mZiA9IDA7XG4gXG4rXHQvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgYWxsIHVuaWNhc3QgaXMgYWNjZXB0ZWQgdGhyb3VnaCB0aGVcbitcdCAqIHByb21pc2N1b3VzIFJYIG1hc2sgYW5kIG5vIHNlY29uZGFyeSBMMiBmaWx0ZXJzIGFyZSBpbiB1c2UsXG4rXHQgKiBzbyB0aGUgbGlzdCBvbmx5IG5lZWRzIHJlcHJvZ3JhbW1pbmcgb25jZSBpdCBmaXRzIHRoZVxuK1x0ICogYXZhaWxhYmxlIGZpbHRlcnMgYWdhaW4uICBSZXBvcnRpbmcgYW4gdXBkYXRlIGhlcmUgd291bGRcbitcdCAqIHJlc2VuZCBhbiBpZGVudGljYWwgU0VUX1JYX01BU0sgb24gZXZlcnkgY2FsbGJhY2ssIHdoaWNoXG4rXHQgKiBjYXVzZXMgYnJpZWYgUlggcGFja2V0IGxvc3Mgb24gc29tZSBjaGlwcy5cbitcdCAqL1xuK1x0aWYgKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpXG4rXHRcdHJldHVybiBuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSBcdTAwM2M9IChCTlhUX01BWF9VQ19BRERSUyAtIDEpO1xuK1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICE9ICh2bmljLVx1MDAzZXVjX2ZpbHRlcl9jb3VudCAtIDEpKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbkBAIC0xMzgyNiw2ICsxMzgzNiwxMyBAQCBzdGF0aWMgaW50IGJueHRfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QUk9NSVNDKVxuIFx0XHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbiBcbitcdC8qIEtlZXAgdGhlIHByb21pc2N1b3VzIGJpdCB3aGlsZSB0aGUgVUMgbGlzdCBpcyBsb25nZXIgdGhhbiB0aGVcbitcdCAqIGF2YWlsYWJsZSBMMiBmaWx0ZXJzLCBzbyB0aGF0IGFuIHVuY2hhbmdlZCByeCBtb2RlIGlzIG5vdFxuK1x0ICogdHJlYXRlZCBhcyBhIG1hc2sgY2hhbmdlLlxuK1x0ICovXG4rXHRpZiAoKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpIFx1MDAyNlx1MDAyNiBibnh0X3Byb21pc2Nfb2soYnApKVxuK1x0XHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbitcbiBcdHVjX3VwZGF0ZSA9IGJueHRfdWNfbGlzdF91cGRhdGVkKGJwLCB1Yyk7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQlJPQURDQVNUKVxuQEAgLTEzODY5LDcgKzEzODg2LDExIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdG5ldGlmX2FkZHJfbG9ja19iaChkZXYpO1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFx1MDAzZSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKSkge1xuIFx0XHR2bmljLVx1MDAzZXJ4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuK1x0XHR2bmljLVx1MDAzZWZsYWdzIHw9IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7XG4gXHR9IGVsc2Uge1xuK1x0XHR2bmljLVx1MDAzZWZsYWdzIFx1MDAyNj0gfkJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7XG4rXHRcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpKVxuK1x0XHRcdHZuaWMtXHUwMDNlcnhfbWFzayBcdTAwMjY9IH5DRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4gXHRcdG5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKSB7XG4gXHRcdFx0bWVtY3B5KHZuaWMtXHUwMDNldWNfbGlzdCArIG9mZiwgaGEtXHUwMDNlYWRkciwgRVRIX0FMRU4pO1xuIFx0XHRcdG9mZiArPSBFVEhfQUxFTjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG5pbmRleCBhYjg5NGY4YWRkZWY1Li41M2FkMzlmNDQ0MWQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG5AQCAtMTMzMiw2ICsxMzMyLDcgQEAgc3RydWN0IGJueHRfdm5pY19pbmZvIHtcbiAjZGVmaW5lIEJOWFRfVk5JQ19SRlNfTkVXX1JTU19GTEFHXHQweDEwXG4gI2RlZmluZSBCTlhUX1ZOSUNfTlRVUExFX0ZMQUdcdFx0MHgyMFxuICNkZWZpbmUgQk5YVF9WTklDX1JTU0NUWF9GTEFHXHRcdDB4NDBcbisjZGVmaW5lIEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUdcdDB4ODBcbiBcdHN0cnVjdCBldGh0b29sX3J4ZmhfY29udGV4dCAqcnNzX2N0eDtcbiBcdHUzMlx0XHR2bmljX2lkO1xuIFx0dTE2XHRcdGRlZmF1bHRfcnhfcmluZztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA3OjI5OjU1LjU2OTYxMDY2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExODY0MDYwNjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZz1mYWxzZTogQnJvYWRjb20gYm54dCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGJueHQuY2AgYW5kIGBibnh0LmhgLCBzcGVjaWZpY2FsbHkgZnVuY3Rpb25zIGxpa2UgYGJueHRfdWNfbGlzdF91cGRhdGVkYCwgYGJueHRfc2V0X3J4X21vZGVgLCBhbmQgYGJueHRfY2ZnX3J4X21vZGVgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgZHJpdmVyLCB0aGUgYGJueHRgIGRyaXZlci4gVGhlc2UgYXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMg4oCTIDEwLCAyNSwgNDAsIGFuZCA1MCBnaWdhYml0IEV0aGVybmV0IE5JQ3MuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIFwiSXMgdGhpcyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VP1wiIEJlY2F1c2UsIG9idmlvdXNseSwgZnV6emluZyBoYXJkd2FyZSBkcml2ZXJzIGlzIHNpZ25pZmljYW50bHkgbW9yZSBjb21wbGV4IHRoYW4gZnV6emluZyBhIGRyaXZlciB0aGF0ICpjYW4qIHJ1biBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBhbnN3ZXIgaXMgYSBxdWljayBcIm5vLFwiIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enphYmlsaXR5LlxuXG5UaGVuIHRoZSBwcm9tcHQgY29uZmlybWVkIGl0OiB0aGUgYm54dCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGV4Y2x1ZGVzIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnMsIGFzIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IHNldHRsZXMgaXQuIEl0J3Mgbm90IGZ1enphYmxlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQsIHNvIEkgbmVlZCB0byBjaGVjayBmb3Igc29mdHdhcmUgZW11bGF0aW9uLlxuXG5Pa2F5LCBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZXJlIGlzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGJueHQuIFNpbmNlIEkgZG9uJ3QgaGF2ZSB0aGUgUUVNVSBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBhdmFpbGFibGUsIEknbGwgaGF2ZSB0byByZWx5IG9uIG15IGdlbmVyYWwga25vd2xlZGdlIGhlcmUuIEkga25vdyB0aGUgY29tbW9uIGVtdWxhdGVkIE5JQ3MgYXJlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgdm14bmV0MywgdmlydGlvLW5ldCwgaWdiLCBhbmQgdHVsaXAuIE5vcGUsIG5vIGBibnh0YCB0aGVyZS5cblxuTG9va2luZyBiYWNrLCB0aGUgY2hhbmdlcyBjb25maXJtIHRoaXM6IFdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYGJueHRgIGRyaXZlciwgYW5kIHRoZXNlIGFyZSBhbGwgY29yZSBuZXR3b3JrIGZ1bmN0aW9ucy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLlxuXG5TbywgSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyNiwiT3V0cHV0VG9rZW5zIjoxMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNzozMDowNy40MzM2NzMwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIEV0aGVybmV0IGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgY2FyZCBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBieSB0aGUgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIEV0aGVybmV0IGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgY2FyZCBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBieSB0aGUgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDc6MzA6MDcuNDMzNjkxODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowppknl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 07:27:40 +0000 UTC FinishedAt: 2026-08-27 07:30:08 +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+CgkJCTx0ZD4yMDI2LzA4LzI3IDA3OjI5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIEV0aGVybmV0IGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgY2FyZCBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBieSB0aGUgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNzoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEwMTliYjdjMzQ4YTNjNzcwZGEyYjY2Y2RhYjc4NjdmMGQwZDMwNTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNzoyOTo1NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5pbmRleCA5YzJjYzUwMjc2YTU5Li40ODA1ZWU2M2VkOGYyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXG5AQCAtMTM3OTEsNiAmIzQzOzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCxcbiBcdHN0cnVjdCBuZXRkZXZfaHdfYWRkciAqaGE7XG4gXHRpbnQgb2ZmID0gMDtcbiBcbiYjNDM7XHQvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgYWxsIHVuaWNhc3QgaXMgYWNjZXB0ZWQgdGhyb3VnaCB0aGVcbiYjNDM7XHQgKiBwcm9taXNjdW91cyBSWCBtYXNrIGFuZCBubyBzZWNvbmRhcnkgTDIgZmlsdGVycyBhcmUgaW4gdXNlLFxuJiM0MztcdCAqIHNvIHRoZSBsaXN0IG9ubHkgbmVlZHMgcmVwcm9ncmFtbWluZyBvbmNlIGl0IGZpdHMgdGhlXG4mIzQzO1x0ICogYXZhaWxhYmxlIGZpbHRlcnMgYWdhaW4uICBSZXBvcnRpbmcgYW4gdXBkYXRlIGhlcmUgd291bGRcbiYjNDM7XHQgKiByZXNlbmQgYW4gaWRlbnRpY2FsIFNFVF9SWF9NQVNLIG9uIGV2ZXJ5IGNhbGxiYWNrLCB3aGljaFxuJiM0MztcdCAqIGNhdXNlcyBicmllZiBSWCBwYWNrZXQgbG9zcyBvbiBzb21lIGNoaXBzLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICh2bmljLVx1MDAzZWZsYWdzIFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKVxuJiM0MztcdFx0cmV0dXJuIG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFx1MDAzYz0gKEJOWFRfTUFYX1VDX0FERFJTIC0gMSk7XG4mIzQzO1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICE9ICh2bmljLVx1MDAzZXVjX2ZpbHRlcl9jb3VudCAtIDEpKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbkBAIC0xMzgyNiw2ICYjNDM7MTM4MzYsMTMgQEAgc3RhdGljIGludCBibnh0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfUFJPTUlTQylcbiBcdFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4gXG4mIzQzO1x0LyogS2VlcCB0aGUgcHJvbWlzY3VvdXMgYml0IHdoaWxlIHRoZSBVQyBsaXN0IGlzIGxvbmdlciB0aGFuIHRoZVxuJiM0MztcdCAqIGF2YWlsYWJsZSBMMiBmaWx0ZXJzLCBzbyB0aGF0IGFuIHVuY2hhbmdlZCByeCBtb2RlIGlzIG5vdFxuJiM0MztcdCAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpIFx1MDAyNlx1MDAyNiBibnh0X3Byb21pc2Nfb2soYnApKVxuJiM0MztcdFx0bWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4mIzQzO1xuIFx0dWNfdXBkYXRlID0gYm54dF91Y19saXN0X3VwZGF0ZWQoYnAsIHVjKTtcbiBcbiBcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9CUk9BRENBU1QpXG5AQCAtMTM4NjksNyAmIzQzOzEzODg2LDExIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdG5ldGlmX2FkZHJfbG9ja19iaChkZXYpO1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFx1MDAzZSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKSkge1xuIFx0XHR2bmljLVx1MDAzZXJ4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuJiM0MztcdFx0dm5pYy1cdTAwM2VmbGFncyB8PSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xuIFx0fSBlbHNlIHtcbiYjNDM7XHRcdHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2PSB+Qk5YVF9WTklDX1VDX1BST01JU0NfRkxBRztcbiYjNDM7XHRcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpKVxuJiM0MztcdFx0XHR2bmljLVx1MDAzZXJ4X21hc2sgXHUwMDI2PSB+Q0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuIFx0XHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1Yykge1xuIFx0XHRcdG1lbWNweSh2bmljLVx1MDAzZXVjX2xpc3QgJiM0Mzsgb2ZmLCBoYS1cdTAwM2VhZGRyLCBFVEhfQUxFTik7XG4gXHRcdFx0b2ZmICYjNDM7PSBFVEhfQUxFTjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG5pbmRleCBhYjg5NGY4YWRkZWY1Li41M2FkMzlmNDQ0MWQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG5AQCAtMTMzMiw2ICYjNDM7MTMzMiw3IEBAIHN0cnVjdCBibnh0X3ZuaWNfaW5mbyB7XG4gI2RlZmluZSBCTlhUX1ZOSUNfUkZTX05FV19SU1NfRkxBR1x0MHgxMFxuICNkZWZpbmUgQk5YVF9WTklDX05UVVBMRV9GTEFHXHRcdDB4MjBcbiAjZGVmaW5lIEJOWFRfVk5JQ19SU1NDVFhfRkxBR1x0XHQweDQwXG4mIzQzOyNkZWZpbmUgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBR1x0MHg4MFxuIFx0c3RydWN0IGV0aHRvb2xfcnhmaF9jb250ZXh0ICpyc3NfY3R4O1xuIFx0dTMyXHRcdHZuaWNfaWQ7XG4gXHR1MTZcdFx0ZGVmYXVsdF9yeF9yaW5nO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA3OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBjYXJkIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTAxOWJiN2MzNDhhM2M3NzBkYTJiNjZjZGFiNzg2N2YwZDBkMzA1NQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDI3IDA3OjI5OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwppbmRleCA5YzJjYzUwMjc2YTU5Li40ODA1ZWU2M2VkOGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYwpAQCAtMTM3OTEsNiAmIzQzOzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCwKIAlzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhOwogCWludCBvZmYgPSAwOwogCiYjNDM7CS8qIEluIHRoZSBvdmVyZmxvdyBzdGF0ZSBhbGwgdW5pY2FzdCBpcyBhY2NlcHRlZCB0aHJvdWdoIHRoZQomIzQzOwkgKiBwcm9taXNjdW91cyBSWCBtYXNrIGFuZCBubyBzZWNvbmRhcnkgTDIgZmlsdGVycyBhcmUgaW4gdXNlLAomIzQzOwkgKiBzbyB0aGUgbGlzdCBvbmx5IG5lZWRzIHJlcHJvZ3JhbW1pbmcgb25jZSBpdCBmaXRzIHRoZQomIzQzOwkgKiBhdmFpbGFibGUgZmlsdGVycyBhZ2Fpbi4gIFJlcG9ydGluZyBhbiB1cGRhdGUgaGVyZSB3b3VsZAomIzQzOwkgKiByZXNlbmQgYW4gaWRlbnRpY2FsIFNFVF9SWF9NQVNLIG9uIGV2ZXJ5IGNhbGxiYWNrLCB3aGljaAomIzQzOwkgKiBjYXVzZXMgYnJpZWYgUlggcGFja2V0IGxvc3Mgb24gc29tZSBjaGlwcy4KJiM0MzsJICovCiYjNDM7CWlmICh2bmljLSZndDtmbGFncyAmYW1wOyBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKQomIzQzOwkJcmV0dXJuIG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICZsdDs9IChCTlhUX01BWF9VQ19BRERSUyAtIDEpOwomIzQzOwogCWlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSAhPSAodm5pYy0mZ3Q7dWNfZmlsdGVyX2NvdW50IC0gMSkpCiAJCXJldHVybiB0cnVlOwogCkBAIC0xMzgyNiw2ICYjNDM7MTM4MzYsMTMgQEAgc3RhdGljIGludCBibnh0X3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKGRldi0mZ3Q7ZmxhZ3MgJmFtcDsgSUZGX1BST01JU0MpCiAJCW1hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTOwogCiYjNDM7CS8qIEtlZXAgdGhlIHByb21pc2N1b3VzIGJpdCB3aGlsZSB0aGUgVUMgbGlzdCBpcyBsb25nZXIgdGhhbiB0aGUKJiM0MzsJICogYXZhaWxhYmxlIEwyIGZpbHRlcnMsIHNvIHRoYXQgYW4gdW5jaGFuZ2VkIHJ4IG1vZGUgaXMgbm90CiYjNDM7CSAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS4KJiM0MzsJICovCiYjNDM7CWlmICgodm5pYy0mZ3Q7ZmxhZ3MgJmFtcDsgQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRykgJmFtcDsmYW1wOyBibnh0X3Byb21pc2Nfb2soYnApKQomIzQzOwkJbWFzayB8PSBDRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7CiYjNDM7CiAJdWNfdXBkYXRlID0gYm54dF91Y19saXN0X3VwZGF0ZWQoYnAsIHVjKTsKIAogCWlmIChkZXYtJmd0O2ZsYWdzICZhbXA7IElGRl9CUk9BRENBU1QpCkBAIC0xMzg2OSw3ICYjNDM7MTM4ODYsMTEgQEAgc3RhdGljIGludCBibnh0X2NmZ19yeF9tb2RlKHN0cnVjdCBibnh0ICpicCwgc3RydWN0IG5ldGRldl9od19hZGRyX2xpc3QgKnVjLAogCW5ldGlmX2FkZHJfbG9ja19iaChkZXYpOwogCWlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSAmZ3Q7IChCTlhUX01BWF9VQ19BRERSUyAtIDEpKSB7CiAJCXZuaWMtJmd0O3J4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTOwomIzQzOwkJdm5pYy0mZ3Q7ZmxhZ3MgfD0gQk5YVF9WTklDX1VDX1BST01JU0NfRkxBRzsKIAl9IGVsc2UgewomIzQzOwkJdm5pYy0mZ3Q7ZmxhZ3MgJmFtcDs9IH5CTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHOwomIzQzOwkJaWYgKCEoZGV2LSZndDtmbGFncyAmYW1wOyBJRkZfUFJPTUlTQykpCiYjNDM7CQkJdm5pYy0mZ3Q7cnhfbWFzayAmYW1wOz0gfkNGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUzsKIAkJbmV0ZGV2X2h3X2FkZHJfbGlzdF9mb3JfZWFjaChoYSwgdWMpIHsKIAkJCW1lbWNweSh2bmljLSZndDt1Y19saXN0ICYjNDM7IG9mZiwgaGEtJmd0O2FkZHIsIEVUSF9BTEVOKTsKIAkJCW9mZiAmIzQzOz0gRVRIX0FMRU47CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oCmluZGV4IGFiODk0ZjhhZGRlZjUuLjUzYWQzOWY0NDQxZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oCkBAIC0xMzMyLDYgJiM0MzsxMzMyLDcgQEAgc3RydWN0IGJueHRfdm5pY19pbmZvIHsKICNkZWZpbmUgQk5YVF9WTklDX1JGU19ORVdfUlNTX0ZMQUcJMHgxMAogI2RlZmluZSBCTlhUX1ZOSUNfTlRVUExFX0ZMQUcJCTB4MjAKICNkZWZpbmUgQk5YVF9WTklDX1JTU0NUWF9GTEFHCQkweDQwCiYjNDM7I2RlZmluZSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHCTB4ODAKIAlzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQgKnJzc19jdHg7CiAJdTMyCQl2bmljX2lkOwogCXUxNgkJZGVmYXVsdF9yeF9yaW5nOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAwNzoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTI2CgkJCQkJCQlvdXRwdXQ6IDEwMQoJCQkJCQkJdGhvdWdodHM6IDQzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9ZmFsc2U6IEJyb2FkY29tIGJueHQgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGJueHQuY2AgYW5kIGBibnh0LmhgLCBzcGVjaWZpY2FsbHkgZnVuY3Rpb25zIGxpa2UgYGJueHRfdWNfbGlzdF91cGRhdGVkYCwgYGJueHRfc2V0X3J4X21vZGVgLCBhbmQgYGJueHRfY2ZnX3J4X21vZGVgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIGRyaXZlciwgdGhlIGBibnh0YCBkcml2ZXIuIFRoZXNlIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIOKAkyAxMCwgMjUsIDQwLCBhbmQgNTAgZ2lnYWJpdCBFdGhlcm5ldCBOSUNzLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/JiMzNDsgQmVjYXVzZSwgb2J2aW91c2x5LCBmdXp6aW5nIGhhcmR3YXJlIGRyaXZlcnMgaXMgc2lnbmlmaWNhbnRseSBtb3JlIGNvbXBsZXggdGhhbiBmdXp6aW5nIGEgZHJpdmVyIHRoYXQgKmNhbiogcnVuIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGFuc3dlciBpcyBhIHF1aWNrICYjMzQ7bm8sJiMzNDsgYnV0IGxldCBtZSBkb3VibGUtY2hlY2sgdGhlIGltcGxpY2F0aW9ucyBmb3IgZnV6emFiaWxpdHkuCgpUaGVuIHRoZSBwcm9tcHQgY29uZmlybWVkIGl0OiB0aGUgYm54dCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGV4Y2x1ZGVzIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnMsIGFzIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IHNldHRsZXMgaXQuIEl0JiMzOTtzIG5vdCBmdXp6YWJsZSBpbiBhIHN0YW5kYXJkIGVudmlyb25tZW50LCBzbyBJIG5lZWQgdG8gY2hlY2sgZm9yIHNvZnR3YXJlIGVtdWxhdGlvbi4KCk9rYXksIEkgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUgaXMgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgYm54dC4gU2luY2UgSSBkb24mIzM5O3QgaGF2ZSB0aGUgUUVNVSBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBhdmFpbGFibGUsIEkmIzM5O2xsIGhhdmUgdG8gcmVseSBvbiBteSBnZW5lcmFsIGtub3dsZWRnZSBoZXJlLiBJIGtub3cgdGhlIGNvbW1vbiBlbXVsYXRlZCBOSUNzIGFyZSBlMTAwMCwgZTEwMDBlLCBydGw4MTM5LCBwY25ldCwgbmUya19wY2ksIHZteG5ldDMsIHZpcnRpby1uZXQsIGlnYiwgYW5kIHR1bGlwLiBOb3BlLCBubyBgYm54dGAgdGhlcmUuCgpMb29raW5nIGJhY2ssIHRoZSBjaGFuZ2VzIGNvbmZpcm0gdGhpczogV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgYGJueHRgIGRyaXZlciwgYW5kIHRoZXNlIGFyZSBhbGwgY29yZSBuZXR3b3JrIGZ1bmN0aW9ucy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLgoKU28sIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMDc6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBjYXJkIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gTmV0WHRyZW1lLUMvRSAoYm54dCkgRXRoZXJuZXQgZHJpdmVyLiBUaGlzIGlzIGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgbmV0d29yayBjYXJkIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlIGFuZCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNlZCBmb3IgZnV6emluZy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBjYW5ub3QgYmUgcmVhY2hlZCBhbmQgdGVzdGVkIGJ5IHRoZSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDA3OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNzoyOTo1NS4wMjUxMTQ1NjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQwODU4NjA3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGNhcmQgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2VkIGZvciBmdXp6aW5nLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgYnkgdGhlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA3OjI5OjU1LjAyNTEyMTE1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzODYyMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTAxOWJiN2MzNDhhM2M3NzBkYTJiNjZjZGFiNzg2N2YwZDBkMzA1NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNzoyOTo1NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXFxuaW5kZXggOWMyY2M1MDI3NmE1OS4uNDgwNWVlNjNlZDhmMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jXFxuQEAgLTEzNzkxLDYgKzEzNzkxLDE2IEBAIHN0YXRpYyBib29sIGJueHRfdWNfbGlzdF91cGRhdGVkKHN0cnVjdCBibnh0ICpicCxcXG4gXFx0c3RydWN0IG5ldGRldl9od19hZGRyICpoYTtcXG4gXFx0aW50IG9mZiA9IDA7XFxuIFxcbitcXHQvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgYWxsIHVuaWNhc3QgaXMgYWNjZXB0ZWQgdGhyb3VnaCB0aGVcXG4rXFx0ICogcHJvbWlzY3VvdXMgUlggbWFzayBhbmQgbm8gc2Vjb25kYXJ5IEwyIGZpbHRlcnMgYXJlIGluIHVzZSxcXG4rXFx0ICogc28gdGhlIGxpc3Qgb25seSBuZWVkcyByZXByb2dyYW1taW5nIG9uY2UgaXQgZml0cyB0aGVcXG4rXFx0ICogYXZhaWxhYmxlIGZpbHRlcnMgYWdhaW4uICBSZXBvcnRpbmcgYW4gdXBkYXRlIGhlcmUgd291bGRcXG4rXFx0ICogcmVzZW5kIGFuIGlkZW50aWNhbCBTRVRfUlhfTUFTSyBvbiBldmVyeSBjYWxsYmFjaywgd2hpY2hcXG4rXFx0ICogY2F1c2VzIGJyaWVmIFJYIHBhY2tldCBsb3NzIG9uIHNvbWUgY2hpcHMuXFxuK1xcdCAqL1xcbitcXHRpZiAodm5pYy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKVxcbitcXHRcXHRyZXR1cm4gbmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgXFx1MDAzYz0gKEJOWFRfTUFYX1VDX0FERFJTIC0gMSk7XFxuK1xcbiBcXHRpZiAobmV0ZGV2X2h3X2FkZHJfbGlzdF9jb3VudCh1YykgIT0gKHZuaWMtXFx1MDAzZXVjX2ZpbHRlcl9jb3VudCAtIDEpKVxcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFxuQEAgLTEzODI2LDYgKzEzODM2LDEzIEBAIHN0YXRpYyBpbnQgYm54dF9zZXRfcnhfbW9kZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKVxcbiBcXHRcXHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcXG4gXFxuK1xcdC8qIEtlZXAgdGhlIHByb21pc2N1b3VzIGJpdCB3aGlsZSB0aGUgVUMgbGlzdCBpcyBsb25nZXIgdGhhbiB0aGVcXG4rXFx0ICogYXZhaWxhYmxlIEwyIGZpbHRlcnMsIHNvIHRoYXQgYW4gdW5jaGFuZ2VkIHJ4IG1vZGUgaXMgbm90XFxuK1xcdCAqIHRyZWF0ZWQgYXMgYSBtYXNrIGNoYW5nZS5cXG4rXFx0ICovXFxuK1xcdGlmICgodm5pYy1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHKSBcXHUwMDI2XFx1MDAyNiBibnh0X3Byb21pc2Nfb2soYnApKVxcbitcXHRcXHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcXG4rXFxuIFxcdHVjX3VwZGF0ZSA9IGJueHRfdWNfbGlzdF91cGRhdGVkKGJwLCB1Yyk7XFxuIFxcbiBcXHRpZiAoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9CUk9BRENBU1QpXFxuQEAgLTEzODY5LDcgKzEzODg2LDExIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcXG4gXFx0bmV0aWZfYWRkcl9sb2NrX2JoKGRldik7XFxuIFxcdGlmIChuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSBcXHUwMDNlIChCTlhUX01BWF9VQ19BRERSUyAtIDEpKSB7XFxuIFxcdFxcdHZuaWMtXFx1MDAzZXJ4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xcbitcXHRcXHR2bmljLVxcdTAwM2VmbGFncyB8PSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHO1xcbiBcXHR9IGVsc2Uge1xcbitcXHRcXHR2bmljLVxcdTAwM2VmbGFncyBcXHUwMDI2PSB+Qk5YVF9WTklDX1VDX1BST01JU0NfRkxBRztcXG4rXFx0XFx0aWYgKCEoZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9QUk9NSVNDKSlcXG4rXFx0XFx0XFx0dm5pYy1cXHUwMDNlcnhfbWFzayBcXHUwMDI2PSB+Q0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xcbiBcXHRcXHRuZXRkZXZfaHdfYWRkcl9saXN0X2Zvcl9lYWNoKGhhLCB1Yykge1xcbiBcXHRcXHRcXHRtZW1jcHkodm5pYy1cXHUwMDNldWNfbGlzdCArIG9mZiwgaGEtXFx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcXG4gXFx0XFx0XFx0b2ZmICs9IEVUSF9BTEVOO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXFxuaW5kZXggYWI4OTRmOGFkZGVmNS4uNTNhZDM5ZjQ0NDFkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXFxuQEAgLTEzMzIsNiArMTMzMiw3IEBAIHN0cnVjdCBibnh0X3ZuaWNfaW5mbyB7XFxuICNkZWZpbmUgQk5YVF9WTklDX1JGU19ORVdfUlNTX0ZMQUdcXHQweDEwXFxuICNkZWZpbmUgQk5YVF9WTklDX05UVVBMRV9GTEFHXFx0XFx0MHgyMFxcbiAjZGVmaW5lIEJOWFRfVk5JQ19SU1NDVFhfRkxBR1xcdFxcdDB4NDBcXG4rI2RlZmluZSBCTlhUX1ZOSUNfVUNfUFJPTUlTQ19GTEFHXFx0MHg4MFxcbiBcXHRzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQgKnJzc19jdHg7XFxuIFxcdHUzMlxcdFxcdHZuaWNfaWQ7XFxuIFxcdHUxNlxcdFxcdGRlZmF1bHRfcnhfcmluZztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDc6Mjk6NTUuNTY5NjA5NjI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTE4NjQwODA3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIChibnh0KSBFdGhlcm5ldCBkcml2ZXIuIFRoaXMgaXMgYSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBuZXR3b3JrIGNhcmQgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2VkIGZvciBmdXp6aW5nLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGNhbm5vdCBiZSByZWFjaGVkIGFuZCB0ZXN0ZWQgYnkgdGhlIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwMTliYjdjMzQ4YTNjNzcwZGEyYjY2Y2RhYjc4NjdmMGQwZDMwNTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAwNzoyOTo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbmluZGV4IDljMmNjNTAyNzZhNTkuLjQ4MDVlZTYzZWQ4ZjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmNcbkBAIC0xMzc5MSw2ICsxMzc5MSwxNiBAQCBzdGF0aWMgYm9vbCBibnh0X3VjX2xpc3RfdXBkYXRlZChzdHJ1Y3QgYm54dCAqYnAsXG4gXHRzdHJ1Y3QgbmV0ZGV2X2h3X2FkZHIgKmhhO1xuIFx0aW50IG9mZiA9IDA7XG4gXG4rXHQvKiBJbiB0aGUgb3ZlcmZsb3cgc3RhdGUgYWxsIHVuaWNhc3QgaXMgYWNjZXB0ZWQgdGhyb3VnaCB0aGVcbitcdCAqIHByb21pc2N1b3VzIFJYIG1hc2sgYW5kIG5vIHNlY29uZGFyeSBMMiBmaWx0ZXJzIGFyZSBpbiB1c2UsXG4rXHQgKiBzbyB0aGUgbGlzdCBvbmx5IG5lZWRzIHJlcHJvZ3JhbW1pbmcgb25jZSBpdCBmaXRzIHRoZVxuK1x0ICogYXZhaWxhYmxlIGZpbHRlcnMgYWdhaW4uICBSZXBvcnRpbmcgYW4gdXBkYXRlIGhlcmUgd291bGRcbitcdCAqIHJlc2VuZCBhbiBpZGVudGljYWwgU0VUX1JYX01BU0sgb24gZXZlcnkgY2FsbGJhY2ssIHdoaWNoXG4rXHQgKiBjYXVzZXMgYnJpZWYgUlggcGFja2V0IGxvc3Mgb24gc29tZSBjaGlwcy5cbitcdCAqL1xuK1x0aWYgKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpXG4rXHRcdHJldHVybiBuZXRkZXZfaHdfYWRkcl9saXN0X2NvdW50KHVjKSBcdTAwM2M9IChCTlhUX01BWF9VQ19BRERSUyAtIDEpO1xuK1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpICE9ICh2bmljLVx1MDAzZXVjX2ZpbHRlcl9jb3VudCAtIDEpKVxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbkBAIC0xMzgyNiw2ICsxMzgzNiwxMyBAQCBzdGF0aWMgaW50IGJueHRfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChkZXYtXHUwMDNlZmxhZ3MgXHUwMDI2IElGRl9QUk9NSVNDKVxuIFx0XHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbiBcbitcdC8qIEtlZXAgdGhlIHByb21pc2N1b3VzIGJpdCB3aGlsZSB0aGUgVUMgbGlzdCBpcyBsb25nZXIgdGhhbiB0aGVcbitcdCAqIGF2YWlsYWJsZSBMMiBmaWx0ZXJzLCBzbyB0aGF0IGFuIHVuY2hhbmdlZCByeCBtb2RlIGlzIG5vdFxuK1x0ICogdHJlYXRlZCBhcyBhIG1hc2sgY2hhbmdlLlxuK1x0ICovXG4rXHRpZiAoKHZuaWMtXHUwMDNlZmxhZ3MgXHUwMDI2IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUcpIFx1MDAyNlx1MDAyNiBibnh0X3Byb21pc2Nfb2soYnApKVxuK1x0XHRtYXNrIHw9IENGQV9MMl9TRVRfUlhfTUFTS19SRVFfTUFTS19QUk9NSVNDVU9VUztcbitcbiBcdHVjX3VwZGF0ZSA9IGJueHRfdWNfbGlzdF91cGRhdGVkKGJwLCB1Yyk7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZWZsYWdzIFx1MDAyNiBJRkZfQlJPQURDQVNUKVxuQEAgLTEzODY5LDcgKzEzODg2LDExIEBAIHN0YXRpYyBpbnQgYm54dF9jZmdfcnhfbW9kZShzdHJ1Y3QgYm54dCAqYnAsIHN0cnVjdCBuZXRkZXZfaHdfYWRkcl9saXN0ICp1YyxcbiBcdG5ldGlmX2FkZHJfbG9ja19iaChkZXYpO1xuIFx0aWYgKG5ldGRldl9od19hZGRyX2xpc3RfY291bnQodWMpIFx1MDAzZSAoQk5YVF9NQVhfVUNfQUREUlMgLSAxKSkge1xuIFx0XHR2bmljLVx1MDAzZXJ4X21hc2sgfD0gQ0ZBX0wyX1NFVF9SWF9NQVNLX1JFUV9NQVNLX1BST01JU0NVT1VTO1xuK1x0XHR2bmljLVx1MDAzZWZsYWdzIHw9IEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7XG4gXHR9IGVsc2Uge1xuK1x0XHR2bmljLVx1MDAzZWZsYWdzIFx1MDAyNj0gfkJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUc7XG4rXHRcdGlmICghKGRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX1BST01JU0MpKVxuK1x0XHRcdHZuaWMtXHUwMDNlcnhfbWFzayBcdTAwMjY9IH5DRkFfTDJfU0VUX1JYX01BU0tfUkVRX01BU0tfUFJPTUlTQ1VPVVM7XG4gXHRcdG5ldGRldl9od19hZGRyX2xpc3RfZm9yX2VhY2goaGEsIHVjKSB7XG4gXHRcdFx0bWVtY3B5KHZuaWMtXHUwMDNldWNfbGlzdCArIG9mZiwgaGEtXHUwMDNlYWRkciwgRVRIX0FMRU4pO1xuIFx0XHRcdG9mZiArPSBFVEhfQUxFTjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG5pbmRleCBhYjg5NGY4YWRkZWY1Li41M2FkMzlmNDQ0MWQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5oXG5AQCAtMTMzMiw2ICsxMzMyLDcgQEAgc3RydWN0IGJueHRfdm5pY19pbmZvIHtcbiAjZGVmaW5lIEJOWFRfVk5JQ19SRlNfTkVXX1JTU19GTEFHXHQweDEwXG4gI2RlZmluZSBCTlhUX1ZOSUNfTlRVUExFX0ZMQUdcdFx0MHgyMFxuICNkZWZpbmUgQk5YVF9WTklDX1JTU0NUWF9GTEFHXHRcdDB4NDBcbisjZGVmaW5lIEJOWFRfVk5JQ19VQ19QUk9NSVNDX0ZMQUdcdDB4ODBcbiBcdHN0cnVjdCBldGh0b29sX3J4ZmhfY29udGV4dCAqcnNzX2N0eDtcbiBcdHUzMlx0XHR2bmljX2lkO1xuIFx0dTE2XHRcdGRlZmF1bHRfcnhfcmluZztcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDA3OjI5OjU1LjU2OTYxMDY2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExODY0MDYwNjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZz1mYWxzZTogQnJvYWRjb20gYm54dCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGJueHQuY2AgYW5kIGBibnh0LmhgLCBzcGVjaWZpY2FsbHkgZnVuY3Rpb25zIGxpa2UgYGJueHRfdWNfbGlzdF91cGRhdGVkYCwgYGJueHRfc2V0X3J4X21vZGVgLCBhbmQgYGJueHRfY2ZnX3J4X21vZGVgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgZHJpdmVyLCB0aGUgYGJueHRgIGRyaXZlci4gVGhlc2UgYXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMg4oCTIDEwLCAyNSwgNDAsIGFuZCA1MCBnaWdhYml0IEV0aGVybmV0IE5JQ3MuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIFwiSXMgdGhpcyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VP1wiIEJlY2F1c2UsIG9idmlvdXNseSwgZnV6emluZyBoYXJkd2FyZSBkcml2ZXJzIGlzIHNpZ25pZmljYW50bHkgbW9yZSBjb21wbGV4IHRoYW4gZnV6emluZyBhIGRyaXZlciB0aGF0ICpjYW4qIHJ1biBpbiBhIHN0YW5kYXJkIFFFTVUgZW52aXJvbm1lbnQuIFRoZSBhbnN3ZXIgaXMgYSBxdWljayBcIm5vLFwiIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enphYmlsaXR5LlxuXG5UaGVuIHRoZSBwcm9tcHQgY29uZmlybWVkIGl0OiB0aGUgYm54dCBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIE5JQyBkcml2ZXIuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGV4Y2x1ZGVzIHRoZXNlIHR5cGVzIG9mIGRyaXZlcnMsIGFzIHRoZXkgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0IHNldHRsZXMgaXQuIEl0J3Mgbm90IGZ1enphYmxlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQsIHNvIEkgbmVlZCB0byBjaGVjayBmb3Igc29mdHdhcmUgZW11bGF0aW9uLlxuXG5Pa2F5LCBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoZXJlIGlzIGFueSBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIGJueHQuIFNpbmNlIEkgZG9uJ3QgaGF2ZSB0aGUgUUVNVSBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBhdmFpbGFibGUsIEknbGwgaGF2ZSB0byByZWx5IG9uIG15IGdlbmVyYWwga25vd2xlZGdlIGhlcmUuIEkga25vdyB0aGUgY29tbW9uIGVtdWxhdGVkIE5JQ3MgYXJlIGUxMDAwLCBlMTAwMGUsIHJ0bDgxMzksIHBjbmV0LCBuZTJrX3BjaSwgdm14bmV0MywgdmlydGlvLW5ldCwgaWdiLCBhbmQgdHVsaXAuIE5vcGUsIG5vIGBibnh0YCB0aGVyZS5cblxuTG9va2luZyBiYWNrLCB0aGUgY2hhbmdlcyBjb25maXJtIHRoaXM6IFdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYGJueHRgIGRyaXZlciwgYW5kIHRoZXNlIGFyZSBhbGwgY29yZSBuZXR3b3JrIGZ1bmN0aW9ucy4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyLlxuXG5TbywgSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyNiwiT3V0cHV0VG9rZW5zIjoxMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QwNzozMDowNy40MzM2NzMwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIEV0aGVybmV0IGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgY2FyZCBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBieSB0aGUgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIE5ldFh0cmVtZS1DL0UgKGJueHQpIEV0aGVybmV0IGRyaXZlci4gVGhpcyBpcyBhIHZlbmRvci1zcGVjaWZpYyBQQ0llIG5ldHdvcmsgY2FyZCBkcml2ZXIgdGhhdCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZSBhbmQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgY2Fubm90IGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBieSB0aGUgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMDc6MzA6MDcuNDMzNjkxODdaIiwiU2VxIjo1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowppknl[1] Phase: Running StartedAt: 2026-08-27 07:30:29 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowppknl[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-27 07:30:29 +0000 UTC FinishedAt: 2026-08-27 07:30:40 +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,}