Name: series-workflowfgjzc Phase: Failed StartedAt: 2026-08-11 14:31:27 +0000 UTC FinishedAt: 2026-08-11 14:50:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgjzc[0] Phase: Succeeded StartedAt: 2026-08-11 14:31:27 +0000 UTC FinishedAt: 2026-08-11 14:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgjzc[0].run-triage Phase: Succeeded StartedAt: 2026-08-11 14:31:27 +0000 UTC FinishedAt: 2026-08-11 14:50:21 +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+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJhYzg1Yzg5MjA2ZTkxZjljZTRhNjE2Nzg5NzcxMGE0ZWMzZmVlNmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDo0OTo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbmluZGV4IGRiOTM1YTlkOWZjMWEuLmUzMTU3NzI0YWRlY2EgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY1xuQEAgLTE0LDYgJiM0MzsxNCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjc3lzL3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9ldmVudGZkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3BvbGwuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW4uaFx1MDAzZVxuQEAgLTI5NCw3ICYjNDM7Mjk1LDEwIEBAIGludCBjbGllbnRfc29ja2V0KGludCBmYW1pbHksIGludCB0eXBlLFxuIGludCBjb25uZWN0X3RvX2FkZHIoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyLCBzb2NrbGVuX3QgYWRkcmxlbixcbiBcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZXR3b3JrX2hlbHBlcl9vcHRzICpvcHRzKVxuIHtcbi1cdGludCBmZDtcbiYjNDM7XHRfX3U2NCBzdGFydF9tcywgZHVyYXRpb25fbXM7XG4mIzQzO1x0X191NjQgcmVtYWluaW5nX21zO1xuJiM0MztcdHNvY2tsZW5fdCBlcnJsZW47XG4mIzQzO1x0aW50IGZkLCBlcnIsIHJldDtcbiBcbiBcdGlmICghb3B0cylcbiBcdFx0b3B0cyA9IFx1MDAyNmRlZmF1bHRfb3B0cztcbkBAIC0zMDUsMTMgJiM0MzszMDksNjkgQEAgaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuLVx0aWYgKGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLCBhZGRybGVuKSkge1xuJiM0MztcdHN0YXJ0X21zID0gZ2V0X3RpbWVfbXMoKTtcbiYjNDM7XHRlcnIgPSBjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbik7XG4mIzQzO1xuJiM0MztcdGlmICghZXJyKVxuJiM0MztcdFx0cmV0dXJuIGZkO1xuJiM0MztcbiYjNDM7XHRpZiAoZXJybm8gIT0gRUlOUFJPR1JFU1MpIHtcbiBcdFx0bG9nX2VycihcJiMzNDtGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcJiMzNDspO1xuLVx0XHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcbi1cdFx0cmV0dXJuIC0xO1xuJiM0MztcdFx0Z290byBjbG9zZTtcbiBcdH1cbiBcbi1cdHJldHVybiBmZDtcbiYjNDM7XHRkdXJhdGlvbl9tcyA9IGdldF90aW1lX21zKCkgLSBzdGFydF9tcztcbiYjNDM7XHRyZW1haW5pbmdfbXMgPSBkdXJhdGlvbl9tcyBcdTAwM2Mgb3B0cy1cdTAwM2V0aW1lb3V0X21zID9cbiYjNDM7XHRcdFx0ICAgICAgIG9wdHMtXHUwMDNldGltZW91dF9tcyAtIGR1cmF0aW9uX21zIDpcbiYjNDM7XHRcdFx0ICAgICAgIDA7XG4mIzQzO1x0aWYgKCFyZW1haW5pbmdfbXMpIHtcbiYjNDM7XHRcdGVycm5vID0gRVRJTUVET1VUO1xuJiM0MztcdFx0bG9nX2VycihcJiMzNDtDYW4gbm90IHBvbGwgY29ubmVjdGlvbiwgYWxyZWFkeSBpbiB0aW1lb3V0XCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gY2xvc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR3aGlsZSAocmVtYWluaW5nX21zKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgcG9sbGZkIHBmZCA9IHsgLmZkID0gZmQsIC5ldmVudHMgPSBQT0xMT1VUIH07XG4mIzQzO1xuJiM0MztcdFx0c3RhcnRfbXMgPSBnZXRfdGltZV9tcygpO1xuJiM0MztcdFx0cmV0ID0gcG9sbChcdTAwMjZwZmQsIDEsIHJlbWFpbmluZ19tcyk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKHJldCA9PSAwKSB7XG4mIzQzO1x0XHRcdGVycm5vID0gRVRJTUVET1VUO1xuJiM0MztcdFx0XHRsb2dfZXJyKFwmIzM0O0Nvbm5lY3Rpb24gdGltZW91dCB3aGlsZSBwb2xsaW5nXCYjMzQ7KTtcbiYjNDM7XHRcdFx0Z290byBjbG9zZTtcbiYjNDM7XHRcdH0gZWxzZSBpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBlcnJubyA9PSBFSU5UUikge1xuJiM0MztcdFx0XHRkdXJhdGlvbl9tcyA9IGdldF90aW1lX21zKCkgLSBzdGFydF9tcztcbiYjNDM7XHRcdFx0cmVtYWluaW5nX21zID0gZHVyYXRpb25fbXMgXHUwMDNjIHJlbWFpbmluZ19tcyA/XG4mIzQzO1x0XHRcdFx0XHQgICAgICAgcmVtYWluaW5nX21zIC0gZHVyYXRpb25fbXMgOlxuJiM0MztcdFx0XHRcdFx0ICAgICAgIDA7XG4mIzQzO1x0XHRcdGlmICghcmVtYWluaW5nX21zKSB7XG4mIzQzO1x0XHRcdFx0ZXJybm8gPSBFVElNRURPVVQ7XG4mIzQzO1x0XHRcdFx0bG9nX2VycihcJiMzNDtDb25uZWN0aW9uIHRpbWVvdXQgYWZ0ZXIgc2lnbmFsXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRnb3RvIGNsb3NlO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRsb2dfZXJyKFwmIzM0O0ZhaWxlZCB0byBwb2xsIGNvbm5lY3Qgc3RhdHVzXCYjMzQ7KTtcbiYjNDM7XHRcdFx0Z290byBjbG9zZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRlcnJsZW4gPSBzaXplb2YoZXJyKTtcbiYjNDM7XHRcdGlmIChnZXRzb2Nrb3B0KGZkLCBTT0xfU09DS0VULCBTT19FUlJPUiwgXHUwMDI2ZXJyLCBcdTAwMjZlcnJsZW4pIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdGxvZ19lcnIoXCYjMzQ7RmFpbGVkIHRvIGdldHNvY2tvcHRcJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIGNsb3NlO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0ZXJybm8gPSBlcnI7XG4mIzQzO1x0XHRcdGxvZ19lcnIoXCYjMzQ7RXZlbnR1YWxseSBmYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIGNsb3NlO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0dXJuIGZkO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO2Nsb3NlOlxuJiM0MztcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xuJiM0MztcdHJldHVybiAtMTtcbiB9XG4gXG4gaW50IGNvbm5lY3RfdG9fYWRkcl9zdHIoaW50IGZhbWlseSwgaW50IHR5cGUsIGNvbnN0IGNoYXIgKmFkZHJfc3RyLCBfX3UxNiBwb3J0LFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jXG5pbmRleCA0NjI1MTJmYjE5MWYxLi44YWMzY2FhM2QwOTE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xuQEAgLTEwOSw3ICYjNDM7MTA5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3Qodm9pZClcbiBcdG5zdG9rZW4gPSBvcGVuX25ldG5zKENMSUVOVF9OUyk7XG4gXHRpZiAoIUFTU0VSVF9PS19QVFIobnN0b2tlbiwgXCYjMzQ7b3BlbiBjbGllbnQgbnNcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4tXHRjbGllbnRfZmQgPSBjb25uZWN0X3RvX2ZkKHNlcnZlcl9mZCwgMCk7XG4mIzQzO1x0Y2xpZW50X2ZkID0gY29ubmVjdF90b19mZChzZXJ2ZXJfZmQsIFRJTUVPVVRfTVMpO1xuIFx0aWYgKCFBU1NFUlRfT0tfRkQoY2xpZW50X2ZkLCBcJiMzNDtjb25uZWN0IGNsaWVudFwmIzM0OykpXG4gXHRcdHJldHVybjtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcbmluZGV4IDJlZGM2ZmI3ZmM1MjEuLjc0NDBjZmNkMTAyNTkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaFxuQEAgLTUyLDYgJiM0Mzs1MiwxNSBAQCBzdGF0aWMgaW5saW5lIF9fdTY0IGdldF90aW1lX25zKHZvaWQpXG4gXHRyZXR1cm4gKHU2NCl0LnR2X3NlYyAqIDEwMDAwMDAwMDAgJiM0MzsgdC50dl9uc2VjO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBfX3U2NCBnZXRfdGltZV9tcyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRpbWVzcGVjIHQ7XG4mIzQzO1xuJiM0MztcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZ0KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICh1NjQpdC50dl9zZWMgKiAxMDAwICYjNDM7IHQudHZfbnNlYyAvIDEwMDAwMDA7XG4mIzQzO31cbiYjNDM7XG4gc3RydWN0IGJwZl9pbnNuO1xuIC8qIFJlcXVlc3QgQlBGIHByb2dyYW0gaW5zdHJ1Y3Rpb25zIGFmdGVyIGFsbCByZXdyaXRlcyBhcmUgYXBwbGllZCxcbiAgKiBlLmcuIHZlcmlmaWVyLmM6Y29udmVydF9jdHhfYWNjZXNzKCkgaXMgZG9uZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJhYzg1Yzg5MjA2ZTkxZjljZTRhNjE2Nzg5NzcxMGE0ZWMzZmVlNmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDo0OTo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYwppbmRleCBkYjkzNWE5ZDlmYzFhLi5lMzE1NzcyNGFkZWNhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jCkBAIC0xNCw2ICYjNDM7MTQsNyBAQAogI2luY2x1ZGUgJmx0O3N5cy90eXBlcy5oJmd0OwogI2luY2x1ZGUgJmx0O3N5cy91bi5oJmd0OwogI2luY2x1ZGUgJmx0O3N5cy9ldmVudGZkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N5cy9wb2xsLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbi5oJmd0OwpAQCAtMjk0LDcgJiM0MzsyOTUsMTAgQEAgaW50IGNsaWVudF9zb2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUsCiBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4sCiAJCSAgICBjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cykKIHsKLQlpbnQgZmQ7CiYjNDM7CV9fdTY0IHN0YXJ0X21zLCBkdXJhdGlvbl9tczsKJiM0MzsJX191NjQgcmVtYWluaW5nX21zOwomIzQzOwlzb2NrbGVuX3QgZXJybGVuOwomIzQzOwlpbnQgZmQsIGVyciwgcmV0OwogCiAJaWYgKCFvcHRzKQogCQlvcHRzID0gJmFtcDtkZWZhdWx0X29wdHM7CkBAIC0zMDUsMTMgJiM0MzszMDksNjkgQEAgaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGQKIAkJcmV0dXJuIC0xOwogCX0KIAotCWlmIChjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbikpIHsKJiM0MzsJc3RhcnRfbXMgPSBnZXRfdGltZV9tcygpOwomIzQzOwllcnIgPSBjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbik7CiYjNDM7CiYjNDM7CWlmICghZXJyKQomIzQzOwkJcmV0dXJuIGZkOwomIzQzOwomIzQzOwlpZiAoZXJybm8gIT0gRUlOUFJPR1JFU1MpIHsKIAkJbG9nX2VycigmIzM0O0ZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlciYjMzQ7KTsKLQkJc2F2ZV9lcnJub19jbG9zZShmZCk7Ci0JCXJldHVybiAtMTsKJiM0MzsJCWdvdG8gY2xvc2U7CiAJfQogCi0JcmV0dXJuIGZkOwomIzQzOwlkdXJhdGlvbl9tcyA9IGdldF90aW1lX21zKCkgLSBzdGFydF9tczsKJiM0MzsJcmVtYWluaW5nX21zID0gZHVyYXRpb25fbXMgJmx0OyBvcHRzLSZndDt0aW1lb3V0X21zID8KJiM0MzsJCQkgICAgICAgb3B0cy0mZ3Q7dGltZW91dF9tcyAtIGR1cmF0aW9uX21zIDoKJiM0MzsJCQkgICAgICAgMDsKJiM0MzsJaWYgKCFyZW1haW5pbmdfbXMpIHsKJiM0MzsJCWVycm5vID0gRVRJTUVET1VUOwomIzQzOwkJbG9nX2VycigmIzM0O0NhbiBub3QgcG9sbCBjb25uZWN0aW9uLCBhbHJlYWR5IGluIHRpbWVvdXQmIzM0Oyk7CiYjNDM7CQlnb3RvIGNsb3NlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXdoaWxlIChyZW1haW5pbmdfbXMpIHsKJiM0MzsJCXN0cnVjdCBwb2xsZmQgcGZkID0geyAuZmQgPSBmZCwgLmV2ZW50cyA9IFBPTExPVVQgfTsKJiM0MzsKJiM0MzsJCXN0YXJ0X21zID0gZ2V0X3RpbWVfbXMoKTsKJiM0MzsJCXJldCA9IHBvbGwoJmFtcDtwZmQsIDEsIHJlbWFpbmluZ19tcyk7CiYjNDM7CiYjNDM7CQlpZiAocmV0ID09IDApIHsKJiM0MzsJCQllcnJubyA9IEVUSU1FRE9VVDsKJiM0MzsJCQlsb2dfZXJyKCYjMzQ7Q29ubmVjdGlvbiB0aW1lb3V0IHdoaWxlIHBvbGxpbmcmIzM0Oyk7CiYjNDM7CQkJZ290byBjbG9zZTsKJiM0MzsJCX0gZWxzZSBpZiAocmV0ICZsdDsgMCAmYW1wOyZhbXA7IGVycm5vID09IEVJTlRSKSB7CiYjNDM7CQkJZHVyYXRpb25fbXMgPSBnZXRfdGltZV9tcygpIC0gc3RhcnRfbXM7CiYjNDM7CQkJcmVtYWluaW5nX21zID0gZHVyYXRpb25fbXMgJmx0OyByZW1haW5pbmdfbXMgPwomIzQzOwkJCQkJICAgICAgIHJlbWFpbmluZ19tcyAtIGR1cmF0aW9uX21zIDoKJiM0MzsJCQkJCSAgICAgICAwOwomIzQzOwkJCWlmICghcmVtYWluaW5nX21zKSB7CiYjNDM7CQkJCWVycm5vID0gRVRJTUVET1VUOwomIzQzOwkJCQlsb2dfZXJyKCYjMzQ7Q29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyIHNpZ25hbCYjMzQ7KTsKJiM0MzsJCQkJZ290byBjbG9zZTsKJiM0MzsJCQl9CiYjNDM7CQl9IGVsc2UgaWYgKHJldCAmbHQ7IDApIHsKJiM0MzsJCQlsb2dfZXJyKCYjMzQ7RmFpbGVkIHRvIHBvbGwgY29ubmVjdCBzdGF0dXMmIzM0Oyk7CiYjNDM7CQkJZ290byBjbG9zZTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWVycmxlbiA9IHNpemVvZihlcnIpOwomIzQzOwkJaWYgKGdldHNvY2tvcHQoZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAmYW1wO2VyciwgJmFtcDtlcnJsZW4pICZsdDsgMCkgewomIzQzOwkJCWxvZ19lcnIoJiMzNDtGYWlsZWQgdG8gZ2V0c29ja29wdCYjMzQ7KTsKJiM0MzsJCQlnb3RvIGNsb3NlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWVycm5vID0gZXJyOwomIzQzOwkJCWxvZ19lcnIoJiMzNDtFdmVudHVhbGx5IGZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlciYjMzQ7KTsKJiM0MzsJCQlnb3RvIGNsb3NlOwomIzQzOwkJfQomIzQzOwkJcmV0dXJuIGZkOwomIzQzOwl9CiYjNDM7CiYjNDM7Y2xvc2U6CiYjNDM7CXNhdmVfZXJybm9fY2xvc2UoZmQpOwomIzQzOwlyZXR1cm4gLTE7CiB9CiAKIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCwKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jCmluZGV4IDQ2MjUxMmZiMTkxZjEuLjhhYzNjYWEzZDA5MTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuYwpAQCAtMTA5LDcgJiM0MzsxMDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdCh2b2lkKQogCW5zdG9rZW4gPSBvcGVuX25ldG5zKENMSUVOVF9OUyk7CiAJaWYgKCFBU1NFUlRfT0tfUFRSKG5zdG9rZW4sICYjMzQ7b3BlbiBjbGllbnQgbnMmIzM0OykpCiAJCXJldHVybjsKLQljbGllbnRfZmQgPSBjb25uZWN0X3RvX2ZkKHNlcnZlcl9mZCwgMCk7CiYjNDM7CWNsaWVudF9mZCA9IGNvbm5lY3RfdG9fZmQoc2VydmVyX2ZkLCBUSU1FT1VUX01TKTsKIAlpZiAoIUFTU0VSVF9PS19GRChjbGllbnRfZmQsICYjMzQ7Y29ubmVjdCBjbGllbnQmIzM0OykpCiAJCXJldHVybjsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5oCmluZGV4IDJlZGM2ZmI3ZmM1MjEuLjc0NDBjZmNkMTAyNTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmgKQEAgLTUyLDYgJiM0Mzs1MiwxNSBAQCBzdGF0aWMgaW5saW5lIF9fdTY0IGdldF90aW1lX25zKHZvaWQpCiAJcmV0dXJuICh1NjQpdC50dl9zZWMgKiAxMDAwMDAwMDAwICYjNDM7IHQudHZfbnNlYzsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgX191NjQgZ2V0X3RpbWVfbXModm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0aW1lc3BlYyB0OwomIzQzOwomIzQzOwljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDt0KTsKJiM0MzsKJiM0MzsJcmV0dXJuICh1NjQpdC50dl9zZWMgKiAxMDAwICYjNDM7IHQudHZfbnNlYyAvIDEwMDAwMDA7CiYjNDM7fQomIzQzOwogc3RydWN0IGJwZl9pbnNuOwogLyogUmVxdWVzdCBCUEYgcHJvZ3JhbSBpbnN0cnVjdGlvbnMgYWZ0ZXIgYWxsIHJld3JpdGVzIGFyZSBhcHBsaWVkLAogICogZS5nLiB2ZXJpZmllci5jOmNvbnZlcnRfY3R4X2FjY2VzcygpIGlzIGRvbmUuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTEKCQkJCQkJCW91dHB1dDogNjUKCQkJCQkJCXRob3VnaHRzOiA0ODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPWZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXNlIGFyZSAqc2VsZi10ZXN0cyosIG5vdCBjb3JlIGtlcm5lbCBjb2RlLCBzbyBpdCBsaWtlbHkgd29uJiMzOTt0IHJlcXVpcmUgZnV6emluZy4KClRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBvdXRsaW5lIGNvbmRpdGlvbnMgZm9yIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBsb2dnaW5nIGFkanVzdG1lbnRzLCBvciBtb2RpZmljYXRpb25zIHRvIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgYXJlIGltbWVkaWF0ZSBmbGFncy4gTm93LCB0aGUga2V5IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGZhbGxzIGludG8gb25lIG9mIHRob3NlIGNhdGVnb3JpZXMsIG9yIGNvbnRhaW5zIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWVwZXIgZGl2ZS4KCkxldCBtZSB2ZXJpZnkgdGhlIHNwZWNpZmljIGZpbGVzIGludm9sdmVkOiBgbmV0d29ya19oZWxwZXJzLmNgLCBgdGVzdF90Y19lZHQuY2AsIGFuZCBgdGVzdGluZ19oZWxwZXJzLmhgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgd2l0aGluIHRoZSBzZWxmdGVzdCBkaXJlY3RvcnkuIEl0JiMzOTtzIGNydWNpYWwgdG8gY29uZmlybSBubyBjb3JlIGtlcm5lbCBjb2RlIGhhcyBiZWVuIHRvdWNoZWQuCgpPa2F5LCBhZnRlciBjb25maXJtaW5nIHRoZSBmaWxlcyBhcmUgYWxsIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCwgYW5kIGEgcXVpY2sgc2NhbiBjb25maXJtcyB0aGVyZSYjMzk7cyBubyBtb2RpZmljYXRpb24gb2Yga2VybmVsIGNvZGUuIFRoaXMgaXNuJiMzOTt0IGEgZnVuY3Rpb25hbCBrZXJuZWwgY2hhbmdlIHRoYXQgbmVlZHMgZnV6emluZy4KClRoZXJlZm9yZSwgdGhlIGFwcHJvcHJpYXRlIGFjdGlvbiBpcyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gY29uZmlkZW50IGluIHRoYXQgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjQ5OjUwLjc1ODk1MjYyOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTkzMDA4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDo0OTo1MC43NTg5NTg4MDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1Nzk4NzE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJhYzg1Yzg5MjA2ZTkxZjljZTRhNjE2Nzg5NzcxMGE0ZWMzZmVlNmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMTQ6NDk6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXFxuaW5kZXggZGI5MzVhOWQ5ZmMxYS4uZTMxNTc3MjRhZGVjYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcXG5AQCAtMTQsNiArMTQsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjc3lzL3R5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvdW4uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3N5cy9ldmVudGZkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvcG9sbC5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW4uaFxcdTAwM2VcXG5AQCAtMjk0LDcgKzI5NSwxMCBAQCBpbnQgY2xpZW50X3NvY2tldChpbnQgZmFtaWx5LCBpbnQgdHlwZSxcXG4gaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuLFxcbiBcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldHdvcmtfaGVscGVyX29wdHMgKm9wdHMpXFxuIHtcXG4tXFx0aW50IGZkO1xcbitcXHRfX3U2NCBzdGFydF9tcywgZHVyYXRpb25fbXM7XFxuK1xcdF9fdTY0IHJlbWFpbmluZ19tcztcXG4rXFx0c29ja2xlbl90IGVycmxlbjtcXG4rXFx0aW50IGZkLCBlcnIsIHJldDtcXG4gXFxuIFxcdGlmICghb3B0cylcXG4gXFx0XFx0b3B0cyA9IFxcdTAwMjZkZWZhdWx0X29wdHM7XFxuQEAgLTMwNSwxMyArMzA5LDY5IEBAIGludCBjb25uZWN0X3RvX2FkZHIoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyLCBzb2NrbGVuX3QgYWRkXFxuIFxcdFxcdHJldHVybiAtMTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLCBhZGRybGVuKSkge1xcbitcXHRzdGFydF9tcyA9IGdldF90aW1lX21zKCk7XFxuK1xcdGVyciA9IGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLCBhZGRybGVuKTtcXG4rXFxuK1xcdGlmICghZXJyKVxcbitcXHRcXHRyZXR1cm4gZmQ7XFxuK1xcbitcXHRpZiAoZXJybm8gIT0gRUlOUFJPR1JFU1MpIHtcXG4gXFx0XFx0bG9nX2VycihcXFwiRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyXFxcIik7XFxuLVxcdFxcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xcbi1cXHRcXHRyZXR1cm4gLTE7XFxuK1xcdFxcdGdvdG8gY2xvc2U7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiBmZDtcXG4rXFx0ZHVyYXRpb25fbXMgPSBnZXRfdGltZV9tcygpIC0gc3RhcnRfbXM7XFxuK1xcdHJlbWFpbmluZ19tcyA9IGR1cmF0aW9uX21zIFxcdTAwM2Mgb3B0cy1cXHUwMDNldGltZW91dF9tcyA/XFxuK1xcdFxcdFxcdCAgICAgICBvcHRzLVxcdTAwM2V0aW1lb3V0X21zIC0gZHVyYXRpb25fbXMgOlxcbitcXHRcXHRcXHQgICAgICAgMDtcXG4rXFx0aWYgKCFyZW1haW5pbmdfbXMpIHtcXG4rXFx0XFx0ZXJybm8gPSBFVElNRURPVVQ7XFxuK1xcdFxcdGxvZ19lcnIoXFxcIkNhbiBub3QgcG9sbCBjb25uZWN0aW9uLCBhbHJlYWR5IGluIHRpbWVvdXRcXFwiKTtcXG4rXFx0XFx0Z290byBjbG9zZTtcXG4rXFx0fVxcbitcXG4rXFx0d2hpbGUgKHJlbWFpbmluZ19tcykge1xcbitcXHRcXHRzdHJ1Y3QgcG9sbGZkIHBmZCA9IHsgLmZkID0gZmQsIC5ldmVudHMgPSBQT0xMT1VUIH07XFxuK1xcbitcXHRcXHRzdGFydF9tcyA9IGdldF90aW1lX21zKCk7XFxuK1xcdFxcdHJldCA9IHBvbGwoXFx1MDAyNnBmZCwgMSwgcmVtYWluaW5nX21zKTtcXG4rXFxuK1xcdFxcdGlmIChyZXQgPT0gMCkge1xcbitcXHRcXHRcXHRlcnJubyA9IEVUSU1FRE9VVDtcXG4rXFx0XFx0XFx0bG9nX2VycihcXFwiQ29ubmVjdGlvbiB0aW1lb3V0IHdoaWxlIHBvbGxpbmdcXFwiKTtcXG4rXFx0XFx0XFx0Z290byBjbG9zZTtcXG4rXFx0XFx0fSBlbHNlIGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGVycm5vID09IEVJTlRSKSB7XFxuK1xcdFxcdFxcdGR1cmF0aW9uX21zID0gZ2V0X3RpbWVfbXMoKSAtIHN0YXJ0X21zO1xcbitcXHRcXHRcXHRyZW1haW5pbmdfbXMgPSBkdXJhdGlvbl9tcyBcXHUwMDNjIHJlbWFpbmluZ19tcyA/XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICByZW1haW5pbmdfbXMgLSBkdXJhdGlvbl9tcyA6XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICAwO1xcbitcXHRcXHRcXHRpZiAoIXJlbWFpbmluZ19tcykge1xcbitcXHRcXHRcXHRcXHRlcnJubyA9IEVUSU1FRE9VVDtcXG4rXFx0XFx0XFx0XFx0bG9nX2VycihcXFwiQ29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyIHNpZ25hbFxcXCIpO1xcbitcXHRcXHRcXHRcXHRnb3RvIGNsb3NlO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH0gZWxzZSBpZiAocmV0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRsb2dfZXJyKFxcXCJGYWlsZWQgdG8gcG9sbCBjb25uZWN0IHN0YXR1c1xcXCIpO1xcbitcXHRcXHRcXHRnb3RvIGNsb3NlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRlcnJsZW4gPSBzaXplb2YoZXJyKTtcXG4rXFx0XFx0aWYgKGdldHNvY2tvcHQoZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCBcXHUwMDI2ZXJyLCBcXHUwMDI2ZXJybGVuKSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0bG9nX2VycihcXFwiRmFpbGVkIHRvIGdldHNvY2tvcHRcXFwiKTtcXG4rXFx0XFx0XFx0Z290byBjbG9zZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0aWYgKGVycikge1xcbitcXHRcXHRcXHRlcnJubyA9IGVycjtcXG4rXFx0XFx0XFx0bG9nX2VycihcXFwiRXZlbnR1YWxseSBmYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcXFwiKTtcXG4rXFx0XFx0XFx0Z290byBjbG9zZTtcXG4rXFx0XFx0fVxcbitcXHRcXHRyZXR1cm4gZmQ7XFxuK1xcdH1cXG4rXFxuK2Nsb3NlOlxcbitcXHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcXG4rXFx0cmV0dXJuIC0xO1xcbiB9XFxuIFxcbiBpbnQgY29ubmVjdF90b19hZGRyX3N0cihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgY29uc3QgY2hhciAqYWRkcl9zdHIsIF9fdTE2IHBvcnQsXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jXFxuaW5kZXggNDYyNTEyZmIxOTFmMS4uOGFjM2NhYTNkMDkxOSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xcbkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3Qodm9pZClcXG4gXFx0bnN0b2tlbiA9IG9wZW5fbmV0bnMoQ0xJRU5UX05TKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0tfUFRSKG5zdG9rZW4sIFxcXCJvcGVuIGNsaWVudCBuc1xcXCIpKVxcbiBcXHRcXHRyZXR1cm47XFxuLVxcdGNsaWVudF9mZCA9IGNvbm5lY3RfdG9fZmQoc2VydmVyX2ZkLCAwKTtcXG4rXFx0Y2xpZW50X2ZkID0gY29ubmVjdF90b19mZChzZXJ2ZXJfZmQsIFRJTUVPVVRfTVMpO1xcbiBcXHRpZiAoIUFTU0VSVF9PS19GRChjbGllbnRfZmQsIFxcXCJjb25uZWN0IGNsaWVudFxcXCIpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcXG5pbmRleCAyZWRjNmZiN2ZjNTIxLi43NDQwY2ZjZDEwMjU5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaFxcbkBAIC01Miw2ICs1MiwxNSBAQCBzdGF0aWMgaW5saW5lIF9fdTY0IGdldF90aW1lX25zKHZvaWQpXFxuIFxcdHJldHVybiAodTY0KXQudHZfc2VjICogMTAwMDAwMDAwMCArIHQudHZfbnNlYztcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBfX3U2NCBnZXRfdGltZV9tcyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCB0aW1lc3BlYyB0O1xcbitcXG4rXFx0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFxcdTAwMjZ0KTtcXG4rXFxuK1xcdHJldHVybiAodTY0KXQudHZfc2VjICogMTAwMCArIHQudHZfbnNlYyAvIDEwMDAwMDA7XFxuK31cXG4rXFxuIHN0cnVjdCBicGZfaW5zbjtcXG4gLyogUmVxdWVzdCBCUEYgcHJvZ3JhbSBpbnN0cnVjdGlvbnMgYWZ0ZXIgYWxsIHJld3JpdGVzIGFyZSBhcHBsaWVkLFxcbiAgKiBlLmcuIHZlcmlmaWVyLmM6Y29udmVydF9jdHhfYWNjZXNzKCkgaXMgZG9uZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6NDk6NTEuMjE3OTU0NTM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzA2MDI4NDczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmFjODVjODkyMDZlOTFmOWNlNGE2MTY3ODk3NzEwYTRlYzNmZWU2Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDE0OjQ5OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXG5pbmRleCBkYjkzNWE5ZDlmYzFhLi5lMzE1NzcyNGFkZWNhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbkBAIC0xNCw2ICsxNCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjc3lzL3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9ldmVudGZkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvcG9sbC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbi5oXHUwMDNlXG5AQCAtMjk0LDcgKzI5NSwxMCBAQCBpbnQgY2xpZW50X3NvY2tldChpbnQgZmFtaWx5LCBpbnQgdHlwZSxcbiBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4sXG4gXHRcdCAgICBjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcbiB7XG4tXHRpbnQgZmQ7XG4rXHRfX3U2NCBzdGFydF9tcywgZHVyYXRpb25fbXM7XG4rXHRfX3U2NCByZW1haW5pbmdfbXM7XG4rXHRzb2NrbGVuX3QgZXJybGVuO1xuK1x0aW50IGZkLCBlcnIsIHJldDtcbiBcbiBcdGlmICghb3B0cylcbiBcdFx0b3B0cyA9IFx1MDAyNmRlZmF1bHRfb3B0cztcbkBAIC0zMDUsMTMgKzMwOSw2OSBAQCBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZFxuIFx0XHRyZXR1cm4gLTE7XG4gXHR9XG4gXG4tXHRpZiAoY29ubmVjdChmZCwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsIGFkZHJsZW4pKSB7XG4rXHRzdGFydF9tcyA9IGdldF90aW1lX21zKCk7XG4rXHRlcnIgPSBjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbik7XG4rXG4rXHRpZiAoIWVycilcbitcdFx0cmV0dXJuIGZkO1xuK1xuK1x0aWYgKGVycm5vICE9IEVJTlBST0dSRVNTKSB7XG4gXHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcIik7XG4tXHRcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xuLVx0XHRyZXR1cm4gLTE7XG4rXHRcdGdvdG8gY2xvc2U7XG4gXHR9XG4gXG4tXHRyZXR1cm4gZmQ7XG4rXHRkdXJhdGlvbl9tcyA9IGdldF90aW1lX21zKCkgLSBzdGFydF9tcztcbitcdHJlbWFpbmluZ19tcyA9IGR1cmF0aW9uX21zIFx1MDAzYyBvcHRzLVx1MDAzZXRpbWVvdXRfbXMgP1xuK1x0XHRcdCAgICAgICBvcHRzLVx1MDAzZXRpbWVvdXRfbXMgLSBkdXJhdGlvbl9tcyA6XG4rXHRcdFx0ICAgICAgIDA7XG4rXHRpZiAoIXJlbWFpbmluZ19tcykge1xuK1x0XHRlcnJubyA9IEVUSU1FRE9VVDtcbitcdFx0bG9nX2VycihcIkNhbiBub3QgcG9sbCBjb25uZWN0aW9uLCBhbHJlYWR5IGluIHRpbWVvdXRcIik7XG4rXHRcdGdvdG8gY2xvc2U7XG4rXHR9XG4rXG4rXHR3aGlsZSAocmVtYWluaW5nX21zKSB7XG4rXHRcdHN0cnVjdCBwb2xsZmQgcGZkID0geyAuZmQgPSBmZCwgLmV2ZW50cyA9IFBPTExPVVQgfTtcbitcbitcdFx0c3RhcnRfbXMgPSBnZXRfdGltZV9tcygpO1xuK1x0XHRyZXQgPSBwb2xsKFx1MDAyNnBmZCwgMSwgcmVtYWluaW5nX21zKTtcbitcbitcdFx0aWYgKHJldCA9PSAwKSB7XG4rXHRcdFx0ZXJybm8gPSBFVElNRURPVVQ7XG4rXHRcdFx0bG9nX2VycihcIkNvbm5lY3Rpb24gdGltZW91dCB3aGlsZSBwb2xsaW5nXCIpO1xuK1x0XHRcdGdvdG8gY2xvc2U7XG4rXHRcdH0gZWxzZSBpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBlcnJubyA9PSBFSU5UUikge1xuK1x0XHRcdGR1cmF0aW9uX21zID0gZ2V0X3RpbWVfbXMoKSAtIHN0YXJ0X21zO1xuK1x0XHRcdHJlbWFpbmluZ19tcyA9IGR1cmF0aW9uX21zIFx1MDAzYyByZW1haW5pbmdfbXMgP1xuK1x0XHRcdFx0XHQgICAgICAgcmVtYWluaW5nX21zIC0gZHVyYXRpb25fbXMgOlxuK1x0XHRcdFx0XHQgICAgICAgMDtcbitcdFx0XHRpZiAoIXJlbWFpbmluZ19tcykge1xuK1x0XHRcdFx0ZXJybm8gPSBFVElNRURPVVQ7XG4rXHRcdFx0XHRsb2dfZXJyKFwiQ29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyIHNpZ25hbFwiKTtcbitcdFx0XHRcdGdvdG8gY2xvc2U7XG4rXHRcdFx0fVxuK1x0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gcG9sbCBjb25uZWN0IHN0YXR1c1wiKTtcbitcdFx0XHRnb3RvIGNsb3NlO1xuK1x0XHR9XG4rXG4rXHRcdGVycmxlbiA9IHNpemVvZihlcnIpO1xuK1x0XHRpZiAoZ2V0c29ja29wdChmZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsIFx1MDAyNmVyciwgXHUwMDI2ZXJybGVuKSBcdTAwM2MgMCkge1xuK1x0XHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gZ2V0c29ja29wdFwiKTtcbitcdFx0XHRnb3RvIGNsb3NlO1xuK1x0XHR9XG4rXG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRlcnJubyA9IGVycjtcbitcdFx0XHRsb2dfZXJyKFwiRXZlbnR1YWxseSBmYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcIik7XG4rXHRcdFx0Z290byBjbG9zZTtcbitcdFx0fVxuK1x0XHRyZXR1cm4gZmQ7XG4rXHR9XG4rXG4rY2xvc2U6XG4rXHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcbitcdHJldHVybiAtMTtcbiB9XG4gXG4gaW50IGNvbm5lY3RfdG9fYWRkcl9zdHIoaW50IGZhbWlseSwgaW50IHR5cGUsIGNvbnN0IGNoYXIgKmFkZHJfc3RyLCBfX3UxNiBwb3J0LFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jXG5pbmRleCA0NjI1MTJmYjE5MWYxLi44YWMzY2FhM2QwOTE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xuQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdCh2b2lkKVxuIFx0bnN0b2tlbiA9IG9wZW5fbmV0bnMoQ0xJRU5UX05TKTtcbiBcdGlmICghQVNTRVJUX09LX1BUUihuc3Rva2VuLCBcIm9wZW4gY2xpZW50IG5zXCIpKVxuIFx0XHRyZXR1cm47XG4tXHRjbGllbnRfZmQgPSBjb25uZWN0X3RvX2ZkKHNlcnZlcl9mZCwgMCk7XG4rXHRjbGllbnRfZmQgPSBjb25uZWN0X3RvX2ZkKHNlcnZlcl9mZCwgVElNRU9VVF9NUyk7XG4gXHRpZiAoIUFTU0VSVF9PS19GRChjbGllbnRfZmQsIFwiY29ubmVjdCBjbGllbnRcIikpXG4gXHRcdHJldHVybjtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcbmluZGV4IDJlZGM2ZmI3ZmM1MjEuLjc0NDBjZmNkMTAyNTkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaFxuQEAgLTUyLDYgKzUyLDE1IEBAIHN0YXRpYyBpbmxpbmUgX191NjQgZ2V0X3RpbWVfbnModm9pZClcbiBcdHJldHVybiAodTY0KXQudHZfc2VjICogMTAwMDAwMDAwMCArIHQudHZfbnNlYztcbiB9XG4gXG4rc3RhdGljIGlubGluZSBfX3U2NCBnZXRfdGltZV9tcyh2b2lkKVxuK3tcbitcdHN0cnVjdCB0aW1lc3BlYyB0O1xuK1xuK1x0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnQpO1xuK1xuK1x0cmV0dXJuICh1NjQpdC50dl9zZWMgKiAxMDAwICsgdC50dl9uc2VjIC8gMTAwMDAwMDtcbit9XG4rXG4gc3RydWN0IGJwZl9pbnNuO1xuIC8qIFJlcXVlc3QgQlBGIHByb2dyYW0gaW5zdHJ1Y3Rpb25zIGFmdGVyIGFsbCByZXdyaXRlcyBhcmUgYXBwbGllZCxcbiAgKiBlLmcuIHZlcmlmaWVyLmM6Y29udmVydF9jdHhfYWNjZXNzKCkgaXMgZG9uZS5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjQ5OjUxLjIxNzk1NjA5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjAyNTI4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBJdCdzIHRvdWNoaW5nIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXNlIGFyZSAqc2VsZi10ZXN0cyosIG5vdCBjb3JlIGtlcm5lbCBjb2RlLCBzbyBpdCBsaWtlbHkgd29uJ3QgcmVxdWlyZSBmdXp6aW5nLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGNsZWFybHkgb3V0bGluZSBjb25kaXRpb25zIGZvciByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24gY2hhbmdlcywgbG9nZ2luZyBhZGp1c3RtZW50cywgb3IgbW9kaWZpY2F0aW9ucyB0byB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGFyZSBpbW1lZGlhdGUgZmxhZ3MuIE5vdywgdGhlIGtleSBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBmYWxscyBpbnRvIG9uZSBvZiB0aG9zZSBjYXRlZ29yaWVzLCBvciBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVlcGVyIGRpdmUuXG5cbkxldCBtZSB2ZXJpZnkgdGhlIHNwZWNpZmljIGZpbGVzIGludm9sdmVkOiBgbmV0d29ya19oZWxwZXJzLmNgLCBgdGVzdF90Y19lZHQuY2AsIGFuZCBgdGVzdGluZ19oZWxwZXJzLmhgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgd2l0aGluIHRoZSBzZWxmdGVzdCBkaXJlY3RvcnkuIEl0J3MgY3J1Y2lhbCB0byBjb25maXJtIG5vIGNvcmUga2VybmVsIGNvZGUgaGFzIGJlZW4gdG91Y2hlZC5cblxuT2theSwgYWZ0ZXIgY29uZmlybWluZyB0aGUgZmlsZXMgYXJlIGFsbCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AsIGFuZCBhIHF1aWNrIHNjYW4gY29uZmlybXMgdGhlcmUncyBubyBtb2RpZmljYXRpb24gb2Yga2VybmVsIGNvZGUuIFRoaXMgaXNuJ3QgYSBmdW5jdGlvbmFsIGtlcm5lbCBjaGFuZ2UgdGhhdCBuZWVkcyBmdXp6aW5nLlxuXG5UaGVyZWZvcmUsIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24gaXMgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGNvbmZpZGVudCBpbiB0aGF0IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTEsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDo0OTo1OC4yNzgyMTI0MzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjQ5OjU4LjI3ODI0MTg2NloiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgjzc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-11 14:31:27 +0000 UTC FinishedAt: 2026-08-11 14:49:59 +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+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDJhYzg1Yzg5MjA2ZTkxZjljZTRhNjE2Nzg5NzcxMGE0ZWMzZmVlNmNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDo0OTo0OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbmluZGV4IGRiOTM1YTlkOWZjMWEuLmUzMTU3NzI0YWRlY2EgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY1xuQEAgLTE0LDYgJiM0MzsxNCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjc3lzL3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9ldmVudGZkLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3BvbGwuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaW4uaFx1MDAzZVxuQEAgLTI5NCw3ICYjNDM7Mjk1LDEwIEBAIGludCBjbGllbnRfc29ja2V0KGludCBmYW1pbHksIGludCB0eXBlLFxuIGludCBjb25uZWN0X3RvX2FkZHIoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyLCBzb2NrbGVuX3QgYWRkcmxlbixcbiBcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZXR3b3JrX2hlbHBlcl9vcHRzICpvcHRzKVxuIHtcbi1cdGludCBmZDtcbiYjNDM7XHRfX3U2NCBzdGFydF9tcywgZHVyYXRpb25fbXM7XG4mIzQzO1x0X191NjQgcmVtYWluaW5nX21zO1xuJiM0MztcdHNvY2tsZW5fdCBlcnJsZW47XG4mIzQzO1x0aW50IGZkLCBlcnIsIHJldDtcbiBcbiBcdGlmICghb3B0cylcbiBcdFx0b3B0cyA9IFx1MDAyNmRlZmF1bHRfb3B0cztcbkBAIC0zMDUsMTMgJiM0MzszMDksNjkgQEAgaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRcbiBcdFx0cmV0dXJuIC0xO1xuIFx0fVxuIFxuLVx0aWYgKGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLCBhZGRybGVuKSkge1xuJiM0MztcdHN0YXJ0X21zID0gZ2V0X3RpbWVfbXMoKTtcbiYjNDM7XHRlcnIgPSBjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbik7XG4mIzQzO1xuJiM0MztcdGlmICghZXJyKVxuJiM0MztcdFx0cmV0dXJuIGZkO1xuJiM0MztcbiYjNDM7XHRpZiAoZXJybm8gIT0gRUlOUFJPR1JFU1MpIHtcbiBcdFx0bG9nX2VycihcJiMzNDtGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcJiMzNDspO1xuLVx0XHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcbi1cdFx0cmV0dXJuIC0xO1xuJiM0MztcdFx0Z290byBjbG9zZTtcbiBcdH1cbiBcbi1cdHJldHVybiBmZDtcbiYjNDM7XHRkdXJhdGlvbl9tcyA9IGdldF90aW1lX21zKCkgLSBzdGFydF9tcztcbiYjNDM7XHRyZW1haW5pbmdfbXMgPSBkdXJhdGlvbl9tcyBcdTAwM2Mgb3B0cy1cdTAwM2V0aW1lb3V0X21zID9cbiYjNDM7XHRcdFx0ICAgICAgIG9wdHMtXHUwMDNldGltZW91dF9tcyAtIGR1cmF0aW9uX21zIDpcbiYjNDM7XHRcdFx0ICAgICAgIDA7XG4mIzQzO1x0aWYgKCFyZW1haW5pbmdfbXMpIHtcbiYjNDM7XHRcdGVycm5vID0gRVRJTUVET1VUO1xuJiM0MztcdFx0bG9nX2VycihcJiMzNDtDYW4gbm90IHBvbGwgY29ubmVjdGlvbiwgYWxyZWFkeSBpbiB0aW1lb3V0XCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gY2xvc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR3aGlsZSAocmVtYWluaW5nX21zKSB7XG4mIzQzO1x0XHRzdHJ1Y3QgcG9sbGZkIHBmZCA9IHsgLmZkID0gZmQsIC5ldmVudHMgPSBQT0xMT1VUIH07XG4mIzQzO1xuJiM0MztcdFx0c3RhcnRfbXMgPSBnZXRfdGltZV9tcygpO1xuJiM0MztcdFx0cmV0ID0gcG9sbChcdTAwMjZwZmQsIDEsIHJlbWFpbmluZ19tcyk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKHJldCA9PSAwKSB7XG4mIzQzO1x0XHRcdGVycm5vID0gRVRJTUVET1VUO1xuJiM0MztcdFx0XHRsb2dfZXJyKFwmIzM0O0Nvbm5lY3Rpb24gdGltZW91dCB3aGlsZSBwb2xsaW5nXCYjMzQ7KTtcbiYjNDM7XHRcdFx0Z290byBjbG9zZTtcbiYjNDM7XHRcdH0gZWxzZSBpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBlcnJubyA9PSBFSU5UUikge1xuJiM0MztcdFx0XHRkdXJhdGlvbl9tcyA9IGdldF90aW1lX21zKCkgLSBzdGFydF9tcztcbiYjNDM7XHRcdFx0cmVtYWluaW5nX21zID0gZHVyYXRpb25fbXMgXHUwMDNjIHJlbWFpbmluZ19tcyA/XG4mIzQzO1x0XHRcdFx0XHQgICAgICAgcmVtYWluaW5nX21zIC0gZHVyYXRpb25fbXMgOlxuJiM0MztcdFx0XHRcdFx0ICAgICAgIDA7XG4mIzQzO1x0XHRcdGlmICghcmVtYWluaW5nX21zKSB7XG4mIzQzO1x0XHRcdFx0ZXJybm8gPSBFVElNRURPVVQ7XG4mIzQzO1x0XHRcdFx0bG9nX2VycihcJiMzNDtDb25uZWN0aW9uIHRpbWVvdXQgYWZ0ZXIgc2lnbmFsXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRnb3RvIGNsb3NlO1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHRsb2dfZXJyKFwmIzM0O0ZhaWxlZCB0byBwb2xsIGNvbm5lY3Qgc3RhdHVzXCYjMzQ7KTtcbiYjNDM7XHRcdFx0Z290byBjbG9zZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRlcnJsZW4gPSBzaXplb2YoZXJyKTtcbiYjNDM7XHRcdGlmIChnZXRzb2Nrb3B0KGZkLCBTT0xfU09DS0VULCBTT19FUlJPUiwgXHUwMDI2ZXJyLCBcdTAwMjZlcnJsZW4pIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdGxvZ19lcnIoXCYjMzQ7RmFpbGVkIHRvIGdldHNvY2tvcHRcJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIGNsb3NlO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmIChlcnIpIHtcbiYjNDM7XHRcdFx0ZXJybm8gPSBlcnI7XG4mIzQzO1x0XHRcdGxvZ19lcnIoXCYjMzQ7RXZlbnR1YWxseSBmYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcJiMzNDspO1xuJiM0MztcdFx0XHRnb3RvIGNsb3NlO1xuJiM0MztcdFx0fVxuJiM0MztcdFx0cmV0dXJuIGZkO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO2Nsb3NlOlxuJiM0MztcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xuJiM0MztcdHJldHVybiAtMTtcbiB9XG4gXG4gaW50IGNvbm5lY3RfdG9fYWRkcl9zdHIoaW50IGZhbWlseSwgaW50IHR5cGUsIGNvbnN0IGNoYXIgKmFkZHJfc3RyLCBfX3UxNiBwb3J0LFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jXG5pbmRleCA0NjI1MTJmYjE5MWYxLi44YWMzY2FhM2QwOTE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xuQEAgLTEwOSw3ICYjNDM7MTA5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3Qodm9pZClcbiBcdG5zdG9rZW4gPSBvcGVuX25ldG5zKENMSUVOVF9OUyk7XG4gXHRpZiAoIUFTU0VSVF9PS19QVFIobnN0b2tlbiwgXCYjMzQ7b3BlbiBjbGllbnQgbnNcJiMzNDspKVxuIFx0XHRyZXR1cm47XG4tXHRjbGllbnRfZmQgPSBjb25uZWN0X3RvX2ZkKHNlcnZlcl9mZCwgMCk7XG4mIzQzO1x0Y2xpZW50X2ZkID0gY29ubmVjdF90b19mZChzZXJ2ZXJfZmQsIFRJTUVPVVRfTVMpO1xuIFx0aWYgKCFBU1NFUlRfT0tfRkQoY2xpZW50X2ZkLCBcJiMzNDtjb25uZWN0IGNsaWVudFwmIzM0OykpXG4gXHRcdHJldHVybjtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcbmluZGV4IDJlZGM2ZmI3ZmM1MjEuLjc0NDBjZmNkMTAyNTkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaFxuQEAgLTUyLDYgJiM0Mzs1MiwxNSBAQCBzdGF0aWMgaW5saW5lIF9fdTY0IGdldF90aW1lX25zKHZvaWQpXG4gXHRyZXR1cm4gKHU2NCl0LnR2X3NlYyAqIDEwMDAwMDAwMDAgJiM0MzsgdC50dl9uc2VjO1xuIH1cbiBcbiYjNDM7c3RhdGljIGlubGluZSBfX3U2NCBnZXRfdGltZV9tcyh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRpbWVzcGVjIHQ7XG4mIzQzO1xuJiM0MztcdGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCBcdTAwMjZ0KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuICh1NjQpdC50dl9zZWMgKiAxMDAwICYjNDM7IHQudHZfbnNlYyAvIDEwMDAwMDA7XG4mIzQzO31cbiYjNDM7XG4gc3RydWN0IGJwZl9pbnNuO1xuIC8qIFJlcXVlc3QgQlBGIHByb2dyYW0gaW5zdHJ1Y3Rpb25zIGFmdGVyIGFsbCByZXdyaXRlcyBhcmUgYXBwbGllZCxcbiAgKiBlLmcuIHZlcmlmaWVyLmM6Y29udmVydF9jdHhfYWNjZXNzKCkgaXMgZG9uZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDo0OTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJhYzg1Yzg5MjA2ZTkxZjljZTRhNjE2Nzg5NzcxMGE0ZWMzZmVlNmMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxMSAxNDo0OTo0OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYwppbmRleCBkYjkzNWE5ZDlmYzFhLi5lMzE1NzcyNGFkZWNhIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jCkBAIC0xNCw2ICYjNDM7MTQsNyBAQAogI2luY2x1ZGUgJmx0O3N5cy90eXBlcy5oJmd0OwogI2luY2x1ZGUgJmx0O3N5cy91bi5oJmd0OwogI2luY2x1ZGUgJmx0O3N5cy9ldmVudGZkLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N5cy9wb2xsLmgmZ3Q7CiAKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbi5oJmd0OwpAQCAtMjk0LDcgJiM0MzsyOTUsMTAgQEAgaW50IGNsaWVudF9zb2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUsCiBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4sCiAJCSAgICBjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cykKIHsKLQlpbnQgZmQ7CiYjNDM7CV9fdTY0IHN0YXJ0X21zLCBkdXJhdGlvbl9tczsKJiM0MzsJX191NjQgcmVtYWluaW5nX21zOwomIzQzOwlzb2NrbGVuX3QgZXJybGVuOwomIzQzOwlpbnQgZmQsIGVyciwgcmV0OwogCiAJaWYgKCFvcHRzKQogCQlvcHRzID0gJmFtcDtkZWZhdWx0X29wdHM7CkBAIC0zMDUsMTMgJiM0MzszMDksNjkgQEAgaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGQKIAkJcmV0dXJuIC0xOwogCX0KIAotCWlmIChjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbikpIHsKJiM0MzsJc3RhcnRfbXMgPSBnZXRfdGltZV9tcygpOwomIzQzOwllcnIgPSBjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbik7CiYjNDM7CiYjNDM7CWlmICghZXJyKQomIzQzOwkJcmV0dXJuIGZkOwomIzQzOwomIzQzOwlpZiAoZXJybm8gIT0gRUlOUFJPR1JFU1MpIHsKIAkJbG9nX2VycigmIzM0O0ZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlciYjMzQ7KTsKLQkJc2F2ZV9lcnJub19jbG9zZShmZCk7Ci0JCXJldHVybiAtMTsKJiM0MzsJCWdvdG8gY2xvc2U7CiAJfQogCi0JcmV0dXJuIGZkOwomIzQzOwlkdXJhdGlvbl9tcyA9IGdldF90aW1lX21zKCkgLSBzdGFydF9tczsKJiM0MzsJcmVtYWluaW5nX21zID0gZHVyYXRpb25fbXMgJmx0OyBvcHRzLSZndDt0aW1lb3V0X21zID8KJiM0MzsJCQkgICAgICAgb3B0cy0mZ3Q7dGltZW91dF9tcyAtIGR1cmF0aW9uX21zIDoKJiM0MzsJCQkgICAgICAgMDsKJiM0MzsJaWYgKCFyZW1haW5pbmdfbXMpIHsKJiM0MzsJCWVycm5vID0gRVRJTUVET1VUOwomIzQzOwkJbG9nX2VycigmIzM0O0NhbiBub3QgcG9sbCBjb25uZWN0aW9uLCBhbHJlYWR5IGluIHRpbWVvdXQmIzM0Oyk7CiYjNDM7CQlnb3RvIGNsb3NlOwomIzQzOwl9CiYjNDM7CiYjNDM7CXdoaWxlIChyZW1haW5pbmdfbXMpIHsKJiM0MzsJCXN0cnVjdCBwb2xsZmQgcGZkID0geyAuZmQgPSBmZCwgLmV2ZW50cyA9IFBPTExPVVQgfTsKJiM0MzsKJiM0MzsJCXN0YXJ0X21zID0gZ2V0X3RpbWVfbXMoKTsKJiM0MzsJCXJldCA9IHBvbGwoJmFtcDtwZmQsIDEsIHJlbWFpbmluZ19tcyk7CiYjNDM7CiYjNDM7CQlpZiAocmV0ID09IDApIHsKJiM0MzsJCQllcnJubyA9IEVUSU1FRE9VVDsKJiM0MzsJCQlsb2dfZXJyKCYjMzQ7Q29ubmVjdGlvbiB0aW1lb3V0IHdoaWxlIHBvbGxpbmcmIzM0Oyk7CiYjNDM7CQkJZ290byBjbG9zZTsKJiM0MzsJCX0gZWxzZSBpZiAocmV0ICZsdDsgMCAmYW1wOyZhbXA7IGVycm5vID09IEVJTlRSKSB7CiYjNDM7CQkJZHVyYXRpb25fbXMgPSBnZXRfdGltZV9tcygpIC0gc3RhcnRfbXM7CiYjNDM7CQkJcmVtYWluaW5nX21zID0gZHVyYXRpb25fbXMgJmx0OyByZW1haW5pbmdfbXMgPwomIzQzOwkJCQkJICAgICAgIHJlbWFpbmluZ19tcyAtIGR1cmF0aW9uX21zIDoKJiM0MzsJCQkJCSAgICAgICAwOwomIzQzOwkJCWlmICghcmVtYWluaW5nX21zKSB7CiYjNDM7CQkJCWVycm5vID0gRVRJTUVET1VUOwomIzQzOwkJCQlsb2dfZXJyKCYjMzQ7Q29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyIHNpZ25hbCYjMzQ7KTsKJiM0MzsJCQkJZ290byBjbG9zZTsKJiM0MzsJCQl9CiYjNDM7CQl9IGVsc2UgaWYgKHJldCAmbHQ7IDApIHsKJiM0MzsJCQlsb2dfZXJyKCYjMzQ7RmFpbGVkIHRvIHBvbGwgY29ubmVjdCBzdGF0dXMmIzM0Oyk7CiYjNDM7CQkJZ290byBjbG9zZTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWVycmxlbiA9IHNpemVvZihlcnIpOwomIzQzOwkJaWYgKGdldHNvY2tvcHQoZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAmYW1wO2VyciwgJmFtcDtlcnJsZW4pICZsdDsgMCkgewomIzQzOwkJCWxvZ19lcnIoJiMzNDtGYWlsZWQgdG8gZ2V0c29ja29wdCYjMzQ7KTsKJiM0MzsJCQlnb3RvIGNsb3NlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKGVycikgewomIzQzOwkJCWVycm5vID0gZXJyOwomIzQzOwkJCWxvZ19lcnIoJiMzNDtFdmVudHVhbGx5IGZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlciYjMzQ7KTsKJiM0MzsJCQlnb3RvIGNsb3NlOwomIzQzOwkJfQomIzQzOwkJcmV0dXJuIGZkOwomIzQzOwl9CiYjNDM7CiYjNDM7Y2xvc2U6CiYjNDM7CXNhdmVfZXJybm9fY2xvc2UoZmQpOwomIzQzOwlyZXR1cm4gLTE7CiB9CiAKIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCwKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jCmluZGV4IDQ2MjUxMmZiMTkxZjEuLjhhYzNjYWEzZDA5MTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuYwpAQCAtMTA5LDcgJiM0MzsxMDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdCh2b2lkKQogCW5zdG9rZW4gPSBvcGVuX25ldG5zKENMSUVOVF9OUyk7CiAJaWYgKCFBU1NFUlRfT0tfUFRSKG5zdG9rZW4sICYjMzQ7b3BlbiBjbGllbnQgbnMmIzM0OykpCiAJCXJldHVybjsKLQljbGllbnRfZmQgPSBjb25uZWN0X3RvX2ZkKHNlcnZlcl9mZCwgMCk7CiYjNDM7CWNsaWVudF9mZCA9IGNvbm5lY3RfdG9fZmQoc2VydmVyX2ZkLCBUSU1FT1VUX01TKTsKIAlpZiAoIUFTU0VSVF9PS19GRChjbGllbnRfZmQsICYjMzQ7Y29ubmVjdCBjbGllbnQmIzM0OykpCiAJCXJldHVybjsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5oIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RpbmdfaGVscGVycy5oCmluZGV4IDJlZGM2ZmI3ZmM1MjEuLjc0NDBjZmNkMTAyNTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmgKQEAgLTUyLDYgJiM0Mzs1MiwxNSBAQCBzdGF0aWMgaW5saW5lIF9fdTY0IGdldF90aW1lX25zKHZvaWQpCiAJcmV0dXJuICh1NjQpdC50dl9zZWMgKiAxMDAwMDAwMDAwICYjNDM7IHQudHZfbnNlYzsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgX191NjQgZ2V0X3RpbWVfbXModm9pZCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCB0aW1lc3BlYyB0OwomIzQzOwomIzQzOwljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmFtcDt0KTsKJiM0MzsKJiM0MzsJcmV0dXJuICh1NjQpdC50dl9zZWMgKiAxMDAwICYjNDM7IHQudHZfbnNlYyAvIDEwMDAwMDA7CiYjNDM7fQomIzQzOwogc3RydWN0IGJwZl9pbnNuOwogLyogUmVxdWVzdCBCUEYgcHJvZ3JhbSBpbnN0cnVjdGlvbnMgYWZ0ZXIgYWxsIHJld3JpdGVzIGFyZSBhcHBsaWVkLAogICogZS5nLiB2ZXJpZmllci5jOmNvbnZlcnRfY3R4X2FjY2VzcygpIGlzIGRvbmUuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzExIDE0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzOTEKCQkJCQkJCW91dHB1dDogNjUKCQkJCQkJCXRob3VnaHRzOiA0ODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nPWZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXNlIGFyZSAqc2VsZi10ZXN0cyosIG5vdCBjb3JlIGtlcm5lbCBjb2RlLCBzbyBpdCBsaWtlbHkgd29uJiMzOTt0IHJlcXVpcmUgZnV6emluZy4KClRoZSBpbnN0cnVjdGlvbnMgY2xlYXJseSBvdXRsaW5lIGNvbmRpdGlvbnMgZm9yIHJldHVybmluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBsb2dnaW5nIGFkanVzdG1lbnRzLCBvciBtb2RpZmljYXRpb25zIHRvIHVucmVhY2hhYmxlIGNvZGUgcGF0aHMgYXJlIGltbWVkaWF0ZSBmbGFncy4gTm93LCB0aGUga2V5IGlzIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGZhbGxzIGludG8gb25lIG9mIHRob3NlIGNhdGVnb3JpZXMsIG9yIGNvbnRhaW5zIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWVwZXIgZGl2ZS4KCkxldCBtZSB2ZXJpZnkgdGhlIHNwZWNpZmljIGZpbGVzIGludm9sdmVkOiBgbmV0d29ya19oZWxwZXJzLmNgLCBgdGVzdF90Y19lZHQuY2AsIGFuZCBgdGVzdGluZ19oZWxwZXJzLmhgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgd2l0aGluIHRoZSBzZWxmdGVzdCBkaXJlY3RvcnkuIEl0JiMzOTtzIGNydWNpYWwgdG8gY29uZmlybSBubyBjb3JlIGtlcm5lbCBjb2RlIGhhcyBiZWVuIHRvdWNoZWQuCgpPa2F5LCBhZnRlciBjb25maXJtaW5nIHRoZSBmaWxlcyBhcmUgYWxsIGluIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvYCwgYW5kIGEgcXVpY2sgc2NhbiBjb25maXJtcyB0aGVyZSYjMzk7cyBubyBtb2RpZmljYXRpb24gb2Yga2VybmVsIGNvZGUuIFRoaXMgaXNuJiMzOTt0IGEgZnVuY3Rpb25hbCBrZXJuZWwgY2hhbmdlIHRoYXQgbmVlZHMgZnV6emluZy4KClRoZXJlZm9yZSwgdGhlIGFwcHJvcHJpYXRlIGFjdGlvbiBpcyB0byBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAuIEkgYW0gY29uZmlkZW50IGluIHRoYXQgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMSAxNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTEgMTQ6NDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjQ5OjUwLjc1ODk1MjYyOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MTkzMDA4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIEJQRiBzZWxmdGVzdHMgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyBhbmQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgY29kZSBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDo0OTo1MC43NTg5NTg4MDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1Nzk4NzE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDJhYzg1Yzg5MjA2ZTkxZjljZTRhNjE2Nzg5NzcxMGE0ZWMzZmVlNmNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTEgMTQ6NDk6NDkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXFxuaW5kZXggZGI5MzVhOWQ5ZmMxYS4uZTMxNTc3MjRhZGVjYSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcXG5AQCAtMTQsNiArMTQsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjc3lzL3R5cGVzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NzeXMvdW4uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY3N5cy9ldmVudGZkLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzeXMvcG9sbC5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW4uaFxcdTAwM2VcXG5AQCAtMjk0LDcgKzI5NSwxMCBAQCBpbnQgY2xpZW50X3NvY2tldChpbnQgZmFtaWx5LCBpbnQgdHlwZSxcXG4gaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuLFxcbiBcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldHdvcmtfaGVscGVyX29wdHMgKm9wdHMpXFxuIHtcXG4tXFx0aW50IGZkO1xcbitcXHRfX3U2NCBzdGFydF9tcywgZHVyYXRpb25fbXM7XFxuK1xcdF9fdTY0IHJlbWFpbmluZ19tcztcXG4rXFx0c29ja2xlbl90IGVycmxlbjtcXG4rXFx0aW50IGZkLCBlcnIsIHJldDtcXG4gXFxuIFxcdGlmICghb3B0cylcXG4gXFx0XFx0b3B0cyA9IFxcdTAwMjZkZWZhdWx0X29wdHM7XFxuQEAgLTMwNSwxMyArMzA5LDY5IEBAIGludCBjb25uZWN0X3RvX2FkZHIoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyLCBzb2NrbGVuX3QgYWRkXFxuIFxcdFxcdHJldHVybiAtMTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLCBhZGRybGVuKSkge1xcbitcXHRzdGFydF9tcyA9IGdldF90aW1lX21zKCk7XFxuK1xcdGVyciA9IGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLCBhZGRybGVuKTtcXG4rXFxuK1xcdGlmICghZXJyKVxcbitcXHRcXHRyZXR1cm4gZmQ7XFxuK1xcbitcXHRpZiAoZXJybm8gIT0gRUlOUFJPR1JFU1MpIHtcXG4gXFx0XFx0bG9nX2VycihcXFwiRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyXFxcIik7XFxuLVxcdFxcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xcbi1cXHRcXHRyZXR1cm4gLTE7XFxuK1xcdFxcdGdvdG8gY2xvc2U7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiBmZDtcXG4rXFx0ZHVyYXRpb25fbXMgPSBnZXRfdGltZV9tcygpIC0gc3RhcnRfbXM7XFxuK1xcdHJlbWFpbmluZ19tcyA9IGR1cmF0aW9uX21zIFxcdTAwM2Mgb3B0cy1cXHUwMDNldGltZW91dF9tcyA/XFxuK1xcdFxcdFxcdCAgICAgICBvcHRzLVxcdTAwM2V0aW1lb3V0X21zIC0gZHVyYXRpb25fbXMgOlxcbitcXHRcXHRcXHQgICAgICAgMDtcXG4rXFx0aWYgKCFyZW1haW5pbmdfbXMpIHtcXG4rXFx0XFx0ZXJybm8gPSBFVElNRURPVVQ7XFxuK1xcdFxcdGxvZ19lcnIoXFxcIkNhbiBub3QgcG9sbCBjb25uZWN0aW9uLCBhbHJlYWR5IGluIHRpbWVvdXRcXFwiKTtcXG4rXFx0XFx0Z290byBjbG9zZTtcXG4rXFx0fVxcbitcXG4rXFx0d2hpbGUgKHJlbWFpbmluZ19tcykge1xcbitcXHRcXHRzdHJ1Y3QgcG9sbGZkIHBmZCA9IHsgLmZkID0gZmQsIC5ldmVudHMgPSBQT0xMT1VUIH07XFxuK1xcbitcXHRcXHRzdGFydF9tcyA9IGdldF90aW1lX21zKCk7XFxuK1xcdFxcdHJldCA9IHBvbGwoXFx1MDAyNnBmZCwgMSwgcmVtYWluaW5nX21zKTtcXG4rXFxuK1xcdFxcdGlmIChyZXQgPT0gMCkge1xcbitcXHRcXHRcXHRlcnJubyA9IEVUSU1FRE9VVDtcXG4rXFx0XFx0XFx0bG9nX2VycihcXFwiQ29ubmVjdGlvbiB0aW1lb3V0IHdoaWxlIHBvbGxpbmdcXFwiKTtcXG4rXFx0XFx0XFx0Z290byBjbG9zZTtcXG4rXFx0XFx0fSBlbHNlIGlmIChyZXQgXFx1MDAzYyAwIFxcdTAwMjZcXHUwMDI2IGVycm5vID09IEVJTlRSKSB7XFxuK1xcdFxcdFxcdGR1cmF0aW9uX21zID0gZ2V0X3RpbWVfbXMoKSAtIHN0YXJ0X21zO1xcbitcXHRcXHRcXHRyZW1haW5pbmdfbXMgPSBkdXJhdGlvbl9tcyBcXHUwMDNjIHJlbWFpbmluZ19tcyA/XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICByZW1haW5pbmdfbXMgLSBkdXJhdGlvbl9tcyA6XFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICAwO1xcbitcXHRcXHRcXHRpZiAoIXJlbWFpbmluZ19tcykge1xcbitcXHRcXHRcXHRcXHRlcnJubyA9IEVUSU1FRE9VVDtcXG4rXFx0XFx0XFx0XFx0bG9nX2VycihcXFwiQ29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyIHNpZ25hbFxcXCIpO1xcbitcXHRcXHRcXHRcXHRnb3RvIGNsb3NlO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH0gZWxzZSBpZiAocmV0IFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRsb2dfZXJyKFxcXCJGYWlsZWQgdG8gcG9sbCBjb25uZWN0IHN0YXR1c1xcXCIpO1xcbitcXHRcXHRcXHRnb3RvIGNsb3NlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRlcnJsZW4gPSBzaXplb2YoZXJyKTtcXG4rXFx0XFx0aWYgKGdldHNvY2tvcHQoZmQsIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCBcXHUwMDI2ZXJyLCBcXHUwMDI2ZXJybGVuKSBcXHUwMDNjIDApIHtcXG4rXFx0XFx0XFx0bG9nX2VycihcXFwiRmFpbGVkIHRvIGdldHNvY2tvcHRcXFwiKTtcXG4rXFx0XFx0XFx0Z290byBjbG9zZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0aWYgKGVycikge1xcbitcXHRcXHRcXHRlcnJubyA9IGVycjtcXG4rXFx0XFx0XFx0bG9nX2VycihcXFwiRXZlbnR1YWxseSBmYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcXFwiKTtcXG4rXFx0XFx0XFx0Z290byBjbG9zZTtcXG4rXFx0XFx0fVxcbitcXHRcXHRyZXR1cm4gZmQ7XFxuK1xcdH1cXG4rXFxuK2Nsb3NlOlxcbitcXHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcXG4rXFx0cmV0dXJuIC0xO1xcbiB9XFxuIFxcbiBpbnQgY29ubmVjdF90b19hZGRyX3N0cihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgY29uc3QgY2hhciAqYWRkcl9zdHIsIF9fdTE2IHBvcnQsXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jXFxuaW5kZXggNDYyNTEyZmIxOTFmMS4uOGFjM2NhYTNkMDkxOSAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xcbkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3Qodm9pZClcXG4gXFx0bnN0b2tlbiA9IG9wZW5fbmV0bnMoQ0xJRU5UX05TKTtcXG4gXFx0aWYgKCFBU1NFUlRfT0tfUFRSKG5zdG9rZW4sIFxcXCJvcGVuIGNsaWVudCBuc1xcXCIpKVxcbiBcXHRcXHRyZXR1cm47XFxuLVxcdGNsaWVudF9mZCA9IGNvbm5lY3RfdG9fZmQoc2VydmVyX2ZkLCAwKTtcXG4rXFx0Y2xpZW50X2ZkID0gY29ubmVjdF90b19mZChzZXJ2ZXJfZmQsIFRJTUVPVVRfTVMpO1xcbiBcXHRpZiAoIUFTU0VSVF9PS19GRChjbGllbnRfZmQsIFxcXCJjb25uZWN0IGNsaWVudFxcXCIpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcXG5pbmRleCAyZWRjNmZiN2ZjNTIxLi43NDQwY2ZjZDEwMjU5IDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaFxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaFxcbkBAIC01Miw2ICs1MiwxNSBAQCBzdGF0aWMgaW5saW5lIF9fdTY0IGdldF90aW1lX25zKHZvaWQpXFxuIFxcdHJldHVybiAodTY0KXQudHZfc2VjICogMTAwMDAwMDAwMCArIHQudHZfbnNlYztcXG4gfVxcbiBcXG4rc3RhdGljIGlubGluZSBfX3U2NCBnZXRfdGltZV9tcyh2b2lkKVxcbit7XFxuK1xcdHN0cnVjdCB0aW1lc3BlYyB0O1xcbitcXG4rXFx0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFxcdTAwMjZ0KTtcXG4rXFxuK1xcdHJldHVybiAodTY0KXQudHZfc2VjICogMTAwMCArIHQudHZfbnNlYyAvIDEwMDAwMDA7XFxuK31cXG4rXFxuIHN0cnVjdCBicGZfaW5zbjtcXG4gLyogUmVxdWVzdCBCUEYgcHJvZ3JhbSBpbnN0cnVjdGlvbnMgYWZ0ZXIgYWxsIHJld3JpdGVzIGFyZSBhcHBsaWVkLFxcbiAgKiBlLmcuIHZlcmlmaWVyLmM6Y29udmVydF9jdHhfYWNjZXNzKCkgaXMgZG9uZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTFUMTQ6NDk6NTEuMjE3OTU0NTM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzA2MDI4NDczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBCUEYgc2VsZnRlc3RzIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8gYW5kIGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGNvZGUgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmFjODVjODkyMDZlOTFmOWNlNGE2MTY3ODk3NzEwYTRlYzNmZWU2Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDExIDE0OjQ5OjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXG5pbmRleCBkYjkzNWE5ZDlmYzFhLi5lMzE1NzcyNGFkZWNhIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbkBAIC0xNCw2ICsxNCw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjc3lzL3R5cGVzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NzeXMvdW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY3N5cy9ldmVudGZkLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvcG9sbC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXJyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbi5oXHUwMDNlXG5AQCAtMjk0LDcgKzI5NSwxMCBAQCBpbnQgY2xpZW50X3NvY2tldChpbnQgZmFtaWx5LCBpbnQgdHlwZSxcbiBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4sXG4gXHRcdCAgICBjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcbiB7XG4tXHRpbnQgZmQ7XG4rXHRfX3U2NCBzdGFydF9tcywgZHVyYXRpb25fbXM7XG4rXHRfX3U2NCByZW1haW5pbmdfbXM7XG4rXHRzb2NrbGVuX3QgZXJybGVuO1xuK1x0aW50IGZkLCBlcnIsIHJldDtcbiBcbiBcdGlmICghb3B0cylcbiBcdFx0b3B0cyA9IFx1MDAyNmRlZmF1bHRfb3B0cztcbkBAIC0zMDUsMTMgKzMwOSw2OSBAQCBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZFxuIFx0XHRyZXR1cm4gLTE7XG4gXHR9XG4gXG4tXHRpZiAoY29ubmVjdChmZCwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsIGFkZHJsZW4pKSB7XG4rXHRzdGFydF9tcyA9IGdldF90aW1lX21zKCk7XG4rXHRlcnIgPSBjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbik7XG4rXG4rXHRpZiAoIWVycilcbitcdFx0cmV0dXJuIGZkO1xuK1xuK1x0aWYgKGVycm5vICE9IEVJTlBST0dSRVNTKSB7XG4gXHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcIik7XG4tXHRcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xuLVx0XHRyZXR1cm4gLTE7XG4rXHRcdGdvdG8gY2xvc2U7XG4gXHR9XG4gXG4tXHRyZXR1cm4gZmQ7XG4rXHRkdXJhdGlvbl9tcyA9IGdldF90aW1lX21zKCkgLSBzdGFydF9tcztcbitcdHJlbWFpbmluZ19tcyA9IGR1cmF0aW9uX21zIFx1MDAzYyBvcHRzLVx1MDAzZXRpbWVvdXRfbXMgP1xuK1x0XHRcdCAgICAgICBvcHRzLVx1MDAzZXRpbWVvdXRfbXMgLSBkdXJhdGlvbl9tcyA6XG4rXHRcdFx0ICAgICAgIDA7XG4rXHRpZiAoIXJlbWFpbmluZ19tcykge1xuK1x0XHRlcnJubyA9IEVUSU1FRE9VVDtcbitcdFx0bG9nX2VycihcIkNhbiBub3QgcG9sbCBjb25uZWN0aW9uLCBhbHJlYWR5IGluIHRpbWVvdXRcIik7XG4rXHRcdGdvdG8gY2xvc2U7XG4rXHR9XG4rXG4rXHR3aGlsZSAocmVtYWluaW5nX21zKSB7XG4rXHRcdHN0cnVjdCBwb2xsZmQgcGZkID0geyAuZmQgPSBmZCwgLmV2ZW50cyA9IFBPTExPVVQgfTtcbitcbitcdFx0c3RhcnRfbXMgPSBnZXRfdGltZV9tcygpO1xuK1x0XHRyZXQgPSBwb2xsKFx1MDAyNnBmZCwgMSwgcmVtYWluaW5nX21zKTtcbitcbitcdFx0aWYgKHJldCA9PSAwKSB7XG4rXHRcdFx0ZXJybm8gPSBFVElNRURPVVQ7XG4rXHRcdFx0bG9nX2VycihcIkNvbm5lY3Rpb24gdGltZW91dCB3aGlsZSBwb2xsaW5nXCIpO1xuK1x0XHRcdGdvdG8gY2xvc2U7XG4rXHRcdH0gZWxzZSBpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBlcnJubyA9PSBFSU5UUikge1xuK1x0XHRcdGR1cmF0aW9uX21zID0gZ2V0X3RpbWVfbXMoKSAtIHN0YXJ0X21zO1xuK1x0XHRcdHJlbWFpbmluZ19tcyA9IGR1cmF0aW9uX21zIFx1MDAzYyByZW1haW5pbmdfbXMgP1xuK1x0XHRcdFx0XHQgICAgICAgcmVtYWluaW5nX21zIC0gZHVyYXRpb25fbXMgOlxuK1x0XHRcdFx0XHQgICAgICAgMDtcbitcdFx0XHRpZiAoIXJlbWFpbmluZ19tcykge1xuK1x0XHRcdFx0ZXJybm8gPSBFVElNRURPVVQ7XG4rXHRcdFx0XHRsb2dfZXJyKFwiQ29ubmVjdGlvbiB0aW1lb3V0IGFmdGVyIHNpZ25hbFwiKTtcbitcdFx0XHRcdGdvdG8gY2xvc2U7XG4rXHRcdFx0fVxuK1x0XHR9IGVsc2UgaWYgKHJldCBcdTAwM2MgMCkge1xuK1x0XHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gcG9sbCBjb25uZWN0IHN0YXR1c1wiKTtcbitcdFx0XHRnb3RvIGNsb3NlO1xuK1x0XHR9XG4rXG4rXHRcdGVycmxlbiA9IHNpemVvZihlcnIpO1xuK1x0XHRpZiAoZ2V0c29ja29wdChmZCwgU09MX1NPQ0tFVCwgU09fRVJST1IsIFx1MDAyNmVyciwgXHUwMDI2ZXJybGVuKSBcdTAwM2MgMCkge1xuK1x0XHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gZ2V0c29ja29wdFwiKTtcbitcdFx0XHRnb3RvIGNsb3NlO1xuK1x0XHR9XG4rXG4rXHRcdGlmIChlcnIpIHtcbitcdFx0XHRlcnJubyA9IGVycjtcbitcdFx0XHRsb2dfZXJyKFwiRXZlbnR1YWxseSBmYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcIik7XG4rXHRcdFx0Z290byBjbG9zZTtcbitcdFx0fVxuK1x0XHRyZXR1cm4gZmQ7XG4rXHR9XG4rXG4rY2xvc2U6XG4rXHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcbitcdHJldHVybiAtMTtcbiB9XG4gXG4gaW50IGNvbm5lY3RfdG9fYWRkcl9zdHIoaW50IGZhbWlseSwgaW50IHR5cGUsIGNvbnN0IGNoYXIgKmFkZHJfc3RyLCBfX3UxNiBwb3J0LFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9nX3Rlc3RzL3Rlc3RfdGNfZWR0LmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ190ZXN0cy90ZXN0X3RjX2VkdC5jXG5pbmRleCA0NjI1MTJmYjE5MWYxLi44YWMzY2FhM2QwOTE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dfdGVzdHMvdGVzdF90Y19lZHQuY1xuQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdCh2b2lkKVxuIFx0bnN0b2tlbiA9IG9wZW5fbmV0bnMoQ0xJRU5UX05TKTtcbiBcdGlmICghQVNTRVJUX09LX1BUUihuc3Rva2VuLCBcIm9wZW4gY2xpZW50IG5zXCIpKVxuIFx0XHRyZXR1cm47XG4tXHRjbGllbnRfZmQgPSBjb25uZWN0X3RvX2ZkKHNlcnZlcl9mZCwgMCk7XG4rXHRjbGllbnRfZmQgPSBjb25uZWN0X3RvX2ZkKHNlcnZlcl9mZCwgVElNRU9VVF9NUyk7XG4gXHRpZiAoIUFTU0VSVF9PS19GRChjbGllbnRfZmQsIFwiY29ubmVjdCBjbGllbnRcIikpXG4gXHRcdHJldHVybjtcbiBcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcbmluZGV4IDJlZGM2ZmI3ZmM1MjEuLjc0NDBjZmNkMTAyNTkgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdGluZ19oZWxwZXJzLmhcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0aW5nX2hlbHBlcnMuaFxuQEAgLTUyLDYgKzUyLDE1IEBAIHN0YXRpYyBpbmxpbmUgX191NjQgZ2V0X3RpbWVfbnModm9pZClcbiBcdHJldHVybiAodTY0KXQudHZfc2VjICogMTAwMDAwMDAwMCArIHQudHZfbnNlYztcbiB9XG4gXG4rc3RhdGljIGlubGluZSBfX3U2NCBnZXRfdGltZV9tcyh2b2lkKVxuK3tcbitcdHN0cnVjdCB0aW1lc3BlYyB0O1xuK1xuK1x0Y2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsIFx1MDAyNnQpO1xuK1xuK1x0cmV0dXJuICh1NjQpdC50dl9zZWMgKiAxMDAwICsgdC50dl9uc2VjIC8gMTAwMDAwMDtcbit9XG4rXG4gc3RydWN0IGJwZl9pbnNuO1xuIC8qIFJlcXVlc3QgQlBGIHByb2dyYW0gaW5zdHJ1Y3Rpb25zIGFmdGVyIGFsbCByZXdyaXRlcyBhcmUgYXBwbGllZCxcbiAgKiBlLmcuIHZlcmlmaWVyLmM6Y29udmVydF9jdHhfYWNjZXNzKCkgaXMgZG9uZS5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjQ5OjUxLjIxNzk1NjA5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjAyNTI4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPWZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGlzIHBhdGNoLiBJdCdzIHRvdWNoaW5nIGZpbGVzIHdpdGhpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXNlIGFyZSAqc2VsZi10ZXN0cyosIG5vdCBjb3JlIGtlcm5lbCBjb2RlLCBzbyBpdCBsaWtlbHkgd29uJ3QgcmVxdWlyZSBmdXp6aW5nLlxuXG5UaGUgaW5zdHJ1Y3Rpb25zIGNsZWFybHkgb3V0bGluZSBjb25kaXRpb25zIGZvciByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24gY2hhbmdlcywgbG9nZ2luZyBhZGp1c3RtZW50cywgb3IgbW9kaWZpY2F0aW9ucyB0byB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGFyZSBpbW1lZGlhdGUgZmxhZ3MuIE5vdywgdGhlIGtleSBpcyB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBmYWxscyBpbnRvIG9uZSBvZiB0aG9zZSBjYXRlZ29yaWVzLCBvciBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVlcGVyIGRpdmUuXG5cbkxldCBtZSB2ZXJpZnkgdGhlIHNwZWNpZmljIGZpbGVzIGludm9sdmVkOiBgbmV0d29ya19oZWxwZXJzLmNgLCBgdGVzdF90Y19lZHQuY2AsIGFuZCBgdGVzdGluZ19oZWxwZXJzLmhgLiBUaGVzZSBhcmUgYWxsIGNsZWFybHkgd2l0aGluIHRoZSBzZWxmdGVzdCBkaXJlY3RvcnkuIEl0J3MgY3J1Y2lhbCB0byBjb25maXJtIG5vIGNvcmUga2VybmVsIGNvZGUgaGFzIGJlZW4gdG91Y2hlZC5cblxuT2theSwgYWZ0ZXIgY29uZmlybWluZyB0aGUgZmlsZXMgYXJlIGFsbCBpbiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2AsIGFuZCBhIHF1aWNrIHNjYW4gY29uZmlybXMgdGhlcmUncyBubyBtb2RpZmljYXRpb24gb2Yga2VybmVsIGNvZGUuIFRoaXMgaXNuJ3QgYSBmdW5jdGlvbmFsIGtlcm5lbCBjaGFuZ2UgdGhhdCBuZWVkcyBmdXp6aW5nLlxuXG5UaGVyZWZvcmUsIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24gaXMgdG8gc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJIGFtIGNvbmZpZGVudCBpbiB0aGF0IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzOTEsIk91dHB1dFRva2VucyI6NjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMVQxNDo0OTo1OC4yNzgyMTI0MzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgQlBGIHNlbGZ0ZXN0cyBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvIGFuZCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBjb2RlIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTExVDE0OjQ5OjU4LjI3ODI0MTg2NloiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfgjzc[1] Phase: Running StartedAt: 2026-08-11 14:50:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfgjzc[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-11 14:50:21 +0000 UTC FinishedAt: 2026-08-11 14:50:26 +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,}