Name: series-workflow6rlfs Phase: Failed StartedAt: 2026-08-14 07:21:43 +0000 UTC FinishedAt: 2026-08-14 07:38:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6rlfs[0] Phase: Succeeded StartedAt: 2026-08-14 07:21:43 +0000 UTC FinishedAt: 2026-08-14 07:38:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6rlfs[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 07:21:43 +0000 UTC FinishedAt: 2026-08-14 07:38:22 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDA3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU5ZGI5OGRlMzU4MDU4YTJkMGYwYWMwNWEzYTA1M2RhMTU2Y2U4NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwNzozODowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbmluZGV4IGRiOTM1YTlkOWZjMWEuLjhjOTIzNmMwYTVhNWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY1xuQEAgLTQ5LDYgJiM0Mzs0OSw4IEBAXG4gXHRcdFx0ZXJybm8gPSBfX3NhdmU7XHRcdFx0XHRcdFxcXG4gfSlcbiBcbiYjNDM7I2RlZmluZSBDT05ORUNUX01JTl9USU1FT1VUX01TXHQ1MDAwXG4mIzQzO1xuIHN0cnVjdCBpcHY0X3BhY2tldCBwa3RfdjQgPSB7XG4gXHQuZXRoLmhfcHJvdG8gPSBfX2JwZl9jb25zdGFudF9odG9ucyhFVEhfUF9JUCksXG4gXHQuaXBoLmlobCA9IDUsXG5AQCAtMjkxLDYgJiM0MzsyOTMsMTIgQEAgaW50IGNsaWVudF9zb2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUsXG4gXHRyZXR1cm4gLTE7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGNvbm5lY3RfdGltZW91dF9tcyhjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcbiYjNDM7e1xuJiM0MztcdC8qIEVuZm9yY2UgYSBtaW5pbXVtIGNvbm5lY3QgdGltZW91dCB2YWx1ZSAqL1xuJiM0MztcdHJldHVybiBNQVgob3B0cy1cdTAwM2V0aW1lb3V0X21zLCBDT05ORUNUX01JTl9USU1FT1VUX01TKTtcbiYjNDM7fVxuJiM0MztcbiBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4sXG4gXHRcdCAgICBjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcbiB7XG5AQCAtMzA1LDEzICYjNDM7MzEzLDM1IEBAIGludCBjb25uZWN0X3RvX2FkZHIoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyLCBzb2NrbGVuX3QgYWRkXG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE92ZXJyaWRlIHRpbWVvdXQgY29uZmlndXJhdGlvbiB3aXRoIGEgbGFyZ2VyIHZhbHVlIGZvciB0aGVcbiYjNDM7XHQgKiBjb25uZWN0aW9uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNldHRpbWVvKGZkLCBjb25uZWN0X3RpbWVvdXRfbXMob3B0cykpKSB7XG4mIzQzO1x0XHRsb2dfZXJyKFwmIzM0O0ZhaWxlZCB0byBzZXQgY29ubmVjdCB0aW1lb3V0XCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gY2xvc2U7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbikpIHtcbi1cdFx0bG9nX2VycihcJiMzNDtGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcJiMzNDspO1xuLVx0XHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcbi1cdFx0cmV0dXJuIC0xO1xuJiM0MztcdFx0bG9nX2VycihcJiMzNDtGYWlsZWQgdG8gY29ubmVjdFwmIzM0Oyk7XG4mIzQzO1x0XHRnb3RvIGNsb3NlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBJZiB0aGUgdGltZW91dCBjb25maWd1cmVkIGJ5IHRoZSB0ZXN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZVxuJiM0MztcdCAqIGNvbm5lY3QgdGltZW91dCwgcmVzdG9yZSBpdFxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChvcHRzLVx1MDAzZXRpbWVvdXRfbXMgIT0gQ09OTkVDVF9NSU5fVElNRU9VVF9NUyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgc2V0dGltZW8oZmQsIG9wdHMtXHUwMDNldGltZW91dF9tcykpIHtcbiYjNDM7XHRcdGxvZ19lcnIoXCYjMzQ7RmFpbGVkIHRvIHNldCB0aW1lb3V0IGZvciBjb25uZWN0ZWQgc29ja2V0XCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gY2xvc2U7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZmQ7XG4mIzQzO1xuJiM0MztjbG9zZTpcbiYjNDM7XHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcbiYjNDM7XHRyZXR1cm4gLTE7XG4gfVxuIFxuIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCxcbkBAIC00MjQsNyAmIzQzOzQ1NCw4IEBAIGludCBtYWtlX3NvY2thZGRyKGludCBmYW1pbHksIGNvbnN0IGNoYXIgKmFkZHJfc3RyLCBfX3UxNiBwb3J0LFxuIFx0XHRcdCpsZW4gPSBzaXplb2YoKnNpbjYpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH0gZWxzZSBpZiAoZmFtaWx5ID09IEFGX1VOSVgpIHtcbi1cdFx0LyogTm90ZSB0aGF0IHdlIGFsd2F5cyB1c2UgYWJzdHJhY3QgdW5peCBzb2NrZXRzIHRvIGF2b2lkIGhhdmluZ1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE5vdGUgdGhhdCB3ZSBhbHdheXMgdXNlIGFic3RyYWN0IHVuaXggc29ja2V0cyB0byBhdm9pZCBoYXZpbmdcbiBcdFx0ICogdG8gY2xlYW4gdXAgbGVmdG92ZXIgZmlsZXMuXG4gXHRcdCAqL1xuIFx0XHRzdHJ1Y3Qgc29ja2FkZHJfdW4gKnN1biA9ICh2b2lkICopYWRkcjtcbkBAIC04NjUsNyAmIzQzOzg5Niw4IEBAIHN0YXRpYyBib29sIGlzX2V0aGVybmV0KGNvbnN0IHVfY2hhciAqcGFja2V0KVxuIFx0bWVtY3B5KFx1MDAyNmFycGhkcl90eXBlLCBwYWNrZXQgJiM0MzsgOCwgMik7XG4gXHRhcnBoZHJfdHlwZSA9IG50b2hzKGFycGhkcl90eXBlKTtcbiBcbi1cdC8qIEV4Y2VwdCB0aGUgZm9sbG93aW5nIGNhc2VzLCB0aGUgcHJvdG9jb2wgdHlwZSBjb250YWlucyB0aGVcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEV4Y2VwdCB0aGUgZm9sbG93aW5nIGNhc2VzLCB0aGUgcHJvdG9jb2wgdHlwZSBjb250YWlucyB0aGVcbiBcdCAqIEV0aGVybmV0IHByb3RvY29sIHR5cGUgZm9yIHRoZSBwYWNrZXQuXG4gXHQgKlxuIFx0ICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbFxuQEAgLTEwMzMsMTkgJiM0MzsxMDY1LDIyIEBAIHN0YXRpYyB2b2lkICp0cmFmZmljX21vbml0b3JfdGhyZWFkKHZvaWQgKmFyZylcbiBcdFx0aWYgKCFwYWNrZXQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdC8qIEFjY29yZGluZyB0byB0aGUgbWFuIHBhZ2Ugb2YgcGNhcF9kdW1wKCksIGZpcnN0IGFyZ3VtZW50XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogQWNjb3JkaW5nIHRvIHRoZSBtYW4gcGFnZSBvZiBwY2FwX2R1bXAoKSwgZmlyc3QgYXJndW1lbnRcbiBcdFx0ICogaXMgdGhlIHBjYXBfZHVtcGVyX3QgcG9pbnRlciBldmVuIGl0JiMzOTtzIGFyZ3VtZW50IHR5cGUgaXNcbiBcdFx0ICogdV9jaGFyICouXG4gXHRcdCAqL1xuIFx0XHRwY2FwX2R1bXAoKHVfY2hhciAqKWR1bXBlciwgXHUwMDI2aGVhZGVyLCBwYWNrZXQpO1xuIFxuLVx0XHQvKiBOb3Qgc3VyZSB3aGF0IG90aGVyIHR5cGVzIG9mIHBhY2tldHMgbG9vayBsaWtlLiBIZXJlLCB3ZVxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE5vdCBzdXJlIHdoYXQgb3RoZXIgdHlwZXMgb2YgcGFja2V0cyBsb29rIGxpa2UuIEhlcmUsIHdlXG4gXHRcdCAqIHBhcnNlIG9ubHkgRXRoZXJuZXQgYW5kIGNvbXBhdGlibGUgcGFja2V0cy5cbiBcdFx0ICovXG4gXHRcdGlmICghaXNfZXRoZXJuZXQocGFja2V0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0LyogU2tpcCBTTEwyIGhlYWRlclxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFNraXAgU0xMMiBoZWFkZXJcbiBcdFx0ICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbFxuIFx0XHQgKlxuIFx0XHQgKiBBbHRob3VnaCB0aGUgZG9jdW1lbnQgZG9lc24mIzM5O3QgbWVudGlvbiB0aGF0LCB0aGUgcGF5bG9hZFxuQEAgLTEwNzksNyAmIzQzOzExMTQsOCBAQCBzdGF0aWMgdm9pZCAqdHJhZmZpY19tb25pdG9yX3RocmVhZCh2b2lkICphcmcpXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4tLyogUHJlcGFyZSB0aGUgcGNhcCBoYW5kbGUgdG8gY2FwdHVyZSBwYWNrZXRzLlxuJiM0MzsvKlxuJiM0MzsgKiBQcmVwYXJlIHRoZSBwY2FwIGhhbmRsZSB0byBjYXB0dXJlIHBhY2tldHMuXG4gICpcbiAgKiBUaGlzIHBjYXAgaXMgbm9uLWJsb2NraW5nIGFuZCBpbW1lZGlhdGUgbW9kZSBpcyBlbmFibGVkIHRvIHJlY2VpdmVcbiAgKiBjYXB0dXJlZCBwYWNrZXRzIGFzIHNvb24gYXMgcG9zc2libGUuICBUaGUgc25hcGxlbiBpcyBzZXQgdG8gMTAyNCBieXRlc1xuQEAgLTExNTAsNyAmIzQzOzExODYsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfdGVzdF9uYW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqdGVzdF9uYW1lLCBjb25zdFxuIFxuICNkZWZpbmUgUENBUF9ESVIgXCYjMzQ7L3RtcC90bW9uX3BjYXBcJiMzNDtcbiBcbi0vKiBTdGFydCB0byBtb25pdG9yIHRoZSBuZXR3b3JrIHRyYWZmaWMgaW4gdGhlIGdpdmVuIG5ldHdvcmsgbmFtZXNwYWNlLlxuJiM0MzsvKlxuJiM0MzsgKiBTdGFydCB0byBtb25pdG9yIHRoZSBuZXR3b3JrIHRyYWZmaWMgaW4gdGhlIGdpdmVuIG5ldHdvcmsgbmFtZXNwYWNlLlxuICAqXG4gICogbmV0bnM6IHRoZSBuYW1lIG9mIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0byBtb25pdG9yLiBJZiBOVUxMLCB0aGVcbiAgKiAgICAgICAgY3VycmVudCBuZXR3b3JrIG5hbWVzcGFjZSBpcyBtb25pdG9yZWQuXG5AQCAtMTI1NSw3ICYjNDM7MTI5Miw4IEBAIHN0YXRpYyB2b2lkIHRyYWZmaWNfbW9uaXRvcl9yZWxlYXNlKHN0cnVjdCB0bW9uaXRvcl9jdHggKmN0eClcbiBcdGZyZWUoY3R4KTtcbiB9XG4gXG4tLyogU3RvcCB0aGUgbmV0d29yayB0cmFmZmljIG1vbml0b3IuXG4mIzQzOy8qXG4mIzQzOyAqIFN0b3AgdGhlIG5ldHdvcmsgdHJhZmZpYyBtb25pdG9yLlxuICAqXG4gICogY3R4OiB0aGUgY29udGV4dCByZXR1cm5lZCBieSB0cmFmZmljX21vbml0b3Jfc3RhcnQoKVxuICAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA3OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSB0ZXN0aW5nIGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTlkYjk4ZGUzNTgwNThhMmQwZjBhYzA1YTNhMDUzZGExNTZjZTg0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDA3OjM4OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jCmluZGV4IGRiOTM1YTlkOWZjMWEuLjhjOTIzNmMwYTVhNWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMKQEAgLTQ5LDYgJiM0Mzs0OSw4IEBACiAJCQllcnJubyA9IF9fc2F2ZTsJCQkJCVwKIH0pCiAKJiM0MzsjZGVmaW5lIENPTk5FQ1RfTUlOX1RJTUVPVVRfTVMJNTAwMAomIzQzOwogc3RydWN0IGlwdjRfcGFja2V0IHBrdF92NCA9IHsKIAkuZXRoLmhfcHJvdG8gPSBfX2JwZl9jb25zdGFudF9odG9ucyhFVEhfUF9JUCksCiAJLmlwaC5paGwgPSA1LApAQCAtMjkxLDYgJiM0MzsyOTMsMTIgQEAgaW50IGNsaWVudF9zb2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUsCiAJcmV0dXJuIC0xOwogfQogCiYjNDM7c3RhdGljIGludCBjb25uZWN0X3RpbWVvdXRfbXMoY29uc3Qgc3RydWN0IG5ldHdvcmtfaGVscGVyX29wdHMgKm9wdHMpCiYjNDM7ewomIzQzOwkvKiBFbmZvcmNlIGEgbWluaW11bSBjb25uZWN0IHRpbWVvdXQgdmFsdWUgKi8KJiM0MzsJcmV0dXJuIE1BWChvcHRzLSZndDt0aW1lb3V0X21zLCBDT05ORUNUX01JTl9USU1FT1VUX01TKTsKJiM0Mzt9CiYjNDM7CiBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4sCiAJCSAgICBjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cykKIHsKQEAgLTMwNSwxMyAmIzQzOzMxMywzNSBAQCBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZAogCQlyZXR1cm4gLTE7CiAJfQogCiYjNDM7CS8qCiYjNDM7CSAqIE92ZXJyaWRlIHRpbWVvdXQgY29uZmlndXJhdGlvbiB3aXRoIGEgbGFyZ2VyIHZhbHVlIGZvciB0aGUKJiM0MzsJICogY29ubmVjdGlvbgomIzQzOwkgKi8KJiM0MzsJaWYgKHNldHRpbWVvKGZkLCBjb25uZWN0X3RpbWVvdXRfbXMob3B0cykpKSB7CiYjNDM7CQlsb2dfZXJyKCYjMzQ7RmFpbGVkIHRvIHNldCBjb25uZWN0IHRpbWVvdXQmIzM0Oyk7CiYjNDM7CQlnb3RvIGNsb3NlOwomIzQzOwl9CiYjNDM7CiAJaWYgKGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLCBhZGRybGVuKSkgewotCQlsb2dfZXJyKCYjMzQ7RmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyJiMzNDspOwotCQlzYXZlX2Vycm5vX2Nsb3NlKGZkKTsKLQkJcmV0dXJuIC0xOwomIzQzOwkJbG9nX2VycigmIzM0O0ZhaWxlZCB0byBjb25uZWN0JiMzNDspOwomIzQzOwkJZ290byBjbG9zZTsKJiM0MzsJfQomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBJZiB0aGUgdGltZW91dCBjb25maWd1cmVkIGJ5IHRoZSB0ZXN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZQomIzQzOwkgKiBjb25uZWN0IHRpbWVvdXQsIHJlc3RvcmUgaXQKJiM0MzsJICovCiYjNDM7CWlmIChvcHRzLSZndDt0aW1lb3V0X21zICE9IENPTk5FQ1RfTUlOX1RJTUVPVVRfTVMgJmFtcDsmYW1wOwomIzQzOwkgICAgc2V0dGltZW8oZmQsIG9wdHMtJmd0O3RpbWVvdXRfbXMpKSB7CiYjNDM7CQlsb2dfZXJyKCYjMzQ7RmFpbGVkIHRvIHNldCB0aW1lb3V0IGZvciBjb25uZWN0ZWQgc29ja2V0JiMzNDspOwomIzQzOwkJZ290byBjbG9zZTsKIAl9CiAKIAlyZXR1cm4gZmQ7CiYjNDM7CiYjNDM7Y2xvc2U6CiYjNDM7CXNhdmVfZXJybm9fY2xvc2UoZmQpOwomIzQzOwlyZXR1cm4gLTE7CiB9CiAKIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCwKQEAgLTQyNCw3ICYjNDM7NDU0LDggQEAgaW50IG1ha2Vfc29ja2FkZHIoaW50IGZhbWlseSwgY29uc3QgY2hhciAqYWRkcl9zdHIsIF9fdTE2IHBvcnQsCiAJCQkqbGVuID0gc2l6ZW9mKCpzaW42KTsKIAkJcmV0dXJuIDA7CiAJfSBlbHNlIGlmIChmYW1pbHkgPT0gQUZfVU5JWCkgewotCQkvKiBOb3RlIHRoYXQgd2UgYWx3YXlzIHVzZSBhYnN0cmFjdCB1bml4IHNvY2tldHMgdG8gYXZvaWQgaGF2aW5nCiYjNDM7CQkvKgomIzQzOwkJICogTm90ZSB0aGF0IHdlIGFsd2F5cyB1c2UgYWJzdHJhY3QgdW5peCBzb2NrZXRzIHRvIGF2b2lkIGhhdmluZwogCQkgKiB0byBjbGVhbiB1cCBsZWZ0b3ZlciBmaWxlcy4KIAkJICovCiAJCXN0cnVjdCBzb2NrYWRkcl91biAqc3VuID0gKHZvaWQgKilhZGRyOwpAQCAtODY1LDcgJiM0Mzs4OTYsOCBAQCBzdGF0aWMgYm9vbCBpc19ldGhlcm5ldChjb25zdCB1X2NoYXIgKnBhY2tldCkKIAltZW1jcHkoJmFtcDthcnBoZHJfdHlwZSwgcGFja2V0ICYjNDM7IDgsIDIpOwogCWFycGhkcl90eXBlID0gbnRvaHMoYXJwaGRyX3R5cGUpOwogCi0JLyogRXhjZXB0IHRoZSBmb2xsb3dpbmcgY2FzZXMsIHRoZSBwcm90b2NvbCB0eXBlIGNvbnRhaW5zIHRoZQomIzQzOwkvKgomIzQzOwkgKiBFeGNlcHQgdGhlIGZvbGxvd2luZyBjYXNlcywgdGhlIHByb3RvY29sIHR5cGUgY29udGFpbnMgdGhlCiAJICogRXRoZXJuZXQgcHJvdG9jb2wgdHlwZSBmb3IgdGhlIHBhY2tldC4KIAkgKgogCSAqIGh0dHBzOi8vd3d3LnRjcGR1bXAub3JnL2xpbmt0eXBlcy9MSU5LVFlQRV9MSU5VWF9TTEwyLmh0bWwKQEAgLTEwMzMsMTkgJiM0MzsxMDY1LDIyIEBAIHN0YXRpYyB2b2lkICp0cmFmZmljX21vbml0b3JfdGhyZWFkKHZvaWQgKmFyZykKIAkJaWYgKCFwYWNrZXQpCiAJCQljb250aW51ZTsKIAotCQkvKiBBY2NvcmRpbmcgdG8gdGhlIG1hbiBwYWdlIG9mIHBjYXBfZHVtcCgpLCBmaXJzdCBhcmd1bWVudAomIzQzOwkJLyoKJiM0MzsJCSAqIEFjY29yZGluZyB0byB0aGUgbWFuIHBhZ2Ugb2YgcGNhcF9kdW1wKCksIGZpcnN0IGFyZ3VtZW50CiAJCSAqIGlzIHRoZSBwY2FwX2R1bXBlcl90IHBvaW50ZXIgZXZlbiBpdCYjMzk7cyBhcmd1bWVudCB0eXBlIGlzCiAJCSAqIHVfY2hhciAqLgogCQkgKi8KIAkJcGNhcF9kdW1wKCh1X2NoYXIgKilkdW1wZXIsICZhbXA7aGVhZGVyLCBwYWNrZXQpOwogCi0JCS8qIE5vdCBzdXJlIHdoYXQgb3RoZXIgdHlwZXMgb2YgcGFja2V0cyBsb29rIGxpa2UuIEhlcmUsIHdlCiYjNDM7CQkvKgomIzQzOwkJICogTm90IHN1cmUgd2hhdCBvdGhlciB0eXBlcyBvZiBwYWNrZXRzIGxvb2sgbGlrZS4gSGVyZSwgd2UKIAkJICogcGFyc2Ugb25seSBFdGhlcm5ldCBhbmQgY29tcGF0aWJsZSBwYWNrZXRzLgogCQkgKi8KIAkJaWYgKCFpc19ldGhlcm5ldChwYWNrZXQpKQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBTTEwyIGhlYWRlcgomIzQzOwkJLyoKJiM0MzsJCSAqIFNraXAgU0xMMiBoZWFkZXIKIAkJICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbAogCQkgKgogCQkgKiBBbHRob3VnaCB0aGUgZG9jdW1lbnQgZG9lc24mIzM5O3QgbWVudGlvbiB0aGF0LCB0aGUgcGF5bG9hZApAQCAtMTA3OSw3ICYjNDM7MTExNCw4IEBAIHN0YXRpYyB2b2lkICp0cmFmZmljX21vbml0b3JfdGhyZWFkKHZvaWQgKmFyZykKIAlyZXR1cm4gTlVMTDsKIH0KIAotLyogUHJlcGFyZSB0aGUgcGNhcCBoYW5kbGUgdG8gY2FwdHVyZSBwYWNrZXRzLgomIzQzOy8qCiYjNDM7ICogUHJlcGFyZSB0aGUgcGNhcCBoYW5kbGUgdG8gY2FwdHVyZSBwYWNrZXRzLgogICoKICAqIFRoaXMgcGNhcCBpcyBub24tYmxvY2tpbmcgYW5kIGltbWVkaWF0ZSBtb2RlIGlzIGVuYWJsZWQgdG8gcmVjZWl2ZQogICogY2FwdHVyZWQgcGFja2V0cyBhcyBzb29uIGFzIHBvc3NpYmxlLiAgVGhlIHNuYXBsZW4gaXMgc2V0IHRvIDEwMjQgYnl0ZXMKQEAgLTExNTAsNyAmIzQzOzExODYsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfdGVzdF9uYW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqdGVzdF9uYW1lLCBjb25zdAogCiAjZGVmaW5lIFBDQVBfRElSICYjMzQ7L3RtcC90bW9uX3BjYXAmIzM0OwogCi0vKiBTdGFydCB0byBtb25pdG9yIHRoZSBuZXR3b3JrIHRyYWZmaWMgaW4gdGhlIGdpdmVuIG5ldHdvcmsgbmFtZXNwYWNlLgomIzQzOy8qCiYjNDM7ICogU3RhcnQgdG8gbW9uaXRvciB0aGUgbmV0d29yayB0cmFmZmljIGluIHRoZSBnaXZlbiBuZXR3b3JrIG5hbWVzcGFjZS4KICAqCiAgKiBuZXRuczogdGhlIG5hbWUgb2YgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRvIG1vbml0b3IuIElmIE5VTEwsIHRoZQogICogICAgICAgIGN1cnJlbnQgbmV0d29yayBuYW1lc3BhY2UgaXMgbW9uaXRvcmVkLgpAQCAtMTI1NSw3ICYjNDM7MTI5Miw4IEBAIHN0YXRpYyB2b2lkIHRyYWZmaWNfbW9uaXRvcl9yZWxlYXNlKHN0cnVjdCB0bW9uaXRvcl9jdHggKmN0eCkKIAlmcmVlKGN0eCk7CiB9CiAKLS8qIFN0b3AgdGhlIG5ldHdvcmsgdHJhZmZpYyBtb25pdG9yLgomIzQzOy8qCiYjNDM7ICogU3RvcCB0aGUgbmV0d29yayB0cmFmZmljIG1vbml0b3IuCiAgKgogICogY3R4OiB0aGUgY29udGV4dCByZXR1cm5lZCBieSB0cmFmZmljX21vbml0b3Jfc3RhcnQoKQogICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNTIKCQkJCQkJCW91dHB1dDogNjkKCQkJCQkJCXRob3VnaHRzOiAzODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IG9uIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jYC4gSXQmIzM5O3MgaW50cm9kdWNpbmcgYSBgQ09OTkVDVF9NSU5fVElNRU9VVF9NU2AgbWFjcm8gYW5kIGluY29ycG9yYXRpbmcgaXQgd2l0aGluIHRoZSBgY29ubmVjdF90b19hZGRyYCBmdW5jdGlvbiwgZXNzZW50aWFsbHkgc2V0dGluZyBhIG1pbmltdW0gdGltZW91dC4gSXQgYWxzbyBzZWVtcyB0byBpbnZvbHZlIHNvbWUgbWlub3IgY29tbWVudCBmb3JtYXR0aW5nIHR3ZWFrcy4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgc2luY2UgdGhpcyBpcyAqc29sZWx5KiBhIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnksIGFuZCBkb2VzbiYjMzk7dCB0b3VjaCB0aGUgY29yZSBrZXJuZWwgY29kZSBpdHNlbGYsIHRoaXMgc2hvdWxkIGhhdmUgbm8gYmVhcmluZyBvbiBgV29ydGhGdXp6aW5nYC4gVGhlIGtlcm5lbCYjMzk7cyBiZWhhdmlvciBpc24mIzM5O3QgYmVpbmcgYWx0ZXJlZCwganVzdCB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KCkJ1dCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCYjMzk7cyByZXZpc2l0IHRoZSBydWxlcy4gV2UgbmVlZCB0byBiZSBtZXRpY3Vsb3VzLiBMZXQgbWUgdGhpbmsuLi4gJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8uLi4gY29kZSBjb21tZW50cywgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93Li4uJiMzNDsgQWgsIGFuZCB0aGVuIHRoZSBsYXN0IGZldyBydWxlcyBhcmUgdW5yZWxhdGVkIHRvIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQuCgpUaGlzIGlzIGEgY2xhc3NpYy4gVGhpcyBwYXRjaCAqZG9lcyogbW9kaWZ5IGEgbWFjcm8sIGJ1dCB0aGlzIHNlZW1zIHZlcnkgbXVjaCBsaWtlIGEgbnVtZXJpYyBjb25zdGFudCB0aGF0JiMzOTtzIGJlaW5nIGludHJvZHVjZWQgYW5kIGRvZXNuJiMzOTt0IGNoYW5nZSBleGVjdXRpb24gb2YgdGhlIGtlcm5lbCwganVzdCB0aGUgYmVoYXZpb3Igb2Ygc29tZSB0ZXN0cy4gSXQmIzM5O3MgYSB0ZXN0IGluZnJhc3RydWN0dXJlIGVuaGFuY2VtZW50LCBub3QgYSBrZXJuZWwgY2hhbmdlLiBJdCYjMzk7cyBjb25maW5lZCB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYC4gVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBjb25jbHVzaW9uIGlzIGRlZmluaXRlbHkgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDc6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA3OjM4OjA1LjEyNTE0NTMyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NzA0OTc0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSB0ZXN0aW5nIGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNzozODowNS4xMjUxNTMxNTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTQ0MDY5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU5ZGI5OGRlMzU4MDU4YTJkMGYwYWMwNWEzYTA1M2RhMTU2Y2U4NGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDc6Mzg6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXFxuaW5kZXggZGI5MzVhOWQ5ZmMxYS4uOGM5MjM2YzBhNWE1ZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcXG5AQCAtNDksNiArNDksOCBAQFxcbiBcXHRcXHRcXHRlcnJubyA9IF9fc2F2ZTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH0pXFxuIFxcbisjZGVmaW5lIENPTk5FQ1RfTUlOX1RJTUVPVVRfTVNcXHQ1MDAwXFxuK1xcbiBzdHJ1Y3QgaXB2NF9wYWNrZXQgcGt0X3Y0ID0ge1xcbiBcXHQuZXRoLmhfcHJvdG8gPSBfX2JwZl9jb25zdGFudF9odG9ucyhFVEhfUF9JUCksXFxuIFxcdC5pcGguaWhsID0gNSxcXG5AQCAtMjkxLDYgKzI5MywxMiBAQCBpbnQgY2xpZW50X3NvY2tldChpbnQgZmFtaWx5LCBpbnQgdHlwZSxcXG4gXFx0cmV0dXJuIC0xO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGNvbm5lY3RfdGltZW91dF9tcyhjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcXG4re1xcbitcXHQvKiBFbmZvcmNlIGEgbWluaW11bSBjb25uZWN0IHRpbWVvdXQgdmFsdWUgKi9cXG4rXFx0cmV0dXJuIE1BWChvcHRzLVxcdTAwM2V0aW1lb3V0X21zLCBDT05ORUNUX01JTl9USU1FT1VUX01TKTtcXG4rfVxcbitcXG4gaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuLFxcbiBcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldHdvcmtfaGVscGVyX29wdHMgKm9wdHMpXFxuIHtcXG5AQCAtMzA1LDEzICszMTMsMzUgQEAgaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuIFxcbitcXHQvKlxcbitcXHQgKiBPdmVycmlkZSB0aW1lb3V0IGNvbmZpZ3VyYXRpb24gd2l0aCBhIGxhcmdlciB2YWx1ZSBmb3IgdGhlXFxuK1xcdCAqIGNvbm5lY3Rpb25cXG4rXFx0ICovXFxuK1xcdGlmIChzZXR0aW1lbyhmZCwgY29ubmVjdF90aW1lb3V0X21zKG9wdHMpKSkge1xcbitcXHRcXHRsb2dfZXJyKFxcXCJGYWlsZWQgdG8gc2V0IGNvbm5lY3QgdGltZW91dFxcXCIpO1xcbitcXHRcXHRnb3RvIGNsb3NlO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoY29ubmVjdChmZCwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsIGFkZHJsZW4pKSB7XFxuLVxcdFxcdGxvZ19lcnIoXFxcIkZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlclxcXCIpO1xcbi1cXHRcXHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcXG4tXFx0XFx0cmV0dXJuIC0xO1xcbitcXHRcXHRsb2dfZXJyKFxcXCJGYWlsZWQgdG8gY29ubmVjdFxcXCIpO1xcbitcXHRcXHRnb3RvIGNsb3NlO1xcbitcXHR9XFxuK1xcbitcXHQvKlxcbitcXHQgKiBJZiB0aGUgdGltZW91dCBjb25maWd1cmVkIGJ5IHRoZSB0ZXN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZVxcbitcXHQgKiBjb25uZWN0IHRpbWVvdXQsIHJlc3RvcmUgaXRcXG4rXFx0ICovXFxuK1xcdGlmIChvcHRzLVxcdTAwM2V0aW1lb3V0X21zICE9IENPTk5FQ1RfTUlOX1RJTUVPVVRfTVMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHNldHRpbWVvKGZkLCBvcHRzLVxcdTAwM2V0aW1lb3V0X21zKSkge1xcbitcXHRcXHRsb2dfZXJyKFxcXCJGYWlsZWQgdG8gc2V0IHRpbWVvdXQgZm9yIGNvbm5lY3RlZCBzb2NrZXRcXFwiKTtcXG4rXFx0XFx0Z290byBjbG9zZTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGZkO1xcbitcXG4rY2xvc2U6XFxuK1xcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xcbitcXHRyZXR1cm4gLTE7XFxuIH1cXG4gXFxuIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCxcXG5AQCAtNDI0LDcgKzQ1NCw4IEBAIGludCBtYWtlX3NvY2thZGRyKGludCBmYW1pbHksIGNvbnN0IGNoYXIgKmFkZHJfc3RyLCBfX3UxNiBwb3J0LFxcbiBcXHRcXHRcXHQqbGVuID0gc2l6ZW9mKCpzaW42KTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH0gZWxzZSBpZiAoZmFtaWx5ID09IEFGX1VOSVgpIHtcXG4tXFx0XFx0LyogTm90ZSB0aGF0IHdlIGFsd2F5cyB1c2UgYWJzdHJhY3QgdW5peCBzb2NrZXRzIHRvIGF2b2lkIGhhdmluZ1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBOb3RlIHRoYXQgd2UgYWx3YXlzIHVzZSBhYnN0cmFjdCB1bml4IHNvY2tldHMgdG8gYXZvaWQgaGF2aW5nXFxuIFxcdFxcdCAqIHRvIGNsZWFuIHVwIGxlZnRvdmVyIGZpbGVzLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0c3RydWN0IHNvY2thZGRyX3VuICpzdW4gPSAodm9pZCAqKWFkZHI7XFxuQEAgLTg2NSw3ICs4OTYsOCBAQCBzdGF0aWMgYm9vbCBpc19ldGhlcm5ldChjb25zdCB1X2NoYXIgKnBhY2tldClcXG4gXFx0bWVtY3B5KFxcdTAwMjZhcnBoZHJfdHlwZSwgcGFja2V0ICsgOCwgMik7XFxuIFxcdGFycGhkcl90eXBlID0gbnRvaHMoYXJwaGRyX3R5cGUpO1xcbiBcXG4tXFx0LyogRXhjZXB0IHRoZSBmb2xsb3dpbmcgY2FzZXMsIHRoZSBwcm90b2NvbCB0eXBlIGNvbnRhaW5zIHRoZVxcbitcXHQvKlxcbitcXHQgKiBFeGNlcHQgdGhlIGZvbGxvd2luZyBjYXNlcywgdGhlIHByb3RvY29sIHR5cGUgY29udGFpbnMgdGhlXFxuIFxcdCAqIEV0aGVybmV0IHByb3RvY29sIHR5cGUgZm9yIHRoZSBwYWNrZXQuXFxuIFxcdCAqXFxuIFxcdCAqIGh0dHBzOi8vd3d3LnRjcGR1bXAub3JnL2xpbmt0eXBlcy9MSU5LVFlQRV9MSU5VWF9TTEwyLmh0bWxcXG5AQCAtMTAzMywxOSArMTA2NSwyMiBAQCBzdGF0aWMgdm9pZCAqdHJhZmZpY19tb25pdG9yX3RocmVhZCh2b2lkICphcmcpXFxuIFxcdFxcdGlmICghcGFja2V0KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdC8qIEFjY29yZGluZyB0byB0aGUgbWFuIHBhZ2Ugb2YgcGNhcF9kdW1wKCksIGZpcnN0IGFyZ3VtZW50XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIEFjY29yZGluZyB0byB0aGUgbWFuIHBhZ2Ugb2YgcGNhcF9kdW1wKCksIGZpcnN0IGFyZ3VtZW50XFxuIFxcdFxcdCAqIGlzIHRoZSBwY2FwX2R1bXBlcl90IHBvaW50ZXIgZXZlbiBpdCdzIGFyZ3VtZW50IHR5cGUgaXNcXG4gXFx0XFx0ICogdV9jaGFyICouXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRwY2FwX2R1bXAoKHVfY2hhciAqKWR1bXBlciwgXFx1MDAyNmhlYWRlciwgcGFja2V0KTtcXG4gXFxuLVxcdFxcdC8qIE5vdCBzdXJlIHdoYXQgb3RoZXIgdHlwZXMgb2YgcGFja2V0cyBsb29rIGxpa2UuIEhlcmUsIHdlXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIE5vdCBzdXJlIHdoYXQgb3RoZXIgdHlwZXMgb2YgcGFja2V0cyBsb29rIGxpa2UuIEhlcmUsIHdlXFxuIFxcdFxcdCAqIHBhcnNlIG9ubHkgRXRoZXJuZXQgYW5kIGNvbXBhdGlibGUgcGFja2V0cy5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghaXNfZXRoZXJuZXQocGFja2V0KSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbi1cXHRcXHQvKiBTa2lwIFNMTDIgaGVhZGVyXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIFNraXAgU0xMMiBoZWFkZXJcXG4gXFx0XFx0ICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbFxcbiBcXHRcXHQgKlxcbiBcXHRcXHQgKiBBbHRob3VnaCB0aGUgZG9jdW1lbnQgZG9lc24ndCBtZW50aW9uIHRoYXQsIHRoZSBwYXlsb2FkXFxuQEAgLTEwNzksNyArMTExNCw4IEBAIHN0YXRpYyB2b2lkICp0cmFmZmljX21vbml0b3JfdGhyZWFkKHZvaWQgKmFyZylcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuLS8qIFByZXBhcmUgdGhlIHBjYXAgaGFuZGxlIHRvIGNhcHR1cmUgcGFja2V0cy5cXG4rLypcXG4rICogUHJlcGFyZSB0aGUgcGNhcCBoYW5kbGUgdG8gY2FwdHVyZSBwYWNrZXRzLlxcbiAgKlxcbiAgKiBUaGlzIHBjYXAgaXMgbm9uLWJsb2NraW5nIGFuZCBpbW1lZGlhdGUgbW9kZSBpcyBlbmFibGVkIHRvIHJlY2VpdmVcXG4gICogY2FwdHVyZWQgcGFja2V0cyBhcyBzb29uIGFzIHBvc3NpYmxlLiAgVGhlIHNuYXBsZW4gaXMgc2V0IHRvIDEwMjQgYnl0ZXNcXG5AQCAtMTE1MCw3ICsxMTg2LDggQEAgc3RhdGljIHZvaWQgZW5jb2RlX3Rlc3RfbmFtZShjaGFyICpidWYsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgY29uc3RcXG4gXFxuICNkZWZpbmUgUENBUF9ESVIgXFxcIi90bXAvdG1vbl9wY2FwXFxcIlxcbiBcXG4tLyogU3RhcnQgdG8gbW9uaXRvciB0aGUgbmV0d29yayB0cmFmZmljIGluIHRoZSBnaXZlbiBuZXR3b3JrIG5hbWVzcGFjZS5cXG4rLypcXG4rICogU3RhcnQgdG8gbW9uaXRvciB0aGUgbmV0d29yayB0cmFmZmljIGluIHRoZSBnaXZlbiBuZXR3b3JrIG5hbWVzcGFjZS5cXG4gICpcXG4gICogbmV0bnM6IHRoZSBuYW1lIG9mIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0byBtb25pdG9yLiBJZiBOVUxMLCB0aGVcXG4gICogICAgICAgIGN1cnJlbnQgbmV0d29yayBuYW1lc3BhY2UgaXMgbW9uaXRvcmVkLlxcbkBAIC0xMjU1LDcgKzEyOTIsOCBAQCBzdGF0aWMgdm9pZCB0cmFmZmljX21vbml0b3JfcmVsZWFzZShzdHJ1Y3QgdG1vbml0b3JfY3R4ICpjdHgpXFxuIFxcdGZyZWUoY3R4KTtcXG4gfVxcbiBcXG4tLyogU3RvcCB0aGUgbmV0d29yayB0cmFmZmljIG1vbml0b3IuXFxuKy8qXFxuKyAqIFN0b3AgdGhlIG5ldHdvcmsgdHJhZmZpYyBtb25pdG9yLlxcbiAgKlxcbiAgKiBjdHg6IHRoZSBjb250ZXh0IHJldHVybmVkIGJ5IHRyYWZmaWNfbW9uaXRvcl9zdGFydCgpXFxuICAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNzozODowNS42NDE1OTQ0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU5NTQwMzI4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGU5ZGI5OGRlMzU4MDU4YTJkMGYwYWMwNWEzYTA1M2RhMTU2Y2U4NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwNzozODowNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY1xuaW5kZXggZGI5MzVhOWQ5ZmMxYS4uOGM5MjM2YzBhNWE1ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXG5AQCAtNDksNiArNDksOCBAQFxuIFx0XHRcdGVycm5vID0gX19zYXZlO1x0XHRcdFx0XHRcXFxuIH0pXG4gXG4rI2RlZmluZSBDT05ORUNUX01JTl9USU1FT1VUX01TXHQ1MDAwXG4rXG4gc3RydWN0IGlwdjRfcGFja2V0IHBrdF92NCA9IHtcbiBcdC5ldGguaF9wcm90byA9IF9fYnBmX2NvbnN0YW50X2h0b25zKEVUSF9QX0lQKSxcbiBcdC5pcGguaWhsID0gNSxcbkBAIC0yOTEsNiArMjkzLDEyIEBAIGludCBjbGllbnRfc29ja2V0KGludCBmYW1pbHksIGludCB0eXBlLFxuIFx0cmV0dXJuIC0xO1xuIH1cbiBcbitzdGF0aWMgaW50IGNvbm5lY3RfdGltZW91dF9tcyhjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcbit7XG4rXHQvKiBFbmZvcmNlIGEgbWluaW11bSBjb25uZWN0IHRpbWVvdXQgdmFsdWUgKi9cbitcdHJldHVybiBNQVgob3B0cy1cdTAwM2V0aW1lb3V0X21zLCBDT05ORUNUX01JTl9USU1FT1VUX01TKTtcbit9XG4rXG4gaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuLFxuIFx0XHQgICAgY29uc3Qgc3RydWN0IG5ldHdvcmtfaGVscGVyX29wdHMgKm9wdHMpXG4ge1xuQEAgLTMwNSwxMyArMzEzLDM1IEBAIGludCBjb25uZWN0X3RvX2FkZHIoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyLCBzb2NrbGVuX3QgYWRkXG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbitcdC8qXG4rXHQgKiBPdmVycmlkZSB0aW1lb3V0IGNvbmZpZ3VyYXRpb24gd2l0aCBhIGxhcmdlciB2YWx1ZSBmb3IgdGhlXG4rXHQgKiBjb25uZWN0aW9uXG4rXHQgKi9cbitcdGlmIChzZXR0aW1lbyhmZCwgY29ubmVjdF90aW1lb3V0X21zKG9wdHMpKSkge1xuK1x0XHRsb2dfZXJyKFwiRmFpbGVkIHRvIHNldCBjb25uZWN0IHRpbWVvdXRcIik7XG4rXHRcdGdvdG8gY2xvc2U7XG4rXHR9XG4rXG4gXHRpZiAoY29ubmVjdChmZCwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsIGFkZHJsZW4pKSB7XG4tXHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcIik7XG4tXHRcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xuLVx0XHRyZXR1cm4gLTE7XG4rXHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gY29ubmVjdFwiKTtcbitcdFx0Z290byBjbG9zZTtcbitcdH1cbitcbitcdC8qXG4rXHQgKiBJZiB0aGUgdGltZW91dCBjb25maWd1cmVkIGJ5IHRoZSB0ZXN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZVxuK1x0ICogY29ubmVjdCB0aW1lb3V0LCByZXN0b3JlIGl0XG4rXHQgKi9cbitcdGlmIChvcHRzLVx1MDAzZXRpbWVvdXRfbXMgIT0gQ09OTkVDVF9NSU5fVElNRU9VVF9NUyBcdTAwMjZcdTAwMjZcbitcdCAgICBzZXR0aW1lbyhmZCwgb3B0cy1cdTAwM2V0aW1lb3V0X21zKSkge1xuK1x0XHRsb2dfZXJyKFwiRmFpbGVkIHRvIHNldCB0aW1lb3V0IGZvciBjb25uZWN0ZWQgc29ja2V0XCIpO1xuK1x0XHRnb3RvIGNsb3NlO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGZkO1xuK1xuK2Nsb3NlOlxuK1x0c2F2ZV9lcnJub19jbG9zZShmZCk7XG4rXHRyZXR1cm4gLTE7XG4gfVxuIFxuIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCxcbkBAIC00MjQsNyArNDU0LDggQEAgaW50IG1ha2Vfc29ja2FkZHIoaW50IGZhbWlseSwgY29uc3QgY2hhciAqYWRkcl9zdHIsIF9fdTE2IHBvcnQsXG4gXHRcdFx0KmxlbiA9IHNpemVvZigqc2luNik7XG4gXHRcdHJldHVybiAwO1xuIFx0fSBlbHNlIGlmIChmYW1pbHkgPT0gQUZfVU5JWCkge1xuLVx0XHQvKiBOb3RlIHRoYXQgd2UgYWx3YXlzIHVzZSBhYnN0cmFjdCB1bml4IHNvY2tldHMgdG8gYXZvaWQgaGF2aW5nXG4rXHRcdC8qXG4rXHRcdCAqIE5vdGUgdGhhdCB3ZSBhbHdheXMgdXNlIGFic3RyYWN0IHVuaXggc29ja2V0cyB0byBhdm9pZCBoYXZpbmdcbiBcdFx0ICogdG8gY2xlYW4gdXAgbGVmdG92ZXIgZmlsZXMuXG4gXHRcdCAqL1xuIFx0XHRzdHJ1Y3Qgc29ja2FkZHJfdW4gKnN1biA9ICh2b2lkICopYWRkcjtcbkBAIC04NjUsNyArODk2LDggQEAgc3RhdGljIGJvb2wgaXNfZXRoZXJuZXQoY29uc3QgdV9jaGFyICpwYWNrZXQpXG4gXHRtZW1jcHkoXHUwMDI2YXJwaGRyX3R5cGUsIHBhY2tldCArIDgsIDIpO1xuIFx0YXJwaGRyX3R5cGUgPSBudG9ocyhhcnBoZHJfdHlwZSk7XG4gXG4tXHQvKiBFeGNlcHQgdGhlIGZvbGxvd2luZyBjYXNlcywgdGhlIHByb3RvY29sIHR5cGUgY29udGFpbnMgdGhlXG4rXHQvKlxuK1x0ICogRXhjZXB0IHRoZSBmb2xsb3dpbmcgY2FzZXMsIHRoZSBwcm90b2NvbCB0eXBlIGNvbnRhaW5zIHRoZVxuIFx0ICogRXRoZXJuZXQgcHJvdG9jb2wgdHlwZSBmb3IgdGhlIHBhY2tldC5cbiBcdCAqXG4gXHQgKiBodHRwczovL3d3dy50Y3BkdW1wLm9yZy9saW5rdHlwZXMvTElOS1RZUEVfTElOVVhfU0xMMi5odG1sXG5AQCAtMTAzMywxOSArMTA2NSwyMiBAQCBzdGF0aWMgdm9pZCAqdHJhZmZpY19tb25pdG9yX3RocmVhZCh2b2lkICphcmcpXG4gXHRcdGlmICghcGFja2V0KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHQvKiBBY2NvcmRpbmcgdG8gdGhlIG1hbiBwYWdlIG9mIHBjYXBfZHVtcCgpLCBmaXJzdCBhcmd1bWVudFxuK1x0XHQvKlxuK1x0XHQgKiBBY2NvcmRpbmcgdG8gdGhlIG1hbiBwYWdlIG9mIHBjYXBfZHVtcCgpLCBmaXJzdCBhcmd1bWVudFxuIFx0XHQgKiBpcyB0aGUgcGNhcF9kdW1wZXJfdCBwb2ludGVyIGV2ZW4gaXQncyBhcmd1bWVudCB0eXBlIGlzXG4gXHRcdCAqIHVfY2hhciAqLlxuIFx0XHQgKi9cbiBcdFx0cGNhcF9kdW1wKCh1X2NoYXIgKilkdW1wZXIsIFx1MDAyNmhlYWRlciwgcGFja2V0KTtcbiBcbi1cdFx0LyogTm90IHN1cmUgd2hhdCBvdGhlciB0eXBlcyBvZiBwYWNrZXRzIGxvb2sgbGlrZS4gSGVyZSwgd2VcbitcdFx0LypcbitcdFx0ICogTm90IHN1cmUgd2hhdCBvdGhlciB0eXBlcyBvZiBwYWNrZXRzIGxvb2sgbGlrZS4gSGVyZSwgd2VcbiBcdFx0ICogcGFyc2Ugb25seSBFdGhlcm5ldCBhbmQgY29tcGF0aWJsZSBwYWNrZXRzLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFpc19ldGhlcm5ldChwYWNrZXQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHQvKiBTa2lwIFNMTDIgaGVhZGVyXG4rXHRcdC8qXG4rXHRcdCAqIFNraXAgU0xMMiBoZWFkZXJcbiBcdFx0ICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbFxuIFx0XHQgKlxuIFx0XHQgKiBBbHRob3VnaCB0aGUgZG9jdW1lbnQgZG9lc24ndCBtZW50aW9uIHRoYXQsIHRoZSBwYXlsb2FkXG5AQCAtMTA3OSw3ICsxMTE0LDggQEAgc3RhdGljIHZvaWQgKnRyYWZmaWNfbW9uaXRvcl90aHJlYWQodm9pZCAqYXJnKVxuIFx0cmV0dXJuIE5VTEw7XG4gfVxuIFxuLS8qIFByZXBhcmUgdGhlIHBjYXAgaGFuZGxlIHRvIGNhcHR1cmUgcGFja2V0cy5cbisvKlxuKyAqIFByZXBhcmUgdGhlIHBjYXAgaGFuZGxlIHRvIGNhcHR1cmUgcGFja2V0cy5cbiAgKlxuICAqIFRoaXMgcGNhcCBpcyBub24tYmxvY2tpbmcgYW5kIGltbWVkaWF0ZSBtb2RlIGlzIGVuYWJsZWQgdG8gcmVjZWl2ZVxuICAqIGNhcHR1cmVkIHBhY2tldHMgYXMgc29vbiBhcyBwb3NzaWJsZS4gIFRoZSBzbmFwbGVuIGlzIHNldCB0byAxMDI0IGJ5dGVzXG5AQCAtMTE1MCw3ICsxMTg2LDggQEAgc3RhdGljIHZvaWQgZW5jb2RlX3Rlc3RfbmFtZShjaGFyICpidWYsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgY29uc3RcbiBcbiAjZGVmaW5lIFBDQVBfRElSIFwiL3RtcC90bW9uX3BjYXBcIlxuIFxuLS8qIFN0YXJ0IHRvIG1vbml0b3IgdGhlIG5ldHdvcmsgdHJhZmZpYyBpbiB0aGUgZ2l2ZW4gbmV0d29yayBuYW1lc3BhY2UuXG4rLypcbisgKiBTdGFydCB0byBtb25pdG9yIHRoZSBuZXR3b3JrIHRyYWZmaWMgaW4gdGhlIGdpdmVuIG5ldHdvcmsgbmFtZXNwYWNlLlxuICAqXG4gICogbmV0bnM6IHRoZSBuYW1lIG9mIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0byBtb25pdG9yLiBJZiBOVUxMLCB0aGVcbiAgKiAgICAgICAgY3VycmVudCBuZXR3b3JrIG5hbWVzcGFjZSBpcyBtb25pdG9yZWQuXG5AQCAtMTI1NSw3ICsxMjkyLDggQEAgc3RhdGljIHZvaWQgdHJhZmZpY19tb25pdG9yX3JlbGVhc2Uoc3RydWN0IHRtb25pdG9yX2N0eCAqY3R4KVxuIFx0ZnJlZShjdHgpO1xuIH1cbiBcbi0vKiBTdG9wIHRoZSBuZXR3b3JrIHRyYWZmaWMgbW9uaXRvci5cbisvKlxuKyAqIFN0b3AgdGhlIG5ldHdvcmsgdHJhZmZpYyBtb25pdG9yLlxuICAqXG4gICogY3R4OiB0aGUgY29udGV4dCByZXR1cm5lZCBieSB0cmFmZmljX21vbml0b3Jfc3RhcnQoKVxuICAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDc6Mzg6MDUuNjQxNTk2NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTU0MDA5MTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0IG9uIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY2AuIEl0J3MgaW50cm9kdWNpbmcgYSBgQ09OTkVDVF9NSU5fVElNRU9VVF9NU2AgbWFjcm8gYW5kIGluY29ycG9yYXRpbmcgaXQgd2l0aGluIHRoZSBgY29ubmVjdF90b19hZGRyYCBmdW5jdGlvbiwgZXNzZW50aWFsbHkgc2V0dGluZyBhIG1pbmltdW0gdGltZW91dC4gSXQgYWxzbyBzZWVtcyB0byBpbnZvbHZlIHNvbWUgbWlub3IgY29tbWVudCBmb3JtYXR0aW5nIHR3ZWFrcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBzaW5jZSB0aGlzIGlzICpzb2xlbHkqIGEgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgc2VsZnRlc3RzIGRpcmVjdG9yeSwgYW5kIGRvZXNuJ3QgdG91Y2ggdGhlIGNvcmUga2VybmVsIGNvZGUgaXRzZWxmLCB0aGlzIHNob3VsZCBoYXZlIG5vIGJlYXJpbmcgb24gYFdvcnRoRnV6emluZ2AuIFRoZSBrZXJuZWwncyBiZWhhdmlvciBpc24ndCBiZWluZyBhbHRlcmVkLCBqdXN0IHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLlxuXG5CdXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQncyByZXZpc2l0IHRoZSBydWxlcy4gV2UgbmVlZCB0byBiZSBtZXRpY3Vsb3VzLiBMZXQgbWUgdGhpbmsuLi4gXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8uLi4gY29kZSBjb21tZW50cywgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93Li4uXCIgQWgsIGFuZCB0aGVuIHRoZSBsYXN0IGZldyBydWxlcyBhcmUgdW5yZWxhdGVkIHRvIHdoYXQgd2UncmUgbG9va2luZyBhdC5cblxuVGhpcyBpcyBhIGNsYXNzaWMuIFRoaXMgcGF0Y2ggKmRvZXMqIG1vZGlmeSBhIG1hY3JvLCBidXQgdGhpcyBzZWVtcyB2ZXJ5IG11Y2ggbGlrZSBhIG51bWVyaWMgY29uc3RhbnQgdGhhdCdzIGJlaW5nIGludHJvZHVjZWQgYW5kIGRvZXNuJ3QgY2hhbmdlIGV4ZWN1dGlvbiBvZiB0aGUga2VybmVsLCBqdXN0IHRoZSBiZWhhdmlvciBvZiBzb21lIHRlc3RzLiBJdCdzIGEgdGVzdCBpbmZyYXN0cnVjdHVyZSBlbmhhbmNlbWVudCwgbm90IGEga2VybmVsIGNoYW5nZS4gSXQncyBjb25maW5lZCB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYC4gVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBjb25jbHVzaW9uIGlzIGRlZmluaXRlbHkgYFdvcnRoRnV6emluZyA9IGZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM1MiwiT3V0cHV0VG9rZW5zIjo2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA3OjM4OjExLjU5NTYwNzgyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDc6Mzg6MTEuNTk1NjI5MjE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow6rlfs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 07:21:43 +0000 UTC FinishedAt: 2026-08-14 07:38:12 +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+CgkJCTx0ZD4yMDI2LzA4LzE0IDA3OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNzozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGU5ZGI5OGRlMzU4MDU4YTJkMGYwYWMwNWEzYTA1M2RhMTU2Y2U4NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwNzozODowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbmluZGV4IGRiOTM1YTlkOWZjMWEuLjhjOTIzNmMwYTVhNWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY1xuQEAgLTQ5LDYgJiM0Mzs0OSw4IEBAXG4gXHRcdFx0ZXJybm8gPSBfX3NhdmU7XHRcdFx0XHRcdFxcXG4gfSlcbiBcbiYjNDM7I2RlZmluZSBDT05ORUNUX01JTl9USU1FT1VUX01TXHQ1MDAwXG4mIzQzO1xuIHN0cnVjdCBpcHY0X3BhY2tldCBwa3RfdjQgPSB7XG4gXHQuZXRoLmhfcHJvdG8gPSBfX2JwZl9jb25zdGFudF9odG9ucyhFVEhfUF9JUCksXG4gXHQuaXBoLmlobCA9IDUsXG5AQCAtMjkxLDYgJiM0MzsyOTMsMTIgQEAgaW50IGNsaWVudF9zb2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUsXG4gXHRyZXR1cm4gLTE7XG4gfVxuIFxuJiM0MztzdGF0aWMgaW50IGNvbm5lY3RfdGltZW91dF9tcyhjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcbiYjNDM7e1xuJiM0MztcdC8qIEVuZm9yY2UgYSBtaW5pbXVtIGNvbm5lY3QgdGltZW91dCB2YWx1ZSAqL1xuJiM0MztcdHJldHVybiBNQVgob3B0cy1cdTAwM2V0aW1lb3V0X21zLCBDT05ORUNUX01JTl9USU1FT1VUX01TKTtcbiYjNDM7fVxuJiM0MztcbiBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4sXG4gXHRcdCAgICBjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcbiB7XG5AQCAtMzA1LDEzICYjNDM7MzEzLDM1IEBAIGludCBjb25uZWN0X3RvX2FkZHIoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyLCBzb2NrbGVuX3QgYWRkXG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIE92ZXJyaWRlIHRpbWVvdXQgY29uZmlndXJhdGlvbiB3aXRoIGEgbGFyZ2VyIHZhbHVlIGZvciB0aGVcbiYjNDM7XHQgKiBjb25uZWN0aW9uXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKHNldHRpbWVvKGZkLCBjb25uZWN0X3RpbWVvdXRfbXMob3B0cykpKSB7XG4mIzQzO1x0XHRsb2dfZXJyKFwmIzM0O0ZhaWxlZCB0byBzZXQgY29ubmVjdCB0aW1lb3V0XCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gY2xvc2U7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChjb25uZWN0KGZkLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopYWRkciwgYWRkcmxlbikpIHtcbi1cdFx0bG9nX2VycihcJiMzNDtGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcJiMzNDspO1xuLVx0XHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcbi1cdFx0cmV0dXJuIC0xO1xuJiM0MztcdFx0bG9nX2VycihcJiMzNDtGYWlsZWQgdG8gY29ubmVjdFwmIzM0Oyk7XG4mIzQzO1x0XHRnb3RvIGNsb3NlO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0LypcbiYjNDM7XHQgKiBJZiB0aGUgdGltZW91dCBjb25maWd1cmVkIGJ5IHRoZSB0ZXN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZVxuJiM0MztcdCAqIGNvbm5lY3QgdGltZW91dCwgcmVzdG9yZSBpdFxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChvcHRzLVx1MDAzZXRpbWVvdXRfbXMgIT0gQ09OTkVDVF9NSU5fVElNRU9VVF9NUyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgc2V0dGltZW8oZmQsIG9wdHMtXHUwMDNldGltZW91dF9tcykpIHtcbiYjNDM7XHRcdGxvZ19lcnIoXCYjMzQ7RmFpbGVkIHRvIHNldCB0aW1lb3V0IGZvciBjb25uZWN0ZWQgc29ja2V0XCYjMzQ7KTtcbiYjNDM7XHRcdGdvdG8gY2xvc2U7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZmQ7XG4mIzQzO1xuJiM0MztjbG9zZTpcbiYjNDM7XHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcbiYjNDM7XHRyZXR1cm4gLTE7XG4gfVxuIFxuIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCxcbkBAIC00MjQsNyAmIzQzOzQ1NCw4IEBAIGludCBtYWtlX3NvY2thZGRyKGludCBmYW1pbHksIGNvbnN0IGNoYXIgKmFkZHJfc3RyLCBfX3UxNiBwb3J0LFxuIFx0XHRcdCpsZW4gPSBzaXplb2YoKnNpbjYpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH0gZWxzZSBpZiAoZmFtaWx5ID09IEFGX1VOSVgpIHtcbi1cdFx0LyogTm90ZSB0aGF0IHdlIGFsd2F5cyB1c2UgYWJzdHJhY3QgdW5peCBzb2NrZXRzIHRvIGF2b2lkIGhhdmluZ1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE5vdGUgdGhhdCB3ZSBhbHdheXMgdXNlIGFic3RyYWN0IHVuaXggc29ja2V0cyB0byBhdm9pZCBoYXZpbmdcbiBcdFx0ICogdG8gY2xlYW4gdXAgbGVmdG92ZXIgZmlsZXMuXG4gXHRcdCAqL1xuIFx0XHRzdHJ1Y3Qgc29ja2FkZHJfdW4gKnN1biA9ICh2b2lkICopYWRkcjtcbkBAIC04NjUsNyAmIzQzOzg5Niw4IEBAIHN0YXRpYyBib29sIGlzX2V0aGVybmV0KGNvbnN0IHVfY2hhciAqcGFja2V0KVxuIFx0bWVtY3B5KFx1MDAyNmFycGhkcl90eXBlLCBwYWNrZXQgJiM0MzsgOCwgMik7XG4gXHRhcnBoZHJfdHlwZSA9IG50b2hzKGFycGhkcl90eXBlKTtcbiBcbi1cdC8qIEV4Y2VwdCB0aGUgZm9sbG93aW5nIGNhc2VzLCB0aGUgcHJvdG9jb2wgdHlwZSBjb250YWlucyB0aGVcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEV4Y2VwdCB0aGUgZm9sbG93aW5nIGNhc2VzLCB0aGUgcHJvdG9jb2wgdHlwZSBjb250YWlucyB0aGVcbiBcdCAqIEV0aGVybmV0IHByb3RvY29sIHR5cGUgZm9yIHRoZSBwYWNrZXQuXG4gXHQgKlxuIFx0ICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbFxuQEAgLTEwMzMsMTkgJiM0MzsxMDY1LDIyIEBAIHN0YXRpYyB2b2lkICp0cmFmZmljX21vbml0b3JfdGhyZWFkKHZvaWQgKmFyZylcbiBcdFx0aWYgKCFwYWNrZXQpXG4gXHRcdFx0Y29udGludWU7XG4gXG4tXHRcdC8qIEFjY29yZGluZyB0byB0aGUgbWFuIHBhZ2Ugb2YgcGNhcF9kdW1wKCksIGZpcnN0IGFyZ3VtZW50XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogQWNjb3JkaW5nIHRvIHRoZSBtYW4gcGFnZSBvZiBwY2FwX2R1bXAoKSwgZmlyc3QgYXJndW1lbnRcbiBcdFx0ICogaXMgdGhlIHBjYXBfZHVtcGVyX3QgcG9pbnRlciBldmVuIGl0JiMzOTtzIGFyZ3VtZW50IHR5cGUgaXNcbiBcdFx0ICogdV9jaGFyICouXG4gXHRcdCAqL1xuIFx0XHRwY2FwX2R1bXAoKHVfY2hhciAqKWR1bXBlciwgXHUwMDI2aGVhZGVyLCBwYWNrZXQpO1xuIFxuLVx0XHQvKiBOb3Qgc3VyZSB3aGF0IG90aGVyIHR5cGVzIG9mIHBhY2tldHMgbG9vayBsaWtlLiBIZXJlLCB3ZVxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE5vdCBzdXJlIHdoYXQgb3RoZXIgdHlwZXMgb2YgcGFja2V0cyBsb29rIGxpa2UuIEhlcmUsIHdlXG4gXHRcdCAqIHBhcnNlIG9ubHkgRXRoZXJuZXQgYW5kIGNvbXBhdGlibGUgcGFja2V0cy5cbiBcdFx0ICovXG4gXHRcdGlmICghaXNfZXRoZXJuZXQocGFja2V0KSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbi1cdFx0LyogU2tpcCBTTEwyIGhlYWRlclxuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIFNraXAgU0xMMiBoZWFkZXJcbiBcdFx0ICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbFxuIFx0XHQgKlxuIFx0XHQgKiBBbHRob3VnaCB0aGUgZG9jdW1lbnQgZG9lc24mIzM5O3QgbWVudGlvbiB0aGF0LCB0aGUgcGF5bG9hZFxuQEAgLTEwNzksNyAmIzQzOzExMTQsOCBAQCBzdGF0aWMgdm9pZCAqdHJhZmZpY19tb25pdG9yX3RocmVhZCh2b2lkICphcmcpXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4tLyogUHJlcGFyZSB0aGUgcGNhcCBoYW5kbGUgdG8gY2FwdHVyZSBwYWNrZXRzLlxuJiM0MzsvKlxuJiM0MzsgKiBQcmVwYXJlIHRoZSBwY2FwIGhhbmRsZSB0byBjYXB0dXJlIHBhY2tldHMuXG4gICpcbiAgKiBUaGlzIHBjYXAgaXMgbm9uLWJsb2NraW5nIGFuZCBpbW1lZGlhdGUgbW9kZSBpcyBlbmFibGVkIHRvIHJlY2VpdmVcbiAgKiBjYXB0dXJlZCBwYWNrZXRzIGFzIHNvb24gYXMgcG9zc2libGUuICBUaGUgc25hcGxlbiBpcyBzZXQgdG8gMTAyNCBieXRlc1xuQEAgLTExNTAsNyAmIzQzOzExODYsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfdGVzdF9uYW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqdGVzdF9uYW1lLCBjb25zdFxuIFxuICNkZWZpbmUgUENBUF9ESVIgXCYjMzQ7L3RtcC90bW9uX3BjYXBcJiMzNDtcbiBcbi0vKiBTdGFydCB0byBtb25pdG9yIHRoZSBuZXR3b3JrIHRyYWZmaWMgaW4gdGhlIGdpdmVuIG5ldHdvcmsgbmFtZXNwYWNlLlxuJiM0MzsvKlxuJiM0MzsgKiBTdGFydCB0byBtb25pdG9yIHRoZSBuZXR3b3JrIHRyYWZmaWMgaW4gdGhlIGdpdmVuIG5ldHdvcmsgbmFtZXNwYWNlLlxuICAqXG4gICogbmV0bnM6IHRoZSBuYW1lIG9mIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0byBtb25pdG9yLiBJZiBOVUxMLCB0aGVcbiAgKiAgICAgICAgY3VycmVudCBuZXR3b3JrIG5hbWVzcGFjZSBpcyBtb25pdG9yZWQuXG5AQCAtMTI1NSw3ICYjNDM7MTI5Miw4IEBAIHN0YXRpYyB2b2lkIHRyYWZmaWNfbW9uaXRvcl9yZWxlYXNlKHN0cnVjdCB0bW9uaXRvcl9jdHggKmN0eClcbiBcdGZyZWUoY3R4KTtcbiB9XG4gXG4tLyogU3RvcCB0aGUgbmV0d29yayB0cmFmZmljIG1vbml0b3IuXG4mIzQzOy8qXG4mIzQzOyAqIFN0b3AgdGhlIG5ldHdvcmsgdHJhZmZpYyBtb25pdG9yLlxuICAqXG4gICogY3R4OiB0aGUgY29udGV4dCByZXR1cm5lZCBieSB0cmFmZmljX21vbml0b3Jfc3RhcnQoKVxuICAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA3OjM4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSB0ZXN0aW5nIGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTlkYjk4ZGUzNTgwNThhMmQwZjBhYzA1YTNhMDUzZGExNTZjZTg0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDA3OjM4OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jCmluZGV4IGRiOTM1YTlkOWZjMWEuLjhjOTIzNmMwYTVhNWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMKQEAgLTQ5LDYgJiM0Mzs0OSw4IEBACiAJCQllcnJubyA9IF9fc2F2ZTsJCQkJCVwKIH0pCiAKJiM0MzsjZGVmaW5lIENPTk5FQ1RfTUlOX1RJTUVPVVRfTVMJNTAwMAomIzQzOwogc3RydWN0IGlwdjRfcGFja2V0IHBrdF92NCA9IHsKIAkuZXRoLmhfcHJvdG8gPSBfX2JwZl9jb25zdGFudF9odG9ucyhFVEhfUF9JUCksCiAJLmlwaC5paGwgPSA1LApAQCAtMjkxLDYgJiM0MzsyOTMsMTIgQEAgaW50IGNsaWVudF9zb2NrZXQoaW50IGZhbWlseSwgaW50IHR5cGUsCiAJcmV0dXJuIC0xOwogfQogCiYjNDM7c3RhdGljIGludCBjb25uZWN0X3RpbWVvdXRfbXMoY29uc3Qgc3RydWN0IG5ldHdvcmtfaGVscGVyX29wdHMgKm9wdHMpCiYjNDM7ewomIzQzOwkvKiBFbmZvcmNlIGEgbWluaW11bSBjb25uZWN0IHRpbWVvdXQgdmFsdWUgKi8KJiM0MzsJcmV0dXJuIE1BWChvcHRzLSZndDt0aW1lb3V0X21zLCBDT05ORUNUX01JTl9USU1FT1VUX01TKTsKJiM0Mzt9CiYjNDM7CiBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZHJsZW4sCiAJCSAgICBjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cykKIHsKQEAgLTMwNSwxMyAmIzQzOzMxMywzNSBAQCBpbnQgY29ubmVjdF90b19hZGRyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqYWRkciwgc29ja2xlbl90IGFkZAogCQlyZXR1cm4gLTE7CiAJfQogCiYjNDM7CS8qCiYjNDM7CSAqIE92ZXJyaWRlIHRpbWVvdXQgY29uZmlndXJhdGlvbiB3aXRoIGEgbGFyZ2VyIHZhbHVlIGZvciB0aGUKJiM0MzsJICogY29ubmVjdGlvbgomIzQzOwkgKi8KJiM0MzsJaWYgKHNldHRpbWVvKGZkLCBjb25uZWN0X3RpbWVvdXRfbXMob3B0cykpKSB7CiYjNDM7CQlsb2dfZXJyKCYjMzQ7RmFpbGVkIHRvIHNldCBjb25uZWN0IHRpbWVvdXQmIzM0Oyk7CiYjNDM7CQlnb3RvIGNsb3NlOwomIzQzOwl9CiYjNDM7CiAJaWYgKGNvbm5lY3QoZmQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLCBhZGRybGVuKSkgewotCQlsb2dfZXJyKCYjMzQ7RmFpbGVkIHRvIGNvbm5lY3QgdG8gc2VydmVyJiMzNDspOwotCQlzYXZlX2Vycm5vX2Nsb3NlKGZkKTsKLQkJcmV0dXJuIC0xOwomIzQzOwkJbG9nX2VycigmIzM0O0ZhaWxlZCB0byBjb25uZWN0JiMzNDspOwomIzQzOwkJZ290byBjbG9zZTsKJiM0MzsJfQomIzQzOwomIzQzOwkvKgomIzQzOwkgKiBJZiB0aGUgdGltZW91dCBjb25maWd1cmVkIGJ5IHRoZSB0ZXN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZQomIzQzOwkgKiBjb25uZWN0IHRpbWVvdXQsIHJlc3RvcmUgaXQKJiM0MzsJICovCiYjNDM7CWlmIChvcHRzLSZndDt0aW1lb3V0X21zICE9IENPTk5FQ1RfTUlOX1RJTUVPVVRfTVMgJmFtcDsmYW1wOwomIzQzOwkgICAgc2V0dGltZW8oZmQsIG9wdHMtJmd0O3RpbWVvdXRfbXMpKSB7CiYjNDM7CQlsb2dfZXJyKCYjMzQ7RmFpbGVkIHRvIHNldCB0aW1lb3V0IGZvciBjb25uZWN0ZWQgc29ja2V0JiMzNDspOwomIzQzOwkJZ290byBjbG9zZTsKIAl9CiAKIAlyZXR1cm4gZmQ7CiYjNDM7CiYjNDM7Y2xvc2U6CiYjNDM7CXNhdmVfZXJybm9fY2xvc2UoZmQpOwomIzQzOwlyZXR1cm4gLTE7CiB9CiAKIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCwKQEAgLTQyNCw3ICYjNDM7NDU0LDggQEAgaW50IG1ha2Vfc29ja2FkZHIoaW50IGZhbWlseSwgY29uc3QgY2hhciAqYWRkcl9zdHIsIF9fdTE2IHBvcnQsCiAJCQkqbGVuID0gc2l6ZW9mKCpzaW42KTsKIAkJcmV0dXJuIDA7CiAJfSBlbHNlIGlmIChmYW1pbHkgPT0gQUZfVU5JWCkgewotCQkvKiBOb3RlIHRoYXQgd2UgYWx3YXlzIHVzZSBhYnN0cmFjdCB1bml4IHNvY2tldHMgdG8gYXZvaWQgaGF2aW5nCiYjNDM7CQkvKgomIzQzOwkJICogTm90ZSB0aGF0IHdlIGFsd2F5cyB1c2UgYWJzdHJhY3QgdW5peCBzb2NrZXRzIHRvIGF2b2lkIGhhdmluZwogCQkgKiB0byBjbGVhbiB1cCBsZWZ0b3ZlciBmaWxlcy4KIAkJICovCiAJCXN0cnVjdCBzb2NrYWRkcl91biAqc3VuID0gKHZvaWQgKilhZGRyOwpAQCAtODY1LDcgJiM0Mzs4OTYsOCBAQCBzdGF0aWMgYm9vbCBpc19ldGhlcm5ldChjb25zdCB1X2NoYXIgKnBhY2tldCkKIAltZW1jcHkoJmFtcDthcnBoZHJfdHlwZSwgcGFja2V0ICYjNDM7IDgsIDIpOwogCWFycGhkcl90eXBlID0gbnRvaHMoYXJwaGRyX3R5cGUpOwogCi0JLyogRXhjZXB0IHRoZSBmb2xsb3dpbmcgY2FzZXMsIHRoZSBwcm90b2NvbCB0eXBlIGNvbnRhaW5zIHRoZQomIzQzOwkvKgomIzQzOwkgKiBFeGNlcHQgdGhlIGZvbGxvd2luZyBjYXNlcywgdGhlIHByb3RvY29sIHR5cGUgY29udGFpbnMgdGhlCiAJICogRXRoZXJuZXQgcHJvdG9jb2wgdHlwZSBmb3IgdGhlIHBhY2tldC4KIAkgKgogCSAqIGh0dHBzOi8vd3d3LnRjcGR1bXAub3JnL2xpbmt0eXBlcy9MSU5LVFlQRV9MSU5VWF9TTEwyLmh0bWwKQEAgLTEwMzMsMTkgJiM0MzsxMDY1LDIyIEBAIHN0YXRpYyB2b2lkICp0cmFmZmljX21vbml0b3JfdGhyZWFkKHZvaWQgKmFyZykKIAkJaWYgKCFwYWNrZXQpCiAJCQljb250aW51ZTsKIAotCQkvKiBBY2NvcmRpbmcgdG8gdGhlIG1hbiBwYWdlIG9mIHBjYXBfZHVtcCgpLCBmaXJzdCBhcmd1bWVudAomIzQzOwkJLyoKJiM0MzsJCSAqIEFjY29yZGluZyB0byB0aGUgbWFuIHBhZ2Ugb2YgcGNhcF9kdW1wKCksIGZpcnN0IGFyZ3VtZW50CiAJCSAqIGlzIHRoZSBwY2FwX2R1bXBlcl90IHBvaW50ZXIgZXZlbiBpdCYjMzk7cyBhcmd1bWVudCB0eXBlIGlzCiAJCSAqIHVfY2hhciAqLgogCQkgKi8KIAkJcGNhcF9kdW1wKCh1X2NoYXIgKilkdW1wZXIsICZhbXA7aGVhZGVyLCBwYWNrZXQpOwogCi0JCS8qIE5vdCBzdXJlIHdoYXQgb3RoZXIgdHlwZXMgb2YgcGFja2V0cyBsb29rIGxpa2UuIEhlcmUsIHdlCiYjNDM7CQkvKgomIzQzOwkJICogTm90IHN1cmUgd2hhdCBvdGhlciB0eXBlcyBvZiBwYWNrZXRzIGxvb2sgbGlrZS4gSGVyZSwgd2UKIAkJICogcGFyc2Ugb25seSBFdGhlcm5ldCBhbmQgY29tcGF0aWJsZSBwYWNrZXRzLgogCQkgKi8KIAkJaWYgKCFpc19ldGhlcm5ldChwYWNrZXQpKQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBTTEwyIGhlYWRlcgomIzQzOwkJLyoKJiM0MzsJCSAqIFNraXAgU0xMMiBoZWFkZXIKIAkJICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbAogCQkgKgogCQkgKiBBbHRob3VnaCB0aGUgZG9jdW1lbnQgZG9lc24mIzM5O3QgbWVudGlvbiB0aGF0LCB0aGUgcGF5bG9hZApAQCAtMTA3OSw3ICYjNDM7MTExNCw4IEBAIHN0YXRpYyB2b2lkICp0cmFmZmljX21vbml0b3JfdGhyZWFkKHZvaWQgKmFyZykKIAlyZXR1cm4gTlVMTDsKIH0KIAotLyogUHJlcGFyZSB0aGUgcGNhcCBoYW5kbGUgdG8gY2FwdHVyZSBwYWNrZXRzLgomIzQzOy8qCiYjNDM7ICogUHJlcGFyZSB0aGUgcGNhcCBoYW5kbGUgdG8gY2FwdHVyZSBwYWNrZXRzLgogICoKICAqIFRoaXMgcGNhcCBpcyBub24tYmxvY2tpbmcgYW5kIGltbWVkaWF0ZSBtb2RlIGlzIGVuYWJsZWQgdG8gcmVjZWl2ZQogICogY2FwdHVyZWQgcGFja2V0cyBhcyBzb29uIGFzIHBvc3NpYmxlLiAgVGhlIHNuYXBsZW4gaXMgc2V0IHRvIDEwMjQgYnl0ZXMKQEAgLTExNTAsNyAmIzQzOzExODYsOCBAQCBzdGF0aWMgdm9pZCBlbmNvZGVfdGVzdF9uYW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqdGVzdF9uYW1lLCBjb25zdAogCiAjZGVmaW5lIFBDQVBfRElSICYjMzQ7L3RtcC90bW9uX3BjYXAmIzM0OwogCi0vKiBTdGFydCB0byBtb25pdG9yIHRoZSBuZXR3b3JrIHRyYWZmaWMgaW4gdGhlIGdpdmVuIG5ldHdvcmsgbmFtZXNwYWNlLgomIzQzOy8qCiYjNDM7ICogU3RhcnQgdG8gbW9uaXRvciB0aGUgbmV0d29yayB0cmFmZmljIGluIHRoZSBnaXZlbiBuZXR3b3JrIG5hbWVzcGFjZS4KICAqCiAgKiBuZXRuczogdGhlIG5hbWUgb2YgdGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRvIG1vbml0b3IuIElmIE5VTEwsIHRoZQogICogICAgICAgIGN1cnJlbnQgbmV0d29yayBuYW1lc3BhY2UgaXMgbW9uaXRvcmVkLgpAQCAtMTI1NSw3ICYjNDM7MTI5Miw4IEBAIHN0YXRpYyB2b2lkIHRyYWZmaWNfbW9uaXRvcl9yZWxlYXNlKHN0cnVjdCB0bW9uaXRvcl9jdHggKmN0eCkKIAlmcmVlKGN0eCk7CiB9CiAKLS8qIFN0b3AgdGhlIG5ldHdvcmsgdHJhZmZpYyBtb25pdG9yLgomIzQzOy8qCiYjNDM7ICogU3RvcCB0aGUgbmV0d29yayB0cmFmZmljIG1vbml0b3IuCiAgKgogICogY3R4OiB0aGUgY29udGV4dCByZXR1cm5lZCBieSB0cmFmZmljX21vbml0b3Jfc3RhcnQoKQogICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDA3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNTIKCQkJCQkJCW91dHB1dDogNjkKCQkJCQkJCXRob3VnaHRzOiAzODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IG9uIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jYC4gSXQmIzM5O3MgaW50cm9kdWNpbmcgYSBgQ09OTkVDVF9NSU5fVElNRU9VVF9NU2AgbWFjcm8gYW5kIGluY29ycG9yYXRpbmcgaXQgd2l0aGluIHRoZSBgY29ubmVjdF90b19hZGRyYCBmdW5jdGlvbiwgZXNzZW50aWFsbHkgc2V0dGluZyBhIG1pbmltdW0gdGltZW91dC4gSXQgYWxzbyBzZWVtcyB0byBpbnZvbHZlIHNvbWUgbWlub3IgY29tbWVudCBmb3JtYXR0aW5nIHR3ZWFrcy4KCk15IGluaXRpYWwgdGhvdWdodCBpcywgc2luY2UgdGhpcyBpcyAqc29sZWx5KiBhIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIHNlbGZ0ZXN0cyBkaXJlY3RvcnksIGFuZCBkb2VzbiYjMzk7dCB0b3VjaCB0aGUgY29yZSBrZXJuZWwgY29kZSBpdHNlbGYsIHRoaXMgc2hvdWxkIGhhdmUgbm8gYmVhcmluZyBvbiBgV29ydGhGdXp6aW5nYC4gVGhlIGtlcm5lbCYjMzk7cyBiZWhhdmlvciBpc24mIzM5O3QgYmVpbmcgYWx0ZXJlZCwganVzdCB0aGUgdGVzdGluZyBpbmZyYXN0cnVjdHVyZS4KCkJ1dCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCYjMzk7cyByZXZpc2l0IHRoZSBydWxlcy4gV2UgbmVlZCB0byBiZSBtZXRpY3Vsb3VzLiBMZXQgbWUgdGhpbmsuLi4gJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8uLi4gY29kZSBjb21tZW50cywgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93Li4uJiMzNDsgQWgsIGFuZCB0aGVuIHRoZSBsYXN0IGZldyBydWxlcyBhcmUgdW5yZWxhdGVkIHRvIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQuCgpUaGlzIGlzIGEgY2xhc3NpYy4gVGhpcyBwYXRjaCAqZG9lcyogbW9kaWZ5IGEgbWFjcm8sIGJ1dCB0aGlzIHNlZW1zIHZlcnkgbXVjaCBsaWtlIGEgbnVtZXJpYyBjb25zdGFudCB0aGF0JiMzOTtzIGJlaW5nIGludHJvZHVjZWQgYW5kIGRvZXNuJiMzOTt0IGNoYW5nZSBleGVjdXRpb24gb2YgdGhlIGtlcm5lbCwganVzdCB0aGUgYmVoYXZpb3Igb2Ygc29tZSB0ZXN0cy4gSXQmIzM5O3MgYSB0ZXN0IGluZnJhc3RydWN0dXJlIGVuaGFuY2VtZW50LCBub3QgYSBrZXJuZWwgY2hhbmdlLiBJdCYjMzk7cyBjb25maW5lZCB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYC4gVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBjb25jbHVzaW9uIGlzIGRlZmluaXRlbHkgYFdvcnRoRnV6emluZyA9IGZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDc6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA3OjM4OjA1LjEyNTE0NTMyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NzA0OTc0NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXJzcGFjZSB0ZXN0aW5nIGNvZGUgaW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNzozODowNS4xMjUxNTMxNTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTQ0MDY5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU5ZGI5OGRlMzU4MDU4YTJkMGYwYWMwNWEzYTA1M2RhMTU2Y2U4NGRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDc6Mzg6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXFxuaW5kZXggZGI5MzVhOWQ5ZmMxYS4uOGM5MjM2YzBhNWE1ZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmNcXG5AQCAtNDksNiArNDksOCBAQFxcbiBcXHRcXHRcXHRlcnJubyA9IF9fc2F2ZTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH0pXFxuIFxcbisjZGVmaW5lIENPTk5FQ1RfTUlOX1RJTUVPVVRfTVNcXHQ1MDAwXFxuK1xcbiBzdHJ1Y3QgaXB2NF9wYWNrZXQgcGt0X3Y0ID0ge1xcbiBcXHQuZXRoLmhfcHJvdG8gPSBfX2JwZl9jb25zdGFudF9odG9ucyhFVEhfUF9JUCksXFxuIFxcdC5pcGguaWhsID0gNSxcXG5AQCAtMjkxLDYgKzI5MywxMiBAQCBpbnQgY2xpZW50X3NvY2tldChpbnQgZmFtaWx5LCBpbnQgdHlwZSxcXG4gXFx0cmV0dXJuIC0xO1xcbiB9XFxuIFxcbitzdGF0aWMgaW50IGNvbm5lY3RfdGltZW91dF9tcyhjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcXG4re1xcbitcXHQvKiBFbmZvcmNlIGEgbWluaW11bSBjb25uZWN0IHRpbWVvdXQgdmFsdWUgKi9cXG4rXFx0cmV0dXJuIE1BWChvcHRzLVxcdTAwM2V0aW1lb3V0X21zLCBDT05ORUNUX01JTl9USU1FT1VUX01TKTtcXG4rfVxcbitcXG4gaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuLFxcbiBcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldHdvcmtfaGVscGVyX29wdHMgKm9wdHMpXFxuIHtcXG5AQCAtMzA1LDEzICszMTMsMzUgQEAgaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRcXG4gXFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuIFxcbitcXHQvKlxcbitcXHQgKiBPdmVycmlkZSB0aW1lb3V0IGNvbmZpZ3VyYXRpb24gd2l0aCBhIGxhcmdlciB2YWx1ZSBmb3IgdGhlXFxuK1xcdCAqIGNvbm5lY3Rpb25cXG4rXFx0ICovXFxuK1xcdGlmIChzZXR0aW1lbyhmZCwgY29ubmVjdF90aW1lb3V0X21zKG9wdHMpKSkge1xcbitcXHRcXHRsb2dfZXJyKFxcXCJGYWlsZWQgdG8gc2V0IGNvbm5lY3QgdGltZW91dFxcXCIpO1xcbitcXHRcXHRnb3RvIGNsb3NlO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAoY29ubmVjdChmZCwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsIGFkZHJsZW4pKSB7XFxuLVxcdFxcdGxvZ19lcnIoXFxcIkZhaWxlZCB0byBjb25uZWN0IHRvIHNlcnZlclxcXCIpO1xcbi1cXHRcXHRzYXZlX2Vycm5vX2Nsb3NlKGZkKTtcXG4tXFx0XFx0cmV0dXJuIC0xO1xcbitcXHRcXHRsb2dfZXJyKFxcXCJGYWlsZWQgdG8gY29ubmVjdFxcXCIpO1xcbitcXHRcXHRnb3RvIGNsb3NlO1xcbitcXHR9XFxuK1xcbitcXHQvKlxcbitcXHQgKiBJZiB0aGUgdGltZW91dCBjb25maWd1cmVkIGJ5IHRoZSB0ZXN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZVxcbitcXHQgKiBjb25uZWN0IHRpbWVvdXQsIHJlc3RvcmUgaXRcXG4rXFx0ICovXFxuK1xcdGlmIChvcHRzLVxcdTAwM2V0aW1lb3V0X21zICE9IENPTk5FQ1RfTUlOX1RJTUVPVVRfTVMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHNldHRpbWVvKGZkLCBvcHRzLVxcdTAwM2V0aW1lb3V0X21zKSkge1xcbitcXHRcXHRsb2dfZXJyKFxcXCJGYWlsZWQgdG8gc2V0IHRpbWVvdXQgZm9yIGNvbm5lY3RlZCBzb2NrZXRcXFwiKTtcXG4rXFx0XFx0Z290byBjbG9zZTtcXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIGZkO1xcbitcXG4rY2xvc2U6XFxuK1xcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xcbitcXHRyZXR1cm4gLTE7XFxuIH1cXG4gXFxuIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCxcXG5AQCAtNDI0LDcgKzQ1NCw4IEBAIGludCBtYWtlX3NvY2thZGRyKGludCBmYW1pbHksIGNvbnN0IGNoYXIgKmFkZHJfc3RyLCBfX3UxNiBwb3J0LFxcbiBcXHRcXHRcXHQqbGVuID0gc2l6ZW9mKCpzaW42KTtcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH0gZWxzZSBpZiAoZmFtaWx5ID09IEFGX1VOSVgpIHtcXG4tXFx0XFx0LyogTm90ZSB0aGF0IHdlIGFsd2F5cyB1c2UgYWJzdHJhY3QgdW5peCBzb2NrZXRzIHRvIGF2b2lkIGhhdmluZ1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBOb3RlIHRoYXQgd2UgYWx3YXlzIHVzZSBhYnN0cmFjdCB1bml4IHNvY2tldHMgdG8gYXZvaWQgaGF2aW5nXFxuIFxcdFxcdCAqIHRvIGNsZWFuIHVwIGxlZnRvdmVyIGZpbGVzLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0c3RydWN0IHNvY2thZGRyX3VuICpzdW4gPSAodm9pZCAqKWFkZHI7XFxuQEAgLTg2NSw3ICs4OTYsOCBAQCBzdGF0aWMgYm9vbCBpc19ldGhlcm5ldChjb25zdCB1X2NoYXIgKnBhY2tldClcXG4gXFx0bWVtY3B5KFxcdTAwMjZhcnBoZHJfdHlwZSwgcGFja2V0ICsgOCwgMik7XFxuIFxcdGFycGhkcl90eXBlID0gbnRvaHMoYXJwaGRyX3R5cGUpO1xcbiBcXG4tXFx0LyogRXhjZXB0IHRoZSBmb2xsb3dpbmcgY2FzZXMsIHRoZSBwcm90b2NvbCB0eXBlIGNvbnRhaW5zIHRoZVxcbitcXHQvKlxcbitcXHQgKiBFeGNlcHQgdGhlIGZvbGxvd2luZyBjYXNlcywgdGhlIHByb3RvY29sIHR5cGUgY29udGFpbnMgdGhlXFxuIFxcdCAqIEV0aGVybmV0IHByb3RvY29sIHR5cGUgZm9yIHRoZSBwYWNrZXQuXFxuIFxcdCAqXFxuIFxcdCAqIGh0dHBzOi8vd3d3LnRjcGR1bXAub3JnL2xpbmt0eXBlcy9MSU5LVFlQRV9MSU5VWF9TTEwyLmh0bWxcXG5AQCAtMTAzMywxOSArMTA2NSwyMiBAQCBzdGF0aWMgdm9pZCAqdHJhZmZpY19tb25pdG9yX3RocmVhZCh2b2lkICphcmcpXFxuIFxcdFxcdGlmICghcGFja2V0KVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuLVxcdFxcdC8qIEFjY29yZGluZyB0byB0aGUgbWFuIHBhZ2Ugb2YgcGNhcF9kdW1wKCksIGZpcnN0IGFyZ3VtZW50XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIEFjY29yZGluZyB0byB0aGUgbWFuIHBhZ2Ugb2YgcGNhcF9kdW1wKCksIGZpcnN0IGFyZ3VtZW50XFxuIFxcdFxcdCAqIGlzIHRoZSBwY2FwX2R1bXBlcl90IHBvaW50ZXIgZXZlbiBpdCdzIGFyZ3VtZW50IHR5cGUgaXNcXG4gXFx0XFx0ICogdV9jaGFyICouXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRwY2FwX2R1bXAoKHVfY2hhciAqKWR1bXBlciwgXFx1MDAyNmhlYWRlciwgcGFja2V0KTtcXG4gXFxuLVxcdFxcdC8qIE5vdCBzdXJlIHdoYXQgb3RoZXIgdHlwZXMgb2YgcGFja2V0cyBsb29rIGxpa2UuIEhlcmUsIHdlXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIE5vdCBzdXJlIHdoYXQgb3RoZXIgdHlwZXMgb2YgcGFja2V0cyBsb29rIGxpa2UuIEhlcmUsIHdlXFxuIFxcdFxcdCAqIHBhcnNlIG9ubHkgRXRoZXJuZXQgYW5kIGNvbXBhdGlibGUgcGFja2V0cy5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghaXNfZXRoZXJuZXQocGFja2V0KSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbi1cXHRcXHQvKiBTa2lwIFNMTDIgaGVhZGVyXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIFNraXAgU0xMMiBoZWFkZXJcXG4gXFx0XFx0ICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbFxcbiBcXHRcXHQgKlxcbiBcXHRcXHQgKiBBbHRob3VnaCB0aGUgZG9jdW1lbnQgZG9lc24ndCBtZW50aW9uIHRoYXQsIHRoZSBwYXlsb2FkXFxuQEAgLTEwNzksNyArMTExNCw4IEBAIHN0YXRpYyB2b2lkICp0cmFmZmljX21vbml0b3JfdGhyZWFkKHZvaWQgKmFyZylcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuLS8qIFByZXBhcmUgdGhlIHBjYXAgaGFuZGxlIHRvIGNhcHR1cmUgcGFja2V0cy5cXG4rLypcXG4rICogUHJlcGFyZSB0aGUgcGNhcCBoYW5kbGUgdG8gY2FwdHVyZSBwYWNrZXRzLlxcbiAgKlxcbiAgKiBUaGlzIHBjYXAgaXMgbm9uLWJsb2NraW5nIGFuZCBpbW1lZGlhdGUgbW9kZSBpcyBlbmFibGVkIHRvIHJlY2VpdmVcXG4gICogY2FwdHVyZWQgcGFja2V0cyBhcyBzb29uIGFzIHBvc3NpYmxlLiAgVGhlIHNuYXBsZW4gaXMgc2V0IHRvIDEwMjQgYnl0ZXNcXG5AQCAtMTE1MCw3ICsxMTg2LDggQEAgc3RhdGljIHZvaWQgZW5jb2RlX3Rlc3RfbmFtZShjaGFyICpidWYsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgY29uc3RcXG4gXFxuICNkZWZpbmUgUENBUF9ESVIgXFxcIi90bXAvdG1vbl9wY2FwXFxcIlxcbiBcXG4tLyogU3RhcnQgdG8gbW9uaXRvciB0aGUgbmV0d29yayB0cmFmZmljIGluIHRoZSBnaXZlbiBuZXR3b3JrIG5hbWVzcGFjZS5cXG4rLypcXG4rICogU3RhcnQgdG8gbW9uaXRvciB0aGUgbmV0d29yayB0cmFmZmljIGluIHRoZSBnaXZlbiBuZXR3b3JrIG5hbWVzcGFjZS5cXG4gICpcXG4gICogbmV0bnM6IHRoZSBuYW1lIG9mIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0byBtb25pdG9yLiBJZiBOVUxMLCB0aGVcXG4gICogICAgICAgIGN1cnJlbnQgbmV0d29yayBuYW1lc3BhY2UgaXMgbW9uaXRvcmVkLlxcbkBAIC0xMjU1LDcgKzEyOTIsOCBAQCBzdGF0aWMgdm9pZCB0cmFmZmljX21vbml0b3JfcmVsZWFzZShzdHJ1Y3QgdG1vbml0b3JfY3R4ICpjdHgpXFxuIFxcdGZyZWUoY3R4KTtcXG4gfVxcbiBcXG4tLyogU3RvcCB0aGUgbmV0d29yayB0cmFmZmljIG1vbml0b3IuXFxuKy8qXFxuKyAqIFN0b3AgdGhlIG5ldHdvcmsgdHJhZmZpYyBtb25pdG9yLlxcbiAgKlxcbiAgKiBjdHg6IHRoZSBjb250ZXh0IHJldHVybmVkIGJ5IHRyYWZmaWNfbW9uaXRvcl9zdGFydCgpXFxuICAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwNzozODowNS42NDE1OTQ0MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU5NTQwMzI4MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdXNlcnNwYWNlIHRlc3RpbmcgY29kZSBpbiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbmV0d29ya19oZWxwZXJzLmMuIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGU5ZGI5OGRlMzU4MDU4YTJkMGYwYWMwNWEzYTA1M2RhMTU2Y2U4NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwNzozODowNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY1xuaW5kZXggZGI5MzVhOWQ5ZmMxYS4uOGM5MjM2YzBhNWE1ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY1xuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL25ldHdvcmtfaGVscGVycy5jXG5AQCAtNDksNiArNDksOCBAQFxuIFx0XHRcdGVycm5vID0gX19zYXZlO1x0XHRcdFx0XHRcXFxuIH0pXG4gXG4rI2RlZmluZSBDT05ORUNUX01JTl9USU1FT1VUX01TXHQ1MDAwXG4rXG4gc3RydWN0IGlwdjRfcGFja2V0IHBrdF92NCA9IHtcbiBcdC5ldGguaF9wcm90byA9IF9fYnBmX2NvbnN0YW50X2h0b25zKEVUSF9QX0lQKSxcbiBcdC5pcGguaWhsID0gNSxcbkBAIC0yOTEsNiArMjkzLDEyIEBAIGludCBjbGllbnRfc29ja2V0KGludCBmYW1pbHksIGludCB0eXBlLFxuIFx0cmV0dXJuIC0xO1xuIH1cbiBcbitzdGF0aWMgaW50IGNvbm5lY3RfdGltZW91dF9tcyhjb25zdCBzdHJ1Y3QgbmV0d29ya19oZWxwZXJfb3B0cyAqb3B0cylcbit7XG4rXHQvKiBFbmZvcmNlIGEgbWluaW11bSBjb25uZWN0IHRpbWVvdXQgdmFsdWUgKi9cbitcdHJldHVybiBNQVgob3B0cy1cdTAwM2V0aW1lb3V0X21zLCBDT05ORUNUX01JTl9USU1FT1VUX01TKTtcbit9XG4rXG4gaW50IGNvbm5lY3RfdG9fYWRkcihpbnQgdHlwZSwgY29uc3Qgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuLFxuIFx0XHQgICAgY29uc3Qgc3RydWN0IG5ldHdvcmtfaGVscGVyX29wdHMgKm9wdHMpXG4ge1xuQEAgLTMwNSwxMyArMzEzLDM1IEBAIGludCBjb25uZWN0X3RvX2FkZHIoaW50IHR5cGUsIGNvbnN0IHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyLCBzb2NrbGVuX3QgYWRkXG4gXHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbitcdC8qXG4rXHQgKiBPdmVycmlkZSB0aW1lb3V0IGNvbmZpZ3VyYXRpb24gd2l0aCBhIGxhcmdlciB2YWx1ZSBmb3IgdGhlXG4rXHQgKiBjb25uZWN0aW9uXG4rXHQgKi9cbitcdGlmIChzZXR0aW1lbyhmZCwgY29ubmVjdF90aW1lb3V0X21zKG9wdHMpKSkge1xuK1x0XHRsb2dfZXJyKFwiRmFpbGVkIHRvIHNldCBjb25uZWN0IHRpbWVvdXRcIik7XG4rXHRcdGdvdG8gY2xvc2U7XG4rXHR9XG4rXG4gXHRpZiAoY29ubmVjdChmZCwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKWFkZHIsIGFkZHJsZW4pKSB7XG4tXHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gY29ubmVjdCB0byBzZXJ2ZXJcIik7XG4tXHRcdHNhdmVfZXJybm9fY2xvc2UoZmQpO1xuLVx0XHRyZXR1cm4gLTE7XG4rXHRcdGxvZ19lcnIoXCJGYWlsZWQgdG8gY29ubmVjdFwiKTtcbitcdFx0Z290byBjbG9zZTtcbitcdH1cbitcbitcdC8qXG4rXHQgKiBJZiB0aGUgdGltZW91dCBjb25maWd1cmVkIGJ5IHRoZSB0ZXN0IGlzIGRpZmZlcmVudCBmcm9tIHRoZVxuK1x0ICogY29ubmVjdCB0aW1lb3V0LCByZXN0b3JlIGl0XG4rXHQgKi9cbitcdGlmIChvcHRzLVx1MDAzZXRpbWVvdXRfbXMgIT0gQ09OTkVDVF9NSU5fVElNRU9VVF9NUyBcdTAwMjZcdTAwMjZcbitcdCAgICBzZXR0aW1lbyhmZCwgb3B0cy1cdTAwM2V0aW1lb3V0X21zKSkge1xuK1x0XHRsb2dfZXJyKFwiRmFpbGVkIHRvIHNldCB0aW1lb3V0IGZvciBjb25uZWN0ZWQgc29ja2V0XCIpO1xuK1x0XHRnb3RvIGNsb3NlO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGZkO1xuK1xuK2Nsb3NlOlxuK1x0c2F2ZV9lcnJub19jbG9zZShmZCk7XG4rXHRyZXR1cm4gLTE7XG4gfVxuIFxuIGludCBjb25uZWN0X3RvX2FkZHJfc3RyKGludCBmYW1pbHksIGludCB0eXBlLCBjb25zdCBjaGFyICphZGRyX3N0ciwgX191MTYgcG9ydCxcbkBAIC00MjQsNyArNDU0LDggQEAgaW50IG1ha2Vfc29ja2FkZHIoaW50IGZhbWlseSwgY29uc3QgY2hhciAqYWRkcl9zdHIsIF9fdTE2IHBvcnQsXG4gXHRcdFx0KmxlbiA9IHNpemVvZigqc2luNik7XG4gXHRcdHJldHVybiAwO1xuIFx0fSBlbHNlIGlmIChmYW1pbHkgPT0gQUZfVU5JWCkge1xuLVx0XHQvKiBOb3RlIHRoYXQgd2UgYWx3YXlzIHVzZSBhYnN0cmFjdCB1bml4IHNvY2tldHMgdG8gYXZvaWQgaGF2aW5nXG4rXHRcdC8qXG4rXHRcdCAqIE5vdGUgdGhhdCB3ZSBhbHdheXMgdXNlIGFic3RyYWN0IHVuaXggc29ja2V0cyB0byBhdm9pZCBoYXZpbmdcbiBcdFx0ICogdG8gY2xlYW4gdXAgbGVmdG92ZXIgZmlsZXMuXG4gXHRcdCAqL1xuIFx0XHRzdHJ1Y3Qgc29ja2FkZHJfdW4gKnN1biA9ICh2b2lkICopYWRkcjtcbkBAIC04NjUsNyArODk2LDggQEAgc3RhdGljIGJvb2wgaXNfZXRoZXJuZXQoY29uc3QgdV9jaGFyICpwYWNrZXQpXG4gXHRtZW1jcHkoXHUwMDI2YXJwaGRyX3R5cGUsIHBhY2tldCArIDgsIDIpO1xuIFx0YXJwaGRyX3R5cGUgPSBudG9ocyhhcnBoZHJfdHlwZSk7XG4gXG4tXHQvKiBFeGNlcHQgdGhlIGZvbGxvd2luZyBjYXNlcywgdGhlIHByb3RvY29sIHR5cGUgY29udGFpbnMgdGhlXG4rXHQvKlxuK1x0ICogRXhjZXB0IHRoZSBmb2xsb3dpbmcgY2FzZXMsIHRoZSBwcm90b2NvbCB0eXBlIGNvbnRhaW5zIHRoZVxuIFx0ICogRXRoZXJuZXQgcHJvdG9jb2wgdHlwZSBmb3IgdGhlIHBhY2tldC5cbiBcdCAqXG4gXHQgKiBodHRwczovL3d3dy50Y3BkdW1wLm9yZy9saW5rdHlwZXMvTElOS1RZUEVfTElOVVhfU0xMMi5odG1sXG5AQCAtMTAzMywxOSArMTA2NSwyMiBAQCBzdGF0aWMgdm9pZCAqdHJhZmZpY19tb25pdG9yX3RocmVhZCh2b2lkICphcmcpXG4gXHRcdGlmICghcGFja2V0KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHQvKiBBY2NvcmRpbmcgdG8gdGhlIG1hbiBwYWdlIG9mIHBjYXBfZHVtcCgpLCBmaXJzdCBhcmd1bWVudFxuK1x0XHQvKlxuK1x0XHQgKiBBY2NvcmRpbmcgdG8gdGhlIG1hbiBwYWdlIG9mIHBjYXBfZHVtcCgpLCBmaXJzdCBhcmd1bWVudFxuIFx0XHQgKiBpcyB0aGUgcGNhcF9kdW1wZXJfdCBwb2ludGVyIGV2ZW4gaXQncyBhcmd1bWVudCB0eXBlIGlzXG4gXHRcdCAqIHVfY2hhciAqLlxuIFx0XHQgKi9cbiBcdFx0cGNhcF9kdW1wKCh1X2NoYXIgKilkdW1wZXIsIFx1MDAyNmhlYWRlciwgcGFja2V0KTtcbiBcbi1cdFx0LyogTm90IHN1cmUgd2hhdCBvdGhlciB0eXBlcyBvZiBwYWNrZXRzIGxvb2sgbGlrZS4gSGVyZSwgd2VcbitcdFx0LypcbitcdFx0ICogTm90IHN1cmUgd2hhdCBvdGhlciB0eXBlcyBvZiBwYWNrZXRzIGxvb2sgbGlrZS4gSGVyZSwgd2VcbiBcdFx0ICogcGFyc2Ugb25seSBFdGhlcm5ldCBhbmQgY29tcGF0aWJsZSBwYWNrZXRzLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFpc19ldGhlcm5ldChwYWNrZXQpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuLVx0XHQvKiBTa2lwIFNMTDIgaGVhZGVyXG4rXHRcdC8qXG4rXHRcdCAqIFNraXAgU0xMMiBoZWFkZXJcbiBcdFx0ICogaHR0cHM6Ly93d3cudGNwZHVtcC5vcmcvbGlua3R5cGVzL0xJTktUWVBFX0xJTlVYX1NMTDIuaHRtbFxuIFx0XHQgKlxuIFx0XHQgKiBBbHRob3VnaCB0aGUgZG9jdW1lbnQgZG9lc24ndCBtZW50aW9uIHRoYXQsIHRoZSBwYXlsb2FkXG5AQCAtMTA3OSw3ICsxMTE0LDggQEAgc3RhdGljIHZvaWQgKnRyYWZmaWNfbW9uaXRvcl90aHJlYWQodm9pZCAqYXJnKVxuIFx0cmV0dXJuIE5VTEw7XG4gfVxuIFxuLS8qIFByZXBhcmUgdGhlIHBjYXAgaGFuZGxlIHRvIGNhcHR1cmUgcGFja2V0cy5cbisvKlxuKyAqIFByZXBhcmUgdGhlIHBjYXAgaGFuZGxlIHRvIGNhcHR1cmUgcGFja2V0cy5cbiAgKlxuICAqIFRoaXMgcGNhcCBpcyBub24tYmxvY2tpbmcgYW5kIGltbWVkaWF0ZSBtb2RlIGlzIGVuYWJsZWQgdG8gcmVjZWl2ZVxuICAqIGNhcHR1cmVkIHBhY2tldHMgYXMgc29vbiBhcyBwb3NzaWJsZS4gIFRoZSBzbmFwbGVuIGlzIHNldCB0byAxMDI0IGJ5dGVzXG5AQCAtMTE1MCw3ICsxMTg2LDggQEAgc3RhdGljIHZvaWQgZW5jb2RlX3Rlc3RfbmFtZShjaGFyICpidWYsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKnRlc3RfbmFtZSwgY29uc3RcbiBcbiAjZGVmaW5lIFBDQVBfRElSIFwiL3RtcC90bW9uX3BjYXBcIlxuIFxuLS8qIFN0YXJ0IHRvIG1vbml0b3IgdGhlIG5ldHdvcmsgdHJhZmZpYyBpbiB0aGUgZ2l2ZW4gbmV0d29yayBuYW1lc3BhY2UuXG4rLypcbisgKiBTdGFydCB0byBtb25pdG9yIHRoZSBuZXR3b3JrIHRyYWZmaWMgaW4gdGhlIGdpdmVuIG5ldHdvcmsgbmFtZXNwYWNlLlxuICAqXG4gICogbmV0bnM6IHRoZSBuYW1lIG9mIHRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0byBtb25pdG9yLiBJZiBOVUxMLCB0aGVcbiAgKiAgICAgICAgY3VycmVudCBuZXR3b3JrIG5hbWVzcGFjZSBpcyBtb25pdG9yZWQuXG5AQCAtMTI1NSw3ICsxMjkyLDggQEAgc3RhdGljIHZvaWQgdHJhZmZpY19tb25pdG9yX3JlbGVhc2Uoc3RydWN0IHRtb25pdG9yX2N0eCAqY3R4KVxuIFx0ZnJlZShjdHgpO1xuIH1cbiBcbi0vKiBTdG9wIHRoZSBuZXR3b3JrIHRyYWZmaWMgbW9uaXRvci5cbisvKlxuKyAqIFN0b3AgdGhlIG5ldHdvcmsgdHJhZmZpYyBtb25pdG9yLlxuICAqXG4gICogY3R4OiB0aGUgY29udGV4dCByZXR1cm5lZCBieSB0cmFmZmljX21vbml0b3Jfc3RhcnQoKVxuICAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDc6Mzg6MDUuNjQxNTk2NjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTU0MDA5MTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0IG9uIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuY2AuIEl0J3MgaW50cm9kdWNpbmcgYSBgQ09OTkVDVF9NSU5fVElNRU9VVF9NU2AgbWFjcm8gYW5kIGluY29ycG9yYXRpbmcgaXQgd2l0aGluIHRoZSBgY29ubmVjdF90b19hZGRyYCBmdW5jdGlvbiwgZXNzZW50aWFsbHkgc2V0dGluZyBhIG1pbmltdW0gdGltZW91dC4gSXQgYWxzbyBzZWVtcyB0byBpbnZvbHZlIHNvbWUgbWlub3IgY29tbWVudCBmb3JtYXR0aW5nIHR3ZWFrcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBzaW5jZSB0aGlzIGlzICpzb2xlbHkqIGEgbW9kaWZpY2F0aW9uIHdpdGhpbiB0aGUgc2VsZnRlc3RzIGRpcmVjdG9yeSwgYW5kIGRvZXNuJ3QgdG91Y2ggdGhlIGNvcmUga2VybmVsIGNvZGUgaXRzZWxmLCB0aGlzIHNob3VsZCBoYXZlIG5vIGJlYXJpbmcgb24gYFdvcnRoRnV6emluZ2AuIFRoZSBrZXJuZWwncyBiZWhhdmlvciBpc24ndCBiZWluZyBhbHRlcmVkLCBqdXN0IHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLlxuXG5CdXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBsZXQncyByZXZpc2l0IHRoZSBydWxlcy4gV2UgbmVlZCB0byBiZSBtZXRpY3Vsb3VzLiBMZXQgbWUgdGhpbmsuLi4gXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIG1vZGlmaWNhdGlvbnMgdG8uLi4gY29kZSBjb21tZW50cywgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93Li4uXCIgQWgsIGFuZCB0aGVuIHRoZSBsYXN0IGZldyBydWxlcyBhcmUgdW5yZWxhdGVkIHRvIHdoYXQgd2UncmUgbG9va2luZyBhdC5cblxuVGhpcyBpcyBhIGNsYXNzaWMuIFRoaXMgcGF0Y2ggKmRvZXMqIG1vZGlmeSBhIG1hY3JvLCBidXQgdGhpcyBzZWVtcyB2ZXJ5IG11Y2ggbGlrZSBhIG51bWVyaWMgY29uc3RhbnQgdGhhdCdzIGJlaW5nIGludHJvZHVjZWQgYW5kIGRvZXNuJ3QgY2hhbmdlIGV4ZWN1dGlvbiBvZiB0aGUga2VybmVsLCBqdXN0IHRoZSBiZWhhdmlvciBvZiBzb21lIHRlc3RzLiBJdCdzIGEgdGVzdCBpbmZyYXN0cnVjdHVyZSBlbmhhbmNlbWVudCwgbm90IGEga2VybmVsIGNoYW5nZS4gSXQncyBjb25maW5lZCB0byBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYC4gVGhlcmVmb3JlLCB0aGUgY29ycmVjdCBjb25jbHVzaW9uIGlzIGRlZmluaXRlbHkgYFdvcnRoRnV6emluZyA9IGZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM1MiwiT3V0cHV0VG9rZW5zIjo2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDA3OjM4OjExLjU5NTYwNzgyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2Vyc3BhY2UgdGVzdGluZyBjb2RlIGluIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9uZXR3b3JrX2hlbHBlcnMuYy4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDc6Mzg6MTEuNTk1NjI5MjE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow6rlfs[1] Phase: Running StartedAt: 2026-08-14 07:38:22 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6rlfs[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-14 07:38:22 +0000 UTC FinishedAt: 2026-08-14 07:38:28 +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,}