Name: series-workflowrl9r4 Phase: Failed StartedAt: 2026-06-30 22:01:56 +0000 UTC FinishedAt: 2026-06-30 22:10:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrl9r4[0] Phase: Succeeded StartedAt: 2026-06-30 22:01:56 +0000 UTC FinishedAt: 2026-06-30 22:10:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrl9r4[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 22:01:56 +0000 UTC FinishedAt: 2026-06-30 22:10:14 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBicGZ0cmFjZSBzY3JpcHRzIGFuZCBhIHB5dGhvbiBzY3JpcHQgZm9yIHByb2ZpbGluZyB1bmRlciB0b29scy9icGZ0cmFjZS8uIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIGFuZCB0aGVyZWZvcmUgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1OGFlNGVjNzM2MGEwNTNiNDVmYjQ3YWRlMjU5NWQ5NGEwYzA0YzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAyMjowOTo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvYWdncmVnYXRlX2JwZl9yZXN1bHRzLnB5IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weVxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5mNGZmZThjZmY0NDE4ZVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weVxuQEAgLTAsMCAmIzQzOzEsMzE4IEBAXG4mIzQzOyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuJiM0MzsjXG4mIzQzOyMgUHJpbnRzIHRoZSBhZ2dyZWdhdGUgcmVzdWx0cyBvZiBhbiBpbnN0cnVtZW50ZWQgQlBGIHRyYWNlLlxuJiM0MzsjXG4mIzQzOyMgQ29weXJpZ2h0IDIwMjYgR29vZ2xlIExMQ1xuJiM0MzsjXG4mIzQzOyMgQXV0aG9yOiBBYXJvbiBMZXdpcyBcdTAwM2NhYXJvbmxld2lzQGdvb2dsZS5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2ltcG9ydCBmaWxlaW5wdXRcbiYjNDM7aW1wb3J0IHJlXG4mIzQzO2ltcG9ydCBzeXNcbiYjNDM7aW1wb3J0IHdhcm5pbmdzXG4mIzQzO2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBTZXF1ZW5jZVxuJiM0MztcbiYjNDM7Y2xhc3MgUHJvZmlsZXJSZXN1bHQ6XG4mIzQzOyAgXCYjMzQ7XCYjMzQ7XCYjMzQ7Q2xhc3MgZm9yIGhvbGRpbmcgdGhlIHByb2ZpbGVyIHJlc3VsdHMuXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MzsgIGRlZiBfX2luaXRfXyhcbiYjNDM7ICAgICAgc2VsZixcbiYjNDM7ICAgICAgbmFtZTogc3RyLFxuJiM0MzsgICAgICB0aHJlYWRfdXNlYzogaW50LFxuJiM0MzsgICAgICB3YWxsX3VzZWM6IGludCxcbiYjNDM7ICAgICAgbWF4X3VzZWM6IGludCxcbiYjNDM7ICAgICAgYXZnX3VzZWM6IGludCxcbiYjNDM7ICAgICAgY291bnQ6IGludCxcbiYjNDM7ICAgICAgdGhyZWFkX2NvdW50OiBpbnQsXG4mIzQzOyAgICAgIGluY29tcGxldGVfY291bnQ6IGludCxcbiYjNDM7ICAgICAgZGVwdGg6IGludCxcbiYjNDM7ICApOlxuJiM0MzsgICAgc2VsZi5uYW1lID0gbmFtZVxuJiM0MzsgICAgc2VsZi50aHJlYWRfdXNlYyA9IHRocmVhZF91c2VjXG4mIzQzOyAgICBzZWxmLndhbGxfdXNlYyA9IHdhbGxfdXNlY1xuJiM0MzsgICAgc2VsZi5tYXhfdXNlYyA9IG1heF91c2VjXG4mIzQzOyAgICBzZWxmLmF2Z191c2VjID0gYXZnX3VzZWNcbiYjNDM7ICAgIHNlbGYuY291bnQgPSBjb3VudFxuJiM0MzsgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnRcbiYjNDM7ICAgIHNlbGYuaW5jb21wbGV0ZV9jb3VudCA9IGluY29tcGxldGVfY291bnRcbiYjNDM7ICAgIHNlbGYuZGVwdGggPSBkZXB0aFxuJiM0MztcbiYjNDM7Y2xhc3MgQnBmVGltZXI6XG4mIzQzOyAgXCYjMzQ7XCYjMzQ7XCYjMzQ7Q2xhc3MgZm9yIGhvbGRpbmcgYSB0aW1lci5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgZGVmIF9faW5pdF9fKFxuJiM0MzsgICAgICBzZWxmLFxuJiM0MzsgICAgICBuYW1lOiBzdHIsXG4mIzQzOyAgICAgIHN0YXJ0X3RpbWVfdXM6IGludCxcbiYjNDM7ICAgICAgZHVyYXRpb25fdXM6IGludCxcbiYjNDM7ICAgICAgZGVwdGg6IGludCxcbiYjNDM7ICApOlxuJiM0MzsgICAgc2VsZi5uYW1lID0gbmFtZVxuJiM0MzsgICAgc2VsZi5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZV91c1xuJiM0MzsgICAgc2VsZi5kdXJhdGlvbl91cyA9IGR1cmF0aW9uX3VzXG4mIzQzOyAgICBzZWxmLmRlcHRoID0gZGVwdGhcbiYjNDM7XG4mIzQzO2NsYXNzIEJwZlJlc3VsdDpcbiYjNDM7ICBcJiMzNDtcJiMzNDtcJiMzNDtDbGFzcyBmb3IgaG9sZGluZyB0aGUgcHJvZmlsZXIgcmVzdWx0cy5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgZGVmIF9faW5pdF9fKFxuJiM0MzsgICAgICBzZWxmLFxuJiM0MzsgICAgICBuYW1lOiBzdHIsXG4mIzQzOyAgICAgIHdhbGxfdGltZV9zdGFydF91czogaW50LFxuJiM0MzsgICAgICB3YWxsX3RpbWVfZW5kX3VzOiBpbnQsXG4mIzQzOyAgICAgIHRocmVhZF91czogaW50LFxuJiM0MzsgICAgICBtYXhfdXM6IGludCxcbiYjNDM7ICAgICAgYXZnX3VzOiBpbnQsXG4mIzQzOyAgICAgIGNvdW50OiBpbnQsXG4mIzQzOyAgICAgIHRocmVhZF9jb3VudDogaW50LFxuJiM0MzsgICAgICBkZXB0aDogaW50LFxuJiM0MzsgICAgICB0aWQ6IGludCxcbiYjNDM7ICApOlxuJiM0MzsgICAgc2VsZi5uYW1lID0gbmFtZVxuJiM0MzsgICAgc2VsZi53YWxsX3RpbWVfc3RhcnRfdXMgPSB3YWxsX3RpbWVfc3RhcnRfdXNcbiYjNDM7ICAgIHNlbGYud2FsbF90aW1lX2VuZF91cyA9IHdhbGxfdGltZV9lbmRfdXNcbiYjNDM7ICAgIHNlbGYudGhyZWFkX3VzID0gdGhyZWFkX3VzXG4mIzQzOyAgICBzZWxmLm1heF91cyA9IG1heF91c1xuJiM0MzsgICAgc2VsZi5hdmdfdXMgPSBhdmdfdXNcbiYjNDM7ICAgIHNlbGYuY291bnQgPSBjb3VudFxuJiM0MzsgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnRcbiYjNDM7ICAgIHNlbGYuZGVwdGggPSBkZXB0aFxuJiM0MzsgICAgc2VsZi5jaGlsZHJlbiA9IFtdXG4mIzQzOyAgICBzZWxmLmNoaWxkX2luZGV4ID0ge31cbiYjNDM7ICAgIHNlbGYudGhyZWFkcyA9IHt9XG4mIzQzOyAgICBzZWxmLnRocmVhZHNbdGlkXSA9IFRydWVcbiYjNDM7XG4mIzQzO2RlZiB1cGRhdGVfY2hpbGQocjogQnBmUmVzdWx0LCB0aW1lcjogQnBmVGltZXIsIHRpZDogaW50KSAtXHUwMDNlIGludDpcbiYjNDM7ICBpID0gci5jaGlsZF9pbmRleC5nZXQodGltZXIubmFtZSlcbiYjNDM7ICBpZiBpIGlzIE5vbmU6XG4mIzQzOyAgICBpID0gbGVuKHIuY2hpbGRyZW4pXG4mIzQzOyAgICByLmNoaWxkcmVuLmFwcGVuZChCcGZSZXN1bHQoXG4mIzQzOyAgICAgICAgdGltZXIubmFtZSxcbiYjNDM7ICAgICAgICB0aW1lci5zdGFydF90aW1lX3VzLFxuJiM0MzsgICAgICAgIHRpbWVyLnN0YXJ0X3RpbWVfdXMgJiM0MzsgdGltZXIuZHVyYXRpb25fdXMsXG4mIzQzOyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXG4mIzQzOyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXG4mIzQzOyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXG4mIzQzOyAgICAgICAgMSxcbiYjNDM7ICAgICAgICAxLFxuJiM0MzsgICAgICAgIHRpbWVyLmRlcHRoLFxuJiM0MzsgICAgICAgIHRpZCkpXG4mIzQzOyAgICByLmNoaWxkX2luZGV4W3RpbWVyLm5hbWVdID0gaVxuJiM0MzsgIGVsc2U6XG4mIzQzOyAgICByLmNoaWxkcmVuW2ldLndhbGxfdGltZV9zdGFydF91cyA9IG1pbihyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9zdGFydF91cywgdGltZXIuc3RhcnRfdGltZV91cylcbiYjNDM7ICAgIHIuY2hpbGRyZW5baV0ud2FsbF90aW1lX2VuZF91cyA9IG1heChyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9lbmRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMgJiM0MzsgdGltZXIuZHVyYXRpb25fdXMpXG4mIzQzOyAgICByLmNoaWxkcmVuW2ldLnRocmVhZF91cyAmIzQzOz0gdGltZXIuZHVyYXRpb25fdXNcbiYjNDM7ICAgIHIuY2hpbGRyZW5baV0ubWF4X3VzID0gbWF4KHIuY2hpbGRyZW5baV0ubWF4X3VzLCB0aW1lci5kdXJhdGlvbl91cylcbiYjNDM7ICAgIHIuY2hpbGRyZW5baV0uY291bnQgJiM0Mzs9IDFcbiYjNDM7ICAgIHIuY2hpbGRyZW5baV0uYXZnX3VzID0gci5jaGlsZHJlbltpXS50aHJlYWRfdXMgLyByLmNoaWxkcmVuW2ldLmNvdW50XG4mIzQzOyAgICBpZiByLmNoaWxkcmVuW2ldLnRocmVhZHMuZ2V0KHRpZCkgaXMgTm9uZTpcbiYjNDM7ICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRzW3RpZF0gPSBUcnVlXG4mIzQzOyAgICAgIHIuY2hpbGRyZW5baV0udGhyZWFkX2NvdW50ICYjNDM7PSAxXG4mIzQzO1xuJiM0MzsgIHJldHVybiBpXG4mIzQzO1xuJiM0MztkZWYgbWVyZ2VfcmVjdXJzaXZlKHI6IEJwZlJlc3VsdCwgdGlkOiBpbnQsIHRpbWVyczogTGlzdFtCcGZUaW1lcl0sIGluZGV4OiBpbnQsIGNoaWxkX2luZGV4OiBpbnQpIC1cdTAwM2UgaW50OlxuJiM0MzsgIHdoaWxlIGluZGV4IFx1MDAzYyBsZW4odGltZXJzKTpcbiYjNDM7ICAgIHdoaWxlIGluZGV4IFx1MDAzYyBsZW4odGltZXJzKSBhbmQgdGltZXJzW2luZGV4XSA9PSBOb25lOlxuJiM0MzsgICAgICBpbmRleCAmIzQzOz0gMVxuJiM0MztcbiYjNDM7ICAgIGlmIGluZGV4IFx1MDAzZT0gbGVuKHRpbWVycyk6XG4mIzQzOyAgICAgIHJldHVybiBpbmRleFxuJiM0MztcbiYjNDM7ICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJiMzOTtyJiMzOTsuIChDaGlsZCBjYXNlKVxuJiM0MzsgICAgaWYgdGltZXJzW2luZGV4XS5kZXB0aCA9PSAoci5kZXB0aCAmIzQzOyAxKTpcbiYjNDM7ICAgICAgIyBBZGQgY2hpbGRcbiYjNDM7ICAgICAgY2hpbGRfaW5kZXggPSB1cGRhdGVfY2hpbGQociwgdGltZXJzW2luZGV4XSwgdGlkKVxuJiM0MztcbiYjNDM7ICAgICAgIyBOb3cgdGhhdCB0aGUgdGltZXIgaGFzIGJlZW4gaGFuZGxlZCBpbmNyZW1lbnQgdG8gdGhlIG5leHQgb25lLlxuJiM0MzsgICAgICBpbmRleCAmIzQzOz0gMVxuJiM0MztcbiYjNDM7ICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJiMzOTtyJiMzOTsuIChHcmFuZGNoaWxkIGNhc2UpXG4mIzQzOyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggPT0gKHIuZGVwdGggJiM0MzsgMik6XG4mIzQzOyAgICAgIGlmIGNoaWxkX2luZGV4IFx1MDAzYyAwOlxuJiM0MzsgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoXCYjMzQ7SW52YWxpZCAmIzM5O2NoaWxkX2luZGV4JiMzOTtcJiMzNDspXG4mIzQzOyAgICAgICMgUmVjdXJzZSBkb3duIHRoZSBjaGlsZCBiZWN1YXNlIHRoYXQgaXMgdGhlIHBhcmVudCB0aGlzIHRpbWVyLlxuJiM0MzsgICAgICBpbmRleCA9IG1lcmdlX3JlY3Vyc2l2ZShyLmNoaWxkcmVuW2NoaWxkX2luZGV4XSwgdGlkLCB0aW1lcnMsIGluZGV4LCBjaGlsZF9pbmRleClcbiYjNDM7XG4mIzQzOyAgICAjIFRoZSB0aW1lciBpcyBhIGRlc2NlbmRhbnQgb2YgJiMzOTtyJiMzOTssIGJ1dCBub3QgdGhlIGNoaWxkLi4uIEludmFsaWQgY2FzZSFcbiYjNDM7ICAgIGVsaWYgdGltZXJzW2luZGV4XS5kZXB0aCBcdTAwM2UgKHIuZGVwdGggJiM0MzsgMik6XG4mIzQzOyAgICAgIHJhaXNlIFZhbHVlRXJyb3IoXCYjMzQ7SW52YWxpZCBkZXB0aC4gIGRlc2NlbmRhbnQgY2FuIG9ubHkgYmUgY2hpbGRyZW4uIG5hbWUgPSAmIzM5OyVzJiMzOTssIHRpZCA9ICVkLCBpbmRleCA9ICVkXCYjMzQ7ICUgKHRpbWVyc1tpbmRleF0ubmFtZSwgdGlkLCBpbmRleCkpXG4mIzQzO1xuJiM0MzsgICAgIyBOZXcgZmFtaWx5IHRyZWUuICBQb3Agb3V0IG9mIHRoaXMgb25lLlxuJiM0MzsgICAgZWxpZiB0aW1lcnNbaW5kZXhdLmRlcHRoIFx1MDAzYz0gci5kZXB0aDpcbiYjNDM7ICAgICAgIyBUaGUgdGltZXIgaXMgYW4gYW5jZXN0b3Igb2YgJiMzOTtyJiMzOTsuICBSZXR1cm4gc28gaXQgY2FuIGJlIHByb2Nlc3NlZCBlbHNld2hlcmUuXG4mIzQzOyAgICAgIHJldHVybiBpbmRleFxuJiM0MztcbiYjNDM7ICByZXR1cm4gaW5kZXhcbiYjNDM7XG4mIzQzO2RlZiBtZXJnZV90aW1lcnMocjogQnBmUmVzdWx0LCB0aWQ6IGludCwgdGltZXJzOiBMaXN0W0JwZlRpbWVyXSk6XG4mIzQzOyAgaWYgbGVuKHRpbWVycykgPT0gMDpcbiYjNDM7ICAgIHJldHVyblxuJiM0MztcbiYjNDM7ICBpZiB0aW1lcnNbMF0uZGVwdGggIT0gMDpcbiYjNDM7ICAgIHJhaXNlIFZhbHVlRXJyb3IoXCYjMzQ7RXhwZWN0ZWQgYSBkZXB0aCBvZiAwLiAgJiMzOTslcyYjMzk7LCBkZXB0aCA9ICVkXCYjMzQ7ICUgKHRpbWVyc1swXS5uYW1lLCB0aW1lcnNbMF0uZGVwdGgpKVxuJiM0MztcbiYjNDM7ICBtZXJnZV9yZWN1cnNpdmUociwgdGlkLCB0aW1lcnMsIDAsIC0xKVxuJiM0MztcbiYjNDM7ZGVmIHByaW50X3JlY3Vyc2l2ZShyOiBCcGZSZXN1bHQsIHJlc3VsdHMgOiBMaXN0W1Byb2ZpbGVyUmVzdWx0XSk6XG4mIzQzOyAgdGhyZWFkX3RpbWUgPSBmbG9hdChyLnRocmVhZF91cykgLyAxMDAwLjBcbiYjNDM7ICB3YWxsX3RpbWVfdXMgPSByLndhbGxfdGltZV9lbmRfdXMgLSByLndhbGxfdGltZV9zdGFydF91c1xuJiM0MzsgIHdhbGxfdGltZSA9IGZsb2F0KHdhbGxfdGltZV91cykgLyAxMDAwLjBcbiYjNDM7ICBtYXhfdGltZSA9IGZsb2F0KHIubWF4X3VzKSAvIDEwMDAuMFxuJiM0MzsgIGF2Z190aW1lID0gZmxvYXQoci5hdmdfdXMpIC8gMTAwMC4wXG4mIzQzO1xuJiM0MzsgIGluZGVudCA9IFwmIzM0O1wmIzM0O1xuJiM0MzsgIGZvciBpIGluIHJhbmdlKHIuZGVwdGgpOlxuJiM0MzsgICAgaW5kZW50ICYjNDM7PSBcJiMzNDsgIFwmIzM0O1xuJiM0MztcbiYjNDM7ICBwcmludChcJiMzNDslcyVzLCB0aHJlYWRfdGltZSA9ICUuMmZtcywgd2FsbF90aW1lID0gJS4yZm1zLCBtYXggPSAlLjJmLCBhdmcgPSAlLjJmLCBjb3VudCA9ICVkLCB0aHJlYWRfY291bnQgPSAlZFwmIzM0OyAlXG4mIzQzOyAgICAgICAgKGluZGVudCwgci5uYW1lLCB0aHJlYWRfdGltZSwgd2FsbF90aW1lLCBtYXhfdGltZSwgYXZnX3RpbWUsIHIuY291bnQsIHIudGhyZWFkX2NvdW50KSk7XG4mIzQzO1xuJiM0MzsgIHJlc3VsdHMuYXBwZW5kKFxuJiM0MzsgICAgICBQcm9maWxlclJlc3VsdChcbiYjNDM7ICAgICAgICAgIHIubmFtZSxcbiYjNDM7ICAgICAgICAgIHIudGhyZWFkX3VzLFxuJiM0MzsgICAgICAgICAgd2FsbF90aW1lX3VzLFxuJiM0MzsgICAgICAgICAgci5tYXhfdXMsXG4mIzQzOyAgICAgICAgICByLmF2Z191cyxcbiYjNDM7ICAgICAgICAgIHIuY291bnQsXG4mIzQzOyAgICAgICAgICByLnRocmVhZF9jb3VudCxcbiYjNDM7ICAgICAgICAgIDAsXG4mIzQzOyAgICAgICAgICByLmRlcHRoLFxuJiM0MzsgICAgICApXG4mIzQzOyAgKVxuJiM0MztcbiYjNDM7ICBmb3IgY2hpbGQgaW4gci5jaGlsZHJlbjpcbiYjNDM7ICAgIHByaW50X3JlY3Vyc2l2ZShjaGlsZCwgcmVzdWx0cylcbiYjNDM7XG4mIzQzO2RlZiBwcmludF9yZXN1bHRzKHI6IEJwZlJlc3VsdCwgcmVzdWx0cyA6IExpc3RbUHJvZmlsZXJSZXN1bHRdKTpcbiYjNDM7ICBmb3IgY2hpbGQgaW4gci5jaGlsZHJlbjpcbiYjNDM7ICAgIHByaW50X3JlY3Vyc2l2ZShjaGlsZCwgcmVzdWx0cylcbiYjNDM7XG4mIzQzO2RlZiBnZW5lcmF0ZV9mcm9tX2xvZyhmaWxlczogU2VxdWVuY2Vbc3RyXSk6XG4mIzQzOyAgXCYjMzQ7XCYjMzQ7XCYjMzQ7UmVhZCB0aGUgdHJhY2UgYW5kIHJldHVybiBhIGxpc3Qgb2YgUHJvZmlsZXJSZXN1bHQgb2JqZWN0cy5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgdGltZXJfY291bnRzID0ge31cbiYjNDM7ICBhbGxfdGltZXJzID0ge31cbiYjNDM7XG4mIzQzOyAgY291bnRfcmVnZXggPSByZS5jb21waWxlKFxuJiM0MzsgICAgICByXCYjMzQ7XkB0aW1lcl9jb3VudFxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldJiM0MzspXFxdOlxcVyg/UFx1MDAzY2NvdW50XHUwMDNlWy0wLTldJiM0MzspXCYjMzQ7XG4mIzQzOyAgKVxuJiM0MzsgIG5hbWVfcmVnZXggPSByZS5jb21waWxlKFxuJiM0MzsgICAgICByXCYjMzQ7XkB0aW1lcl9uYW1lXFxbKD9QXHUwMDNjdGlkXHUwMDNlWzAtOV0mIzQzOyksXFxXKig/UFx1MDAzY2luZGV4XHUwMDNlWzAtOV0mIzQzOylcXF06XFxXKD9QXHUwMDNjbmFtZVx1MDAzZVtcXHdcXC4wLTldJiM0MzspXCYjMzQ7XG4mIzQzOyAgKVxuJiM0MzsgIHN0YXJ0X3RpbWVfcmVnZXggPSByZS5jb21waWxlKFxuJiM0MzsgICAgICByXCYjMzQ7XkB0aW1lcl9zdGFydFxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldJiM0MzspLFxcVyooP1BcdTAwM2NpbmRleFx1MDAzZVswLTldJiM0MzspXFxdOlxcVyg/UFx1MDAzY3N0YXJ0X3RpbWVfdXNcdTAwM2VbLTAtOV0mIzQzOylcJiMzNDtcbiYjNDM7ICApXG4mIzQzOyAgZHVyYXRpb25fcmVnZXggPSByZS5jb21waWxlKFxuJiM0MzsgICAgICByXCYjMzQ7XkB0aW1lcl9kdXJhdGlvblxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldJiM0MzspLFxcVyooP1BcdTAwM2NpbmRleFx1MDAzZVswLTldJiM0MzspXFxdOlxcVyg/UFx1MDAzY2R1cmF0aW9uX3VzXHUwMDNlWy0wLTldJiM0MzspXCYjMzQ7XG4mIzQzOyAgKVxuJiM0MzsgIGRlcHRoX3JlZ2V4ID0gcmUuY29tcGlsZShcbiYjNDM7ICAgICAgclwmIzM0O15AdGltZXJfZGVwdGhcXFsoP1BcdTAwM2N0aWRcdTAwM2VbMC05XSYjNDM7KSxcXFcqKD9QXHUwMDNjaW5kZXhcdTAwM2VbMC05XSYjNDM7KVxcXTpcXFcoP1BcdTAwM2NkZXB0aFx1MDAzZVstMC05XSYjNDM7KVwmIzM0O1xuJiM0MzsgIClcbiYjNDM7XG4mIzQzOyAgYXR0YWNoaW5nX3JlZ2V4ID0gcmUuY29tcGlsZShcbiYjNDM7ICAgICAgclwmIzM0O15BdHRhY2hpbmcuKlwmIzM0O1xuJiM0MzsgIClcbiYjNDM7XG4mIzQzOyAgIyBHZXQgYWxsIGNvdW50cy4gIFRoYXQgd2F5IHdlIGtub3cgaG93IG1hbnkgdGltZXJzIGVhY2ggdGhyZWFkIHVzZWQuXG4mIzQzOyAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzKTpcbiYjNDM7ICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpXG4mIzQzO1xuJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSlcbiYjNDM7ICAgIGlmIG06XG4mIzQzOyAgICAgIHRpZCA9IGludChtLmdyb3VwKFwmIzM0O3RpZFwmIzM0OykpXG4mIzQzOyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXCYjMzQ7aW5kZXhcJiMzNDspKVxuJiM0MzsgICAgICBkdXJhdGlvbl9zdHIgPSBtLmdyb3VwKFwmIzM0O2R1cmF0aW9uX3VzXCYjMzQ7KVxuJiM0MzsgICAgICBkdXJhdGlvbiA9IGludChtLmdyb3VwKFwmIzM0O2R1cmF0aW9uX3VzXCYjMzQ7KSlcbiYjNDM7XG4mIzQzOyAgICAgIGlmIG5vdCB0aWQgaW4gdGltZXJfY291bnRzOlxuJiM0MzsgICAgICAgIHRpbWVyX2NvdW50c1t0aWRdID0gaW5kZXhcbiYjNDM7ICAgICAgZWxzZTpcbiYjNDM7ICAgICAgICB0aW1lcl9jb3VudHNbdGlkXSA9IG1heCh0aW1lcl9jb3VudHNbdGlkXSwgaW5kZXgpXG4mIzQzO1xuJiM0MzsgICMgQWxsb2NhdGUgZW5vdWdoIHRpbWVycyB0byBmaXQgdGhlIHRyYWNlLlxuJiM0MzsgIGZvciB0aWQsIGNvdW50IGluIHRpbWVyX2NvdW50cy5pdGVtcygpOlxuJiM0MzsgICAgYWxsX3RpbWVyc1t0aWRdID0gW05vbmVdICogKGNvdW50ICYjNDM7IDEpXG4mIzQzO1xuJiM0MzsgICMgUG9wdWxhdGUgdGhlIHRyYWNlLlxuJiM0MzsgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5pbnB1dChmaWxlcz1maWxlcyk6XG4mIzQzOyAgICBsaW5lID0gbGluZS5yc3RyaXAoKVxuJiM0MztcbiYjNDM7ICAgIG0gPSByZS5mdWxsbWF0Y2gobmFtZV9yZWdleCwgbGluZSlcbiYjNDM7ICAgIGlmIG06XG4mIzQzOyAgICAgIHRpZCA9IGludChtLmdyb3VwKFwmIzM0O3RpZFwmIzM0OykpXG4mIzQzOyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXCYjMzQ7aW5kZXhcJiMzNDspKVxuJiM0MzsgICAgICBuYW1lID0gbS5ncm91cChcJiMzNDtuYW1lXCYjMzQ7KVxuJiM0MzsgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6XG4mIzQzOyAgICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9IEJwZlRpbWVyKFwmIzM0O1wmIzM0OywgMCwgLTEsIC0xKVxuJiM0MzsgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLm5hbWUgPSBuYW1lXG4mIzQzOyAgICAgIGNvbnRpbnVlXG4mIzQzO1xuJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChzdGFydF90aW1lX3JlZ2V4LCBsaW5lKVxuJiM0MzsgICAgaWYgbTpcbiYjNDM7ICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXCYjMzQ7dGlkXCYjMzQ7KSlcbiYjNDM7ICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcJiMzNDtpbmRleFwmIzM0OykpXG4mIzQzOyAgICAgIHN0YXJ0X3RpbWUgPSBpbnQobS5ncm91cChcJiMzNDtzdGFydF90aW1lX3VzXCYjMzQ7KSlcbiYjNDM7ICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxuJiM0MzsgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcJiMzNDtcJiMzNDssIDAsIC0xLCAtMSlcbiYjNDM7ICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XS5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZVxuJiM0MzsgICAgICBjb250aW51ZVxuJiM0MztcbiYjNDM7ICAgIG0gPSByZS5mdWxsbWF0Y2goZHVyYXRpb25fcmVnZXgsIGxpbmUpXG4mIzQzOyAgICBpZiBtOlxuJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cChcJiMzNDt0aWRcJiMzNDspKVxuJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKFwmIzM0O2luZGV4XCYjMzQ7KSlcbiYjNDM7ICAgICAgZHVyYXRpb24gPSBpbnQobS5ncm91cChcJiMzNDtkdXJhdGlvbl91c1wmIzM0OykpXG4mIzQzOyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZTpcbiYjNDM7ICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoXCYjMzQ7XCYjMzQ7LCAwLCAtMSwgLTEpXG4mIzQzOyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZHVyYXRpb25fdXMgPSBkdXJhdGlvblxuJiM0MzsgICAgICBjb250aW51ZVxuJiM0MztcbiYjNDM7ICAgIG0gPSByZS5mdWxsbWF0Y2goZGVwdGhfcmVnZXgsIGxpbmUpXG4mIzQzOyAgICBpZiBtOlxuJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cChcJiMzNDt0aWRcJiMzNDspKVxuJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKFwmIzM0O2luZGV4XCYjMzQ7KSlcbiYjNDM7ICAgICAgZGVwdGggPSBpbnQobS5ncm91cChcJiMzNDtkZXB0aFwmIzM0OykpXG4mIzQzOyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZTpcbiYjNDM7ICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoXCYjMzQ7XCYjMzQ7LCAwLCAtMSwgLTEpXG4mIzQzOyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZGVwdGggPSBkZXB0aFxuJiM0MzsgICAgICBjb250aW51ZVxuJiM0MztcbiYjNDM7ICAgIGlmIHJlLmZ1bGxtYXRjaChjb3VudF9yZWdleCwgbGluZSk6XG4mIzQzOyAgICAgICMgU2tpcCB0aGlzIGNhc2UuICBJdCYjMzk7cyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkLlxuJiM0MzsgICAgICBjb250aW51ZVxuJiM0MzsgICAgaWYgcmUuZnVsbG1hdGNoKGF0dGFjaGluZ19yZWdleCwgbGluZSk6XG4mIzQzOyAgICAgICMgU2tpcCBcJiMzNDtBdHRhY2hpbmcgWFggcHJvYmVzLi4uXCYjMzQ7XG4mIzQzOyAgICAgIGNvbnRpbnVlXG4mIzQzOyAgICBpZiBub3QgbGluZTpcbiYjNDM7ICAgICAgIyBTa2lwIGVtcHR5IHN0cmluZ3MuXG4mIzQzOyAgICAgIGNvbnRpbnVlXG4mIzQzO1xuJiM0MzsgICAgcmFpc2UgVmFsdWVFcnJvcihcJiMzNDtJbnZhbGlkIGlucHV0LCAmIzM5OyVzJiMzOTtcJiMzNDsgJSAobGluZSkpXG4mIzQzO1xuJiM0MzsgIHJvb3QgPSBCcGZSZXN1bHQoXCYjMzQ7XCYjMzQ7LCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAtMSwgLTEpXG4mIzQzOyAgcmVzdWx0cyA9IFtdXG4mIzQzOyAgZm9yIHRpZCwgdGltZXJzIGluIGFsbF90aW1lcnMuaXRlbXMoKTpcbiYjNDM7ICAgIG1lcmdlX3RpbWVycyhyb290LCB0aWQsIHRpbWVycylcbiYjNDM7ICBwcmludF9yZXN1bHRzKHJvb3QsIHJlc3VsdHMpXG4mIzQzO1xuJiM0MzsgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSA9PSAwOlxuJiM0MzsgICAgcmFpc2UgVmFsdWVFcnJvcihcJiMzNDtFeHBlY3RlZCBhIGZpbGUgdG8gcmVhZC5cJiMzNDspXG4mIzQzO1xuJiM0MzsgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSBcdTAwM2UgMTpcbiYjNDM7ICAgIHJhaXNlIFZhbHVlRXJyb3IoXCYjMzQ7VG9vIG1hbnkgZmlsZXMgcmVhZC4gIEV4cGVjdGVkIDFcJiMzNDspXG4mIzQzO1xuJiM0MztkZWYgbWFpbigpIC1cdTAwM2UgTm9uZTpcbiYjNDM7ICBcJiMzNDtcJiMzNDtcJiMzNDtNYWluIGZ1bmN0aW9uLlwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MztcbiYjNDM7ICBpZiBsZW4oc3lzLmFyZ3YpIFx1MDAzYz0gMTpcbiYjNDM7ICAgIHByaW50KFwmIzM0O0Vycm9yOiBOb3QgZW5vdWdoIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIEV4cGVjdGVkIGFuIGlucHV0IGZpbGVcJiMzNDssIGZpbGU9c3lzLnN0ZGVycilcbiYjNDM7ICAgIHN5cy5leGl0KDEpXG4mIzQzO1xuJiM0MzsgIGdlbmVyYXRlX2Zyb21fbG9nKHN5cy5hcmd2WzE6XSlcbiYjNDM7XG4mIzQzO1xuJiM0MztpZiBfX25hbWVfXyA9PSBcJiMzNDtfX21haW5fX1wmIzM0OzpcbiYjNDM7ICBtYWluKClcbmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnRcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYmQzNDFlNDA4NTcwZWNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL2t2bV90cmFjZS5idFxuQEAgLTAsMCAmIzQzOzEsMTk3IEBAXG4mIzQzOyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMClcbiYjNDM7I2RlZmluZSBtc2VjcyAobnNlY3MgLyAxMDAwIC8gMTAwMClcbiYjNDM7I2RlZmluZSBEVVJBVElPTl9VTlNFVCAoKHVpbnQ2NCktMSlcbiYjNDM7XG4mIzQzO2NvbmZpZyA9IHsgbWF4X21hcF9rZXlzPTQxOTQzMDQ7IH1cbiYjNDM7XG4mIzQzO21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXG4mIzQzO3tcbiYjNDM7XHRAdHJhY2Vfc3RhY2tfdG9wWzBdID0gMDtcbiYjNDM7XHRAdGltZXJfY291bnRbMF0gPSAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzttYWNybyBDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxuJiM0Mzt7XG4mIzQzO1x0Y2xlYXIoQHRyYWNlX3N0YWNrKTtcbiYjNDM7XHRjbGVhcihAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7XHRjbGVhcihAdGltZXJfY291bnQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzttYWNybyBTVEFSVF9USU1FUihuYW1lLCBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApXG4mIzQzO3tcbiYjNDM7XHRAdGltZXJfbmFtZVt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IG5hbWU7XG4mIzQzO1x0QHRyYWNlX3N0YWNrW3RpZCwgQHRyYWNlX3N0YWNrX3RvcFt0aWRdXSA9IEB0aW1lcl9jb3VudFt0aWRdO1xuJiM0MztcdEB0aW1lcl9zdGFydFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IHVzZWNzO1xuJiM0MztcdEB0aW1lcl9kdXJhdGlvblt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IERVUkFUSU9OX1VOU0VUO1xuJiM0MztcdEB0aW1lcl9kZXB0aFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IEB0cmFjZV9zdGFja190b3BbdGlkXTtcbiYjNDM7XHRAdGltZXJfY291bnRbdGlkXSYjNDM7JiM0Mzs7XG4mIzQzO1x0QHRyYWNlX3N0YWNrX3RvcFt0aWRdJiM0MzsmIzQzOztcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVW5mb3J0dW5hdGVseSBicmFuY2ggc3RhdGVtZW50cyBjcmFzaCB0aGUgYnBmdHJhY2UgY29tcGlsZXIuICBBcyBhIHJlc3VsdCxcbiYjNDM7ICogdGhlIGJyYW5jaCBoYXMgYmVlbiBtb3ZlZCBkaXJlY3RseSBpbnRvIHRoZSBwcm9iZS4gIFJldmVyc2UgdGhpcyBpZiB0aGVcbiYjNDM7ICogY29tcGlsZXIgZXZlciBnZXRzIHRoYXQgZml4ZWQuXG4mIzQzOyAqL1xuJiM0MzttYWNybyBTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpXG4mIzQzO3tcbiYjNDM7XHQkaWR4ID0gQHRyYWNlX3N0YWNrW3RpZCwgLS1AdHJhY2Vfc3RhY2tfdG9wW3RpZF1dO1xuJiM0MztcdEB0aW1lcl9kdXJhdGlvblt0aWQsICRpZHhdID0gdXNlY3MgLSBAdGltZXJfc3RhcnRbdGlkLCAkaWR4XTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7QkVHSU5cbiYjNDM7e1xuJiM0MztcdElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX3NjaGVkX2luKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fc2NoZWRfaW4gL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOmt2bV9zY2hlZF9pblxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX3NjaGVkX2luXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzprdm1fc2NoZWRfaW5cbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX3NjaGVkX291dCgpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3NjaGVkX291dCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6a3ZtX3NjaGVkX291dFxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX3NjaGVkX291dFwmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2tyZXRmdW5jOmt2bV9zY2hlZF9vdXRcbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX2FyY2hfdmNwdV9sb2FkKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fYXJjaF92Y3B1X2xvYWQgL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOmt2bV9hcmNoX3ZjcHVfbG9hZFxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX2FyY2hfdmNwdV9sb2FkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X2xvYWRcbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX2FyY2hfdmNwdV9wdXQoKSYjMzk7LlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfcHV0IC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzprdm1fYXJjaF92Y3B1X3B1dFxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX2FyY2hfdmNwdV9wdXRcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOmt2bV9hcmNoX3ZjcHVfcHV0XG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSAmIzM5O0tWTV9SVU4mIzM5OywgaS5lLiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpLlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuIC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzprdm1fYXJjaF92Y3B1X2lvY3RsX3J1blxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOmt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSBob3cgbG9uZyBhIGd1ZXN0IHJ1bnMgdXNpbmcgdHJhY2Vwb2ludHMgXCYjMzQ7a3ZtX2VudHJ5XCYjMzQ7IGFuZCBcJiMzNDtrdm1fZXhpdFwmIzM0Oy5cbiYjNDM7ICovXG4mIzQzO3RyYWNlcG9pbnQ6a3ZtOmt2bV9lbnRyeVxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7cnVuX2d1ZXN0XCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0Mzt0cmFjZXBvaW50Omt2bTprdm1fZXhpdFxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTtrdm1fdmNwdV9ibG9jaygpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3ZjcHVfYmxvY2sgL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOmt2bV92Y3B1X2Jsb2NrXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDtrdm1fdmNwdV9ibG9ja1wmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6a3ZtX3ZjcHVfYmxvY2tcbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX21tdV9wYWdlX2ZhdWx0KCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fbW11X3BhZ2VfZmF1bHQgL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOmt2bV9tbXVfcGFnZV9mYXVsdFxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX3ZjcHVfYmxvY2tcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOmt2bV9tbXVfcGFnZV9mYXVsdFxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LlxuJiM0MzsgKi9cbiYjNDM7RU5EXG4mIzQzO3tcbiYjNDM7XHRDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL3ZmaW9fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNiOGNiN2ZmNjIxMGRlXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XG5AQCAtMCwwICYjNDM7MSwzMTUgQEBcbiYjNDM7I2RlZmluZSB1c2VjcyAobnNlY3MgLyAxMDAwKVxuJiM0MzsjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKVxuJiM0MzsjZGVmaW5lIERVUkFUSU9OX1VOU0VUICgodWludDY0KS0xKVxuJiM0MztcbiYjNDM7Y29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfVxuJiM0MztcbiYjNDM7bWFjcm8gSU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudClcbiYjNDM7e1xuJiM0MztcdEB0cmFjZV9zdGFja190b3BbMF0gPSAwO1xuJiM0MztcdEB0aW1lcl9jb3VudFswXSA9IDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO21hY3JvIENMRUFSX01BUFMoQHRyYWNlX3N0YWNrLCBAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXG4mIzQzO3tcbiYjNDM7XHRjbGVhcihAdHJhY2Vfc3RhY2spO1xuJiM0MztcdGNsZWFyKEB0cmFjZV9zdGFja190b3ApO1xuJiM0MztcdGNsZWFyKEB0aW1lcl9jb3VudCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO21hY3JvIFNUQVJUX1RJTUVSKG5hbWUsIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcClcbiYjNDM7e1xuJiM0MztcdEB0aW1lcl9uYW1lW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gbmFtZTtcbiYjNDM7XHRAdHJhY2Vfc3RhY2tbdGlkLCBAdHJhY2Vfc3RhY2tfdG9wW3RpZF1dID0gQHRpbWVyX2NvdW50W3RpZF07XG4mIzQzO1x0QHRpbWVyX3N0YXJ0W3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gdXNlY3M7XG4mIzQzO1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gRFVSQVRJT05fVU5TRVQ7XG4mIzQzO1x0QHRpbWVyX2RlcHRoW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gQHRyYWNlX3N0YWNrX3RvcFt0aWRdO1xuJiM0MztcdEB0aW1lcl9jb3VudFt0aWRdJiM0MzsmIzQzOztcbiYjNDM7XHRAdHJhY2Vfc3RhY2tfdG9wW3RpZF0mIzQzOyYjNDM7O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBVbmZvcnR1bmF0ZWx5IGJyYW5jaCBzdGF0ZW1lbnRzIGNyYXNoIHRoZSBicGZ0cmFjZSBjb21waWxlci4gIEFzIGEgcmVzdWx0LFxuJiM0MzsgKiB0aGUgYnJhbmNoIGhhcyBiZWVuIG1vdmVkIGRpcmVjdGx5IGludG8gdGhlIHByb2JlLiAgUmV2ZXJzZSB0aGlzIGlmIHRoZVxuJiM0MzsgKiBjb21waWxlciBldmVyIGdldHMgdGhhdCBmaXhlZC5cbiYjNDM7ICovXG4mIzQzO21hY3JvIFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydClcbiYjNDM7e1xuJiM0MztcdCRpZHggPSBAdHJhY2Vfc3RhY2tbdGlkLCAtLUB0cmFjZV9zdGFja190b3BbdGlkXV07XG4mIzQzO1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztCRUdJTlxuJiM0Mzt7XG4mIzQzO1x0SU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2dyb3VwX2ZvcHNfdW5sX2lvY3RsKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZEID0gMHgzYjZhXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvYXJncy1cdTAwM2VjbWQgPT0gMHgzYjZhL1xuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7dmZpb19ncm91cF9pb2N0bF9nZXRfZGV2aWNlX2ZkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzp2ZmlvX2dyb3VwX2ZvcHNfdW5sX2lvY3RsIC9hcmdzLVx1MDAzZWNtZCA9PSAweDNiNmEvXG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSAmIzM5O3ZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcbiYjNDM7e1xuJiM0MztcdFNUQVJUX1RJTUVSKFwmIzM0O3ZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzp2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZFxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2RmX3VuYmluZF9pb21tdWZkKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2RmX3VuYmluZF9pb21tdWZkIC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzp2ZmlvX2RmX3VuYmluZF9pb21tdWZkXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2ZmlvX2RmX3VuYmluZF9pb21tdWZkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzp2ZmlvX2RmX3VuYmluZF9pb21tdWZkXG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSAmIzM5O3ZmaW9fZGZfb3BlbigpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl9vcGVuIC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzp2ZmlvX2RmX29wZW5cbiYjNDM7e1xuJiM0MztcdFNUQVJUX1RJTUVSKFwmIzM0O3ZmaW9fZGZfb3BlblwmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6dmZpb19kZl9vcGVuXG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSAmIzM5O3BjaWVfZmxyKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2llX2ZsciAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6cGNpZV9mbHJcbiYjNDM7e1xuJiM0MztcdFNUQVJUX1RJTUVSKFwmIzM0O3BjaWVfZmxyXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzpwY2llX2ZsclxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTtwY2lfZGV2X3dhaXQoKSYjMzk7LlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHBjaV9kZXZfd2FpdCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6cGNpX2Rldl93YWl0XG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDtwY2lfZGV2X3dhaXRcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnBjaV9kZXZfd2FpdFxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCkmIzM5OyB3aGVuICYjMzk7VkZJT19JT01NVV9NQVBfRE1BJiMzOTsgaXMgY2FsbGVkLlxuJiM0MzsgKlxuJiM0MzsgKlxuJiM0MzsgKiBWRklPX0lPTU1VX01BUF9ETUEgPSAweDNiNzFcbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVx1MDAzZWNtZCA9PSAweDNiNzEvXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2ZmlvX2lvbW11X3R5cGUxX21hcF9kbWFcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I3MS9cbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7dmZpb19waW5fbWFwX2RtYSgpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19waW5fbWFwX2RtYSAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19waW5fbWFwX2RtYVxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7dmZpb19waW5fbWFwX2RtYVwmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6dmZpb19waW5fbWFwX2RtYVxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX3Bpbl9wYWdlc19yZW1vdGUoKSYjMzk7LlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fcGluX3BhZ2VzX3JlbW90ZSAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19waW5fcGFnZXNfcmVtb3RlXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2ZmlvX3Bpbl9wYWdlc19yZW1vdGVcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnZmaW9fcGluX3BhZ2VzX3JlbW90ZVxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2YWRkcl9nZXRfcGZucygpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmFkZHJfZ2V0X3BmbnMgL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOnZhZGRyX2dldF9wZm5zXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2YWRkcl9nZXRfcGZuc1wmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6dmFkZHJfZ2V0X3BmbnNcbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvLyAvKlxuJiM0MzsvLyAgKiBUaW1lICYjMzk7aW9tbXVfbWFwKCkmIzM5Oy5cbiYjNDM7Ly8gICpcbiYjNDM7Ly8gICogQ2hlY2s6IHN1ZG8gZ3JlcCBpb21tdV9tYXAgL3Byb2Mva2FsbHN5bXNcbiYjNDM7Ly8gICovXG4mIzQzOy8vIGtmdW5jOmlvbW11X21hcFxuJiM0MzsvLyB7XG4mIzQzOy8vIFx0U1RBUlRfVElNRVIoXCYjMzQ7aW9tbXVfbWFwXCYjMzQ7LFxuJiM0MzsvLyBcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MzsvLyBcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7Ly8gfVxuJiM0MzsvLyBrcmV0ZnVuYzppb21tdV9tYXBcbiYjNDM7Ly8ge1xuJiM0MzsvLyBcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7Ly8gXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzOy8vIFx0fVxuJiM0MzsvLyB9XG4mIzQzO1xuJiM0MztcbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCkmIzM5OyB3aGVuICYjMzk7VkZJT19JT01NVV9VTk1BUF9ETUEmIzM5OyBpcyBjYWxsZWQuXG4mIzQzOyAqXG4mIzQzOyAqIFZGSU9fSU9NTVVfVU5NQVBfRE1BID0gMHgzYjcyXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19pb21tdV90eXBlMV9pb2N0bCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy1cdTAwM2VjbWQgPT0gMHgzYjcyL1xuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7dmZpb19pb21tdV90eXBlMV91bm1hcF9kbWFcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I3Mi9cbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7dmZpb191bm1hcF91bnBpbigpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb191bm1hcF91bnBpbiAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb191bm1hcF91bnBpblxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7dmZpb191bm1hcF91bnBpblwmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6dmZpb191bm1hcF91bnBpblxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX3N5bmNfdW5waW4oKSYjMzk7LlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fc3luY191bnBpbiAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19zeW5jX3VucGluXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2ZmlvX3N5bmNfdW5waW5cJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnZmaW9fc3luY191bnBpblxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LlxuJiM0MzsgKi9cbiYjNDM7RU5EXG4mIzQzO3tcbiYjNDM7XHRDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBicGZ0cmFjZSBzY3JpcHRzIGFuZCBhIHB5dGhvbiBzY3JpcHQgZm9yIHByb2ZpbGluZyB1bmRlciB0b29scy9icGZ0cmFjZS8uIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIGFuZCB0aGVyZWZvcmUgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTU4YWU0ZWM3MzYwYTA1M2I0NWZiNDdhZGUyNTk1ZDk0YTBjMDRjMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDIyOjA5OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weSBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9hZ2dyZWdhdGVfYnBmX3Jlc3VsdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmY0ZmZlOGNmZjQ0MThlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weQpAQCAtMCwwICYjNDM7MSwzMTggQEAKJiM0MzsjIS91c3IvYmluL2VudiBweXRob24zCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgomIzQzOyMKJiM0MzsjIFByaW50cyB0aGUgYWdncmVnYXRlIHJlc3VsdHMgb2YgYW4gaW5zdHJ1bWVudGVkIEJQRiB0cmFjZS4KJiM0MzsjCiYjNDM7IyBDb3B5cmlnaHQgMjAyNiBHb29nbGUgTExDCiYjNDM7IwomIzQzOyMgQXV0aG9yOiBBYXJvbiBMZXdpcyAmbHQ7YWFyb25sZXdpc0Bnb29nbGUuY29tJmd0OwomIzQzOwomIzQzO2ltcG9ydCBmaWxlaW5wdXQKJiM0MztpbXBvcnQgcmUKJiM0MztpbXBvcnQgc3lzCiYjNDM7aW1wb3J0IHdhcm5pbmdzCiYjNDM7ZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIFNlcXVlbmNlCiYjNDM7CiYjNDM7Y2xhc3MgUHJvZmlsZXJSZXN1bHQ6CiYjNDM7ICAmIzM0OyYjMzQ7JiMzNDtDbGFzcyBmb3IgaG9sZGluZyB0aGUgcHJvZmlsZXIgcmVzdWx0cy4mIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgIGRlZiBfX2luaXRfXygKJiM0MzsgICAgICBzZWxmLAomIzQzOyAgICAgIG5hbWU6IHN0ciwKJiM0MzsgICAgICB0aHJlYWRfdXNlYzogaW50LAomIzQzOyAgICAgIHdhbGxfdXNlYzogaW50LAomIzQzOyAgICAgIG1heF91c2VjOiBpbnQsCiYjNDM7ICAgICAgYXZnX3VzZWM6IGludCwKJiM0MzsgICAgICBjb3VudDogaW50LAomIzQzOyAgICAgIHRocmVhZF9jb3VudDogaW50LAomIzQzOyAgICAgIGluY29tcGxldGVfY291bnQ6IGludCwKJiM0MzsgICAgICBkZXB0aDogaW50LAomIzQzOyAgKToKJiM0MzsgICAgc2VsZi5uYW1lID0gbmFtZQomIzQzOyAgICBzZWxmLnRocmVhZF91c2VjID0gdGhyZWFkX3VzZWMKJiM0MzsgICAgc2VsZi53YWxsX3VzZWMgPSB3YWxsX3VzZWMKJiM0MzsgICAgc2VsZi5tYXhfdXNlYyA9IG1heF91c2VjCiYjNDM7ICAgIHNlbGYuYXZnX3VzZWMgPSBhdmdfdXNlYwomIzQzOyAgICBzZWxmLmNvdW50ID0gY291bnQKJiM0MzsgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnQKJiM0MzsgICAgc2VsZi5pbmNvbXBsZXRlX2NvdW50ID0gaW5jb21wbGV0ZV9jb3VudAomIzQzOyAgICBzZWxmLmRlcHRoID0gZGVwdGgKJiM0MzsKJiM0MztjbGFzcyBCcGZUaW1lcjoKJiM0MzsgICYjMzQ7JiMzNDsmIzM0O0NsYXNzIGZvciBob2xkaW5nIGEgdGltZXIuJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICBkZWYgX19pbml0X18oCiYjNDM7ICAgICAgc2VsZiwKJiM0MzsgICAgICBuYW1lOiBzdHIsCiYjNDM7ICAgICAgc3RhcnRfdGltZV91czogaW50LAomIzQzOyAgICAgIGR1cmF0aW9uX3VzOiBpbnQsCiYjNDM7ICAgICAgZGVwdGg6IGludCwKJiM0MzsgICk6CiYjNDM7ICAgIHNlbGYubmFtZSA9IG5hbWUKJiM0MzsgICAgc2VsZi5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZV91cwomIzQzOyAgICBzZWxmLmR1cmF0aW9uX3VzID0gZHVyYXRpb25fdXMKJiM0MzsgICAgc2VsZi5kZXB0aCA9IGRlcHRoCiYjNDM7CiYjNDM7Y2xhc3MgQnBmUmVzdWx0OgomIzQzOyAgJiMzNDsmIzM0OyYjMzQ7Q2xhc3MgZm9yIGhvbGRpbmcgdGhlIHByb2ZpbGVyIHJlc3VsdHMuJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICBkZWYgX19pbml0X18oCiYjNDM7ICAgICAgc2VsZiwKJiM0MzsgICAgICBuYW1lOiBzdHIsCiYjNDM7ICAgICAgd2FsbF90aW1lX3N0YXJ0X3VzOiBpbnQsCiYjNDM7ICAgICAgd2FsbF90aW1lX2VuZF91czogaW50LAomIzQzOyAgICAgIHRocmVhZF91czogaW50LAomIzQzOyAgICAgIG1heF91czogaW50LAomIzQzOyAgICAgIGF2Z191czogaW50LAomIzQzOyAgICAgIGNvdW50OiBpbnQsCiYjNDM7ICAgICAgdGhyZWFkX2NvdW50OiBpbnQsCiYjNDM7ICAgICAgZGVwdGg6IGludCwKJiM0MzsgICAgICB0aWQ6IGludCwKJiM0MzsgICk6CiYjNDM7ICAgIHNlbGYubmFtZSA9IG5hbWUKJiM0MzsgICAgc2VsZi53YWxsX3RpbWVfc3RhcnRfdXMgPSB3YWxsX3RpbWVfc3RhcnRfdXMKJiM0MzsgICAgc2VsZi53YWxsX3RpbWVfZW5kX3VzID0gd2FsbF90aW1lX2VuZF91cwomIzQzOyAgICBzZWxmLnRocmVhZF91cyA9IHRocmVhZF91cwomIzQzOyAgICBzZWxmLm1heF91cyA9IG1heF91cwomIzQzOyAgICBzZWxmLmF2Z191cyA9IGF2Z191cwomIzQzOyAgICBzZWxmLmNvdW50ID0gY291bnQKJiM0MzsgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnQKJiM0MzsgICAgc2VsZi5kZXB0aCA9IGRlcHRoCiYjNDM7ICAgIHNlbGYuY2hpbGRyZW4gPSBbXQomIzQzOyAgICBzZWxmLmNoaWxkX2luZGV4ID0ge30KJiM0MzsgICAgc2VsZi50aHJlYWRzID0ge30KJiM0MzsgICAgc2VsZi50aHJlYWRzW3RpZF0gPSBUcnVlCiYjNDM7CiYjNDM7ZGVmIHVwZGF0ZV9jaGlsZChyOiBCcGZSZXN1bHQsIHRpbWVyOiBCcGZUaW1lciwgdGlkOiBpbnQpIC0mZ3Q7IGludDoKJiM0MzsgIGkgPSByLmNoaWxkX2luZGV4LmdldCh0aW1lci5uYW1lKQomIzQzOyAgaWYgaSBpcyBOb25lOgomIzQzOyAgICBpID0gbGVuKHIuY2hpbGRyZW4pCiYjNDM7ICAgIHIuY2hpbGRyZW4uYXBwZW5kKEJwZlJlc3VsdCgKJiM0MzsgICAgICAgIHRpbWVyLm5hbWUsCiYjNDM7ICAgICAgICB0aW1lci5zdGFydF90aW1lX3VzLAomIzQzOyAgICAgICAgdGltZXIuc3RhcnRfdGltZV91cyAmIzQzOyB0aW1lci5kdXJhdGlvbl91cywKJiM0MzsgICAgICAgIHRpbWVyLmR1cmF0aW9uX3VzLAomIzQzOyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsCiYjNDM7ICAgICAgICB0aW1lci5kdXJhdGlvbl91cywKJiM0MzsgICAgICAgIDEsCiYjNDM7ICAgICAgICAxLAomIzQzOyAgICAgICAgdGltZXIuZGVwdGgsCiYjNDM7ICAgICAgICB0aWQpKQomIzQzOyAgICByLmNoaWxkX2luZGV4W3RpbWVyLm5hbWVdID0gaQomIzQzOyAgZWxzZToKJiM0MzsgICAgci5jaGlsZHJlbltpXS53YWxsX3RpbWVfc3RhcnRfdXMgPSBtaW4oci5jaGlsZHJlbltpXS53YWxsX3RpbWVfc3RhcnRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMpCiYjNDM7ICAgIHIuY2hpbGRyZW5baV0ud2FsbF90aW1lX2VuZF91cyA9IG1heChyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9lbmRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMgJiM0MzsgdGltZXIuZHVyYXRpb25fdXMpCiYjNDM7ICAgIHIuY2hpbGRyZW5baV0udGhyZWFkX3VzICYjNDM7PSB0aW1lci5kdXJhdGlvbl91cwomIzQzOyAgICByLmNoaWxkcmVuW2ldLm1heF91cyA9IG1heChyLmNoaWxkcmVuW2ldLm1heF91cywgdGltZXIuZHVyYXRpb25fdXMpCiYjNDM7ICAgIHIuY2hpbGRyZW5baV0uY291bnQgJiM0Mzs9IDEKJiM0MzsgICAgci5jaGlsZHJlbltpXS5hdmdfdXMgPSByLmNoaWxkcmVuW2ldLnRocmVhZF91cyAvIHIuY2hpbGRyZW5baV0uY291bnQKJiM0MzsgICAgaWYgci5jaGlsZHJlbltpXS50aHJlYWRzLmdldCh0aWQpIGlzIE5vbmU6CiYjNDM7ICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRzW3RpZF0gPSBUcnVlCiYjNDM7ICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRfY291bnQgJiM0Mzs9IDEKJiM0MzsKJiM0MzsgIHJldHVybiBpCiYjNDM7CiYjNDM7ZGVmIG1lcmdlX3JlY3Vyc2l2ZShyOiBCcGZSZXN1bHQsIHRpZDogaW50LCB0aW1lcnM6IExpc3RbQnBmVGltZXJdLCBpbmRleDogaW50LCBjaGlsZF9pbmRleDogaW50KSAtJmd0OyBpbnQ6CiYjNDM7ICB3aGlsZSBpbmRleCAmbHQ7IGxlbih0aW1lcnMpOgomIzQzOyAgICB3aGlsZSBpbmRleCAmbHQ7IGxlbih0aW1lcnMpIGFuZCB0aW1lcnNbaW5kZXhdID09IE5vbmU6CiYjNDM7ICAgICAgaW5kZXggJiM0Mzs9IDEKJiM0MzsKJiM0MzsgICAgaWYgaW5kZXggJmd0Oz0gbGVuKHRpbWVycyk6CiYjNDM7ICAgICAgcmV0dXJuIGluZGV4CiYjNDM7CiYjNDM7ICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJiMzOTtyJiMzOTsuIChDaGlsZCBjYXNlKQomIzQzOyAgICBpZiB0aW1lcnNbaW5kZXhdLmRlcHRoID09IChyLmRlcHRoICYjNDM7IDEpOgomIzQzOyAgICAgICMgQWRkIGNoaWxkCiYjNDM7ICAgICAgY2hpbGRfaW5kZXggPSB1cGRhdGVfY2hpbGQociwgdGltZXJzW2luZGV4XSwgdGlkKQomIzQzOwomIzQzOyAgICAgICMgTm93IHRoYXQgdGhlIHRpbWVyIGhhcyBiZWVuIGhhbmRsZWQgaW5jcmVtZW50IHRvIHRoZSBuZXh0IG9uZS4KJiM0MzsgICAgICBpbmRleCAmIzQzOz0gMQomIzQzOwomIzQzOyAgICAjIFRoZSB0aW1lciBpcyBhIGNoaWxkIG9mICYjMzk7ciYjMzk7LiAoR3JhbmRjaGlsZCBjYXNlKQomIzQzOyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggPT0gKHIuZGVwdGggJiM0MzsgMik6CiYjNDM7ICAgICAgaWYgY2hpbGRfaW5kZXggJmx0OyAwOgomIzQzOyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigmIzM0O0ludmFsaWQgJiMzOTtjaGlsZF9pbmRleCYjMzk7JiMzNDspCiYjNDM7ICAgICAgIyBSZWN1cnNlIGRvd24gdGhlIGNoaWxkIGJlY3Vhc2UgdGhhdCBpcyB0aGUgcGFyZW50IHRoaXMgdGltZXIuCiYjNDM7ICAgICAgaW5kZXggPSBtZXJnZV9yZWN1cnNpdmUoci5jaGlsZHJlbltjaGlsZF9pbmRleF0sIHRpZCwgdGltZXJzLCBpbmRleCwgY2hpbGRfaW5kZXgpCiYjNDM7CiYjNDM7ICAgICMgVGhlIHRpbWVyIGlzIGEgZGVzY2VuZGFudCBvZiAmIzM5O3ImIzM5OywgYnV0IG5vdCB0aGUgY2hpbGQuLi4gSW52YWxpZCBjYXNlIQomIzQzOyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggJmd0OyAoci5kZXB0aCAmIzQzOyAyKToKJiM0MzsgICAgICByYWlzZSBWYWx1ZUVycm9yKCYjMzQ7SW52YWxpZCBkZXB0aC4gIGRlc2NlbmRhbnQgY2FuIG9ubHkgYmUgY2hpbGRyZW4uIG5hbWUgPSAmIzM5OyVzJiMzOTssIHRpZCA9ICVkLCBpbmRleCA9ICVkJiMzNDsgJSAodGltZXJzW2luZGV4XS5uYW1lLCB0aWQsIGluZGV4KSkKJiM0MzsKJiM0MzsgICAgIyBOZXcgZmFtaWx5IHRyZWUuICBQb3Agb3V0IG9mIHRoaXMgb25lLgomIzQzOyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggJmx0Oz0gci5kZXB0aDoKJiM0MzsgICAgICAjIFRoZSB0aW1lciBpcyBhbiBhbmNlc3RvciBvZiAmIzM5O3ImIzM5Oy4gIFJldHVybiBzbyBpdCBjYW4gYmUgcHJvY2Vzc2VkIGVsc2V3aGVyZS4KJiM0MzsgICAgICByZXR1cm4gaW5kZXgKJiM0MzsKJiM0MzsgIHJldHVybiBpbmRleAomIzQzOwomIzQzO2RlZiBtZXJnZV90aW1lcnMocjogQnBmUmVzdWx0LCB0aWQ6IGludCwgdGltZXJzOiBMaXN0W0JwZlRpbWVyXSk6CiYjNDM7ICBpZiBsZW4odGltZXJzKSA9PSAwOgomIzQzOyAgICByZXR1cm4KJiM0MzsKJiM0MzsgIGlmIHRpbWVyc1swXS5kZXB0aCAhPSAwOgomIzQzOyAgICByYWlzZSBWYWx1ZUVycm9yKCYjMzQ7RXhwZWN0ZWQgYSBkZXB0aCBvZiAwLiAgJiMzOTslcyYjMzk7LCBkZXB0aCA9ICVkJiMzNDsgJSAodGltZXJzWzBdLm5hbWUsIHRpbWVyc1swXS5kZXB0aCkpCiYjNDM7CiYjNDM7ICBtZXJnZV9yZWN1cnNpdmUociwgdGlkLCB0aW1lcnMsIDAsIC0xKQomIzQzOwomIzQzO2RlZiBwcmludF9yZWN1cnNpdmUocjogQnBmUmVzdWx0LCByZXN1bHRzIDogTGlzdFtQcm9maWxlclJlc3VsdF0pOgomIzQzOyAgdGhyZWFkX3RpbWUgPSBmbG9hdChyLnRocmVhZF91cykgLyAxMDAwLjAKJiM0MzsgIHdhbGxfdGltZV91cyA9IHIud2FsbF90aW1lX2VuZF91cyAtIHIud2FsbF90aW1lX3N0YXJ0X3VzCiYjNDM7ICB3YWxsX3RpbWUgPSBmbG9hdCh3YWxsX3RpbWVfdXMpIC8gMTAwMC4wCiYjNDM7ICBtYXhfdGltZSA9IGZsb2F0KHIubWF4X3VzKSAvIDEwMDAuMAomIzQzOyAgYXZnX3RpbWUgPSBmbG9hdChyLmF2Z191cykgLyAxMDAwLjAKJiM0MzsKJiM0MzsgIGluZGVudCA9ICYjMzQ7JiMzNDsKJiM0MzsgIGZvciBpIGluIHJhbmdlKHIuZGVwdGgpOgomIzQzOyAgICBpbmRlbnQgJiM0Mzs9ICYjMzQ7ICAmIzM0OwomIzQzOwomIzQzOyAgcHJpbnQoJiMzNDslcyVzLCB0aHJlYWRfdGltZSA9ICUuMmZtcywgd2FsbF90aW1lID0gJS4yZm1zLCBtYXggPSAlLjJmLCBhdmcgPSAlLjJmLCBjb3VudCA9ICVkLCB0aHJlYWRfY291bnQgPSAlZCYjMzQ7ICUKJiM0MzsgICAgICAgIChpbmRlbnQsIHIubmFtZSwgdGhyZWFkX3RpbWUsIHdhbGxfdGltZSwgbWF4X3RpbWUsIGF2Z190aW1lLCByLmNvdW50LCByLnRocmVhZF9jb3VudCkpOwomIzQzOwomIzQzOyAgcmVzdWx0cy5hcHBlbmQoCiYjNDM7ICAgICAgUHJvZmlsZXJSZXN1bHQoCiYjNDM7ICAgICAgICAgIHIubmFtZSwKJiM0MzsgICAgICAgICAgci50aHJlYWRfdXMsCiYjNDM7ICAgICAgICAgIHdhbGxfdGltZV91cywKJiM0MzsgICAgICAgICAgci5tYXhfdXMsCiYjNDM7ICAgICAgICAgIHIuYXZnX3VzLAomIzQzOyAgICAgICAgICByLmNvdW50LAomIzQzOyAgICAgICAgICByLnRocmVhZF9jb3VudCwKJiM0MzsgICAgICAgICAgMCwKJiM0MzsgICAgICAgICAgci5kZXB0aCwKJiM0MzsgICAgICApCiYjNDM7ICApCiYjNDM7CiYjNDM7ICBmb3IgY2hpbGQgaW4gci5jaGlsZHJlbjoKJiM0MzsgICAgcHJpbnRfcmVjdXJzaXZlKGNoaWxkLCByZXN1bHRzKQomIzQzOwomIzQzO2RlZiBwcmludF9yZXN1bHRzKHI6IEJwZlJlc3VsdCwgcmVzdWx0cyA6IExpc3RbUHJvZmlsZXJSZXN1bHRdKToKJiM0MzsgIGZvciBjaGlsZCBpbiByLmNoaWxkcmVuOgomIzQzOyAgICBwcmludF9yZWN1cnNpdmUoY2hpbGQsIHJlc3VsdHMpCiYjNDM7CiYjNDM7ZGVmIGdlbmVyYXRlX2Zyb21fbG9nKGZpbGVzOiBTZXF1ZW5jZVtzdHJdKToKJiM0MzsgICYjMzQ7JiMzNDsmIzM0O1JlYWQgdGhlIHRyYWNlIGFuZCByZXR1cm4gYSBsaXN0IG9mIFByb2ZpbGVyUmVzdWx0IG9iamVjdHMuJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICB0aW1lcl9jb3VudHMgPSB7fQomIzQzOyAgYWxsX3RpbWVycyA9IHt9CiYjNDM7CiYjNDM7ICBjb3VudF9yZWdleCA9IHJlLmNvbXBpbGUoCiYjNDM7ICAgICAgciYjMzQ7XkB0aW1lcl9jb3VudFxbKD9QJmx0O3RpZCZndDtbMC05XSYjNDM7KVxdOlxXKD9QJmx0O2NvdW50Jmd0O1stMC05XSYjNDM7KSYjMzQ7CiYjNDM7ICApCiYjNDM7ICBuYW1lX3JlZ2V4ID0gcmUuY29tcGlsZSgKJiM0MzsgICAgICByJiMzNDteQHRpbWVyX25hbWVcWyg/UCZsdDt0aWQmZ3Q7WzAtOV0mIzQzOyksXFcqKD9QJmx0O2luZGV4Jmd0O1swLTldJiM0MzspXF06XFcoP1AmbHQ7bmFtZSZndDtbXHdcLjAtOV0mIzQzOykmIzM0OwomIzQzOyAgKQomIzQzOyAgc3RhcnRfdGltZV9yZWdleCA9IHJlLmNvbXBpbGUoCiYjNDM7ICAgICAgciYjMzQ7XkB0aW1lcl9zdGFydFxbKD9QJmx0O3RpZCZndDtbMC05XSYjNDM7KSxcVyooP1AmbHQ7aW5kZXgmZ3Q7WzAtOV0mIzQzOylcXTpcVyg/UCZsdDtzdGFydF90aW1lX3VzJmd0O1stMC05XSYjNDM7KSYjMzQ7CiYjNDM7ICApCiYjNDM7ICBkdXJhdGlvbl9yZWdleCA9IHJlLmNvbXBpbGUoCiYjNDM7ICAgICAgciYjMzQ7XkB0aW1lcl9kdXJhdGlvblxbKD9QJmx0O3RpZCZndDtbMC05XSYjNDM7KSxcVyooP1AmbHQ7aW5kZXgmZ3Q7WzAtOV0mIzQzOylcXTpcVyg/UCZsdDtkdXJhdGlvbl91cyZndDtbLTAtOV0mIzQzOykmIzM0OwomIzQzOyAgKQomIzQzOyAgZGVwdGhfcmVnZXggPSByZS5jb21waWxlKAomIzQzOyAgICAgIHImIzM0O15AdGltZXJfZGVwdGhcWyg/UCZsdDt0aWQmZ3Q7WzAtOV0mIzQzOyksXFcqKD9QJmx0O2luZGV4Jmd0O1swLTldJiM0MzspXF06XFcoP1AmbHQ7ZGVwdGgmZ3Q7Wy0wLTldJiM0MzspJiMzNDsKJiM0MzsgICkKJiM0MzsKJiM0MzsgIGF0dGFjaGluZ19yZWdleCA9IHJlLmNvbXBpbGUoCiYjNDM7ICAgICAgciYjMzQ7XkF0dGFjaGluZy4qJiMzNDsKJiM0MzsgICkKJiM0MzsKJiM0MzsgICMgR2V0IGFsbCBjb3VudHMuICBUaGF0IHdheSB3ZSBrbm93IGhvdyBtYW55IHRpbWVycyBlYWNoIHRocmVhZCB1c2VkLgomIzQzOyAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzKToKJiM0MzsgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKJiM0MzsKJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSkKJiM0MzsgICAgaWYgbToKJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cCgmIzM0O3RpZCYjMzQ7KSkKJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKCYjMzQ7aW5kZXgmIzM0OykpCiYjNDM7ICAgICAgZHVyYXRpb25fc3RyID0gbS5ncm91cCgmIzM0O2R1cmF0aW9uX3VzJiMzNDspCiYjNDM7ICAgICAgZHVyYXRpb24gPSBpbnQobS5ncm91cCgmIzM0O2R1cmF0aW9uX3VzJiMzNDspKQomIzQzOwomIzQzOyAgICAgIGlmIG5vdCB0aWQgaW4gdGltZXJfY291bnRzOgomIzQzOyAgICAgICAgdGltZXJfY291bnRzW3RpZF0gPSBpbmRleAomIzQzOyAgICAgIGVsc2U6CiYjNDM7ICAgICAgICB0aW1lcl9jb3VudHNbdGlkXSA9IG1heCh0aW1lcl9jb3VudHNbdGlkXSwgaW5kZXgpCiYjNDM7CiYjNDM7ICAjIEFsbG9jYXRlIGVub3VnaCB0aW1lcnMgdG8gZml0IHRoZSB0cmFjZS4KJiM0MzsgIGZvciB0aWQsIGNvdW50IGluIHRpbWVyX2NvdW50cy5pdGVtcygpOgomIzQzOyAgICBhbGxfdGltZXJzW3RpZF0gPSBbTm9uZV0gKiAoY291bnQgJiM0MzsgMSkKJiM0MzsKJiM0MzsgICMgUG9wdWxhdGUgdGhlIHRyYWNlLgomIzQzOyAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzKToKJiM0MzsgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKJiM0MzsKJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChuYW1lX3JlZ2V4LCBsaW5lKQomIzQzOyAgICBpZiBtOgomIzQzOyAgICAgIHRpZCA9IGludChtLmdyb3VwKCYjMzQ7dGlkJiMzNDspKQomIzQzOyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoJiMzNDtpbmRleCYjMzQ7KSkKJiM0MzsgICAgICBuYW1lID0gbS5ncm91cCgmIzM0O25hbWUmIzM0OykKJiM0MzsgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6CiYjNDM7ICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoJiMzNDsmIzM0OywgMCwgLTEsIC0xKQomIzQzOyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0ubmFtZSA9IG5hbWUKJiM0MzsgICAgICBjb250aW51ZQomIzQzOwomIzQzOyAgICBtID0gcmUuZnVsbG1hdGNoKHN0YXJ0X3RpbWVfcmVnZXgsIGxpbmUpCiYjNDM7ICAgIGlmIG06CiYjNDM7ICAgICAgdGlkID0gaW50KG0uZ3JvdXAoJiMzNDt0aWQmIzM0OykpCiYjNDM7ICAgICAgaW5kZXggPSBpbnQobS5ncm91cCgmIzM0O2luZGV4JiMzNDspKQomIzQzOyAgICAgIHN0YXJ0X3RpbWUgPSBpbnQobS5ncm91cCgmIzM0O3N0YXJ0X3RpbWVfdXMmIzM0OykpCiYjNDM7ICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOgomIzQzOyAgICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9IEJwZlRpbWVyKCYjMzQ7JiMzNDssIDAsIC0xLCAtMSkKJiM0MzsgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLnN0YXJ0X3RpbWVfdXMgPSBzdGFydF90aW1lCiYjNDM7ICAgICAgY29udGludWUKJiM0MzsKJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSkKJiM0MzsgICAgaWYgbToKJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cCgmIzM0O3RpZCYjMzQ7KSkKJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKCYjMzQ7aW5kZXgmIzM0OykpCiYjNDM7ICAgICAgZHVyYXRpb24gPSBpbnQobS5ncm91cCgmIzM0O2R1cmF0aW9uX3VzJiMzNDspKQomIzQzOyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZToKJiM0MzsgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcigmIzM0OyYjMzQ7LCAwLCAtMSwgLTEpCiYjNDM7ICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XS5kdXJhdGlvbl91cyA9IGR1cmF0aW9uCiYjNDM7ICAgICAgY29udGludWUKJiM0MzsKJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChkZXB0aF9yZWdleCwgbGluZSkKJiM0MzsgICAgaWYgbToKJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cCgmIzM0O3RpZCYjMzQ7KSkKJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKCYjMzQ7aW5kZXgmIzM0OykpCiYjNDM7ICAgICAgZGVwdGggPSBpbnQobS5ncm91cCgmIzM0O2RlcHRoJiMzNDspKQomIzQzOyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZToKJiM0MzsgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcigmIzM0OyYjMzQ7LCAwLCAtMSwgLTEpCiYjNDM7ICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XS5kZXB0aCA9IGRlcHRoCiYjNDM7ICAgICAgY29udGludWUKJiM0MzsKJiM0MzsgICAgaWYgcmUuZnVsbG1hdGNoKGNvdW50X3JlZ2V4LCBsaW5lKToKJiM0MzsgICAgICAjIFNraXAgdGhpcyBjYXNlLiAgSXQmIzM5O3MgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZC4KJiM0MzsgICAgICBjb250aW51ZQomIzQzOyAgICBpZiByZS5mdWxsbWF0Y2goYXR0YWNoaW5nX3JlZ2V4LCBsaW5lKToKJiM0MzsgICAgICAjIFNraXAgJiMzNDtBdHRhY2hpbmcgWFggcHJvYmVzLi4uJiMzNDsKJiM0MzsgICAgICBjb250aW51ZQomIzQzOyAgICBpZiBub3QgbGluZToKJiM0MzsgICAgICAjIFNraXAgZW1wdHkgc3RyaW5ncy4KJiM0MzsgICAgICBjb250aW51ZQomIzQzOwomIzQzOyAgICByYWlzZSBWYWx1ZUVycm9yKCYjMzQ7SW52YWxpZCBpbnB1dCwgJiMzOTslcyYjMzk7JiMzNDsgJSAobGluZSkpCiYjNDM7CiYjNDM7ICByb290ID0gQnBmUmVzdWx0KCYjMzQ7JiMzNDssIDAsIDAsIDAsIDAsIDAsIDEsIDEsIC0xLCAtMSkKJiM0MzsgIHJlc3VsdHMgPSBbXQomIzQzOyAgZm9yIHRpZCwgdGltZXJzIGluIGFsbF90aW1lcnMuaXRlbXMoKToKJiM0MzsgICAgbWVyZ2VfdGltZXJzKHJvb3QsIHRpZCwgdGltZXJzKQomIzQzOyAgcHJpbnRfcmVzdWx0cyhyb290LCByZXN1bHRzKQomIzQzOwomIzQzOyAgaWYgZmlsZWlucHV0LmZpbGVubygpID09IDA6CiYjNDM7ICAgIHJhaXNlIFZhbHVlRXJyb3IoJiMzNDtFeHBlY3RlZCBhIGZpbGUgdG8gcmVhZC4mIzM0OykKJiM0MzsKJiM0MzsgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSAmZ3Q7IDE6CiYjNDM7ICAgIHJhaXNlIFZhbHVlRXJyb3IoJiMzNDtUb28gbWFueSBmaWxlcyByZWFkLiAgRXhwZWN0ZWQgMSYjMzQ7KQomIzQzOwomIzQzO2RlZiBtYWluKCkgLSZndDsgTm9uZToKJiM0MzsgICYjMzQ7JiMzNDsmIzM0O01haW4gZnVuY3Rpb24uJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICBpZiBsZW4oc3lzLmFyZ3YpICZsdDs9IDE6CiYjNDM7ICAgIHByaW50KCYjMzQ7RXJyb3I6IE5vdCBlbm91Z2ggY29tbWFuZC1saW5lIGFyZ3VtZW50cy4gRXhwZWN0ZWQgYW4gaW5wdXQgZmlsZSYjMzQ7LCBmaWxlPXN5cy5zdGRlcnIpCiYjNDM7ICAgIHN5cy5leGl0KDEpCiYjNDM7CiYjNDM7ICBnZW5lcmF0ZV9mcm9tX2xvZyhzeXMuYXJndlsxOl0pCiYjNDM7CiYjNDM7CiYjNDM7aWYgX19uYW1lX18gPT0gJiMzNDtfX21haW5fXyYjMzQ7OgomIzQzOyAgbWFpbigpCmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJkMzQxZTQwODU3MGVjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL3NhbXBsZXMva3ZtX3RyYWNlLmJ0CkBAIC0wLDAgJiM0MzsxLDE5NyBAQAomIzQzOyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMCkKJiM0MzsjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKQomIzQzOyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpCiYjNDM7CiYjNDM7Y29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfQomIzQzOwomIzQzO21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpCiYjNDM7ewomIzQzOwlAdHJhY2Vfc3RhY2tfdG9wWzBdID0gMDsKJiM0MzsJQHRpbWVyX2NvdW50WzBdID0gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7bWFjcm8gQ0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCkKJiM0Mzt7CiYjNDM7CWNsZWFyKEB0cmFjZV9zdGFjayk7CiYjNDM7CWNsZWFyKEB0cmFjZV9zdGFja190b3ApOwomIzQzOwljbGVhcihAdGltZXJfY291bnQpOwomIzQzO30KJiM0MzsKJiM0MzttYWNybyBTVEFSVF9USU1FUihuYW1lLCBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApCiYjNDM7ewomIzQzOwlAdGltZXJfbmFtZVt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IG5hbWU7CiYjNDM7CUB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTsKJiM0MzsJQHRpbWVyX3N0YXJ0W3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gdXNlY3M7CiYjNDM7CUB0aW1lcl9kdXJhdGlvblt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IERVUkFUSU9OX1VOU0VUOwomIzQzOwlAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07CiYjNDM7CUB0aW1lcl9jb3VudFt0aWRdJiM0MzsmIzQzOzsKJiM0MzsJQHRyYWNlX3N0YWNrX3RvcFt0aWRdJiM0MzsmIzQzOzsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBVbmZvcnR1bmF0ZWx5IGJyYW5jaCBzdGF0ZW1lbnRzIGNyYXNoIHRoZSBicGZ0cmFjZSBjb21waWxlci4gIEFzIGEgcmVzdWx0LAomIzQzOyAqIHRoZSBicmFuY2ggaGFzIGJlZW4gbW92ZWQgZGlyZWN0bHkgaW50byB0aGUgcHJvYmUuICBSZXZlcnNlIHRoaXMgaWYgdGhlCiYjNDM7ICogY29tcGlsZXIgZXZlciBnZXRzIHRoYXQgZml4ZWQuCiYjNDM7ICovCiYjNDM7bWFjcm8gU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KQomIzQzO3sKJiM0MzsJJGlkeCA9IEB0cmFjZV9zdGFja1t0aWQsIC0tQHRyYWNlX3N0YWNrX3RvcFt0aWRdXTsKJiM0MzsJQHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdOwomIzQzO30KJiM0MzsKJiM0MztCRUdJTgomIzQzO3sKJiM0MzsJSU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O2t2bV9zY2hlZF9pbigpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9zY2hlZF9pbiAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOmt2bV9zY2hlZF9pbgomIzQzO3sKJiM0MzsJU1RBUlRfVElNRVIoJiMzNDtrdm1fc2NoZWRfaW4mIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOmt2bV9zY2hlZF9pbgomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7a3ZtX3NjaGVkX291dCgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9zY2hlZF9vdXQgL3Byb2Mva2FsbHN5bXMKJiM0MzsgKi8KJiM0MztrZnVuYzprdm1fc2NoZWRfb3V0CiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O2t2bV9zY2hlZF9vdXQmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzOwomIzQzO2tyZXRmdW5jOmt2bV9zY2hlZF9vdXQKJiM0Mzt7CiYjNDM7CWlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gJmd0OyAwKSB7CiYjNDM7CQlTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O2t2bV9hcmNoX3ZjcHVfbG9hZCgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfbG9hZCAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOmt2bV9hcmNoX3ZjcHVfbG9hZAomIzQzO3sKJiM0MzsJU1RBUlRfVElNRVIoJiMzNDtrdm1fYXJjaF92Y3B1X2xvYWQmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOmt2bV9hcmNoX3ZjcHVfbG9hZAomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7a3ZtX2FyY2hfdmNwdV9wdXQoKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fYXJjaF92Y3B1X3B1dCAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOmt2bV9hcmNoX3ZjcHVfcHV0CiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O2t2bV9hcmNoX3ZjcHVfcHV0JiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X3B1dAomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7S1ZNX1JVTiYjMzk7LCBpLmUuIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4KJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOmt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgaG93IGxvbmcgYSBndWVzdCBydW5zIHVzaW5nIHRyYWNlcG9pbnRzICYjMzQ7a3ZtX2VudHJ5JiMzNDsgYW5kICYjMzQ7a3ZtX2V4aXQmIzM0Oy4KJiM0MzsgKi8KJiM0Mzt0cmFjZXBvaW50Omt2bTprdm1fZW50cnkKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7cnVuX2d1ZXN0JiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0Mzt0cmFjZXBvaW50Omt2bTprdm1fZXhpdAomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7a3ZtX3ZjcHVfYmxvY2soKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fdmNwdV9ibG9jayAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOmt2bV92Y3B1X2Jsb2NrCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O2t2bV92Y3B1X2Jsb2NrJiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzprdm1fdmNwdV9ibG9jawomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7a3ZtX21tdV9wYWdlX2ZhdWx0KCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX21tdV9wYWdlX2ZhdWx0IC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6a3ZtX21tdV9wYWdlX2ZhdWx0CiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O2t2bV92Y3B1X2Jsb2NrJiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzprdm1fbW11X3BhZ2VfZmF1bHQKJiM0Mzt7CiYjNDM7CWlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gJmd0OyAwKSB7CiYjNDM7CQlTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogRHVtcCB0aGUgcmVzdWx0cyB0byBzdGRvdXQuCiYjNDM7ICovCiYjNDM7RU5ECiYjNDM7ewomIzQzOwlDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KTsKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL3NhbXBsZXMvdmZpb190cmFjZS5idApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uM2I4Y2I3ZmY2MjEwZGUKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0CkBAIC0wLDAgJiM0MzsxLDMxNSBAQAomIzQzOyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMCkKJiM0MzsjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKQomIzQzOyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpCiYjNDM7CiYjNDM7Y29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfQomIzQzOwomIzQzO21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpCiYjNDM7ewomIzQzOwlAdHJhY2Vfc3RhY2tfdG9wWzBdID0gMDsKJiM0MzsJQHRpbWVyX2NvdW50WzBdID0gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7bWFjcm8gQ0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCkKJiM0Mzt7CiYjNDM7CWNsZWFyKEB0cmFjZV9zdGFjayk7CiYjNDM7CWNsZWFyKEB0cmFjZV9zdGFja190b3ApOwomIzQzOwljbGVhcihAdGltZXJfY291bnQpOwomIzQzO30KJiM0MzsKJiM0MzttYWNybyBTVEFSVF9USU1FUihuYW1lLCBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApCiYjNDM7ewomIzQzOwlAdGltZXJfbmFtZVt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IG5hbWU7CiYjNDM7CUB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTsKJiM0MzsJQHRpbWVyX3N0YXJ0W3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gdXNlY3M7CiYjNDM7CUB0aW1lcl9kdXJhdGlvblt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IERVUkFUSU9OX1VOU0VUOwomIzQzOwlAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07CiYjNDM7CUB0aW1lcl9jb3VudFt0aWRdJiM0MzsmIzQzOzsKJiM0MzsJQHRyYWNlX3N0YWNrX3RvcFt0aWRdJiM0MzsmIzQzOzsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBVbmZvcnR1bmF0ZWx5IGJyYW5jaCBzdGF0ZW1lbnRzIGNyYXNoIHRoZSBicGZ0cmFjZSBjb21waWxlci4gIEFzIGEgcmVzdWx0LAomIzQzOyAqIHRoZSBicmFuY2ggaGFzIGJlZW4gbW92ZWQgZGlyZWN0bHkgaW50byB0aGUgcHJvYmUuICBSZXZlcnNlIHRoaXMgaWYgdGhlCiYjNDM7ICogY29tcGlsZXIgZXZlciBnZXRzIHRoYXQgZml4ZWQuCiYjNDM7ICovCiYjNDM7bWFjcm8gU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KQomIzQzO3sKJiM0MzsJJGlkeCA9IEB0cmFjZV9zdGFja1t0aWQsIC0tQHRyYWNlX3N0YWNrX3RvcFt0aWRdXTsKJiM0MzsJQHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdOwomIzQzO30KJiM0MzsKJiM0MztCRUdJTgomIzQzO3sKJiM0MzsJSU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O3ZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwoKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZEID0gMHgzYjZhCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL3Byb2Mva2FsbHN5bXMKJiM0MzsgKi8KJiM0MztrZnVuYzp2ZmlvX2dyb3VwX2ZvcHNfdW5sX2lvY3RsIC9hcmdzLSZndDtjbWQgPT0gMHgzYjZhLwomIzQzO3sKJiM0MzsJU1RBUlRfVElNRVIoJiMzNDt2ZmlvX2dyb3VwX2lvY3RsX2dldF9kZXZpY2VfZmQmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL2FyZ3MtJmd0O2NtZCA9PSAweDNiNmEvCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZCgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmQKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmQmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2RmX3VuYmluZF9pb21tdWZkKCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl91bmJpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOnZmaW9fZGZfdW5iaW5kX2lvbW11ZmQKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb19kZl91bmJpbmRfaW9tbXVmZCYjMzQ7LAomIzQzOwkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOwkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0Mzt9CiYjNDM7a3JldGZ1bmM6dmZpb19kZl91bmJpbmRfaW9tbXVmZAomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7dmZpb19kZl9vcGVuKCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl9vcGVuIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19kZl9vcGVuCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O3ZmaW9fZGZfb3BlbiYjMzQ7LAomIzQzOwkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOwkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0Mzt9CiYjNDM7a3JldGZ1bmM6dmZpb19kZl9vcGVuCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTtwY2llX2ZscigpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHBjaWVfZmxyIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6cGNpZV9mbHIKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7cGNpZV9mbHImIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnBjaWVfZmxyCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTtwY2lfZGV2X3dhaXQoKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2lfZGV2X3dhaXQgL3Byb2Mva2FsbHN5bXMKJiM0MzsgKi8KJiM0MztrZnVuYzpwY2lfZGV2X3dhaXQKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7cGNpX2Rldl93YWl0JiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzpwY2lfZGV2X3dhaXQKJiM0Mzt7CiYjNDM7CWlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gJmd0OyAwKSB7CiYjNDM7CQlTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O3ZmaW9faW9tbXVfdHlwZTFfaW9jdGwoKSYjMzk7IHdoZW4gJiMzOTtWRklPX0lPTU1VX01BUF9ETUEmIzM5OyBpcyBjYWxsZWQuCiYjNDM7ICoKJiM0MzsgKgomIzQzOyAqIFZGSU9fSU9NTVVfTUFQX0RNQSA9IDB4M2I3MQomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy0mZ3Q7Y21kID09IDB4M2I3MS8KJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb19pb21tdV90eXBlMV9tYXBfZG1hJiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLSZndDtjbWQgPT0gMHgzYjcxLwomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7dmZpb19waW5fbWFwX2RtYSgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fcGluX21hcF9kbWEgL3Byb2Mva2FsbHN5bXMKJiM0MzsgKi8KJiM0MztrZnVuYzp2ZmlvX3Bpbl9tYXBfZG1hCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O3ZmaW9fcGluX21hcF9kbWEmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9fcGluX21hcF9kbWEKJiM0Mzt7CiYjNDM7CWlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gJmd0OyAwKSB7CiYjNDM7CQlTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O3ZmaW9fcGluX3BhZ2VzX3JlbW90ZSgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fcGluX3BhZ2VzX3JlbW90ZSAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOnZmaW9fcGluX3BhZ2VzX3JlbW90ZQomIzQzO3sKJiM0MzsJU1RBUlRfVElNRVIoJiMzNDt2ZmlvX3Bpbl9wYWdlc19yZW1vdGUmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9fcGluX3BhZ2VzX3JlbW90ZQomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7dmFkZHJfZ2V0X3BmbnMoKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2YWRkcl9nZXRfcGZucyAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOnZhZGRyX2dldF9wZm5zCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O3ZhZGRyX2dldF9wZm5zJiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzp2YWRkcl9nZXRfcGZucwomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7Ly8gLyoKJiM0MzsvLyAgKiBUaW1lICYjMzk7aW9tbXVfbWFwKCkmIzM5Oy4KJiM0MzsvLyAgKgomIzQzOy8vICAqIENoZWNrOiBzdWRvIGdyZXAgaW9tbXVfbWFwIC9wcm9jL2thbGxzeW1zCiYjNDM7Ly8gICovCiYjNDM7Ly8ga2Z1bmM6aW9tbXVfbWFwCiYjNDM7Ly8gewomIzQzOy8vIAlTVEFSVF9USU1FUigmIzM0O2lvbW11X21hcCYjMzQ7LAomIzQzOy8vIAkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOy8vIAkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0MzsvLyB9CiYjNDM7Ly8ga3JldGZ1bmM6aW9tbXVfbWFwCiYjNDM7Ly8gewomIzQzOy8vIAlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOy8vIAkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsvLyAJfQomIzQzOy8vIH0KJiM0MzsKJiM0MzsKJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCkmIzM5OyB3aGVuICYjMzk7VkZJT19JT01NVV9VTk1BUF9ETUEmIzM5OyBpcyBjYWxsZWQuCiYjNDM7ICoKJiM0MzsgKiBWRklPX0lPTU1VX1VOTUFQX0RNQSA9IDB4M2I3MgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy0mZ3Q7Y21kID09IDB4M2I3Mi8KJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb19pb21tdV90eXBlMV91bm1hcF9kbWEmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtJmd0O2NtZCA9PSAweDNiNzIvCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX3VubWFwX3VucGluKCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb191bm1hcF91bnBpbiAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOnZmaW9fdW5tYXBfdW5waW4KJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb191bm1hcF91bnBpbiYjMzQ7LAomIzQzOwkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOwkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0Mzt9CiYjNDM7a3JldGZ1bmM6dmZpb191bm1hcF91bnBpbgomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7dmZpb19zeW5jX3VucGluKCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19zeW5jX3VucGluIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19zeW5jX3VucGluCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O3ZmaW9fc3luY191bnBpbiYjMzQ7LAomIzQzOwkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOwkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0Mzt9CiYjNDM7a3JldGZ1bmM6dmZpb19zeW5jX3VucGluCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LgomIzQzOyAqLwomIzQzO0VORAomIzQzO3sKJiM0MzsJQ0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTMwNgoJCQkJCQkJb3V0cHV0OiA3NwoJCQkJCQkJdGhvdWdodHM6IDIzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBkZWFsLiBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbmV3IHByb2ZpbGluZyB0b29scyDigJMgc3BlY2lmaWNhbGx5IGEgUHl0aG9uIHNjcmlwdCwgYGFnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weWAsIGFuZCB0d28gYnBmdHJhY2Ugc2NyaXB0cywgYGt2bV90cmFjZS5idGAgYW5kIGB2ZmlvX3RyYWNlLmJ0YCDigJMgYWxsIHR1Y2tlZCBhd2F5IHVuZGVyIGB0b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvYC4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhlc2UgYXJlIHN0cmljdGx5IGZvciBpbnN0cnVtZW50YXRpb24gYW5kIGFuYWx5c2lzOyB0aGV5IGRvbiYjMzk7dCBzZWVtIHRvIGJlIHRvdWNoaW5nIGFueSBjb3JlIGtlcm5lbCBjb2RlLCBkcml2ZXJzLCBvciBldmVuIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZXMuIFRoaXMgaXNuJiMzOTt0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHNlbnNlIHRoYXQgaXQgaW50cm9kdWNlcyBuZXcga2VybmVsIGJlaGF2aW9yIG9yIG1vZGlmaWVzIGV4aXN0aW5nIGxvZ2ljIHRoYXQgbmVlZHMgdG8gYmUgaGVhdmlseSBmdXp6ZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7dmUgdGFrZW4gYSBzZWNvbmQgbG9vayBhdCB0aGUgZGlmZi4gSSBzZWUgdGhlIFB5dGhvbiBzY3JpcHQgYW5kIHRoZSB0d28gYnQgc2NyaXB0cywgYXMgZXhwZWN0ZWQuIEkmIzM5O20gbm90IHNlZWluZyBhbnkgQyBjb2RlIG9yIGFueSBtb2RpZmljYXRpb25zIHRoYXQgd291bGQgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiBrZXJuZWwgc3Vic3lzdGVtcy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhci4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCBmb3IgdGhpcyBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIGVuc3VyZSB0aGF0JiMzOTtzIHJlZmxlY3RlZCBjb3JyZWN0bHkuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUgdGhhdCB3YXJyYW50cyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGJwZnRyYWNlIHNjcmlwdHMgYW5kIGEgcHl0aG9uIHNjcmlwdCBmb3IgcHJvZmlsaW5nIHVuZGVyIHRvb2xzL2JwZnRyYWNlLy4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IGNhbiBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYnBmdHJhY2Ugc2NyaXB0cyBhbmQgYSBweXRob24gc2NyaXB0IGZvciBwcm9maWxpbmcgdW5kZXIgdG9vbHMvYnBmdHJhY2UvLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgY2FuIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjowOTo1NC4xMTc5NTIzMjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTc5MzUxMjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYnBmdHJhY2Ugc2NyaXB0cyBhbmQgYSBweXRob24gc2NyaXB0IGZvciBwcm9maWxpbmcgdW5kZXIgdG9vbHMvYnBmdHJhY2UvLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjA5OjU0LjExNzk1NzU5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzczNTQ2NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTU4YWU0ZWM3MzYwYTA1M2I0NWZiNDdhZGUyNTk1ZDk0YTBjMDRjM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAyMjowOTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvYWdncmVnYXRlX2JwZl9yZXN1bHRzLnB5IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weVxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmY0ZmZlOGNmZjQ0MThlXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9hZ2dyZWdhdGVfYnBmX3Jlc3VsdHMucHlcXG5AQCAtMCwwICsxLDMxOCBAQFxcbisjIS91c3IvYmluL2VudiBweXRob24zXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcXG4rI1xcbisjIFByaW50cyB0aGUgYWdncmVnYXRlIHJlc3VsdHMgb2YgYW4gaW5zdHJ1bWVudGVkIEJQRiB0cmFjZS5cXG4rI1xcbisjIENvcHlyaWdodCAyMDI2IEdvb2dsZSBMTENcXG4rI1xcbisjIEF1dGhvcjogQWFyb24gTGV3aXMgXFx1MDAzY2Fhcm9ubGV3aXNAZ29vZ2xlLmNvbVxcdTAwM2VcXG4rXFxuK2ltcG9ydCBmaWxlaW5wdXRcXG4raW1wb3J0IHJlXFxuK2ltcG9ydCBzeXNcXG4raW1wb3J0IHdhcm5pbmdzXFxuK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBTZXF1ZW5jZVxcbitcXG4rY2xhc3MgUHJvZmlsZXJSZXN1bHQ6XFxuKyAgXFxcIlxcXCJcXFwiQ2xhc3MgZm9yIGhvbGRpbmcgdGhlIHByb2ZpbGVyIHJlc3VsdHMuXFxcIlxcXCJcXFwiXFxuK1xcbisgIGRlZiBfX2luaXRfXyhcXG4rICAgICAgc2VsZixcXG4rICAgICAgbmFtZTogc3RyLFxcbisgICAgICB0aHJlYWRfdXNlYzogaW50LFxcbisgICAgICB3YWxsX3VzZWM6IGludCxcXG4rICAgICAgbWF4X3VzZWM6IGludCxcXG4rICAgICAgYXZnX3VzZWM6IGludCxcXG4rICAgICAgY291bnQ6IGludCxcXG4rICAgICAgdGhyZWFkX2NvdW50OiBpbnQsXFxuKyAgICAgIGluY29tcGxldGVfY291bnQ6IGludCxcXG4rICAgICAgZGVwdGg6IGludCxcXG4rICApOlxcbisgICAgc2VsZi5uYW1lID0gbmFtZVxcbisgICAgc2VsZi50aHJlYWRfdXNlYyA9IHRocmVhZF91c2VjXFxuKyAgICBzZWxmLndhbGxfdXNlYyA9IHdhbGxfdXNlY1xcbisgICAgc2VsZi5tYXhfdXNlYyA9IG1heF91c2VjXFxuKyAgICBzZWxmLmF2Z191c2VjID0gYXZnX3VzZWNcXG4rICAgIHNlbGYuY291bnQgPSBjb3VudFxcbisgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnRcXG4rICAgIHNlbGYuaW5jb21wbGV0ZV9jb3VudCA9IGluY29tcGxldGVfY291bnRcXG4rICAgIHNlbGYuZGVwdGggPSBkZXB0aFxcbitcXG4rY2xhc3MgQnBmVGltZXI6XFxuKyAgXFxcIlxcXCJcXFwiQ2xhc3MgZm9yIGhvbGRpbmcgYSB0aW1lci5cXFwiXFxcIlxcXCJcXG4rXFxuKyAgZGVmIF9faW5pdF9fKFxcbisgICAgICBzZWxmLFxcbisgICAgICBuYW1lOiBzdHIsXFxuKyAgICAgIHN0YXJ0X3RpbWVfdXM6IGludCxcXG4rICAgICAgZHVyYXRpb25fdXM6IGludCxcXG4rICAgICAgZGVwdGg6IGludCxcXG4rICApOlxcbisgICAgc2VsZi5uYW1lID0gbmFtZVxcbisgICAgc2VsZi5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZV91c1xcbisgICAgc2VsZi5kdXJhdGlvbl91cyA9IGR1cmF0aW9uX3VzXFxuKyAgICBzZWxmLmRlcHRoID0gZGVwdGhcXG4rXFxuK2NsYXNzIEJwZlJlc3VsdDpcXG4rICBcXFwiXFxcIlxcXCJDbGFzcyBmb3IgaG9sZGluZyB0aGUgcHJvZmlsZXIgcmVzdWx0cy5cXFwiXFxcIlxcXCJcXG4rXFxuKyAgZGVmIF9faW5pdF9fKFxcbisgICAgICBzZWxmLFxcbisgICAgICBuYW1lOiBzdHIsXFxuKyAgICAgIHdhbGxfdGltZV9zdGFydF91czogaW50LFxcbisgICAgICB3YWxsX3RpbWVfZW5kX3VzOiBpbnQsXFxuKyAgICAgIHRocmVhZF91czogaW50LFxcbisgICAgICBtYXhfdXM6IGludCxcXG4rICAgICAgYXZnX3VzOiBpbnQsXFxuKyAgICAgIGNvdW50OiBpbnQsXFxuKyAgICAgIHRocmVhZF9jb3VudDogaW50LFxcbisgICAgICBkZXB0aDogaW50LFxcbisgICAgICB0aWQ6IGludCxcXG4rICApOlxcbisgICAgc2VsZi5uYW1lID0gbmFtZVxcbisgICAgc2VsZi53YWxsX3RpbWVfc3RhcnRfdXMgPSB3YWxsX3RpbWVfc3RhcnRfdXNcXG4rICAgIHNlbGYud2FsbF90aW1lX2VuZF91cyA9IHdhbGxfdGltZV9lbmRfdXNcXG4rICAgIHNlbGYudGhyZWFkX3VzID0gdGhyZWFkX3VzXFxuKyAgICBzZWxmLm1heF91cyA9IG1heF91c1xcbisgICAgc2VsZi5hdmdfdXMgPSBhdmdfdXNcXG4rICAgIHNlbGYuY291bnQgPSBjb3VudFxcbisgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnRcXG4rICAgIHNlbGYuZGVwdGggPSBkZXB0aFxcbisgICAgc2VsZi5jaGlsZHJlbiA9IFtdXFxuKyAgICBzZWxmLmNoaWxkX2luZGV4ID0ge31cXG4rICAgIHNlbGYudGhyZWFkcyA9IHt9XFxuKyAgICBzZWxmLnRocmVhZHNbdGlkXSA9IFRydWVcXG4rXFxuK2RlZiB1cGRhdGVfY2hpbGQocjogQnBmUmVzdWx0LCB0aW1lcjogQnBmVGltZXIsIHRpZDogaW50KSAtXFx1MDAzZSBpbnQ6XFxuKyAgaSA9IHIuY2hpbGRfaW5kZXguZ2V0KHRpbWVyLm5hbWUpXFxuKyAgaWYgaSBpcyBOb25lOlxcbisgICAgaSA9IGxlbihyLmNoaWxkcmVuKVxcbisgICAgci5jaGlsZHJlbi5hcHBlbmQoQnBmUmVzdWx0KFxcbisgICAgICAgIHRpbWVyLm5hbWUsXFxuKyAgICAgICAgdGltZXIuc3RhcnRfdGltZV91cyxcXG4rICAgICAgICB0aW1lci5zdGFydF90aW1lX3VzICsgdGltZXIuZHVyYXRpb25fdXMsXFxuKyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXFxuKyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXFxuKyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXFxuKyAgICAgICAgMSxcXG4rICAgICAgICAxLFxcbisgICAgICAgIHRpbWVyLmRlcHRoLFxcbisgICAgICAgIHRpZCkpXFxuKyAgICByLmNoaWxkX2luZGV4W3RpbWVyLm5hbWVdID0gaVxcbisgIGVsc2U6XFxuKyAgICByLmNoaWxkcmVuW2ldLndhbGxfdGltZV9zdGFydF91cyA9IG1pbihyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9zdGFydF91cywgdGltZXIuc3RhcnRfdGltZV91cylcXG4rICAgIHIuY2hpbGRyZW5baV0ud2FsbF90aW1lX2VuZF91cyA9IG1heChyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9lbmRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMgKyB0aW1lci5kdXJhdGlvbl91cylcXG4rICAgIHIuY2hpbGRyZW5baV0udGhyZWFkX3VzICs9IHRpbWVyLmR1cmF0aW9uX3VzXFxuKyAgICByLmNoaWxkcmVuW2ldLm1heF91cyA9IG1heChyLmNoaWxkcmVuW2ldLm1heF91cywgdGltZXIuZHVyYXRpb25fdXMpXFxuKyAgICByLmNoaWxkcmVuW2ldLmNvdW50ICs9IDFcXG4rICAgIHIuY2hpbGRyZW5baV0uYXZnX3VzID0gci5jaGlsZHJlbltpXS50aHJlYWRfdXMgLyByLmNoaWxkcmVuW2ldLmNvdW50XFxuKyAgICBpZiByLmNoaWxkcmVuW2ldLnRocmVhZHMuZ2V0KHRpZCkgaXMgTm9uZTpcXG4rICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRzW3RpZF0gPSBUcnVlXFxuKyAgICAgIHIuY2hpbGRyZW5baV0udGhyZWFkX2NvdW50ICs9IDFcXG4rXFxuKyAgcmV0dXJuIGlcXG4rXFxuK2RlZiBtZXJnZV9yZWN1cnNpdmUocjogQnBmUmVzdWx0LCB0aWQ6IGludCwgdGltZXJzOiBMaXN0W0JwZlRpbWVyXSwgaW5kZXg6IGludCwgY2hpbGRfaW5kZXg6IGludCkgLVxcdTAwM2UgaW50OlxcbisgIHdoaWxlIGluZGV4IFxcdTAwM2MgbGVuKHRpbWVycyk6XFxuKyAgICB3aGlsZSBpbmRleCBcXHUwMDNjIGxlbih0aW1lcnMpIGFuZCB0aW1lcnNbaW5kZXhdID09IE5vbmU6XFxuKyAgICAgIGluZGV4ICs9IDFcXG4rXFxuKyAgICBpZiBpbmRleCBcXHUwMDNlPSBsZW4odGltZXJzKTpcXG4rICAgICAgcmV0dXJuIGluZGV4XFxuK1xcbisgICAgIyBUaGUgdGltZXIgaXMgYSBjaGlsZCBvZiAncicuIChDaGlsZCBjYXNlKVxcbisgICAgaWYgdGltZXJzW2luZGV4XS5kZXB0aCA9PSAoci5kZXB0aCArIDEpOlxcbisgICAgICAjIEFkZCBjaGlsZFxcbisgICAgICBjaGlsZF9pbmRleCA9IHVwZGF0ZV9jaGlsZChyLCB0aW1lcnNbaW5kZXhdLCB0aWQpXFxuK1xcbisgICAgICAjIE5vdyB0aGF0IHRoZSB0aW1lciBoYXMgYmVlbiBoYW5kbGVkIGluY3JlbWVudCB0byB0aGUgbmV4dCBvbmUuXFxuKyAgICAgIGluZGV4ICs9IDFcXG4rXFxuKyAgICAjIFRoZSB0aW1lciBpcyBhIGNoaWxkIG9mICdyJy4gKEdyYW5kY2hpbGQgY2FzZSlcXG4rICAgIGVsaWYgdGltZXJzW2luZGV4XS5kZXB0aCA9PSAoci5kZXB0aCArIDIpOlxcbisgICAgICBpZiBjaGlsZF9pbmRleCBcXHUwMDNjIDA6XFxuKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihcXFwiSW52YWxpZCAnY2hpbGRfaW5kZXgnXFxcIilcXG4rICAgICAgIyBSZWN1cnNlIGRvd24gdGhlIGNoaWxkIGJlY3Vhc2UgdGhhdCBpcyB0aGUgcGFyZW50IHRoaXMgdGltZXIuXFxuKyAgICAgIGluZGV4ID0gbWVyZ2VfcmVjdXJzaXZlKHIuY2hpbGRyZW5bY2hpbGRfaW5kZXhdLCB0aWQsIHRpbWVycywgaW5kZXgsIGNoaWxkX2luZGV4KVxcbitcXG4rICAgICMgVGhlIHRpbWVyIGlzIGEgZGVzY2VuZGFudCBvZiAncicsIGJ1dCBub3QgdGhlIGNoaWxkLi4uIEludmFsaWQgY2FzZSFcXG4rICAgIGVsaWYgdGltZXJzW2luZGV4XS5kZXB0aCBcXHUwMDNlIChyLmRlcHRoICsgMik6XFxuKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IoXFxcIkludmFsaWQgZGVwdGguICBkZXNjZW5kYW50IGNhbiBvbmx5IGJlIGNoaWxkcmVuLiBuYW1lID0gJyVzJywgdGlkID0gJWQsIGluZGV4ID0gJWRcXFwiICUgKHRpbWVyc1tpbmRleF0ubmFtZSwgdGlkLCBpbmRleCkpXFxuK1xcbisgICAgIyBOZXcgZmFtaWx5IHRyZWUuICBQb3Agb3V0IG9mIHRoaXMgb25lLlxcbisgICAgZWxpZiB0aW1lcnNbaW5kZXhdLmRlcHRoIFxcdTAwM2M9IHIuZGVwdGg6XFxuKyAgICAgICMgVGhlIHRpbWVyIGlzIGFuIGFuY2VzdG9yIG9mICdyJy4gIFJldHVybiBzbyBpdCBjYW4gYmUgcHJvY2Vzc2VkIGVsc2V3aGVyZS5cXG4rICAgICAgcmV0dXJuIGluZGV4XFxuK1xcbisgIHJldHVybiBpbmRleFxcbitcXG4rZGVmIG1lcmdlX3RpbWVycyhyOiBCcGZSZXN1bHQsIHRpZDogaW50LCB0aW1lcnM6IExpc3RbQnBmVGltZXJdKTpcXG4rICBpZiBsZW4odGltZXJzKSA9PSAwOlxcbisgICAgcmV0dXJuXFxuK1xcbisgIGlmIHRpbWVyc1swXS5kZXB0aCAhPSAwOlxcbisgICAgcmFpc2UgVmFsdWVFcnJvcihcXFwiRXhwZWN0ZWQgYSBkZXB0aCBvZiAwLiAgJyVzJywgZGVwdGggPSAlZFxcXCIgJSAodGltZXJzWzBdLm5hbWUsIHRpbWVyc1swXS5kZXB0aCkpXFxuK1xcbisgIG1lcmdlX3JlY3Vyc2l2ZShyLCB0aWQsIHRpbWVycywgMCwgLTEpXFxuK1xcbitkZWYgcHJpbnRfcmVjdXJzaXZlKHI6IEJwZlJlc3VsdCwgcmVzdWx0cyA6IExpc3RbUHJvZmlsZXJSZXN1bHRdKTpcXG4rICB0aHJlYWRfdGltZSA9IGZsb2F0KHIudGhyZWFkX3VzKSAvIDEwMDAuMFxcbisgIHdhbGxfdGltZV91cyA9IHIud2FsbF90aW1lX2VuZF91cyAtIHIud2FsbF90aW1lX3N0YXJ0X3VzXFxuKyAgd2FsbF90aW1lID0gZmxvYXQod2FsbF90aW1lX3VzKSAvIDEwMDAuMFxcbisgIG1heF90aW1lID0gZmxvYXQoci5tYXhfdXMpIC8gMTAwMC4wXFxuKyAgYXZnX3RpbWUgPSBmbG9hdChyLmF2Z191cykgLyAxMDAwLjBcXG4rXFxuKyAgaW5kZW50ID0gXFxcIlxcXCJcXG4rICBmb3IgaSBpbiByYW5nZShyLmRlcHRoKTpcXG4rICAgIGluZGVudCArPSBcXFwiICBcXFwiXFxuK1xcbisgIHByaW50KFxcXCIlcyVzLCB0aHJlYWRfdGltZSA9ICUuMmZtcywgd2FsbF90aW1lID0gJS4yZm1zLCBtYXggPSAlLjJmLCBhdmcgPSAlLjJmLCBjb3VudCA9ICVkLCB0aHJlYWRfY291bnQgPSAlZFxcXCIgJVxcbisgICAgICAgIChpbmRlbnQsIHIubmFtZSwgdGhyZWFkX3RpbWUsIHdhbGxfdGltZSwgbWF4X3RpbWUsIGF2Z190aW1lLCByLmNvdW50LCByLnRocmVhZF9jb3VudCkpO1xcbitcXG4rICByZXN1bHRzLmFwcGVuZChcXG4rICAgICAgUHJvZmlsZXJSZXN1bHQoXFxuKyAgICAgICAgICByLm5hbWUsXFxuKyAgICAgICAgICByLnRocmVhZF91cyxcXG4rICAgICAgICAgIHdhbGxfdGltZV91cyxcXG4rICAgICAgICAgIHIubWF4X3VzLFxcbisgICAgICAgICAgci5hdmdfdXMsXFxuKyAgICAgICAgICByLmNvdW50LFxcbisgICAgICAgICAgci50aHJlYWRfY291bnQsXFxuKyAgICAgICAgICAwLFxcbisgICAgICAgICAgci5kZXB0aCxcXG4rICAgICAgKVxcbisgIClcXG4rXFxuKyAgZm9yIGNoaWxkIGluIHIuY2hpbGRyZW46XFxuKyAgICBwcmludF9yZWN1cnNpdmUoY2hpbGQsIHJlc3VsdHMpXFxuK1xcbitkZWYgcHJpbnRfcmVzdWx0cyhyOiBCcGZSZXN1bHQsIHJlc3VsdHMgOiBMaXN0W1Byb2ZpbGVyUmVzdWx0XSk6XFxuKyAgZm9yIGNoaWxkIGluIHIuY2hpbGRyZW46XFxuKyAgICBwcmludF9yZWN1cnNpdmUoY2hpbGQsIHJlc3VsdHMpXFxuK1xcbitkZWYgZ2VuZXJhdGVfZnJvbV9sb2coZmlsZXM6IFNlcXVlbmNlW3N0cl0pOlxcbisgIFxcXCJcXFwiXFxcIlJlYWQgdGhlIHRyYWNlIGFuZCByZXR1cm4gYSBsaXN0IG9mIFByb2ZpbGVyUmVzdWx0IG9iamVjdHMuXFxcIlxcXCJcXFwiXFxuK1xcbisgIHRpbWVyX2NvdW50cyA9IHt9XFxuKyAgYWxsX3RpbWVycyA9IHt9XFxuK1xcbisgIGNvdW50X3JlZ2V4ID0gcmUuY29tcGlsZShcXG4rICAgICAgclxcXCJeQHRpbWVyX2NvdW50XFxcXFsoP1BcXHUwMDNjdGlkXFx1MDAzZVswLTldKylcXFxcXTpcXFxcVyg/UFxcdTAwM2Njb3VudFxcdTAwM2VbLTAtOV0rKVxcXCJcXG4rICApXFxuKyAgbmFtZV9yZWdleCA9IHJlLmNvbXBpbGUoXFxuKyAgICAgIHJcXFwiXkB0aW1lcl9uYW1lXFxcXFsoP1BcXHUwMDNjdGlkXFx1MDAzZVswLTldKyksXFxcXFcqKD9QXFx1MDAzY2luZGV4XFx1MDAzZVswLTldKylcXFxcXTpcXFxcVyg/UFxcdTAwM2NuYW1lXFx1MDAzZVtcXFxcd1xcXFwuMC05XSspXFxcIlxcbisgIClcXG4rICBzdGFydF90aW1lX3JlZ2V4ID0gcmUuY29tcGlsZShcXG4rICAgICAgclxcXCJeQHRpbWVyX3N0YXJ0XFxcXFsoP1BcXHUwMDNjdGlkXFx1MDAzZVswLTldKyksXFxcXFcqKD9QXFx1MDAzY2luZGV4XFx1MDAzZVswLTldKylcXFxcXTpcXFxcVyg/UFxcdTAwM2NzdGFydF90aW1lX3VzXFx1MDAzZVstMC05XSspXFxcIlxcbisgIClcXG4rICBkdXJhdGlvbl9yZWdleCA9IHJlLmNvbXBpbGUoXFxuKyAgICAgIHJcXFwiXkB0aW1lcl9kdXJhdGlvblxcXFxbKD9QXFx1MDAzY3RpZFxcdTAwM2VbMC05XSspLFxcXFxXKig/UFxcdTAwM2NpbmRleFxcdTAwM2VbMC05XSspXFxcXF06XFxcXFcoP1BcXHUwMDNjZHVyYXRpb25fdXNcXHUwMDNlWy0wLTldKylcXFwiXFxuKyAgKVxcbisgIGRlcHRoX3JlZ2V4ID0gcmUuY29tcGlsZShcXG4rICAgICAgclxcXCJeQHRpbWVyX2RlcHRoXFxcXFsoP1BcXHUwMDNjdGlkXFx1MDAzZVswLTldKyksXFxcXFcqKD9QXFx1MDAzY2luZGV4XFx1MDAzZVswLTldKylcXFxcXTpcXFxcVyg/UFxcdTAwM2NkZXB0aFxcdTAwM2VbLTAtOV0rKVxcXCJcXG4rICApXFxuK1xcbisgIGF0dGFjaGluZ19yZWdleCA9IHJlLmNvbXBpbGUoXFxuKyAgICAgIHJcXFwiXkF0dGFjaGluZy4qXFxcIlxcbisgIClcXG4rXFxuKyAgIyBHZXQgYWxsIGNvdW50cy4gIFRoYXQgd2F5IHdlIGtub3cgaG93IG1hbnkgdGltZXJzIGVhY2ggdGhyZWFkIHVzZWQuXFxuKyAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzKTpcXG4rICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpXFxuK1xcbisgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSlcXG4rICAgIGlmIG06XFxuKyAgICAgIHRpZCA9IGludChtLmdyb3VwKFxcXCJ0aWRcXFwiKSlcXG4rICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcXFwiaW5kZXhcXFwiKSlcXG4rICAgICAgZHVyYXRpb25fc3RyID0gbS5ncm91cChcXFwiZHVyYXRpb25fdXNcXFwiKVxcbisgICAgICBkdXJhdGlvbiA9IGludChtLmdyb3VwKFxcXCJkdXJhdGlvbl91c1xcXCIpKVxcbitcXG4rICAgICAgaWYgbm90IHRpZCBpbiB0aW1lcl9jb3VudHM6XFxuKyAgICAgICAgdGltZXJfY291bnRzW3RpZF0gPSBpbmRleFxcbisgICAgICBlbHNlOlxcbisgICAgICAgIHRpbWVyX2NvdW50c1t0aWRdID0gbWF4KHRpbWVyX2NvdW50c1t0aWRdLCBpbmRleClcXG4rXFxuKyAgIyBBbGxvY2F0ZSBlbm91Z2ggdGltZXJzIHRvIGZpdCB0aGUgdHJhY2UuXFxuKyAgZm9yIHRpZCwgY291bnQgaW4gdGltZXJfY291bnRzLml0ZW1zKCk6XFxuKyAgICBhbGxfdGltZXJzW3RpZF0gPSBbTm9uZV0gKiAoY291bnQgKyAxKVxcbitcXG4rICAjIFBvcHVsYXRlIHRoZSB0cmFjZS5cXG4rICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuaW5wdXQoZmlsZXM9ZmlsZXMpOlxcbisgICAgbGluZSA9IGxpbmUucnN0cmlwKClcXG4rXFxuKyAgICBtID0gcmUuZnVsbG1hdGNoKG5hbWVfcmVnZXgsIGxpbmUpXFxuKyAgICBpZiBtOlxcbisgICAgICB0aWQgPSBpbnQobS5ncm91cChcXFwidGlkXFxcIikpXFxuKyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXFxcImluZGV4XFxcIikpXFxuKyAgICAgIG5hbWUgPSBtLmdyb3VwKFxcXCJuYW1lXFxcIilcXG4rICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxcbisgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcXFwiXFxcIiwgMCwgLTEsIC0xKVxcbisgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLm5hbWUgPSBuYW1lXFxuKyAgICAgIGNvbnRpbnVlXFxuK1xcbisgICAgbSA9IHJlLmZ1bGxtYXRjaChzdGFydF90aW1lX3JlZ2V4LCBsaW5lKVxcbisgICAgaWYgbTpcXG4rICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXFxcInRpZFxcXCIpKVxcbisgICAgICBpbmRleCA9IGludChtLmdyb3VwKFxcXCJpbmRleFxcXCIpKVxcbisgICAgICBzdGFydF90aW1lID0gaW50KG0uZ3JvdXAoXFxcInN0YXJ0X3RpbWVfdXNcXFwiKSlcXG4rICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxcbisgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcXFwiXFxcIiwgMCwgLTEsIC0xKVxcbisgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLnN0YXJ0X3RpbWVfdXMgPSBzdGFydF90aW1lXFxuKyAgICAgIGNvbnRpbnVlXFxuK1xcbisgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSlcXG4rICAgIGlmIG06XFxuKyAgICAgIHRpZCA9IGludChtLmdyb3VwKFxcXCJ0aWRcXFwiKSlcXG4rICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcXFwiaW5kZXhcXFwiKSlcXG4rICAgICAgZHVyYXRpb24gPSBpbnQobS5ncm91cChcXFwiZHVyYXRpb25fdXNcXFwiKSlcXG4rICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxcbisgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcXFwiXFxcIiwgMCwgLTEsIC0xKVxcbisgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLmR1cmF0aW9uX3VzID0gZHVyYXRpb25cXG4rICAgICAgY29udGludWVcXG4rXFxuKyAgICBtID0gcmUuZnVsbG1hdGNoKGRlcHRoX3JlZ2V4LCBsaW5lKVxcbisgICAgaWYgbTpcXG4rICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXFxcInRpZFxcXCIpKVxcbisgICAgICBpbmRleCA9IGludChtLmdyb3VwKFxcXCJpbmRleFxcXCIpKVxcbisgICAgICBkZXB0aCA9IGludChtLmdyb3VwKFxcXCJkZXB0aFxcXCIpKVxcbisgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6XFxuKyAgICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9IEJwZlRpbWVyKFxcXCJcXFwiLCAwLCAtMSwgLTEpXFxuKyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZGVwdGggPSBkZXB0aFxcbisgICAgICBjb250aW51ZVxcbitcXG4rICAgIGlmIHJlLmZ1bGxtYXRjaChjb3VudF9yZWdleCwgbGluZSk6XFxuKyAgICAgICMgU2tpcCB0aGlzIGNhc2UuICBJdCdzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQuXFxuKyAgICAgIGNvbnRpbnVlXFxuKyAgICBpZiByZS5mdWxsbWF0Y2goYXR0YWNoaW5nX3JlZ2V4LCBsaW5lKTpcXG4rICAgICAgIyBTa2lwIFxcXCJBdHRhY2hpbmcgWFggcHJvYmVzLi4uXFxcIlxcbisgICAgICBjb250aW51ZVxcbisgICAgaWYgbm90IGxpbmU6XFxuKyAgICAgICMgU2tpcCBlbXB0eSBzdHJpbmdzLlxcbisgICAgICBjb250aW51ZVxcbitcXG4rICAgIHJhaXNlIFZhbHVlRXJyb3IoXFxcIkludmFsaWQgaW5wdXQsICclcydcXFwiICUgKGxpbmUpKVxcbitcXG4rICByb290ID0gQnBmUmVzdWx0KFxcXCJcXFwiLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAtMSwgLTEpXFxuKyAgcmVzdWx0cyA9IFtdXFxuKyAgZm9yIHRpZCwgdGltZXJzIGluIGFsbF90aW1lcnMuaXRlbXMoKTpcXG4rICAgIG1lcmdlX3RpbWVycyhyb290LCB0aWQsIHRpbWVycylcXG4rICBwcmludF9yZXN1bHRzKHJvb3QsIHJlc3VsdHMpXFxuK1xcbisgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSA9PSAwOlxcbisgICAgcmFpc2UgVmFsdWVFcnJvcihcXFwiRXhwZWN0ZWQgYSBmaWxlIHRvIHJlYWQuXFxcIilcXG4rXFxuKyAgaWYgZmlsZWlucHV0LmZpbGVubygpIFxcdTAwM2UgMTpcXG4rICAgIHJhaXNlIFZhbHVlRXJyb3IoXFxcIlRvbyBtYW55IGZpbGVzIHJlYWQuICBFeHBlY3RlZCAxXFxcIilcXG4rXFxuK2RlZiBtYWluKCkgLVxcdTAwM2UgTm9uZTpcXG4rICBcXFwiXFxcIlxcXCJNYWluIGZ1bmN0aW9uLlxcXCJcXFwiXFxcIlxcbitcXG4rICBpZiBsZW4oc3lzLmFyZ3YpIFxcdTAwM2M9IDE6XFxuKyAgICBwcmludChcXFwiRXJyb3I6IE5vdCBlbm91Z2ggY29tbWFuZC1saW5lIGFyZ3VtZW50cy4gRXhwZWN0ZWQgYW4gaW5wdXQgZmlsZVxcXCIsIGZpbGU9c3lzLnN0ZGVycilcXG4rICAgIHN5cy5leGl0KDEpXFxuK1xcbisgIGdlbmVyYXRlX2Zyb21fbG9nKHN5cy5hcmd2WzE6XSlcXG4rXFxuK1xcbitpZiBfX25hbWVfXyA9PSBcXFwiX19tYWluX19cXFwiOlxcbisgIG1haW4oKVxcbmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnRcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZDM0MWU0MDg1NzBlY1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnRcXG5AQCAtMCwwICsxLDE5NyBAQFxcbisjZGVmaW5lIHVzZWNzIChuc2VjcyAvIDEwMDApXFxuKyNkZWZpbmUgbXNlY3MgKG5zZWNzIC8gMTAwMCAvIDEwMDApXFxuKyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpXFxuK1xcbitjb25maWcgPSB7IG1heF9tYXBfa2V5cz00MTk0MzA0OyB9XFxuK1xcbittYWNybyBJTklUX01BUFMoQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxcbit7XFxuK1xcdEB0cmFjZV9zdGFja190b3BbMF0gPSAwO1xcbitcXHRAdGltZXJfY291bnRbMF0gPSAwO1xcbit9XFxuK1xcbittYWNybyBDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxcbit7XFxuK1xcdGNsZWFyKEB0cmFjZV9zdGFjayk7XFxuK1xcdGNsZWFyKEB0cmFjZV9zdGFja190b3ApO1xcbitcXHRjbGVhcihAdGltZXJfY291bnQpO1xcbit9XFxuK1xcbittYWNybyBTVEFSVF9USU1FUihuYW1lLCBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcClcXG4re1xcbitcXHRAdGltZXJfbmFtZVt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IG5hbWU7XFxuK1xcdEB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTtcXG4rXFx0QHRpbWVyX3N0YXJ0W3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gdXNlY3M7XFxuK1xcdEB0aW1lcl9kdXJhdGlvblt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IERVUkFUSU9OX1VOU0VUO1xcbitcXHRAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07XFxuK1xcdEB0aW1lcl9jb3VudFt0aWRdKys7XFxuK1xcdEB0cmFjZV9zdGFja190b3BbdGlkXSsrO1xcbit9XFxuK1xcbisvKlxcbisgKiBVbmZvcnR1bmF0ZWx5IGJyYW5jaCBzdGF0ZW1lbnRzIGNyYXNoIHRoZSBicGZ0cmFjZSBjb21waWxlci4gIEFzIGEgcmVzdWx0LFxcbisgKiB0aGUgYnJhbmNoIGhhcyBiZWVuIG1vdmVkIGRpcmVjdGx5IGludG8gdGhlIHByb2JlLiAgUmV2ZXJzZSB0aGlzIGlmIHRoZVxcbisgKiBjb21waWxlciBldmVyIGdldHMgdGhhdCBmaXhlZC5cXG4rICovXFxuK21hY3JvIFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydClcXG4re1xcbitcXHQkaWR4ID0gQHRyYWNlX3N0YWNrW3RpZCwgLS1AdHJhY2Vfc3RhY2tfdG9wW3RpZF1dO1xcbitcXHRAdGltZXJfZHVyYXRpb25bdGlkLCAkaWR4XSA9IHVzZWNzIC0gQHRpbWVyX3N0YXJ0W3RpZCwgJGlkeF07XFxuK31cXG4rXFxuK0JFR0lOXFxuK3tcXG4rXFx0SU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ2t2bV9zY2hlZF9pbigpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fc2NoZWRfaW4gL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOmt2bV9zY2hlZF9pblxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJrdm1fc2NoZWRfaW5cXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6a3ZtX3NjaGVkX2luXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICdrdm1fc2NoZWRfb3V0KCknLlxcbisgKlxcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9zY2hlZF9vdXQgL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOmt2bV9zY2hlZF9vdXRcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwia3ZtX3NjaGVkX291dFxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitcXG4ra3JldGZ1bmM6a3ZtX3NjaGVkX291dFxcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAna3ZtX2FyY2hfdmNwdV9sb2FkKCknLlxcbisgKlxcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfbG9hZCAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6a3ZtX2FyY2hfdmNwdV9sb2FkXFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcImt2bV9hcmNoX3ZjcHVfbG9hZFxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X2xvYWRcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ2t2bV9hcmNoX3ZjcHVfcHV0KCknLlxcbisgKlxcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfcHV0IC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzprdm1fYXJjaF92Y3B1X3B1dFxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJrdm1fYXJjaF92Y3B1X3B1dFxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X3B1dFxcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAnS1ZNX1JVTicsIGkuZS4ga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKS5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgaG93IGxvbmcgYSBndWVzdCBydW5zIHVzaW5nIHRyYWNlcG9pbnRzIFxcXCJrdm1fZW50cnlcXFwiIGFuZCBcXFwia3ZtX2V4aXRcXFwiLlxcbisgKi9cXG4rdHJhY2Vwb2ludDprdm06a3ZtX2VudHJ5XFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcInJ1bl9ndWVzdFxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbit0cmFjZXBvaW50Omt2bTprdm1fZXhpdFxcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAna3ZtX3ZjcHVfYmxvY2soKScuXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3ZjcHVfYmxvY2sgL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOmt2bV92Y3B1X2Jsb2NrXFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcImt2bV92Y3B1X2Jsb2NrXFxcIixcXG4rXFx0XFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xcbit9XFxuK2tyZXRmdW5jOmt2bV92Y3B1X2Jsb2NrXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICdrdm1fbW11X3BhZ2VfZmF1bHQoKScuXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX21tdV9wYWdlX2ZhdWx0IC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzprdm1fbW11X3BhZ2VfZmF1bHRcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwia3ZtX3ZjcHVfYmxvY2tcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6a3ZtX21tdV9wYWdlX2ZhdWx0XFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBEdW1wIHRoZSByZXN1bHRzIHRvIHN0ZG91dC5cXG4rICovXFxuK0VORFxcbit7XFxuK1xcdENMRUFSX01BUFMoQHRyYWNlX3N0YWNrLCBAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL3ZmaW9fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uM2I4Y2I3ZmY2MjEwZGVcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL3NhbXBsZXMvdmZpb190cmFjZS5idFxcbkBAIC0wLDAgKzEsMzE1IEBAXFxuKyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMClcXG4rI2RlZmluZSBtc2VjcyAobnNlY3MgLyAxMDAwIC8gMTAwMClcXG4rI2RlZmluZSBEVVJBVElPTl9VTlNFVCAoKHVpbnQ2NCktMSlcXG4rXFxuK2NvbmZpZyA9IHsgbWF4X21hcF9rZXlzPTQxOTQzMDQ7IH1cXG4rXFxuK21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXFxuK3tcXG4rXFx0QHRyYWNlX3N0YWNrX3RvcFswXSA9IDA7XFxuK1xcdEB0aW1lcl9jb3VudFswXSA9IDA7XFxuK31cXG4rXFxuK21hY3JvIENMRUFSX01BUFMoQHRyYWNlX3N0YWNrLCBAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXFxuK3tcXG4rXFx0Y2xlYXIoQHRyYWNlX3N0YWNrKTtcXG4rXFx0Y2xlYXIoQHRyYWNlX3N0YWNrX3RvcCk7XFxuK1xcdGNsZWFyKEB0aW1lcl9jb3VudCk7XFxuK31cXG4rXFxuK21hY3JvIFNUQVJUX1RJTUVSKG5hbWUsIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKVxcbit7XFxuK1xcdEB0aW1lcl9uYW1lW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gbmFtZTtcXG4rXFx0QHRyYWNlX3N0YWNrW3RpZCwgQHRyYWNlX3N0YWNrX3RvcFt0aWRdXSA9IEB0aW1lcl9jb3VudFt0aWRdO1xcbitcXHRAdGltZXJfc3RhcnRbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSB1c2VjcztcXG4rXFx0QHRpbWVyX2R1cmF0aW9uW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gRFVSQVRJT05fVU5TRVQ7XFxuK1xcdEB0aW1lcl9kZXB0aFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IEB0cmFjZV9zdGFja190b3BbdGlkXTtcXG4rXFx0QHRpbWVyX2NvdW50W3RpZF0rKztcXG4rXFx0QHRyYWNlX3N0YWNrX3RvcFt0aWRdKys7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFVuZm9ydHVuYXRlbHkgYnJhbmNoIHN0YXRlbWVudHMgY3Jhc2ggdGhlIGJwZnRyYWNlIGNvbXBpbGVyLiAgQXMgYSByZXN1bHQsXFxuKyAqIHRoZSBicmFuY2ggaGFzIGJlZW4gbW92ZWQgZGlyZWN0bHkgaW50byB0aGUgcHJvYmUuICBSZXZlcnNlIHRoaXMgaWYgdGhlXFxuKyAqIGNvbXBpbGVyIGV2ZXIgZ2V0cyB0aGF0IGZpeGVkLlxcbisgKi9cXG4rbWFjcm8gU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KVxcbit7XFxuK1xcdCRpZHggPSBAdHJhY2Vfc3RhY2tbdGlkLCAtLUB0cmFjZV9zdGFja190b3BbdGlkXV07XFxuK1xcdEB0aW1lcl9kdXJhdGlvblt0aWQsICRpZHhdID0gdXNlY3MgLSBAdGltZXJfc3RhcnRbdGlkLCAkaWR4XTtcXG4rfVxcbitcXG4rQkVHSU5cXG4re1xcbitcXHRJTklUX01BUFMoQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KTtcXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAndmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCgpJy5cXG4rICpcXG4rICogVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZEID0gMHgzYjZhXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvYXJncy1cXHUwMDNlY21kID09IDB4M2I2YS9cXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwidmZpb19ncm91cF9pb2N0bF9nZXRfZGV2aWNlX2ZkXFxcIixcXG4rXFx0XFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xcbit9XFxuK2tyZXRmdW5jOnZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL2FyZ3MtXFx1MDAzZWNtZCA9PSAweDNiNmEvXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICd2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZCgpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwidmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9fZGZfdW5iaW5kX2lvbW11ZmQoKScuXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl91bmJpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19kZl91bmJpbmRfaW9tbXVmZFxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX2RmX3VuYmluZF9pb21tdWZkXFxcIixcXG4rXFx0XFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xcbit9XFxuK2tyZXRmdW5jOnZmaW9fZGZfdW5iaW5kX2lvbW11ZmRcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9fZGZfb3BlbigpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2RmX29wZW4gL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOnZmaW9fZGZfb3Blblxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX2RmX29wZW5cXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb19kZl9vcGVuXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICdwY2llX2ZscigpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2llX2ZsciAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6cGNpZV9mbHJcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwicGNpZV9mbHJcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6cGNpZV9mbHJcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3BjaV9kZXZfd2FpdCgpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2lfZGV2X3dhaXQgL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOnBjaV9kZXZfd2FpdFxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJwY2lfZGV2X3dhaXRcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6cGNpX2Rldl93YWl0XFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICd2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCknIHdoZW4gJ1ZGSU9fSU9NTVVfTUFQX0RNQScgaXMgY2FsbGVkLlxcbisgKlxcbisgKlxcbisgKiBWRklPX0lPTU1VX01BUF9ETUEgPSAweDNiNzFcXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVxcdTAwM2VjbWQgPT0gMHgzYjcxL1xcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX2lvbW11X3R5cGUxX21hcF9kbWFcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy1cXHUwMDNlY21kID09IDB4M2I3MS9cXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9fcGluX21hcF9kbWEoKScuXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19waW5fbWFwX2RtYSAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19waW5fbWFwX2RtYVxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX3Bpbl9tYXBfZG1hXFxcIixcXG4rXFx0XFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xcbit9XFxuK2tyZXRmdW5jOnZmaW9fcGluX21hcF9kbWFcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9fcGluX3BhZ2VzX3JlbW90ZSgpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX3Bpbl9wYWdlc19yZW1vdGUgL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOnZmaW9fcGluX3BhZ2VzX3JlbW90ZVxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX3Bpbl9wYWdlc19yZW1vdGVcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb19waW5fcGFnZXNfcmVtb3RlXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICd2YWRkcl9nZXRfcGZucygpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2YWRkcl9nZXRfcGZucyAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmFkZHJfZ2V0X3BmbnNcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwidmFkZHJfZ2V0X3BmbnNcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmFkZHJfZ2V0X3BmbnNcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8vIC8qXFxuKy8vICAqIFRpbWUgJ2lvbW11X21hcCgpJy5cXG4rLy8gICpcXG4rLy8gICogQ2hlY2s6IHN1ZG8gZ3JlcCBpb21tdV9tYXAgL3Byb2Mva2FsbHN5bXNcXG4rLy8gICovXFxuKy8vIGtmdW5jOmlvbW11X21hcFxcbisvLyB7XFxuKy8vIFxcdFNUQVJUX1RJTUVSKFxcXCJpb21tdV9tYXBcXFwiLFxcbisvLyBcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuKy8vIFxcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuKy8vIH1cXG4rLy8ga3JldGZ1bmM6aW9tbXVfbWFwXFxuKy8vIHtcXG4rLy8gXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rLy8gXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rLy8gXFx0fVxcbisvLyB9XFxuK1xcbitcXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9faW9tbXVfdHlwZTFfaW9jdGwoKScgd2hlbiAnVkZJT19JT01NVV9VTk1BUF9ETUEnIGlzIGNhbGxlZC5cXG4rICpcXG4rICogVkZJT19JT01NVV9VTk1BUF9ETUEgPSAweDNiNzJcXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVxcdTAwM2VjbWQgPT0gMHgzYjcyL1xcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX2lvbW11X3R5cGUxX3VubWFwX2RtYVxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitrcmV0ZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVxcdTAwM2VjbWQgPT0gMHgzYjcyL1xcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAndmZpb191bm1hcF91bnBpbigpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX3VubWFwX3VucGluIC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzp2ZmlvX3VubWFwX3VucGluXFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcInZmaW9fdW5tYXBfdW5waW5cXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb191bm1hcF91bnBpblxcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAndmZpb19zeW5jX3VucGluKCknLlxcbisgKlxcbisgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fc3luY191bnBpbiAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19zeW5jX3VucGluXFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcInZmaW9fc3luY191bnBpblxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitrcmV0ZnVuYzp2ZmlvX3N5bmNfdW5waW5cXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LlxcbisgKi9cXG4rRU5EXFxuK3tcXG4rXFx0Q0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7XFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6MDk6NTQuNDkyMzc2Nzc5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA0OTIwNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYnBmdHJhY2Ugc2NyaXB0cyBhbmQgYSBweXRob24gc2NyaXB0IGZvciBwcm9maWxpbmcgdW5kZXIgdG9vbHMvYnBmdHJhY2UvLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTU4YWU0ZWM3MzYwYTA1M2I0NWZiNDdhZGUyNTk1ZDk0YTBjMDRjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDIyOjA5OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weSBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9hZ2dyZWdhdGVfYnBmX3Jlc3VsdHMucHlcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZjRmZmU4Y2ZmNDQxOGVcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9hZ2dyZWdhdGVfYnBmX3Jlc3VsdHMucHlcbkBAIC0wLDAgKzEsMzE4IEBAXG4rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbisjXG4rIyBQcmludHMgdGhlIGFnZ3JlZ2F0ZSByZXN1bHRzIG9mIGFuIGluc3RydW1lbnRlZCBCUEYgdHJhY2UuXG4rI1xuKyMgQ29weXJpZ2h0IDIwMjYgR29vZ2xlIExMQ1xuKyNcbisjIEF1dGhvcjogQWFyb24gTGV3aXMgXHUwMDNjYWFyb25sZXdpc0Bnb29nbGUuY29tXHUwMDNlXG4rXG4raW1wb3J0IGZpbGVpbnB1dFxuK2ltcG9ydCByZVxuK2ltcG9ydCBzeXNcbitpbXBvcnQgd2FybmluZ3Ncbitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgU2VxdWVuY2VcbitcbitjbGFzcyBQcm9maWxlclJlc3VsdDpcbisgIFwiXCJcIkNsYXNzIGZvciBob2xkaW5nIHRoZSBwcm9maWxlciByZXN1bHRzLlwiXCJcIlxuK1xuKyAgZGVmIF9faW5pdF9fKFxuKyAgICAgIHNlbGYsXG4rICAgICAgbmFtZTogc3RyLFxuKyAgICAgIHRocmVhZF91c2VjOiBpbnQsXG4rICAgICAgd2FsbF91c2VjOiBpbnQsXG4rICAgICAgbWF4X3VzZWM6IGludCxcbisgICAgICBhdmdfdXNlYzogaW50LFxuKyAgICAgIGNvdW50OiBpbnQsXG4rICAgICAgdGhyZWFkX2NvdW50OiBpbnQsXG4rICAgICAgaW5jb21wbGV0ZV9jb3VudDogaW50LFxuKyAgICAgIGRlcHRoOiBpbnQsXG4rICApOlxuKyAgICBzZWxmLm5hbWUgPSBuYW1lXG4rICAgIHNlbGYudGhyZWFkX3VzZWMgPSB0aHJlYWRfdXNlY1xuKyAgICBzZWxmLndhbGxfdXNlYyA9IHdhbGxfdXNlY1xuKyAgICBzZWxmLm1heF91c2VjID0gbWF4X3VzZWNcbisgICAgc2VsZi5hdmdfdXNlYyA9IGF2Z191c2VjXG4rICAgIHNlbGYuY291bnQgPSBjb3VudFxuKyAgICBzZWxmLnRocmVhZF9jb3VudCA9IHRocmVhZF9jb3VudFxuKyAgICBzZWxmLmluY29tcGxldGVfY291bnQgPSBpbmNvbXBsZXRlX2NvdW50XG4rICAgIHNlbGYuZGVwdGggPSBkZXB0aFxuK1xuK2NsYXNzIEJwZlRpbWVyOlxuKyAgXCJcIlwiQ2xhc3MgZm9yIGhvbGRpbmcgYSB0aW1lci5cIlwiXCJcbitcbisgIGRlZiBfX2luaXRfXyhcbisgICAgICBzZWxmLFxuKyAgICAgIG5hbWU6IHN0cixcbisgICAgICBzdGFydF90aW1lX3VzOiBpbnQsXG4rICAgICAgZHVyYXRpb25fdXM6IGludCxcbisgICAgICBkZXB0aDogaW50LFxuKyAgKTpcbisgICAgc2VsZi5uYW1lID0gbmFtZVxuKyAgICBzZWxmLnN0YXJ0X3RpbWVfdXMgPSBzdGFydF90aW1lX3VzXG4rICAgIHNlbGYuZHVyYXRpb25fdXMgPSBkdXJhdGlvbl91c1xuKyAgICBzZWxmLmRlcHRoID0gZGVwdGhcbitcbitjbGFzcyBCcGZSZXN1bHQ6XG4rICBcIlwiXCJDbGFzcyBmb3IgaG9sZGluZyB0aGUgcHJvZmlsZXIgcmVzdWx0cy5cIlwiXCJcbitcbisgIGRlZiBfX2luaXRfXyhcbisgICAgICBzZWxmLFxuKyAgICAgIG5hbWU6IHN0cixcbisgICAgICB3YWxsX3RpbWVfc3RhcnRfdXM6IGludCxcbisgICAgICB3YWxsX3RpbWVfZW5kX3VzOiBpbnQsXG4rICAgICAgdGhyZWFkX3VzOiBpbnQsXG4rICAgICAgbWF4X3VzOiBpbnQsXG4rICAgICAgYXZnX3VzOiBpbnQsXG4rICAgICAgY291bnQ6IGludCxcbisgICAgICB0aHJlYWRfY291bnQ6IGludCxcbisgICAgICBkZXB0aDogaW50LFxuKyAgICAgIHRpZDogaW50LFxuKyAgKTpcbisgICAgc2VsZi5uYW1lID0gbmFtZVxuKyAgICBzZWxmLndhbGxfdGltZV9zdGFydF91cyA9IHdhbGxfdGltZV9zdGFydF91c1xuKyAgICBzZWxmLndhbGxfdGltZV9lbmRfdXMgPSB3YWxsX3RpbWVfZW5kX3VzXG4rICAgIHNlbGYudGhyZWFkX3VzID0gdGhyZWFkX3VzXG4rICAgIHNlbGYubWF4X3VzID0gbWF4X3VzXG4rICAgIHNlbGYuYXZnX3VzID0gYXZnX3VzXG4rICAgIHNlbGYuY291bnQgPSBjb3VudFxuKyAgICBzZWxmLnRocmVhZF9jb3VudCA9IHRocmVhZF9jb3VudFxuKyAgICBzZWxmLmRlcHRoID0gZGVwdGhcbisgICAgc2VsZi5jaGlsZHJlbiA9IFtdXG4rICAgIHNlbGYuY2hpbGRfaW5kZXggPSB7fVxuKyAgICBzZWxmLnRocmVhZHMgPSB7fVxuKyAgICBzZWxmLnRocmVhZHNbdGlkXSA9IFRydWVcbitcbitkZWYgdXBkYXRlX2NoaWxkKHI6IEJwZlJlc3VsdCwgdGltZXI6IEJwZlRpbWVyLCB0aWQ6IGludCkgLVx1MDAzZSBpbnQ6XG4rICBpID0gci5jaGlsZF9pbmRleC5nZXQodGltZXIubmFtZSlcbisgIGlmIGkgaXMgTm9uZTpcbisgICAgaSA9IGxlbihyLmNoaWxkcmVuKVxuKyAgICByLmNoaWxkcmVuLmFwcGVuZChCcGZSZXN1bHQoXG4rICAgICAgICB0aW1lci5uYW1lLFxuKyAgICAgICAgdGltZXIuc3RhcnRfdGltZV91cyxcbisgICAgICAgIHRpbWVyLnN0YXJ0X3RpbWVfdXMgKyB0aW1lci5kdXJhdGlvbl91cyxcbisgICAgICAgIHRpbWVyLmR1cmF0aW9uX3VzLFxuKyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXG4rICAgICAgICB0aW1lci5kdXJhdGlvbl91cyxcbisgICAgICAgIDEsXG4rICAgICAgICAxLFxuKyAgICAgICAgdGltZXIuZGVwdGgsXG4rICAgICAgICB0aWQpKVxuKyAgICByLmNoaWxkX2luZGV4W3RpbWVyLm5hbWVdID0gaVxuKyAgZWxzZTpcbisgICAgci5jaGlsZHJlbltpXS53YWxsX3RpbWVfc3RhcnRfdXMgPSBtaW4oci5jaGlsZHJlbltpXS53YWxsX3RpbWVfc3RhcnRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMpXG4rICAgIHIuY2hpbGRyZW5baV0ud2FsbF90aW1lX2VuZF91cyA9IG1heChyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9lbmRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMgKyB0aW1lci5kdXJhdGlvbl91cylcbisgICAgci5jaGlsZHJlbltpXS50aHJlYWRfdXMgKz0gdGltZXIuZHVyYXRpb25fdXNcbisgICAgci5jaGlsZHJlbltpXS5tYXhfdXMgPSBtYXgoci5jaGlsZHJlbltpXS5tYXhfdXMsIHRpbWVyLmR1cmF0aW9uX3VzKVxuKyAgICByLmNoaWxkcmVuW2ldLmNvdW50ICs9IDFcbisgICAgci5jaGlsZHJlbltpXS5hdmdfdXMgPSByLmNoaWxkcmVuW2ldLnRocmVhZF91cyAvIHIuY2hpbGRyZW5baV0uY291bnRcbisgICAgaWYgci5jaGlsZHJlbltpXS50aHJlYWRzLmdldCh0aWQpIGlzIE5vbmU6XG4rICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRzW3RpZF0gPSBUcnVlXG4rICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRfY291bnQgKz0gMVxuK1xuKyAgcmV0dXJuIGlcbitcbitkZWYgbWVyZ2VfcmVjdXJzaXZlKHI6IEJwZlJlc3VsdCwgdGlkOiBpbnQsIHRpbWVyczogTGlzdFtCcGZUaW1lcl0sIGluZGV4OiBpbnQsIGNoaWxkX2luZGV4OiBpbnQpIC1cdTAwM2UgaW50OlxuKyAgd2hpbGUgaW5kZXggXHUwMDNjIGxlbih0aW1lcnMpOlxuKyAgICB3aGlsZSBpbmRleCBcdTAwM2MgbGVuKHRpbWVycykgYW5kIHRpbWVyc1tpbmRleF0gPT0gTm9uZTpcbisgICAgICBpbmRleCArPSAxXG4rXG4rICAgIGlmIGluZGV4IFx1MDAzZT0gbGVuKHRpbWVycyk6XG4rICAgICAgcmV0dXJuIGluZGV4XG4rXG4rICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJ3InLiAoQ2hpbGQgY2FzZSlcbisgICAgaWYgdGltZXJzW2luZGV4XS5kZXB0aCA9PSAoci5kZXB0aCArIDEpOlxuKyAgICAgICMgQWRkIGNoaWxkXG4rICAgICAgY2hpbGRfaW5kZXggPSB1cGRhdGVfY2hpbGQociwgdGltZXJzW2luZGV4XSwgdGlkKVxuK1xuKyAgICAgICMgTm93IHRoYXQgdGhlIHRpbWVyIGhhcyBiZWVuIGhhbmRsZWQgaW5jcmVtZW50IHRvIHRoZSBuZXh0IG9uZS5cbisgICAgICBpbmRleCArPSAxXG4rXG4rICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJ3InLiAoR3JhbmRjaGlsZCBjYXNlKVxuKyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggPT0gKHIuZGVwdGggKyAyKTpcbisgICAgICBpZiBjaGlsZF9pbmRleCBcdTAwM2MgMDpcbisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoXCJJbnZhbGlkICdjaGlsZF9pbmRleCdcIilcbisgICAgICAjIFJlY3Vyc2UgZG93biB0aGUgY2hpbGQgYmVjdWFzZSB0aGF0IGlzIHRoZSBwYXJlbnQgdGhpcyB0aW1lci5cbisgICAgICBpbmRleCA9IG1lcmdlX3JlY3Vyc2l2ZShyLmNoaWxkcmVuW2NoaWxkX2luZGV4XSwgdGlkLCB0aW1lcnMsIGluZGV4LCBjaGlsZF9pbmRleClcbitcbisgICAgIyBUaGUgdGltZXIgaXMgYSBkZXNjZW5kYW50IG9mICdyJywgYnV0IG5vdCB0aGUgY2hpbGQuLi4gSW52YWxpZCBjYXNlIVxuKyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggXHUwMDNlIChyLmRlcHRoICsgMik6XG4rICAgICAgcmFpc2UgVmFsdWVFcnJvcihcIkludmFsaWQgZGVwdGguICBkZXNjZW5kYW50IGNhbiBvbmx5IGJlIGNoaWxkcmVuLiBuYW1lID0gJyVzJywgdGlkID0gJWQsIGluZGV4ID0gJWRcIiAlICh0aW1lcnNbaW5kZXhdLm5hbWUsIHRpZCwgaW5kZXgpKVxuK1xuKyAgICAjIE5ldyBmYW1pbHkgdHJlZS4gIFBvcCBvdXQgb2YgdGhpcyBvbmUuXG4rICAgIGVsaWYgdGltZXJzW2luZGV4XS5kZXB0aCBcdTAwM2M9IHIuZGVwdGg6XG4rICAgICAgIyBUaGUgdGltZXIgaXMgYW4gYW5jZXN0b3Igb2YgJ3InLiAgUmV0dXJuIHNvIGl0IGNhbiBiZSBwcm9jZXNzZWQgZWxzZXdoZXJlLlxuKyAgICAgIHJldHVybiBpbmRleFxuK1xuKyAgcmV0dXJuIGluZGV4XG4rXG4rZGVmIG1lcmdlX3RpbWVycyhyOiBCcGZSZXN1bHQsIHRpZDogaW50LCB0aW1lcnM6IExpc3RbQnBmVGltZXJdKTpcbisgIGlmIGxlbih0aW1lcnMpID09IDA6XG4rICAgIHJldHVyblxuK1xuKyAgaWYgdGltZXJzWzBdLmRlcHRoICE9IDA6XG4rICAgIHJhaXNlIFZhbHVlRXJyb3IoXCJFeHBlY3RlZCBhIGRlcHRoIG9mIDAuICAnJXMnLCBkZXB0aCA9ICVkXCIgJSAodGltZXJzWzBdLm5hbWUsIHRpbWVyc1swXS5kZXB0aCkpXG4rXG4rICBtZXJnZV9yZWN1cnNpdmUociwgdGlkLCB0aW1lcnMsIDAsIC0xKVxuK1xuK2RlZiBwcmludF9yZWN1cnNpdmUocjogQnBmUmVzdWx0LCByZXN1bHRzIDogTGlzdFtQcm9maWxlclJlc3VsdF0pOlxuKyAgdGhyZWFkX3RpbWUgPSBmbG9hdChyLnRocmVhZF91cykgLyAxMDAwLjBcbisgIHdhbGxfdGltZV91cyA9IHIud2FsbF90aW1lX2VuZF91cyAtIHIud2FsbF90aW1lX3N0YXJ0X3VzXG4rICB3YWxsX3RpbWUgPSBmbG9hdCh3YWxsX3RpbWVfdXMpIC8gMTAwMC4wXG4rICBtYXhfdGltZSA9IGZsb2F0KHIubWF4X3VzKSAvIDEwMDAuMFxuKyAgYXZnX3RpbWUgPSBmbG9hdChyLmF2Z191cykgLyAxMDAwLjBcbitcbisgIGluZGVudCA9IFwiXCJcbisgIGZvciBpIGluIHJhbmdlKHIuZGVwdGgpOlxuKyAgICBpbmRlbnQgKz0gXCIgIFwiXG4rXG4rICBwcmludChcIiVzJXMsIHRocmVhZF90aW1lID0gJS4yZm1zLCB3YWxsX3RpbWUgPSAlLjJmbXMsIG1heCA9ICUuMmYsIGF2ZyA9ICUuMmYsIGNvdW50ID0gJWQsIHRocmVhZF9jb3VudCA9ICVkXCIgJVxuKyAgICAgICAgKGluZGVudCwgci5uYW1lLCB0aHJlYWRfdGltZSwgd2FsbF90aW1lLCBtYXhfdGltZSwgYXZnX3RpbWUsIHIuY291bnQsIHIudGhyZWFkX2NvdW50KSk7XG4rXG4rICByZXN1bHRzLmFwcGVuZChcbisgICAgICBQcm9maWxlclJlc3VsdChcbisgICAgICAgICAgci5uYW1lLFxuKyAgICAgICAgICByLnRocmVhZF91cyxcbisgICAgICAgICAgd2FsbF90aW1lX3VzLFxuKyAgICAgICAgICByLm1heF91cyxcbisgICAgICAgICAgci5hdmdfdXMsXG4rICAgICAgICAgIHIuY291bnQsXG4rICAgICAgICAgIHIudGhyZWFkX2NvdW50LFxuKyAgICAgICAgICAwLFxuKyAgICAgICAgICByLmRlcHRoLFxuKyAgICAgIClcbisgIClcbitcbisgIGZvciBjaGlsZCBpbiByLmNoaWxkcmVuOlxuKyAgICBwcmludF9yZWN1cnNpdmUoY2hpbGQsIHJlc3VsdHMpXG4rXG4rZGVmIHByaW50X3Jlc3VsdHMocjogQnBmUmVzdWx0LCByZXN1bHRzIDogTGlzdFtQcm9maWxlclJlc3VsdF0pOlxuKyAgZm9yIGNoaWxkIGluIHIuY2hpbGRyZW46XG4rICAgIHByaW50X3JlY3Vyc2l2ZShjaGlsZCwgcmVzdWx0cylcbitcbitkZWYgZ2VuZXJhdGVfZnJvbV9sb2coZmlsZXM6IFNlcXVlbmNlW3N0cl0pOlxuKyAgXCJcIlwiUmVhZCB0aGUgdHJhY2UgYW5kIHJldHVybiBhIGxpc3Qgb2YgUHJvZmlsZXJSZXN1bHQgb2JqZWN0cy5cIlwiXCJcbitcbisgIHRpbWVyX2NvdW50cyA9IHt9XG4rICBhbGxfdGltZXJzID0ge31cbitcbisgIGNvdW50X3JlZ2V4ID0gcmUuY29tcGlsZShcbisgICAgICByXCJeQHRpbWVyX2NvdW50XFxbKD9QXHUwMDNjdGlkXHUwMDNlWzAtOV0rKVxcXTpcXFcoP1BcdTAwM2Njb3VudFx1MDAzZVstMC05XSspXCJcbisgIClcbisgIG5hbWVfcmVnZXggPSByZS5jb21waWxlKFxuKyAgICAgIHJcIl5AdGltZXJfbmFtZVxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldKyksXFxXKig/UFx1MDAzY2luZGV4XHUwMDNlWzAtOV0rKVxcXTpcXFcoP1BcdTAwM2NuYW1lXHUwMDNlW1xcd1xcLjAtOV0rKVwiXG4rICApXG4rICBzdGFydF90aW1lX3JlZ2V4ID0gcmUuY29tcGlsZShcbisgICAgICByXCJeQHRpbWVyX3N0YXJ0XFxbKD9QXHUwMDNjdGlkXHUwMDNlWzAtOV0rKSxcXFcqKD9QXHUwMDNjaW5kZXhcdTAwM2VbMC05XSspXFxdOlxcVyg/UFx1MDAzY3N0YXJ0X3RpbWVfdXNcdTAwM2VbLTAtOV0rKVwiXG4rICApXG4rICBkdXJhdGlvbl9yZWdleCA9IHJlLmNvbXBpbGUoXG4rICAgICAgclwiXkB0aW1lcl9kdXJhdGlvblxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldKyksXFxXKig/UFx1MDAzY2luZGV4XHUwMDNlWzAtOV0rKVxcXTpcXFcoP1BcdTAwM2NkdXJhdGlvbl91c1x1MDAzZVstMC05XSspXCJcbisgIClcbisgIGRlcHRoX3JlZ2V4ID0gcmUuY29tcGlsZShcbisgICAgICByXCJeQHRpbWVyX2RlcHRoXFxbKD9QXHUwMDNjdGlkXHUwMDNlWzAtOV0rKSxcXFcqKD9QXHUwMDNjaW5kZXhcdTAwM2VbMC05XSspXFxdOlxcVyg/UFx1MDAzY2RlcHRoXHUwMDNlWy0wLTldKylcIlxuKyAgKVxuK1xuKyAgYXR0YWNoaW5nX3JlZ2V4ID0gcmUuY29tcGlsZShcbisgICAgICByXCJeQXR0YWNoaW5nLipcIlxuKyAgKVxuK1xuKyAgIyBHZXQgYWxsIGNvdW50cy4gIFRoYXQgd2F5IHdlIGtub3cgaG93IG1hbnkgdGltZXJzIGVhY2ggdGhyZWFkIHVzZWQuXG4rICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuaW5wdXQoZmlsZXM9ZmlsZXMpOlxuKyAgICBsaW5lID0gbGluZS5yc3RyaXAoKVxuK1xuKyAgICBtID0gcmUuZnVsbG1hdGNoKGR1cmF0aW9uX3JlZ2V4LCBsaW5lKVxuKyAgICBpZiBtOlxuKyAgICAgIHRpZCA9IGludChtLmdyb3VwKFwidGlkXCIpKVxuKyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXCJpbmRleFwiKSlcbisgICAgICBkdXJhdGlvbl9zdHIgPSBtLmdyb3VwKFwiZHVyYXRpb25fdXNcIilcbisgICAgICBkdXJhdGlvbiA9IGludChtLmdyb3VwKFwiZHVyYXRpb25fdXNcIikpXG4rXG4rICAgICAgaWYgbm90IHRpZCBpbiB0aW1lcl9jb3VudHM6XG4rICAgICAgICB0aW1lcl9jb3VudHNbdGlkXSA9IGluZGV4XG4rICAgICAgZWxzZTpcbisgICAgICAgIHRpbWVyX2NvdW50c1t0aWRdID0gbWF4KHRpbWVyX2NvdW50c1t0aWRdLCBpbmRleClcbitcbisgICMgQWxsb2NhdGUgZW5vdWdoIHRpbWVycyB0byBmaXQgdGhlIHRyYWNlLlxuKyAgZm9yIHRpZCwgY291bnQgaW4gdGltZXJfY291bnRzLml0ZW1zKCk6XG4rICAgIGFsbF90aW1lcnNbdGlkXSA9IFtOb25lXSAqIChjb3VudCArIDEpXG4rXG4rICAjIFBvcHVsYXRlIHRoZSB0cmFjZS5cbisgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5pbnB1dChmaWxlcz1maWxlcyk6XG4rICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpXG4rXG4rICAgIG0gPSByZS5mdWxsbWF0Y2gobmFtZV9yZWdleCwgbGluZSlcbisgICAgaWYgbTpcbisgICAgICB0aWQgPSBpbnQobS5ncm91cChcInRpZFwiKSlcbisgICAgICBpbmRleCA9IGludChtLmdyb3VwKFwiaW5kZXhcIikpXG4rICAgICAgbmFtZSA9IG0uZ3JvdXAoXCJuYW1lXCIpXG4rICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxuKyAgICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9IEJwZlRpbWVyKFwiXCIsIDAsIC0xLCAtMSlcbisgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLm5hbWUgPSBuYW1lXG4rICAgICAgY29udGludWVcbitcbisgICAgbSA9IHJlLmZ1bGxtYXRjaChzdGFydF90aW1lX3JlZ2V4LCBsaW5lKVxuKyAgICBpZiBtOlxuKyAgICAgIHRpZCA9IGludChtLmdyb3VwKFwidGlkXCIpKVxuKyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXCJpbmRleFwiKSlcbisgICAgICBzdGFydF90aW1lID0gaW50KG0uZ3JvdXAoXCJzdGFydF90aW1lX3VzXCIpKVxuKyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZTpcbisgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcIlwiLCAwLCAtMSwgLTEpXG4rICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XS5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZVxuKyAgICAgIGNvbnRpbnVlXG4rXG4rICAgIG0gPSByZS5mdWxsbWF0Y2goZHVyYXRpb25fcmVnZXgsIGxpbmUpXG4rICAgIGlmIG06XG4rICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXCJ0aWRcIikpXG4rICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcImluZGV4XCIpKVxuKyAgICAgIGR1cmF0aW9uID0gaW50KG0uZ3JvdXAoXCJkdXJhdGlvbl91c1wiKSlcbisgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6XG4rICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoXCJcIiwgMCwgLTEsIC0xKVxuKyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZHVyYXRpb25fdXMgPSBkdXJhdGlvblxuKyAgICAgIGNvbnRpbnVlXG4rXG4rICAgIG0gPSByZS5mdWxsbWF0Y2goZGVwdGhfcmVnZXgsIGxpbmUpXG4rICAgIGlmIG06XG4rICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXCJ0aWRcIikpXG4rICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcImluZGV4XCIpKVxuKyAgICAgIGRlcHRoID0gaW50KG0uZ3JvdXAoXCJkZXB0aFwiKSlcbisgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6XG4rICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoXCJcIiwgMCwgLTEsIC0xKVxuKyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZGVwdGggPSBkZXB0aFxuKyAgICAgIGNvbnRpbnVlXG4rXG4rICAgIGlmIHJlLmZ1bGxtYXRjaChjb3VudF9yZWdleCwgbGluZSk6XG4rICAgICAgIyBTa2lwIHRoaXMgY2FzZS4gIEl0J3MgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZC5cbisgICAgICBjb250aW51ZVxuKyAgICBpZiByZS5mdWxsbWF0Y2goYXR0YWNoaW5nX3JlZ2V4LCBsaW5lKTpcbisgICAgICAjIFNraXAgXCJBdHRhY2hpbmcgWFggcHJvYmVzLi4uXCJcbisgICAgICBjb250aW51ZVxuKyAgICBpZiBub3QgbGluZTpcbisgICAgICAjIFNraXAgZW1wdHkgc3RyaW5ncy5cbisgICAgICBjb250aW51ZVxuK1xuKyAgICByYWlzZSBWYWx1ZUVycm9yKFwiSW52YWxpZCBpbnB1dCwgJyVzJ1wiICUgKGxpbmUpKVxuK1xuKyAgcm9vdCA9IEJwZlJlc3VsdChcIlwiLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAtMSwgLTEpXG4rICByZXN1bHRzID0gW11cbisgIGZvciB0aWQsIHRpbWVycyBpbiBhbGxfdGltZXJzLml0ZW1zKCk6XG4rICAgIG1lcmdlX3RpbWVycyhyb290LCB0aWQsIHRpbWVycylcbisgIHByaW50X3Jlc3VsdHMocm9vdCwgcmVzdWx0cylcbitcbisgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSA9PSAwOlxuKyAgICByYWlzZSBWYWx1ZUVycm9yKFwiRXhwZWN0ZWQgYSBmaWxlIHRvIHJlYWQuXCIpXG4rXG4rICBpZiBmaWxlaW5wdXQuZmlsZW5vKCkgXHUwMDNlIDE6XG4rICAgIHJhaXNlIFZhbHVlRXJyb3IoXCJUb28gbWFueSBmaWxlcyByZWFkLiAgRXhwZWN0ZWQgMVwiKVxuK1xuK2RlZiBtYWluKCkgLVx1MDAzZSBOb25lOlxuKyAgXCJcIlwiTWFpbiBmdW5jdGlvbi5cIlwiXCJcbitcbisgIGlmIGxlbihzeXMuYXJndikgXHUwMDNjPSAxOlxuKyAgICBwcmludChcIkVycm9yOiBOb3QgZW5vdWdoIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIEV4cGVjdGVkIGFuIGlucHV0IGZpbGVcIiwgZmlsZT1zeXMuc3RkZXJyKVxuKyAgICBzeXMuZXhpdCgxKVxuK1xuKyAgZ2VuZXJhdGVfZnJvbV9sb2coc3lzLmFyZ3ZbMTpdKVxuK1xuK1xuK2lmIF9fbmFtZV9fID09IFwiX19tYWluX19cIjpcbisgIG1haW4oKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL2t2bV90cmFjZS5idCBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL2t2bV90cmFjZS5idFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZDM0MWU0MDg1NzBlY1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL3NhbXBsZXMva3ZtX3RyYWNlLmJ0XG5AQCAtMCwwICsxLDE5NyBAQFxuKyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMClcbisjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKVxuKyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpXG4rXG4rY29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfVxuK1xuK21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXG4re1xuK1x0QHRyYWNlX3N0YWNrX3RvcFswXSA9IDA7XG4rXHRAdGltZXJfY291bnRbMF0gPSAwO1xuK31cbitcbittYWNybyBDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxuK3tcbitcdGNsZWFyKEB0cmFjZV9zdGFjayk7XG4rXHRjbGVhcihAdHJhY2Vfc3RhY2tfdG9wKTtcbitcdGNsZWFyKEB0aW1lcl9jb3VudCk7XG4rfVxuK1xuK21hY3JvIFNUQVJUX1RJTUVSKG5hbWUsIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKVxuK3tcbitcdEB0aW1lcl9uYW1lW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gbmFtZTtcbitcdEB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTtcbitcdEB0aW1lcl9zdGFydFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IHVzZWNzO1xuK1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gRFVSQVRJT05fVU5TRVQ7XG4rXHRAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07XG4rXHRAdGltZXJfY291bnRbdGlkXSsrO1xuK1x0QHRyYWNlX3N0YWNrX3RvcFt0aWRdKys7XG4rfVxuK1xuKy8qXG4rICogVW5mb3J0dW5hdGVseSBicmFuY2ggc3RhdGVtZW50cyBjcmFzaCB0aGUgYnBmdHJhY2UgY29tcGlsZXIuICBBcyBhIHJlc3VsdCxcbisgKiB0aGUgYnJhbmNoIGhhcyBiZWVuIG1vdmVkIGRpcmVjdGx5IGludG8gdGhlIHByb2JlLiAgUmV2ZXJzZSB0aGlzIGlmIHRoZVxuKyAqIGNvbXBpbGVyIGV2ZXIgZ2V0cyB0aGF0IGZpeGVkLlxuKyAqL1xuK21hY3JvIFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydClcbit7XG4rXHQkaWR4ID0gQHRyYWNlX3N0YWNrW3RpZCwgLS1AdHJhY2Vfc3RhY2tfdG9wW3RpZF1dO1xuK1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdO1xuK31cbitcbitCRUdJTlxuK3tcbitcdElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xuK31cbitcbisvKlxuKyAqIFRpbWUgJ2t2bV9zY2hlZF9pbigpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3NjaGVkX2luIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6a3ZtX3NjaGVkX2luXG4re1xuK1x0U1RBUlRfVElNRVIoXCJrdm1fc2NoZWRfaW5cIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fc2NoZWRfaW5cbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAna3ZtX3NjaGVkX291dCgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3NjaGVkX291dCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOmt2bV9zY2hlZF9vdXRcbit7XG4rXHRTVEFSVF9USU1FUihcImt2bV9zY2hlZF9vdXRcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitcbitrcmV0ZnVuYzprdm1fc2NoZWRfb3V0XG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIFRpbWUgJ2t2bV9hcmNoX3ZjcHVfbG9hZCgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX2FyY2hfdmNwdV9sb2FkIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6a3ZtX2FyY2hfdmNwdV9sb2FkXG4re1xuK1x0U1RBUlRfVElNRVIoXCJrdm1fYXJjaF92Y3B1X2xvYWRcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X2xvYWRcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAna3ZtX2FyY2hfdmNwdV9wdXQoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfcHV0IC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6a3ZtX2FyY2hfdmNwdV9wdXRcbit7XG4rXHRTVEFSVF9USU1FUihcImt2bV9hcmNoX3ZjcHVfcHV0XCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6a3ZtX2FyY2hfdmNwdV9wdXRcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAnS1ZNX1JVTicsIGkuZS4ga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKS5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4gL3Byb2Mva2FsbHN5bXNcbisgKi9cbitrZnVuYzprdm1fYXJjaF92Y3B1X2lvY3RsX3J1blxuK3tcbitcdFNUQVJUX1RJTUVSKFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X2lvY3RsX3J1blxuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lIGhvdyBsb25nIGEgZ3Vlc3QgcnVucyB1c2luZyB0cmFjZXBvaW50cyBcImt2bV9lbnRyeVwiIGFuZCBcImt2bV9leGl0XCIuXG4rICovXG4rdHJhY2Vwb2ludDprdm06a3ZtX2VudHJ5XG4re1xuK1x0U1RBUlRfVElNRVIoXCJydW5fZ3Vlc3RcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbit0cmFjZXBvaW50Omt2bTprdm1fZXhpdFxuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lICdrdm1fdmNwdV9ibG9jaygpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3ZjcHVfYmxvY2sgL3Byb2Mva2FsbHN5bXNcbisgKi9cbitrZnVuYzprdm1fdmNwdV9ibG9ja1xuK3tcbitcdFNUQVJUX1RJTUVSKFwia3ZtX3ZjcHVfYmxvY2tcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fdmNwdV9ibG9ja1xuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lICdrdm1fbW11X3BhZ2VfZmF1bHQoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9tbXVfcGFnZV9mYXVsdCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOmt2bV9tbXVfcGFnZV9mYXVsdFxuK3tcbitcdFNUQVJUX1RJTUVSKFwia3ZtX3ZjcHVfYmxvY2tcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fbW11X3BhZ2VfZmF1bHRcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogRHVtcCB0aGUgcmVzdWx0cyB0byBzdGRvdXQuXG4rICovXG4rRU5EXG4re1xuK1x0Q0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL3ZmaW9fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNiOGNiN2ZmNjIxMGRlXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XG5AQCAtMCwwICsxLDMxNSBAQFxuKyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMClcbisjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKVxuKyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpXG4rXG4rY29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfVxuK1xuK21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXG4re1xuK1x0QHRyYWNlX3N0YWNrX3RvcFswXSA9IDA7XG4rXHRAdGltZXJfY291bnRbMF0gPSAwO1xuK31cbitcbittYWNybyBDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxuK3tcbitcdGNsZWFyKEB0cmFjZV9zdGFjayk7XG4rXHRjbGVhcihAdHJhY2Vfc3RhY2tfdG9wKTtcbitcdGNsZWFyKEB0aW1lcl9jb3VudCk7XG4rfVxuK1xuK21hY3JvIFNUQVJUX1RJTUVSKG5hbWUsIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKVxuK3tcbitcdEB0aW1lcl9uYW1lW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gbmFtZTtcbitcdEB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTtcbitcdEB0aW1lcl9zdGFydFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IHVzZWNzO1xuK1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gRFVSQVRJT05fVU5TRVQ7XG4rXHRAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07XG4rXHRAdGltZXJfY291bnRbdGlkXSsrO1xuK1x0QHRyYWNlX3N0YWNrX3RvcFt0aWRdKys7XG4rfVxuK1xuKy8qXG4rICogVW5mb3J0dW5hdGVseSBicmFuY2ggc3RhdGVtZW50cyBjcmFzaCB0aGUgYnBmdHJhY2UgY29tcGlsZXIuICBBcyBhIHJlc3VsdCxcbisgKiB0aGUgYnJhbmNoIGhhcyBiZWVuIG1vdmVkIGRpcmVjdGx5IGludG8gdGhlIHByb2JlLiAgUmV2ZXJzZSB0aGlzIGlmIHRoZVxuKyAqIGNvbXBpbGVyIGV2ZXIgZ2V0cyB0aGF0IGZpeGVkLlxuKyAqL1xuK21hY3JvIFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydClcbit7XG4rXHQkaWR4ID0gQHRyYWNlX3N0YWNrW3RpZCwgLS1AdHJhY2Vfc3RhY2tfdG9wW3RpZF1dO1xuK1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdO1xuK31cbitcbitCRUdJTlxuK3tcbitcdElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xuK31cbitcbisvKlxuKyAqIFRpbWUgJ3ZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwoKScuXG4rICpcbisgKiBWRklPX0dST1VQX0dFVF9ERVZJQ0VfRkQgPSAweDNiNmFcbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I2YS9cbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9fZ3JvdXBfaW9jdGxfZ2V0X2RldmljZV9mZFwiLFxuK1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4rXHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4rfVxuK2tyZXRmdW5jOnZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I2YS9cbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAndmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmQoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAndmZpb19kZl91bmJpbmRfaW9tbXVmZCgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl91bmJpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9fZGZfdW5iaW5kX2lvbW11ZmRcbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9fZGZfdW5iaW5kX2lvbW11ZmRcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX2RmX3VuYmluZF9pb21tdWZkXG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIFRpbWUgJ3ZmaW9fZGZfb3BlbigpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl9vcGVuIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmZpb19kZl9vcGVuXG4re1xuK1x0U1RBUlRfVElNRVIoXCJ2ZmlvX2RmX29wZW5cIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX2RmX29wZW5cbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAncGNpZV9mbHIoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHBjaWVfZmxyIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6cGNpZV9mbHJcbit7XG4rXHRTVEFSVF9USU1FUihcInBjaWVfZmxyXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6cGNpZV9mbHJcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAncGNpX2Rldl93YWl0KCknLlxuKyAqXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2lfZGV2X3dhaXQgL3Byb2Mva2FsbHN5bXNcbisgKi9cbitrZnVuYzpwY2lfZGV2X3dhaXRcbit7XG4rXHRTVEFSVF9USU1FUihcInBjaV9kZXZfd2FpdFwiLFxuK1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4rXHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4rfVxuK2tyZXRmdW5jOnBjaV9kZXZfd2FpdFxuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lICd2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCknIHdoZW4gJ1ZGSU9fSU9NTVVfTUFQX0RNQScgaXMgY2FsbGVkLlxuKyAqXG4rICpcbisgKiBWRklPX0lPTU1VX01BUF9ETUEgPSAweDNiNzFcbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19pb21tdV90eXBlMV9pb2N0bCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I3MS9cbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9faW9tbXVfdHlwZTFfbWFwX2RtYVwiLFxuK1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4rXHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4rfVxuK2tyZXRmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I3MS9cbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAndmZpb19waW5fbWFwX2RtYSgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19waW5fbWFwX2RtYSAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9fcGluX21hcF9kbWFcbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9fcGluX21hcF9kbWFcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX3Bpbl9tYXBfZG1hXG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIFRpbWUgJ3ZmaW9fcGluX3BhZ2VzX3JlbW90ZSgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19waW5fcGFnZXNfcmVtb3RlIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmZpb19waW5fcGFnZXNfcmVtb3RlXG4re1xuK1x0U1RBUlRfVElNRVIoXCJ2ZmlvX3Bpbl9wYWdlc19yZW1vdGVcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX3Bpbl9wYWdlc19yZW1vdGVcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAndmFkZHJfZ2V0X3BmbnMoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHZhZGRyX2dldF9wZm5zIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmFkZHJfZ2V0X3BmbnNcbit7XG4rXHRTVEFSVF9USU1FUihcInZhZGRyX2dldF9wZm5zXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6dmFkZHJfZ2V0X3BmbnNcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8vIC8qXG4rLy8gICogVGltZSAnaW9tbXVfbWFwKCknLlxuKy8vICAqXG4rLy8gICogQ2hlY2s6IHN1ZG8gZ3JlcCBpb21tdV9tYXAgL3Byb2Mva2FsbHN5bXNcbisvLyAgKi9cbisvLyBrZnVuYzppb21tdV9tYXBcbisvLyB7XG4rLy8gXHRTVEFSVF9USU1FUihcImlvbW11X21hcFwiLFxuKy8vIFx0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4rLy8gXHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4rLy8gfVxuKy8vIGtyZXRmdW5jOmlvbW11X21hcFxuKy8vIHtcbisvLyBcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbisvLyBcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbisvLyBcdH1cbisvLyB9XG4rXG4rXG4rXG4rLypcbisgKiBUaW1lICd2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCknIHdoZW4gJ1ZGSU9fSU9NTVVfVU5NQVBfRE1BJyBpcyBjYWxsZWQuXG4rICpcbisgKiBWRklPX0lPTU1VX1VOTUFQX0RNQSA9IDB4M2I3MlxuKyAqXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy1cdTAwM2VjbWQgPT0gMHgzYjcyL1xuK3tcbitcdFNUQVJUX1RJTUVSKFwidmZpb19pb21tdV90eXBlMV91bm1hcF9kbWFcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVx1MDAzZWNtZCA9PSAweDNiNzIvXG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIFRpbWUgJ3ZmaW9fdW5tYXBfdW5waW4oKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fdW5tYXBfdW5waW4gL3Byb2Mva2FsbHN5bXNcbisgKi9cbitrZnVuYzp2ZmlvX3VubWFwX3VucGluXG4re1xuK1x0U1RBUlRfVElNRVIoXCJ2ZmlvX3VubWFwX3VucGluXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6dmZpb191bm1hcF91bnBpblxuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lICd2ZmlvX3N5bmNfdW5waW4oKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fc3luY191bnBpbiAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9fc3luY191bnBpblxuK3tcbitcdFNUQVJUX1RJTUVSKFwidmZpb19zeW5jX3VucGluXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6dmZpb19zeW5jX3VucGluXG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LlxuKyAqL1xuK0VORFxuK3tcbitcdENMRUFSX01BUFMoQHRyYWNlX3N0YWNrLCBAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xuK31cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjA5OjU0LjQ5MjM3ODM2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MDQ4OTUyODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWwuIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggbmV3IHByb2ZpbGluZyB0b29scyDigJMgc3BlY2lmaWNhbGx5IGEgUHl0aG9uIHNjcmlwdCwgYGFnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weWAsIGFuZCB0d28gYnBmdHJhY2Ugc2NyaXB0cywgYGt2bV90cmFjZS5idGAgYW5kIGB2ZmlvX3RyYWNlLmJ0YCDigJMgYWxsIHR1Y2tlZCBhd2F5IHVuZGVyIGB0b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvYC4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhlc2UgYXJlIHN0cmljdGx5IGZvciBpbnN0cnVtZW50YXRpb24gYW5kIGFuYWx5c2lzOyB0aGV5IGRvbid0IHNlZW0gdG8gYmUgdG91Y2hpbmcgYW55IGNvcmUga2VybmVsIGNvZGUsIGRyaXZlcnMsIG9yIGV2ZW4gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlcy4gVGhpcyBpc24ndCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBzZW5zZSB0aGF0IGl0IGludHJvZHVjZXMgbmV3IGtlcm5lbCBiZWhhdmlvciBvciBtb2RpZmllcyBleGlzdGluZyBsb2dpYyB0aGF0IG5lZWRzIHRvIGJlIGhlYXZpbHkgZnV6emVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSd2ZSB0YWtlbiBhIHNlY29uZCBsb29rIGF0IHRoZSBkaWZmLiBJIHNlZSB0aGUgUHl0aG9uIHNjcmlwdCBhbmQgdGhlIHR3byBidCBzY3JpcHRzLCBhcyBleHBlY3RlZC4gSSdtIG5vdCBzZWVpbmcgYW55IEMgY29kZSBvciBhbnkgbW9kaWZpY2F0aW9ucyB0aGF0IHdvdWxkIGFmZmVjdCB0aGUgYmVoYXZpb3Igb2Yga2VybmVsIHN1YnN5c3RlbXMuXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhci4gSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGZvciB0aGlzIHBhdGNoLiBJJ2xsIG5lZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBlbnN1cmUgdGhhdCdzIHJlZmxlY3RlZCBjb3JyZWN0bHkuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUgdGhhdCB3YXJyYW50cyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTMwNiwiT3V0cHV0VG9rZW5zIjo3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjEwOjAwLjA5NzI3NTI0MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGJwZnRyYWNlIHNjcmlwdHMgYW5kIGEgcHl0aG9uIHNjcmlwdCBmb3IgcHJvZmlsaW5nIHVuZGVyIHRvb2xzL2JwZnRyYWNlLy4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IGNhbiBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYnBmdHJhY2Ugc2NyaXB0cyBhbmQgYSBweXRob24gc2NyaXB0IGZvciBwcm9maWxpbmcgdW5kZXIgdG9vbHMvYnBmdHJhY2UvLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrl9r4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 22:01:56 +0000 UTC FinishedAt: 2026-06-30 22:10:02 +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+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBicGZ0cmFjZSBzY3JpcHRzIGFuZCBhIHB5dGhvbiBzY3JpcHQgZm9yIHByb2ZpbGluZyB1bmRlciB0b29scy9icGZ0cmFjZS8uIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIGFuZCB0aGVyZWZvcmUgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjowOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDU1OGFlNGVjNzM2MGEwNTNiNDVmYjQ3YWRlMjU5NWQ5NGEwYzA0YzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1biAzMCAyMjowOTo1MyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvYWdncmVnYXRlX2JwZl9yZXN1bHRzLnB5IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weVxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5mNGZmZThjZmY0NDE4ZVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weVxuQEAgLTAsMCAmIzQzOzEsMzE4IEBAXG4mIzQzOyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcbiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlclxuJiM0MzsjXG4mIzQzOyMgUHJpbnRzIHRoZSBhZ2dyZWdhdGUgcmVzdWx0cyBvZiBhbiBpbnN0cnVtZW50ZWQgQlBGIHRyYWNlLlxuJiM0MzsjXG4mIzQzOyMgQ29weXJpZ2h0IDIwMjYgR29vZ2xlIExMQ1xuJiM0MzsjXG4mIzQzOyMgQXV0aG9yOiBBYXJvbiBMZXdpcyBcdTAwM2NhYXJvbmxld2lzQGdvb2dsZS5jb21cdTAwM2VcbiYjNDM7XG4mIzQzO2ltcG9ydCBmaWxlaW5wdXRcbiYjNDM7aW1wb3J0IHJlXG4mIzQzO2ltcG9ydCBzeXNcbiYjNDM7aW1wb3J0IHdhcm5pbmdzXG4mIzQzO2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBTZXF1ZW5jZVxuJiM0MztcbiYjNDM7Y2xhc3MgUHJvZmlsZXJSZXN1bHQ6XG4mIzQzOyAgXCYjMzQ7XCYjMzQ7XCYjMzQ7Q2xhc3MgZm9yIGhvbGRpbmcgdGhlIHByb2ZpbGVyIHJlc3VsdHMuXCYjMzQ7XCYjMzQ7XCYjMzQ7XG4mIzQzO1xuJiM0MzsgIGRlZiBfX2luaXRfXyhcbiYjNDM7ICAgICAgc2VsZixcbiYjNDM7ICAgICAgbmFtZTogc3RyLFxuJiM0MzsgICAgICB0aHJlYWRfdXNlYzogaW50LFxuJiM0MzsgICAgICB3YWxsX3VzZWM6IGludCxcbiYjNDM7ICAgICAgbWF4X3VzZWM6IGludCxcbiYjNDM7ICAgICAgYXZnX3VzZWM6IGludCxcbiYjNDM7ICAgICAgY291bnQ6IGludCxcbiYjNDM7ICAgICAgdGhyZWFkX2NvdW50OiBpbnQsXG4mIzQzOyAgICAgIGluY29tcGxldGVfY291bnQ6IGludCxcbiYjNDM7ICAgICAgZGVwdGg6IGludCxcbiYjNDM7ICApOlxuJiM0MzsgICAgc2VsZi5uYW1lID0gbmFtZVxuJiM0MzsgICAgc2VsZi50aHJlYWRfdXNlYyA9IHRocmVhZF91c2VjXG4mIzQzOyAgICBzZWxmLndhbGxfdXNlYyA9IHdhbGxfdXNlY1xuJiM0MzsgICAgc2VsZi5tYXhfdXNlYyA9IG1heF91c2VjXG4mIzQzOyAgICBzZWxmLmF2Z191c2VjID0gYXZnX3VzZWNcbiYjNDM7ICAgIHNlbGYuY291bnQgPSBjb3VudFxuJiM0MzsgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnRcbiYjNDM7ICAgIHNlbGYuaW5jb21wbGV0ZV9jb3VudCA9IGluY29tcGxldGVfY291bnRcbiYjNDM7ICAgIHNlbGYuZGVwdGggPSBkZXB0aFxuJiM0MztcbiYjNDM7Y2xhc3MgQnBmVGltZXI6XG4mIzQzOyAgXCYjMzQ7XCYjMzQ7XCYjMzQ7Q2xhc3MgZm9yIGhvbGRpbmcgYSB0aW1lci5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgZGVmIF9faW5pdF9fKFxuJiM0MzsgICAgICBzZWxmLFxuJiM0MzsgICAgICBuYW1lOiBzdHIsXG4mIzQzOyAgICAgIHN0YXJ0X3RpbWVfdXM6IGludCxcbiYjNDM7ICAgICAgZHVyYXRpb25fdXM6IGludCxcbiYjNDM7ICAgICAgZGVwdGg6IGludCxcbiYjNDM7ICApOlxuJiM0MzsgICAgc2VsZi5uYW1lID0gbmFtZVxuJiM0MzsgICAgc2VsZi5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZV91c1xuJiM0MzsgICAgc2VsZi5kdXJhdGlvbl91cyA9IGR1cmF0aW9uX3VzXG4mIzQzOyAgICBzZWxmLmRlcHRoID0gZGVwdGhcbiYjNDM7XG4mIzQzO2NsYXNzIEJwZlJlc3VsdDpcbiYjNDM7ICBcJiMzNDtcJiMzNDtcJiMzNDtDbGFzcyBmb3IgaG9sZGluZyB0aGUgcHJvZmlsZXIgcmVzdWx0cy5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgZGVmIF9faW5pdF9fKFxuJiM0MzsgICAgICBzZWxmLFxuJiM0MzsgICAgICBuYW1lOiBzdHIsXG4mIzQzOyAgICAgIHdhbGxfdGltZV9zdGFydF91czogaW50LFxuJiM0MzsgICAgICB3YWxsX3RpbWVfZW5kX3VzOiBpbnQsXG4mIzQzOyAgICAgIHRocmVhZF91czogaW50LFxuJiM0MzsgICAgICBtYXhfdXM6IGludCxcbiYjNDM7ICAgICAgYXZnX3VzOiBpbnQsXG4mIzQzOyAgICAgIGNvdW50OiBpbnQsXG4mIzQzOyAgICAgIHRocmVhZF9jb3VudDogaW50LFxuJiM0MzsgICAgICBkZXB0aDogaW50LFxuJiM0MzsgICAgICB0aWQ6IGludCxcbiYjNDM7ICApOlxuJiM0MzsgICAgc2VsZi5uYW1lID0gbmFtZVxuJiM0MzsgICAgc2VsZi53YWxsX3RpbWVfc3RhcnRfdXMgPSB3YWxsX3RpbWVfc3RhcnRfdXNcbiYjNDM7ICAgIHNlbGYud2FsbF90aW1lX2VuZF91cyA9IHdhbGxfdGltZV9lbmRfdXNcbiYjNDM7ICAgIHNlbGYudGhyZWFkX3VzID0gdGhyZWFkX3VzXG4mIzQzOyAgICBzZWxmLm1heF91cyA9IG1heF91c1xuJiM0MzsgICAgc2VsZi5hdmdfdXMgPSBhdmdfdXNcbiYjNDM7ICAgIHNlbGYuY291bnQgPSBjb3VudFxuJiM0MzsgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnRcbiYjNDM7ICAgIHNlbGYuZGVwdGggPSBkZXB0aFxuJiM0MzsgICAgc2VsZi5jaGlsZHJlbiA9IFtdXG4mIzQzOyAgICBzZWxmLmNoaWxkX2luZGV4ID0ge31cbiYjNDM7ICAgIHNlbGYudGhyZWFkcyA9IHt9XG4mIzQzOyAgICBzZWxmLnRocmVhZHNbdGlkXSA9IFRydWVcbiYjNDM7XG4mIzQzO2RlZiB1cGRhdGVfY2hpbGQocjogQnBmUmVzdWx0LCB0aW1lcjogQnBmVGltZXIsIHRpZDogaW50KSAtXHUwMDNlIGludDpcbiYjNDM7ICBpID0gci5jaGlsZF9pbmRleC5nZXQodGltZXIubmFtZSlcbiYjNDM7ICBpZiBpIGlzIE5vbmU6XG4mIzQzOyAgICBpID0gbGVuKHIuY2hpbGRyZW4pXG4mIzQzOyAgICByLmNoaWxkcmVuLmFwcGVuZChCcGZSZXN1bHQoXG4mIzQzOyAgICAgICAgdGltZXIubmFtZSxcbiYjNDM7ICAgICAgICB0aW1lci5zdGFydF90aW1lX3VzLFxuJiM0MzsgICAgICAgIHRpbWVyLnN0YXJ0X3RpbWVfdXMgJiM0MzsgdGltZXIuZHVyYXRpb25fdXMsXG4mIzQzOyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXG4mIzQzOyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXG4mIzQzOyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXG4mIzQzOyAgICAgICAgMSxcbiYjNDM7ICAgICAgICAxLFxuJiM0MzsgICAgICAgIHRpbWVyLmRlcHRoLFxuJiM0MzsgICAgICAgIHRpZCkpXG4mIzQzOyAgICByLmNoaWxkX2luZGV4W3RpbWVyLm5hbWVdID0gaVxuJiM0MzsgIGVsc2U6XG4mIzQzOyAgICByLmNoaWxkcmVuW2ldLndhbGxfdGltZV9zdGFydF91cyA9IG1pbihyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9zdGFydF91cywgdGltZXIuc3RhcnRfdGltZV91cylcbiYjNDM7ICAgIHIuY2hpbGRyZW5baV0ud2FsbF90aW1lX2VuZF91cyA9IG1heChyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9lbmRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMgJiM0MzsgdGltZXIuZHVyYXRpb25fdXMpXG4mIzQzOyAgICByLmNoaWxkcmVuW2ldLnRocmVhZF91cyAmIzQzOz0gdGltZXIuZHVyYXRpb25fdXNcbiYjNDM7ICAgIHIuY2hpbGRyZW5baV0ubWF4X3VzID0gbWF4KHIuY2hpbGRyZW5baV0ubWF4X3VzLCB0aW1lci5kdXJhdGlvbl91cylcbiYjNDM7ICAgIHIuY2hpbGRyZW5baV0uY291bnQgJiM0Mzs9IDFcbiYjNDM7ICAgIHIuY2hpbGRyZW5baV0uYXZnX3VzID0gci5jaGlsZHJlbltpXS50aHJlYWRfdXMgLyByLmNoaWxkcmVuW2ldLmNvdW50XG4mIzQzOyAgICBpZiByLmNoaWxkcmVuW2ldLnRocmVhZHMuZ2V0KHRpZCkgaXMgTm9uZTpcbiYjNDM7ICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRzW3RpZF0gPSBUcnVlXG4mIzQzOyAgICAgIHIuY2hpbGRyZW5baV0udGhyZWFkX2NvdW50ICYjNDM7PSAxXG4mIzQzO1xuJiM0MzsgIHJldHVybiBpXG4mIzQzO1xuJiM0MztkZWYgbWVyZ2VfcmVjdXJzaXZlKHI6IEJwZlJlc3VsdCwgdGlkOiBpbnQsIHRpbWVyczogTGlzdFtCcGZUaW1lcl0sIGluZGV4OiBpbnQsIGNoaWxkX2luZGV4OiBpbnQpIC1cdTAwM2UgaW50OlxuJiM0MzsgIHdoaWxlIGluZGV4IFx1MDAzYyBsZW4odGltZXJzKTpcbiYjNDM7ICAgIHdoaWxlIGluZGV4IFx1MDAzYyBsZW4odGltZXJzKSBhbmQgdGltZXJzW2luZGV4XSA9PSBOb25lOlxuJiM0MzsgICAgICBpbmRleCAmIzQzOz0gMVxuJiM0MztcbiYjNDM7ICAgIGlmIGluZGV4IFx1MDAzZT0gbGVuKHRpbWVycyk6XG4mIzQzOyAgICAgIHJldHVybiBpbmRleFxuJiM0MztcbiYjNDM7ICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJiMzOTtyJiMzOTsuIChDaGlsZCBjYXNlKVxuJiM0MzsgICAgaWYgdGltZXJzW2luZGV4XS5kZXB0aCA9PSAoci5kZXB0aCAmIzQzOyAxKTpcbiYjNDM7ICAgICAgIyBBZGQgY2hpbGRcbiYjNDM7ICAgICAgY2hpbGRfaW5kZXggPSB1cGRhdGVfY2hpbGQociwgdGltZXJzW2luZGV4XSwgdGlkKVxuJiM0MztcbiYjNDM7ICAgICAgIyBOb3cgdGhhdCB0aGUgdGltZXIgaGFzIGJlZW4gaGFuZGxlZCBpbmNyZW1lbnQgdG8gdGhlIG5leHQgb25lLlxuJiM0MzsgICAgICBpbmRleCAmIzQzOz0gMVxuJiM0MztcbiYjNDM7ICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJiMzOTtyJiMzOTsuIChHcmFuZGNoaWxkIGNhc2UpXG4mIzQzOyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggPT0gKHIuZGVwdGggJiM0MzsgMik6XG4mIzQzOyAgICAgIGlmIGNoaWxkX2luZGV4IFx1MDAzYyAwOlxuJiM0MzsgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoXCYjMzQ7SW52YWxpZCAmIzM5O2NoaWxkX2luZGV4JiMzOTtcJiMzNDspXG4mIzQzOyAgICAgICMgUmVjdXJzZSBkb3duIHRoZSBjaGlsZCBiZWN1YXNlIHRoYXQgaXMgdGhlIHBhcmVudCB0aGlzIHRpbWVyLlxuJiM0MzsgICAgICBpbmRleCA9IG1lcmdlX3JlY3Vyc2l2ZShyLmNoaWxkcmVuW2NoaWxkX2luZGV4XSwgdGlkLCB0aW1lcnMsIGluZGV4LCBjaGlsZF9pbmRleClcbiYjNDM7XG4mIzQzOyAgICAjIFRoZSB0aW1lciBpcyBhIGRlc2NlbmRhbnQgb2YgJiMzOTtyJiMzOTssIGJ1dCBub3QgdGhlIGNoaWxkLi4uIEludmFsaWQgY2FzZSFcbiYjNDM7ICAgIGVsaWYgdGltZXJzW2luZGV4XS5kZXB0aCBcdTAwM2UgKHIuZGVwdGggJiM0MzsgMik6XG4mIzQzOyAgICAgIHJhaXNlIFZhbHVlRXJyb3IoXCYjMzQ7SW52YWxpZCBkZXB0aC4gIGRlc2NlbmRhbnQgY2FuIG9ubHkgYmUgY2hpbGRyZW4uIG5hbWUgPSAmIzM5OyVzJiMzOTssIHRpZCA9ICVkLCBpbmRleCA9ICVkXCYjMzQ7ICUgKHRpbWVyc1tpbmRleF0ubmFtZSwgdGlkLCBpbmRleCkpXG4mIzQzO1xuJiM0MzsgICAgIyBOZXcgZmFtaWx5IHRyZWUuICBQb3Agb3V0IG9mIHRoaXMgb25lLlxuJiM0MzsgICAgZWxpZiB0aW1lcnNbaW5kZXhdLmRlcHRoIFx1MDAzYz0gci5kZXB0aDpcbiYjNDM7ICAgICAgIyBUaGUgdGltZXIgaXMgYW4gYW5jZXN0b3Igb2YgJiMzOTtyJiMzOTsuICBSZXR1cm4gc28gaXQgY2FuIGJlIHByb2Nlc3NlZCBlbHNld2hlcmUuXG4mIzQzOyAgICAgIHJldHVybiBpbmRleFxuJiM0MztcbiYjNDM7ICByZXR1cm4gaW5kZXhcbiYjNDM7XG4mIzQzO2RlZiBtZXJnZV90aW1lcnMocjogQnBmUmVzdWx0LCB0aWQ6IGludCwgdGltZXJzOiBMaXN0W0JwZlRpbWVyXSk6XG4mIzQzOyAgaWYgbGVuKHRpbWVycykgPT0gMDpcbiYjNDM7ICAgIHJldHVyblxuJiM0MztcbiYjNDM7ICBpZiB0aW1lcnNbMF0uZGVwdGggIT0gMDpcbiYjNDM7ICAgIHJhaXNlIFZhbHVlRXJyb3IoXCYjMzQ7RXhwZWN0ZWQgYSBkZXB0aCBvZiAwLiAgJiMzOTslcyYjMzk7LCBkZXB0aCA9ICVkXCYjMzQ7ICUgKHRpbWVyc1swXS5uYW1lLCB0aW1lcnNbMF0uZGVwdGgpKVxuJiM0MztcbiYjNDM7ICBtZXJnZV9yZWN1cnNpdmUociwgdGlkLCB0aW1lcnMsIDAsIC0xKVxuJiM0MztcbiYjNDM7ZGVmIHByaW50X3JlY3Vyc2l2ZShyOiBCcGZSZXN1bHQsIHJlc3VsdHMgOiBMaXN0W1Byb2ZpbGVyUmVzdWx0XSk6XG4mIzQzOyAgdGhyZWFkX3RpbWUgPSBmbG9hdChyLnRocmVhZF91cykgLyAxMDAwLjBcbiYjNDM7ICB3YWxsX3RpbWVfdXMgPSByLndhbGxfdGltZV9lbmRfdXMgLSByLndhbGxfdGltZV9zdGFydF91c1xuJiM0MzsgIHdhbGxfdGltZSA9IGZsb2F0KHdhbGxfdGltZV91cykgLyAxMDAwLjBcbiYjNDM7ICBtYXhfdGltZSA9IGZsb2F0KHIubWF4X3VzKSAvIDEwMDAuMFxuJiM0MzsgIGF2Z190aW1lID0gZmxvYXQoci5hdmdfdXMpIC8gMTAwMC4wXG4mIzQzO1xuJiM0MzsgIGluZGVudCA9IFwmIzM0O1wmIzM0O1xuJiM0MzsgIGZvciBpIGluIHJhbmdlKHIuZGVwdGgpOlxuJiM0MzsgICAgaW5kZW50ICYjNDM7PSBcJiMzNDsgIFwmIzM0O1xuJiM0MztcbiYjNDM7ICBwcmludChcJiMzNDslcyVzLCB0aHJlYWRfdGltZSA9ICUuMmZtcywgd2FsbF90aW1lID0gJS4yZm1zLCBtYXggPSAlLjJmLCBhdmcgPSAlLjJmLCBjb3VudCA9ICVkLCB0aHJlYWRfY291bnQgPSAlZFwmIzM0OyAlXG4mIzQzOyAgICAgICAgKGluZGVudCwgci5uYW1lLCB0aHJlYWRfdGltZSwgd2FsbF90aW1lLCBtYXhfdGltZSwgYXZnX3RpbWUsIHIuY291bnQsIHIudGhyZWFkX2NvdW50KSk7XG4mIzQzO1xuJiM0MzsgIHJlc3VsdHMuYXBwZW5kKFxuJiM0MzsgICAgICBQcm9maWxlclJlc3VsdChcbiYjNDM7ICAgICAgICAgIHIubmFtZSxcbiYjNDM7ICAgICAgICAgIHIudGhyZWFkX3VzLFxuJiM0MzsgICAgICAgICAgd2FsbF90aW1lX3VzLFxuJiM0MzsgICAgICAgICAgci5tYXhfdXMsXG4mIzQzOyAgICAgICAgICByLmF2Z191cyxcbiYjNDM7ICAgICAgICAgIHIuY291bnQsXG4mIzQzOyAgICAgICAgICByLnRocmVhZF9jb3VudCxcbiYjNDM7ICAgICAgICAgIDAsXG4mIzQzOyAgICAgICAgICByLmRlcHRoLFxuJiM0MzsgICAgICApXG4mIzQzOyAgKVxuJiM0MztcbiYjNDM7ICBmb3IgY2hpbGQgaW4gci5jaGlsZHJlbjpcbiYjNDM7ICAgIHByaW50X3JlY3Vyc2l2ZShjaGlsZCwgcmVzdWx0cylcbiYjNDM7XG4mIzQzO2RlZiBwcmludF9yZXN1bHRzKHI6IEJwZlJlc3VsdCwgcmVzdWx0cyA6IExpc3RbUHJvZmlsZXJSZXN1bHRdKTpcbiYjNDM7ICBmb3IgY2hpbGQgaW4gci5jaGlsZHJlbjpcbiYjNDM7ICAgIHByaW50X3JlY3Vyc2l2ZShjaGlsZCwgcmVzdWx0cylcbiYjNDM7XG4mIzQzO2RlZiBnZW5lcmF0ZV9mcm9tX2xvZyhmaWxlczogU2VxdWVuY2Vbc3RyXSk6XG4mIzQzOyAgXCYjMzQ7XCYjMzQ7XCYjMzQ7UmVhZCB0aGUgdHJhY2UgYW5kIHJldHVybiBhIGxpc3Qgb2YgUHJvZmlsZXJSZXN1bHQgb2JqZWN0cy5cJiMzNDtcJiMzNDtcJiMzNDtcbiYjNDM7XG4mIzQzOyAgdGltZXJfY291bnRzID0ge31cbiYjNDM7ICBhbGxfdGltZXJzID0ge31cbiYjNDM7XG4mIzQzOyAgY291bnRfcmVnZXggPSByZS5jb21waWxlKFxuJiM0MzsgICAgICByXCYjMzQ7XkB0aW1lcl9jb3VudFxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldJiM0MzspXFxdOlxcVyg/UFx1MDAzY2NvdW50XHUwMDNlWy0wLTldJiM0MzspXCYjMzQ7XG4mIzQzOyAgKVxuJiM0MzsgIG5hbWVfcmVnZXggPSByZS5jb21waWxlKFxuJiM0MzsgICAgICByXCYjMzQ7XkB0aW1lcl9uYW1lXFxbKD9QXHUwMDNjdGlkXHUwMDNlWzAtOV0mIzQzOyksXFxXKig/UFx1MDAzY2luZGV4XHUwMDNlWzAtOV0mIzQzOylcXF06XFxXKD9QXHUwMDNjbmFtZVx1MDAzZVtcXHdcXC4wLTldJiM0MzspXCYjMzQ7XG4mIzQzOyAgKVxuJiM0MzsgIHN0YXJ0X3RpbWVfcmVnZXggPSByZS5jb21waWxlKFxuJiM0MzsgICAgICByXCYjMzQ7XkB0aW1lcl9zdGFydFxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldJiM0MzspLFxcVyooP1BcdTAwM2NpbmRleFx1MDAzZVswLTldJiM0MzspXFxdOlxcVyg/UFx1MDAzY3N0YXJ0X3RpbWVfdXNcdTAwM2VbLTAtOV0mIzQzOylcJiMzNDtcbiYjNDM7ICApXG4mIzQzOyAgZHVyYXRpb25fcmVnZXggPSByZS5jb21waWxlKFxuJiM0MzsgICAgICByXCYjMzQ7XkB0aW1lcl9kdXJhdGlvblxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldJiM0MzspLFxcVyooP1BcdTAwM2NpbmRleFx1MDAzZVswLTldJiM0MzspXFxdOlxcVyg/UFx1MDAzY2R1cmF0aW9uX3VzXHUwMDNlWy0wLTldJiM0MzspXCYjMzQ7XG4mIzQzOyAgKVxuJiM0MzsgIGRlcHRoX3JlZ2V4ID0gcmUuY29tcGlsZShcbiYjNDM7ICAgICAgclwmIzM0O15AdGltZXJfZGVwdGhcXFsoP1BcdTAwM2N0aWRcdTAwM2VbMC05XSYjNDM7KSxcXFcqKD9QXHUwMDNjaW5kZXhcdTAwM2VbMC05XSYjNDM7KVxcXTpcXFcoP1BcdTAwM2NkZXB0aFx1MDAzZVstMC05XSYjNDM7KVwmIzM0O1xuJiM0MzsgIClcbiYjNDM7XG4mIzQzOyAgYXR0YWNoaW5nX3JlZ2V4ID0gcmUuY29tcGlsZShcbiYjNDM7ICAgICAgclwmIzM0O15BdHRhY2hpbmcuKlwmIzM0O1xuJiM0MzsgIClcbiYjNDM7XG4mIzQzOyAgIyBHZXQgYWxsIGNvdW50cy4gIFRoYXQgd2F5IHdlIGtub3cgaG93IG1hbnkgdGltZXJzIGVhY2ggdGhyZWFkIHVzZWQuXG4mIzQzOyAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzKTpcbiYjNDM7ICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpXG4mIzQzO1xuJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSlcbiYjNDM7ICAgIGlmIG06XG4mIzQzOyAgICAgIHRpZCA9IGludChtLmdyb3VwKFwmIzM0O3RpZFwmIzM0OykpXG4mIzQzOyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXCYjMzQ7aW5kZXhcJiMzNDspKVxuJiM0MzsgICAgICBkdXJhdGlvbl9zdHIgPSBtLmdyb3VwKFwmIzM0O2R1cmF0aW9uX3VzXCYjMzQ7KVxuJiM0MzsgICAgICBkdXJhdGlvbiA9IGludChtLmdyb3VwKFwmIzM0O2R1cmF0aW9uX3VzXCYjMzQ7KSlcbiYjNDM7XG4mIzQzOyAgICAgIGlmIG5vdCB0aWQgaW4gdGltZXJfY291bnRzOlxuJiM0MzsgICAgICAgIHRpbWVyX2NvdW50c1t0aWRdID0gaW5kZXhcbiYjNDM7ICAgICAgZWxzZTpcbiYjNDM7ICAgICAgICB0aW1lcl9jb3VudHNbdGlkXSA9IG1heCh0aW1lcl9jb3VudHNbdGlkXSwgaW5kZXgpXG4mIzQzO1xuJiM0MzsgICMgQWxsb2NhdGUgZW5vdWdoIHRpbWVycyB0byBmaXQgdGhlIHRyYWNlLlxuJiM0MzsgIGZvciB0aWQsIGNvdW50IGluIHRpbWVyX2NvdW50cy5pdGVtcygpOlxuJiM0MzsgICAgYWxsX3RpbWVyc1t0aWRdID0gW05vbmVdICogKGNvdW50ICYjNDM7IDEpXG4mIzQzO1xuJiM0MzsgICMgUG9wdWxhdGUgdGhlIHRyYWNlLlxuJiM0MzsgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5pbnB1dChmaWxlcz1maWxlcyk6XG4mIzQzOyAgICBsaW5lID0gbGluZS5yc3RyaXAoKVxuJiM0MztcbiYjNDM7ICAgIG0gPSByZS5mdWxsbWF0Y2gobmFtZV9yZWdleCwgbGluZSlcbiYjNDM7ICAgIGlmIG06XG4mIzQzOyAgICAgIHRpZCA9IGludChtLmdyb3VwKFwmIzM0O3RpZFwmIzM0OykpXG4mIzQzOyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXCYjMzQ7aW5kZXhcJiMzNDspKVxuJiM0MzsgICAgICBuYW1lID0gbS5ncm91cChcJiMzNDtuYW1lXCYjMzQ7KVxuJiM0MzsgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6XG4mIzQzOyAgICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9IEJwZlRpbWVyKFwmIzM0O1wmIzM0OywgMCwgLTEsIC0xKVxuJiM0MzsgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLm5hbWUgPSBuYW1lXG4mIzQzOyAgICAgIGNvbnRpbnVlXG4mIzQzO1xuJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChzdGFydF90aW1lX3JlZ2V4LCBsaW5lKVxuJiM0MzsgICAgaWYgbTpcbiYjNDM7ICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXCYjMzQ7dGlkXCYjMzQ7KSlcbiYjNDM7ICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcJiMzNDtpbmRleFwmIzM0OykpXG4mIzQzOyAgICAgIHN0YXJ0X3RpbWUgPSBpbnQobS5ncm91cChcJiMzNDtzdGFydF90aW1lX3VzXCYjMzQ7KSlcbiYjNDM7ICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxuJiM0MzsgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcJiMzNDtcJiMzNDssIDAsIC0xLCAtMSlcbiYjNDM7ICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XS5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZVxuJiM0MzsgICAgICBjb250aW51ZVxuJiM0MztcbiYjNDM7ICAgIG0gPSByZS5mdWxsbWF0Y2goZHVyYXRpb25fcmVnZXgsIGxpbmUpXG4mIzQzOyAgICBpZiBtOlxuJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cChcJiMzNDt0aWRcJiMzNDspKVxuJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKFwmIzM0O2luZGV4XCYjMzQ7KSlcbiYjNDM7ICAgICAgZHVyYXRpb24gPSBpbnQobS5ncm91cChcJiMzNDtkdXJhdGlvbl91c1wmIzM0OykpXG4mIzQzOyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZTpcbiYjNDM7ICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoXCYjMzQ7XCYjMzQ7LCAwLCAtMSwgLTEpXG4mIzQzOyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZHVyYXRpb25fdXMgPSBkdXJhdGlvblxuJiM0MzsgICAgICBjb250aW51ZVxuJiM0MztcbiYjNDM7ICAgIG0gPSByZS5mdWxsbWF0Y2goZGVwdGhfcmVnZXgsIGxpbmUpXG4mIzQzOyAgICBpZiBtOlxuJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cChcJiMzNDt0aWRcJiMzNDspKVxuJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKFwmIzM0O2luZGV4XCYjMzQ7KSlcbiYjNDM7ICAgICAgZGVwdGggPSBpbnQobS5ncm91cChcJiMzNDtkZXB0aFwmIzM0OykpXG4mIzQzOyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZTpcbiYjNDM7ICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoXCYjMzQ7XCYjMzQ7LCAwLCAtMSwgLTEpXG4mIzQzOyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZGVwdGggPSBkZXB0aFxuJiM0MzsgICAgICBjb250aW51ZVxuJiM0MztcbiYjNDM7ICAgIGlmIHJlLmZ1bGxtYXRjaChjb3VudF9yZWdleCwgbGluZSk6XG4mIzQzOyAgICAgICMgU2tpcCB0aGlzIGNhc2UuICBJdCYjMzk7cyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkLlxuJiM0MzsgICAgICBjb250aW51ZVxuJiM0MzsgICAgaWYgcmUuZnVsbG1hdGNoKGF0dGFjaGluZ19yZWdleCwgbGluZSk6XG4mIzQzOyAgICAgICMgU2tpcCBcJiMzNDtBdHRhY2hpbmcgWFggcHJvYmVzLi4uXCYjMzQ7XG4mIzQzOyAgICAgIGNvbnRpbnVlXG4mIzQzOyAgICBpZiBub3QgbGluZTpcbiYjNDM7ICAgICAgIyBTa2lwIGVtcHR5IHN0cmluZ3MuXG4mIzQzOyAgICAgIGNvbnRpbnVlXG4mIzQzO1xuJiM0MzsgICAgcmFpc2UgVmFsdWVFcnJvcihcJiMzNDtJbnZhbGlkIGlucHV0LCAmIzM5OyVzJiMzOTtcJiMzNDsgJSAobGluZSkpXG4mIzQzO1xuJiM0MzsgIHJvb3QgPSBCcGZSZXN1bHQoXCYjMzQ7XCYjMzQ7LCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAtMSwgLTEpXG4mIzQzOyAgcmVzdWx0cyA9IFtdXG4mIzQzOyAgZm9yIHRpZCwgdGltZXJzIGluIGFsbF90aW1lcnMuaXRlbXMoKTpcbiYjNDM7ICAgIG1lcmdlX3RpbWVycyhyb290LCB0aWQsIHRpbWVycylcbiYjNDM7ICBwcmludF9yZXN1bHRzKHJvb3QsIHJlc3VsdHMpXG4mIzQzO1xuJiM0MzsgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSA9PSAwOlxuJiM0MzsgICAgcmFpc2UgVmFsdWVFcnJvcihcJiMzNDtFeHBlY3RlZCBhIGZpbGUgdG8gcmVhZC5cJiMzNDspXG4mIzQzO1xuJiM0MzsgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSBcdTAwM2UgMTpcbiYjNDM7ICAgIHJhaXNlIFZhbHVlRXJyb3IoXCYjMzQ7VG9vIG1hbnkgZmlsZXMgcmVhZC4gIEV4cGVjdGVkIDFcJiMzNDspXG4mIzQzO1xuJiM0MztkZWYgbWFpbigpIC1cdTAwM2UgTm9uZTpcbiYjNDM7ICBcJiMzNDtcJiMzNDtcJiMzNDtNYWluIGZ1bmN0aW9uLlwmIzM0O1wmIzM0O1wmIzM0O1xuJiM0MztcbiYjNDM7ICBpZiBsZW4oc3lzLmFyZ3YpIFx1MDAzYz0gMTpcbiYjNDM7ICAgIHByaW50KFwmIzM0O0Vycm9yOiBOb3QgZW5vdWdoIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIEV4cGVjdGVkIGFuIGlucHV0IGZpbGVcJiMzNDssIGZpbGU9c3lzLnN0ZGVycilcbiYjNDM7ICAgIHN5cy5leGl0KDEpXG4mIzQzO1xuJiM0MzsgIGdlbmVyYXRlX2Zyb21fbG9nKHN5cy5hcmd2WzE6XSlcbiYjNDM7XG4mIzQzO1xuJiM0MztpZiBfX25hbWVfXyA9PSBcJiMzNDtfX21haW5fX1wmIzM0OzpcbiYjNDM7ICBtYWluKClcbmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnRcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYmQzNDFlNDA4NTcwZWNcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL2t2bV90cmFjZS5idFxuQEAgLTAsMCAmIzQzOzEsMTk3IEBAXG4mIzQzOyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMClcbiYjNDM7I2RlZmluZSBtc2VjcyAobnNlY3MgLyAxMDAwIC8gMTAwMClcbiYjNDM7I2RlZmluZSBEVVJBVElPTl9VTlNFVCAoKHVpbnQ2NCktMSlcbiYjNDM7XG4mIzQzO2NvbmZpZyA9IHsgbWF4X21hcF9rZXlzPTQxOTQzMDQ7IH1cbiYjNDM7XG4mIzQzO21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXG4mIzQzO3tcbiYjNDM7XHRAdHJhY2Vfc3RhY2tfdG9wWzBdID0gMDtcbiYjNDM7XHRAdGltZXJfY291bnRbMF0gPSAwO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzttYWNybyBDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxuJiM0Mzt7XG4mIzQzO1x0Y2xlYXIoQHRyYWNlX3N0YWNrKTtcbiYjNDM7XHRjbGVhcihAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7XHRjbGVhcihAdGltZXJfY291bnQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzttYWNybyBTVEFSVF9USU1FUihuYW1lLCBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApXG4mIzQzO3tcbiYjNDM7XHRAdGltZXJfbmFtZVt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IG5hbWU7XG4mIzQzO1x0QHRyYWNlX3N0YWNrW3RpZCwgQHRyYWNlX3N0YWNrX3RvcFt0aWRdXSA9IEB0aW1lcl9jb3VudFt0aWRdO1xuJiM0MztcdEB0aW1lcl9zdGFydFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IHVzZWNzO1xuJiM0MztcdEB0aW1lcl9kdXJhdGlvblt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IERVUkFUSU9OX1VOU0VUO1xuJiM0MztcdEB0aW1lcl9kZXB0aFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IEB0cmFjZV9zdGFja190b3BbdGlkXTtcbiYjNDM7XHRAdGltZXJfY291bnRbdGlkXSYjNDM7JiM0Mzs7XG4mIzQzO1x0QHRyYWNlX3N0YWNrX3RvcFt0aWRdJiM0MzsmIzQzOztcbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVW5mb3J0dW5hdGVseSBicmFuY2ggc3RhdGVtZW50cyBjcmFzaCB0aGUgYnBmdHJhY2UgY29tcGlsZXIuICBBcyBhIHJlc3VsdCxcbiYjNDM7ICogdGhlIGJyYW5jaCBoYXMgYmVlbiBtb3ZlZCBkaXJlY3RseSBpbnRvIHRoZSBwcm9iZS4gIFJldmVyc2UgdGhpcyBpZiB0aGVcbiYjNDM7ICogY29tcGlsZXIgZXZlciBnZXRzIHRoYXQgZml4ZWQuXG4mIzQzOyAqL1xuJiM0MzttYWNybyBTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpXG4mIzQzO3tcbiYjNDM7XHQkaWR4ID0gQHRyYWNlX3N0YWNrW3RpZCwgLS1AdHJhY2Vfc3RhY2tfdG9wW3RpZF1dO1xuJiM0MztcdEB0aW1lcl9kdXJhdGlvblt0aWQsICRpZHhdID0gdXNlY3MgLSBAdGltZXJfc3RhcnRbdGlkLCAkaWR4XTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7QkVHSU5cbiYjNDM7e1xuJiM0MztcdElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX3NjaGVkX2luKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fc2NoZWRfaW4gL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOmt2bV9zY2hlZF9pblxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX3NjaGVkX2luXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzprdm1fc2NoZWRfaW5cbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX3NjaGVkX291dCgpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3NjaGVkX291dCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6a3ZtX3NjaGVkX291dFxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX3NjaGVkX291dFwmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2tyZXRmdW5jOmt2bV9zY2hlZF9vdXRcbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX2FyY2hfdmNwdV9sb2FkKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fYXJjaF92Y3B1X2xvYWQgL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOmt2bV9hcmNoX3ZjcHVfbG9hZFxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX2FyY2hfdmNwdV9sb2FkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X2xvYWRcbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX2FyY2hfdmNwdV9wdXQoKSYjMzk7LlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfcHV0IC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzprdm1fYXJjaF92Y3B1X3B1dFxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX2FyY2hfdmNwdV9wdXRcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOmt2bV9hcmNoX3ZjcHVfcHV0XG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSAmIzM5O0tWTV9SVU4mIzM5OywgaS5lLiBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bigpLlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuIC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzprdm1fYXJjaF92Y3B1X2lvY3RsX3J1blxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOmt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSBob3cgbG9uZyBhIGd1ZXN0IHJ1bnMgdXNpbmcgdHJhY2Vwb2ludHMgXCYjMzQ7a3ZtX2VudHJ5XCYjMzQ7IGFuZCBcJiMzNDtrdm1fZXhpdFwmIzM0Oy5cbiYjNDM7ICovXG4mIzQzO3RyYWNlcG9pbnQ6a3ZtOmt2bV9lbnRyeVxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7cnVuX2d1ZXN0XCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0Mzt0cmFjZXBvaW50Omt2bTprdm1fZXhpdFxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTtrdm1fdmNwdV9ibG9jaygpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3ZjcHVfYmxvY2sgL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOmt2bV92Y3B1X2Jsb2NrXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDtrdm1fdmNwdV9ibG9ja1wmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6a3ZtX3ZjcHVfYmxvY2tcbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7a3ZtX21tdV9wYWdlX2ZhdWx0KCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fbW11X3BhZ2VfZmF1bHQgL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOmt2bV9tbXVfcGFnZV9mYXVsdFxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7a3ZtX3ZjcHVfYmxvY2tcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOmt2bV9tbXVfcGFnZV9mYXVsdFxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LlxuJiM0MzsgKi9cbiYjNDM7RU5EXG4mIzQzO3tcbiYjNDM7XHRDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KTtcbiYjNDM7fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL3ZmaW9fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNiOGNiN2ZmNjIxMGRlXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XG5AQCAtMCwwICYjNDM7MSwzMTUgQEBcbiYjNDM7I2RlZmluZSB1c2VjcyAobnNlY3MgLyAxMDAwKVxuJiM0MzsjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKVxuJiM0MzsjZGVmaW5lIERVUkFUSU9OX1VOU0VUICgodWludDY0KS0xKVxuJiM0MztcbiYjNDM7Y29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfVxuJiM0MztcbiYjNDM7bWFjcm8gSU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudClcbiYjNDM7e1xuJiM0MztcdEB0cmFjZV9zdGFja190b3BbMF0gPSAwO1xuJiM0MztcdEB0aW1lcl9jb3VudFswXSA9IDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO21hY3JvIENMRUFSX01BUFMoQHRyYWNlX3N0YWNrLCBAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXG4mIzQzO3tcbiYjNDM7XHRjbGVhcihAdHJhY2Vfc3RhY2spO1xuJiM0MztcdGNsZWFyKEB0cmFjZV9zdGFja190b3ApO1xuJiM0MztcdGNsZWFyKEB0aW1lcl9jb3VudCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzO21hY3JvIFNUQVJUX1RJTUVSKG5hbWUsIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcClcbiYjNDM7e1xuJiM0MztcdEB0aW1lcl9uYW1lW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gbmFtZTtcbiYjNDM7XHRAdHJhY2Vfc3RhY2tbdGlkLCBAdHJhY2Vfc3RhY2tfdG9wW3RpZF1dID0gQHRpbWVyX2NvdW50W3RpZF07XG4mIzQzO1x0QHRpbWVyX3N0YXJ0W3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gdXNlY3M7XG4mIzQzO1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gRFVSQVRJT05fVU5TRVQ7XG4mIzQzO1x0QHRpbWVyX2RlcHRoW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gQHRyYWNlX3N0YWNrX3RvcFt0aWRdO1xuJiM0MztcdEB0aW1lcl9jb3VudFt0aWRdJiM0MzsmIzQzOztcbiYjNDM7XHRAdHJhY2Vfc3RhY2tfdG9wW3RpZF0mIzQzOyYjNDM7O1xuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBVbmZvcnR1bmF0ZWx5IGJyYW5jaCBzdGF0ZW1lbnRzIGNyYXNoIHRoZSBicGZ0cmFjZSBjb21waWxlci4gIEFzIGEgcmVzdWx0LFxuJiM0MzsgKiB0aGUgYnJhbmNoIGhhcyBiZWVuIG1vdmVkIGRpcmVjdGx5IGludG8gdGhlIHByb2JlLiAgUmV2ZXJzZSB0aGlzIGlmIHRoZVxuJiM0MzsgKiBjb21waWxlciBldmVyIGdldHMgdGhhdCBmaXhlZC5cbiYjNDM7ICovXG4mIzQzO21hY3JvIFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydClcbiYjNDM7e1xuJiM0MztcdCRpZHggPSBAdHJhY2Vfc3RhY2tbdGlkLCAtLUB0cmFjZV9zdGFja190b3BbdGlkXV07XG4mIzQzO1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztCRUdJTlxuJiM0Mzt7XG4mIzQzO1x0SU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2dyb3VwX2ZvcHNfdW5sX2lvY3RsKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZEID0gMHgzYjZhXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvYXJncy1cdTAwM2VjbWQgPT0gMHgzYjZhL1xuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7dmZpb19ncm91cF9pb2N0bF9nZXRfZGV2aWNlX2ZkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzp2ZmlvX2dyb3VwX2ZvcHNfdW5sX2lvY3RsIC9hcmdzLVx1MDAzZWNtZCA9PSAweDNiNmEvXG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSAmIzM5O3ZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcbiYjNDM7e1xuJiM0MztcdFNUQVJUX1RJTUVSKFwmIzM0O3ZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzp2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZFxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2RmX3VuYmluZF9pb21tdWZkKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2RmX3VuYmluZF9pb21tdWZkIC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzp2ZmlvX2RmX3VuYmluZF9pb21tdWZkXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2ZmlvX2RmX3VuYmluZF9pb21tdWZkXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzp2ZmlvX2RmX3VuYmluZF9pb21tdWZkXG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSAmIzM5O3ZmaW9fZGZfb3BlbigpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl9vcGVuIC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzp2ZmlvX2RmX29wZW5cbiYjNDM7e1xuJiM0MztcdFNUQVJUX1RJTUVSKFwmIzM0O3ZmaW9fZGZfb3BlblwmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6dmZpb19kZl9vcGVuXG4mIzQzO3tcbiYjNDM7XHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4mIzQzO1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuJiM0MztcdH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7LypcbiYjNDM7ICogVGltZSAmIzM5O3BjaWVfZmxyKCkmIzM5Oy5cbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2llX2ZsciAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6cGNpZV9mbHJcbiYjNDM7e1xuJiM0MztcdFNUQVJUX1RJTUVSKFwmIzM0O3BjaWVfZmxyXCYjMzQ7LFxuJiM0MztcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MztcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7fVxuJiM0MztrcmV0ZnVuYzpwY2llX2ZsclxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTtwY2lfZGV2X3dhaXQoKSYjMzk7LlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHBjaV9kZXZfd2FpdCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6cGNpX2Rldl93YWl0XG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDtwY2lfZGV2X3dhaXRcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnBjaV9kZXZfd2FpdFxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCkmIzM5OyB3aGVuICYjMzk7VkZJT19JT01NVV9NQVBfRE1BJiMzOTsgaXMgY2FsbGVkLlxuJiM0MzsgKlxuJiM0MzsgKlxuJiM0MzsgKiBWRklPX0lPTU1VX01BUF9ETUEgPSAweDNiNzFcbiYjNDM7ICpcbiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zXG4mIzQzOyAqL1xuJiM0MztrZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVx1MDAzZWNtZCA9PSAweDNiNzEvXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2ZmlvX2lvbW11X3R5cGUxX21hcF9kbWFcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I3MS9cbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7dmZpb19waW5fbWFwX2RtYSgpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19waW5fbWFwX2RtYSAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19waW5fbWFwX2RtYVxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7dmZpb19waW5fbWFwX2RtYVwmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6dmZpb19waW5fbWFwX2RtYVxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX3Bpbl9wYWdlc19yZW1vdGUoKSYjMzk7LlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fcGluX3BhZ2VzX3JlbW90ZSAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19waW5fcGFnZXNfcmVtb3RlXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2ZmlvX3Bpbl9wYWdlc19yZW1vdGVcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnZmaW9fcGluX3BhZ2VzX3JlbW90ZVxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2YWRkcl9nZXRfcGZucygpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmFkZHJfZ2V0X3BmbnMgL3Byb2Mva2FsbHN5bXNcbiYjNDM7ICovXG4mIzQzO2tmdW5jOnZhZGRyX2dldF9wZm5zXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2YWRkcl9nZXRfcGZuc1wmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6dmFkZHJfZ2V0X3BmbnNcbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvLyAvKlxuJiM0MzsvLyAgKiBUaW1lICYjMzk7aW9tbXVfbWFwKCkmIzM5Oy5cbiYjNDM7Ly8gICpcbiYjNDM7Ly8gICogQ2hlY2s6IHN1ZG8gZ3JlcCBpb21tdV9tYXAgL3Byb2Mva2FsbHN5bXNcbiYjNDM7Ly8gICovXG4mIzQzOy8vIGtmdW5jOmlvbW11X21hcFxuJiM0MzsvLyB7XG4mIzQzOy8vIFx0U1RBUlRfVElNRVIoXCYjMzQ7aW9tbXVfbWFwXCYjMzQ7LFxuJiM0MzsvLyBcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuJiM0MzsvLyBcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbiYjNDM7Ly8gfVxuJiM0MzsvLyBrcmV0ZnVuYzppb21tdV9tYXBcbiYjNDM7Ly8ge1xuJiM0MzsvLyBcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7Ly8gXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzOy8vIFx0fVxuJiM0MzsvLyB9XG4mIzQzO1xuJiM0MztcbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCkmIzM5OyB3aGVuICYjMzk7VkZJT19JT01NVV9VTk1BUF9ETUEmIzM5OyBpcyBjYWxsZWQuXG4mIzQzOyAqXG4mIzQzOyAqIFZGSU9fSU9NTVVfVU5NQVBfRE1BID0gMHgzYjcyXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19pb21tdV90eXBlMV9pb2N0bCAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy1cdTAwM2VjbWQgPT0gMHgzYjcyL1xuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7dmZpb19pb21tdV90eXBlMV91bm1hcF9kbWFcJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I3Mi9cbiYjNDM7e1xuJiM0MztcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbiYjNDM7XHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKlxuJiM0MzsgKiBUaW1lICYjMzk7dmZpb191bm1hcF91bnBpbigpJiMzOTsuXG4mIzQzOyAqXG4mIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb191bm1hcF91bnBpbiAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb191bm1hcF91bnBpblxuJiM0Mzt7XG4mIzQzO1x0U1RBUlRfVElNRVIoXCYjMzQ7dmZpb191bm1hcF91bnBpblwmIzM0OyxcbiYjNDM7XHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbiYjNDM7XHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4mIzQzO31cbiYjNDM7a3JldGZ1bmM6dmZpb191bm1hcF91bnBpblxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX3N5bmNfdW5waW4oKSYjMzk7LlxuJiM0MzsgKlxuJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fc3luY191bnBpbiAvcHJvYy9rYWxsc3ltc1xuJiM0MzsgKi9cbiYjNDM7a2Z1bmM6dmZpb19zeW5jX3VucGluXG4mIzQzO3tcbiYjNDM7XHRTVEFSVF9USU1FUihcJiMzNDt2ZmlvX3N5bmNfdW5waW5cJiMzNDssXG4mIzQzO1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4mIzQzO1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuJiM0Mzt9XG4mIzQzO2tyZXRmdW5jOnZmaW9fc3luY191bnBpblxuJiM0Mzt7XG4mIzQzO1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuJiM0MztcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qXG4mIzQzOyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LlxuJiM0MzsgKi9cbiYjNDM7RU5EXG4mIzQzO3tcbiYjNDM7XHRDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KTtcbiYjNDM7fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjA5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBicGZ0cmFjZSBzY3JpcHRzIGFuZCBhIHB5dGhvbiBzY3JpcHQgZm9yIHByb2ZpbGluZyB1bmRlciB0b29scy9icGZ0cmFjZS8uIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIGFuZCB0aGVyZWZvcmUgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBjYW4gYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTU4YWU0ZWM3MzYwYTA1M2I0NWZiNDdhZGUyNTk1ZDk0YTBjMDRjMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVuIDMwIDIyOjA5OjUzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weSBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9hZ2dyZWdhdGVfYnBmX3Jlc3VsdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmY0ZmZlOGNmZjQ0MThlCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weQpAQCAtMCwwICYjNDM7MSwzMTggQEAKJiM0MzsjIS91c3IvYmluL2VudiBweXRob24zCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgomIzQzOyMKJiM0MzsjIFByaW50cyB0aGUgYWdncmVnYXRlIHJlc3VsdHMgb2YgYW4gaW5zdHJ1bWVudGVkIEJQRiB0cmFjZS4KJiM0MzsjCiYjNDM7IyBDb3B5cmlnaHQgMjAyNiBHb29nbGUgTExDCiYjNDM7IwomIzQzOyMgQXV0aG9yOiBBYXJvbiBMZXdpcyAmbHQ7YWFyb25sZXdpc0Bnb29nbGUuY29tJmd0OwomIzQzOwomIzQzO2ltcG9ydCBmaWxlaW5wdXQKJiM0MztpbXBvcnQgcmUKJiM0MztpbXBvcnQgc3lzCiYjNDM7aW1wb3J0IHdhcm5pbmdzCiYjNDM7ZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QsIFNlcXVlbmNlCiYjNDM7CiYjNDM7Y2xhc3MgUHJvZmlsZXJSZXN1bHQ6CiYjNDM7ICAmIzM0OyYjMzQ7JiMzNDtDbGFzcyBmb3IgaG9sZGluZyB0aGUgcHJvZmlsZXIgcmVzdWx0cy4mIzM0OyYjMzQ7JiMzNDsKJiM0MzsKJiM0MzsgIGRlZiBfX2luaXRfXygKJiM0MzsgICAgICBzZWxmLAomIzQzOyAgICAgIG5hbWU6IHN0ciwKJiM0MzsgICAgICB0aHJlYWRfdXNlYzogaW50LAomIzQzOyAgICAgIHdhbGxfdXNlYzogaW50LAomIzQzOyAgICAgIG1heF91c2VjOiBpbnQsCiYjNDM7ICAgICAgYXZnX3VzZWM6IGludCwKJiM0MzsgICAgICBjb3VudDogaW50LAomIzQzOyAgICAgIHRocmVhZF9jb3VudDogaW50LAomIzQzOyAgICAgIGluY29tcGxldGVfY291bnQ6IGludCwKJiM0MzsgICAgICBkZXB0aDogaW50LAomIzQzOyAgKToKJiM0MzsgICAgc2VsZi5uYW1lID0gbmFtZQomIzQzOyAgICBzZWxmLnRocmVhZF91c2VjID0gdGhyZWFkX3VzZWMKJiM0MzsgICAgc2VsZi53YWxsX3VzZWMgPSB3YWxsX3VzZWMKJiM0MzsgICAgc2VsZi5tYXhfdXNlYyA9IG1heF91c2VjCiYjNDM7ICAgIHNlbGYuYXZnX3VzZWMgPSBhdmdfdXNlYwomIzQzOyAgICBzZWxmLmNvdW50ID0gY291bnQKJiM0MzsgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnQKJiM0MzsgICAgc2VsZi5pbmNvbXBsZXRlX2NvdW50ID0gaW5jb21wbGV0ZV9jb3VudAomIzQzOyAgICBzZWxmLmRlcHRoID0gZGVwdGgKJiM0MzsKJiM0MztjbGFzcyBCcGZUaW1lcjoKJiM0MzsgICYjMzQ7JiMzNDsmIzM0O0NsYXNzIGZvciBob2xkaW5nIGEgdGltZXIuJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICBkZWYgX19pbml0X18oCiYjNDM7ICAgICAgc2VsZiwKJiM0MzsgICAgICBuYW1lOiBzdHIsCiYjNDM7ICAgICAgc3RhcnRfdGltZV91czogaW50LAomIzQzOyAgICAgIGR1cmF0aW9uX3VzOiBpbnQsCiYjNDM7ICAgICAgZGVwdGg6IGludCwKJiM0MzsgICk6CiYjNDM7ICAgIHNlbGYubmFtZSA9IG5hbWUKJiM0MzsgICAgc2VsZi5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZV91cwomIzQzOyAgICBzZWxmLmR1cmF0aW9uX3VzID0gZHVyYXRpb25fdXMKJiM0MzsgICAgc2VsZi5kZXB0aCA9IGRlcHRoCiYjNDM7CiYjNDM7Y2xhc3MgQnBmUmVzdWx0OgomIzQzOyAgJiMzNDsmIzM0OyYjMzQ7Q2xhc3MgZm9yIGhvbGRpbmcgdGhlIHByb2ZpbGVyIHJlc3VsdHMuJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICBkZWYgX19pbml0X18oCiYjNDM7ICAgICAgc2VsZiwKJiM0MzsgICAgICBuYW1lOiBzdHIsCiYjNDM7ICAgICAgd2FsbF90aW1lX3N0YXJ0X3VzOiBpbnQsCiYjNDM7ICAgICAgd2FsbF90aW1lX2VuZF91czogaW50LAomIzQzOyAgICAgIHRocmVhZF91czogaW50LAomIzQzOyAgICAgIG1heF91czogaW50LAomIzQzOyAgICAgIGF2Z191czogaW50LAomIzQzOyAgICAgIGNvdW50OiBpbnQsCiYjNDM7ICAgICAgdGhyZWFkX2NvdW50OiBpbnQsCiYjNDM7ICAgICAgZGVwdGg6IGludCwKJiM0MzsgICAgICB0aWQ6IGludCwKJiM0MzsgICk6CiYjNDM7ICAgIHNlbGYubmFtZSA9IG5hbWUKJiM0MzsgICAgc2VsZi53YWxsX3RpbWVfc3RhcnRfdXMgPSB3YWxsX3RpbWVfc3RhcnRfdXMKJiM0MzsgICAgc2VsZi53YWxsX3RpbWVfZW5kX3VzID0gd2FsbF90aW1lX2VuZF91cwomIzQzOyAgICBzZWxmLnRocmVhZF91cyA9IHRocmVhZF91cwomIzQzOyAgICBzZWxmLm1heF91cyA9IG1heF91cwomIzQzOyAgICBzZWxmLmF2Z191cyA9IGF2Z191cwomIzQzOyAgICBzZWxmLmNvdW50ID0gY291bnQKJiM0MzsgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnQKJiM0MzsgICAgc2VsZi5kZXB0aCA9IGRlcHRoCiYjNDM7ICAgIHNlbGYuY2hpbGRyZW4gPSBbXQomIzQzOyAgICBzZWxmLmNoaWxkX2luZGV4ID0ge30KJiM0MzsgICAgc2VsZi50aHJlYWRzID0ge30KJiM0MzsgICAgc2VsZi50aHJlYWRzW3RpZF0gPSBUcnVlCiYjNDM7CiYjNDM7ZGVmIHVwZGF0ZV9jaGlsZChyOiBCcGZSZXN1bHQsIHRpbWVyOiBCcGZUaW1lciwgdGlkOiBpbnQpIC0mZ3Q7IGludDoKJiM0MzsgIGkgPSByLmNoaWxkX2luZGV4LmdldCh0aW1lci5uYW1lKQomIzQzOyAgaWYgaSBpcyBOb25lOgomIzQzOyAgICBpID0gbGVuKHIuY2hpbGRyZW4pCiYjNDM7ICAgIHIuY2hpbGRyZW4uYXBwZW5kKEJwZlJlc3VsdCgKJiM0MzsgICAgICAgIHRpbWVyLm5hbWUsCiYjNDM7ICAgICAgICB0aW1lci5zdGFydF90aW1lX3VzLAomIzQzOyAgICAgICAgdGltZXIuc3RhcnRfdGltZV91cyAmIzQzOyB0aW1lci5kdXJhdGlvbl91cywKJiM0MzsgICAgICAgIHRpbWVyLmR1cmF0aW9uX3VzLAomIzQzOyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsCiYjNDM7ICAgICAgICB0aW1lci5kdXJhdGlvbl91cywKJiM0MzsgICAgICAgIDEsCiYjNDM7ICAgICAgICAxLAomIzQzOyAgICAgICAgdGltZXIuZGVwdGgsCiYjNDM7ICAgICAgICB0aWQpKQomIzQzOyAgICByLmNoaWxkX2luZGV4W3RpbWVyLm5hbWVdID0gaQomIzQzOyAgZWxzZToKJiM0MzsgICAgci5jaGlsZHJlbltpXS53YWxsX3RpbWVfc3RhcnRfdXMgPSBtaW4oci5jaGlsZHJlbltpXS53YWxsX3RpbWVfc3RhcnRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMpCiYjNDM7ICAgIHIuY2hpbGRyZW5baV0ud2FsbF90aW1lX2VuZF91cyA9IG1heChyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9lbmRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMgJiM0MzsgdGltZXIuZHVyYXRpb25fdXMpCiYjNDM7ICAgIHIuY2hpbGRyZW5baV0udGhyZWFkX3VzICYjNDM7PSB0aW1lci5kdXJhdGlvbl91cwomIzQzOyAgICByLmNoaWxkcmVuW2ldLm1heF91cyA9IG1heChyLmNoaWxkcmVuW2ldLm1heF91cywgdGltZXIuZHVyYXRpb25fdXMpCiYjNDM7ICAgIHIuY2hpbGRyZW5baV0uY291bnQgJiM0Mzs9IDEKJiM0MzsgICAgci5jaGlsZHJlbltpXS5hdmdfdXMgPSByLmNoaWxkcmVuW2ldLnRocmVhZF91cyAvIHIuY2hpbGRyZW5baV0uY291bnQKJiM0MzsgICAgaWYgci5jaGlsZHJlbltpXS50aHJlYWRzLmdldCh0aWQpIGlzIE5vbmU6CiYjNDM7ICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRzW3RpZF0gPSBUcnVlCiYjNDM7ICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRfY291bnQgJiM0Mzs9IDEKJiM0MzsKJiM0MzsgIHJldHVybiBpCiYjNDM7CiYjNDM7ZGVmIG1lcmdlX3JlY3Vyc2l2ZShyOiBCcGZSZXN1bHQsIHRpZDogaW50LCB0aW1lcnM6IExpc3RbQnBmVGltZXJdLCBpbmRleDogaW50LCBjaGlsZF9pbmRleDogaW50KSAtJmd0OyBpbnQ6CiYjNDM7ICB3aGlsZSBpbmRleCAmbHQ7IGxlbih0aW1lcnMpOgomIzQzOyAgICB3aGlsZSBpbmRleCAmbHQ7IGxlbih0aW1lcnMpIGFuZCB0aW1lcnNbaW5kZXhdID09IE5vbmU6CiYjNDM7ICAgICAgaW5kZXggJiM0Mzs9IDEKJiM0MzsKJiM0MzsgICAgaWYgaW5kZXggJmd0Oz0gbGVuKHRpbWVycyk6CiYjNDM7ICAgICAgcmV0dXJuIGluZGV4CiYjNDM7CiYjNDM7ICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJiMzOTtyJiMzOTsuIChDaGlsZCBjYXNlKQomIzQzOyAgICBpZiB0aW1lcnNbaW5kZXhdLmRlcHRoID09IChyLmRlcHRoICYjNDM7IDEpOgomIzQzOyAgICAgICMgQWRkIGNoaWxkCiYjNDM7ICAgICAgY2hpbGRfaW5kZXggPSB1cGRhdGVfY2hpbGQociwgdGltZXJzW2luZGV4XSwgdGlkKQomIzQzOwomIzQzOyAgICAgICMgTm93IHRoYXQgdGhlIHRpbWVyIGhhcyBiZWVuIGhhbmRsZWQgaW5jcmVtZW50IHRvIHRoZSBuZXh0IG9uZS4KJiM0MzsgICAgICBpbmRleCAmIzQzOz0gMQomIzQzOwomIzQzOyAgICAjIFRoZSB0aW1lciBpcyBhIGNoaWxkIG9mICYjMzk7ciYjMzk7LiAoR3JhbmRjaGlsZCBjYXNlKQomIzQzOyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggPT0gKHIuZGVwdGggJiM0MzsgMik6CiYjNDM7ICAgICAgaWYgY2hpbGRfaW5kZXggJmx0OyAwOgomIzQzOyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigmIzM0O0ludmFsaWQgJiMzOTtjaGlsZF9pbmRleCYjMzk7JiMzNDspCiYjNDM7ICAgICAgIyBSZWN1cnNlIGRvd24gdGhlIGNoaWxkIGJlY3Vhc2UgdGhhdCBpcyB0aGUgcGFyZW50IHRoaXMgdGltZXIuCiYjNDM7ICAgICAgaW5kZXggPSBtZXJnZV9yZWN1cnNpdmUoci5jaGlsZHJlbltjaGlsZF9pbmRleF0sIHRpZCwgdGltZXJzLCBpbmRleCwgY2hpbGRfaW5kZXgpCiYjNDM7CiYjNDM7ICAgICMgVGhlIHRpbWVyIGlzIGEgZGVzY2VuZGFudCBvZiAmIzM5O3ImIzM5OywgYnV0IG5vdCB0aGUgY2hpbGQuLi4gSW52YWxpZCBjYXNlIQomIzQzOyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggJmd0OyAoci5kZXB0aCAmIzQzOyAyKToKJiM0MzsgICAgICByYWlzZSBWYWx1ZUVycm9yKCYjMzQ7SW52YWxpZCBkZXB0aC4gIGRlc2NlbmRhbnQgY2FuIG9ubHkgYmUgY2hpbGRyZW4uIG5hbWUgPSAmIzM5OyVzJiMzOTssIHRpZCA9ICVkLCBpbmRleCA9ICVkJiMzNDsgJSAodGltZXJzW2luZGV4XS5uYW1lLCB0aWQsIGluZGV4KSkKJiM0MzsKJiM0MzsgICAgIyBOZXcgZmFtaWx5IHRyZWUuICBQb3Agb3V0IG9mIHRoaXMgb25lLgomIzQzOyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggJmx0Oz0gci5kZXB0aDoKJiM0MzsgICAgICAjIFRoZSB0aW1lciBpcyBhbiBhbmNlc3RvciBvZiAmIzM5O3ImIzM5Oy4gIFJldHVybiBzbyBpdCBjYW4gYmUgcHJvY2Vzc2VkIGVsc2V3aGVyZS4KJiM0MzsgICAgICByZXR1cm4gaW5kZXgKJiM0MzsKJiM0MzsgIHJldHVybiBpbmRleAomIzQzOwomIzQzO2RlZiBtZXJnZV90aW1lcnMocjogQnBmUmVzdWx0LCB0aWQ6IGludCwgdGltZXJzOiBMaXN0W0JwZlRpbWVyXSk6CiYjNDM7ICBpZiBsZW4odGltZXJzKSA9PSAwOgomIzQzOyAgICByZXR1cm4KJiM0MzsKJiM0MzsgIGlmIHRpbWVyc1swXS5kZXB0aCAhPSAwOgomIzQzOyAgICByYWlzZSBWYWx1ZUVycm9yKCYjMzQ7RXhwZWN0ZWQgYSBkZXB0aCBvZiAwLiAgJiMzOTslcyYjMzk7LCBkZXB0aCA9ICVkJiMzNDsgJSAodGltZXJzWzBdLm5hbWUsIHRpbWVyc1swXS5kZXB0aCkpCiYjNDM7CiYjNDM7ICBtZXJnZV9yZWN1cnNpdmUociwgdGlkLCB0aW1lcnMsIDAsIC0xKQomIzQzOwomIzQzO2RlZiBwcmludF9yZWN1cnNpdmUocjogQnBmUmVzdWx0LCByZXN1bHRzIDogTGlzdFtQcm9maWxlclJlc3VsdF0pOgomIzQzOyAgdGhyZWFkX3RpbWUgPSBmbG9hdChyLnRocmVhZF91cykgLyAxMDAwLjAKJiM0MzsgIHdhbGxfdGltZV91cyA9IHIud2FsbF90aW1lX2VuZF91cyAtIHIud2FsbF90aW1lX3N0YXJ0X3VzCiYjNDM7ICB3YWxsX3RpbWUgPSBmbG9hdCh3YWxsX3RpbWVfdXMpIC8gMTAwMC4wCiYjNDM7ICBtYXhfdGltZSA9IGZsb2F0KHIubWF4X3VzKSAvIDEwMDAuMAomIzQzOyAgYXZnX3RpbWUgPSBmbG9hdChyLmF2Z191cykgLyAxMDAwLjAKJiM0MzsKJiM0MzsgIGluZGVudCA9ICYjMzQ7JiMzNDsKJiM0MzsgIGZvciBpIGluIHJhbmdlKHIuZGVwdGgpOgomIzQzOyAgICBpbmRlbnQgJiM0Mzs9ICYjMzQ7ICAmIzM0OwomIzQzOwomIzQzOyAgcHJpbnQoJiMzNDslcyVzLCB0aHJlYWRfdGltZSA9ICUuMmZtcywgd2FsbF90aW1lID0gJS4yZm1zLCBtYXggPSAlLjJmLCBhdmcgPSAlLjJmLCBjb3VudCA9ICVkLCB0aHJlYWRfY291bnQgPSAlZCYjMzQ7ICUKJiM0MzsgICAgICAgIChpbmRlbnQsIHIubmFtZSwgdGhyZWFkX3RpbWUsIHdhbGxfdGltZSwgbWF4X3RpbWUsIGF2Z190aW1lLCByLmNvdW50LCByLnRocmVhZF9jb3VudCkpOwomIzQzOwomIzQzOyAgcmVzdWx0cy5hcHBlbmQoCiYjNDM7ICAgICAgUHJvZmlsZXJSZXN1bHQoCiYjNDM7ICAgICAgICAgIHIubmFtZSwKJiM0MzsgICAgICAgICAgci50aHJlYWRfdXMsCiYjNDM7ICAgICAgICAgIHdhbGxfdGltZV91cywKJiM0MzsgICAgICAgICAgci5tYXhfdXMsCiYjNDM7ICAgICAgICAgIHIuYXZnX3VzLAomIzQzOyAgICAgICAgICByLmNvdW50LAomIzQzOyAgICAgICAgICByLnRocmVhZF9jb3VudCwKJiM0MzsgICAgICAgICAgMCwKJiM0MzsgICAgICAgICAgci5kZXB0aCwKJiM0MzsgICAgICApCiYjNDM7ICApCiYjNDM7CiYjNDM7ICBmb3IgY2hpbGQgaW4gci5jaGlsZHJlbjoKJiM0MzsgICAgcHJpbnRfcmVjdXJzaXZlKGNoaWxkLCByZXN1bHRzKQomIzQzOwomIzQzO2RlZiBwcmludF9yZXN1bHRzKHI6IEJwZlJlc3VsdCwgcmVzdWx0cyA6IExpc3RbUHJvZmlsZXJSZXN1bHRdKToKJiM0MzsgIGZvciBjaGlsZCBpbiByLmNoaWxkcmVuOgomIzQzOyAgICBwcmludF9yZWN1cnNpdmUoY2hpbGQsIHJlc3VsdHMpCiYjNDM7CiYjNDM7ZGVmIGdlbmVyYXRlX2Zyb21fbG9nKGZpbGVzOiBTZXF1ZW5jZVtzdHJdKToKJiM0MzsgICYjMzQ7JiMzNDsmIzM0O1JlYWQgdGhlIHRyYWNlIGFuZCByZXR1cm4gYSBsaXN0IG9mIFByb2ZpbGVyUmVzdWx0IG9iamVjdHMuJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICB0aW1lcl9jb3VudHMgPSB7fQomIzQzOyAgYWxsX3RpbWVycyA9IHt9CiYjNDM7CiYjNDM7ICBjb3VudF9yZWdleCA9IHJlLmNvbXBpbGUoCiYjNDM7ICAgICAgciYjMzQ7XkB0aW1lcl9jb3VudFxbKD9QJmx0O3RpZCZndDtbMC05XSYjNDM7KVxdOlxXKD9QJmx0O2NvdW50Jmd0O1stMC05XSYjNDM7KSYjMzQ7CiYjNDM7ICApCiYjNDM7ICBuYW1lX3JlZ2V4ID0gcmUuY29tcGlsZSgKJiM0MzsgICAgICByJiMzNDteQHRpbWVyX25hbWVcWyg/UCZsdDt0aWQmZ3Q7WzAtOV0mIzQzOyksXFcqKD9QJmx0O2luZGV4Jmd0O1swLTldJiM0MzspXF06XFcoP1AmbHQ7bmFtZSZndDtbXHdcLjAtOV0mIzQzOykmIzM0OwomIzQzOyAgKQomIzQzOyAgc3RhcnRfdGltZV9yZWdleCA9IHJlLmNvbXBpbGUoCiYjNDM7ICAgICAgciYjMzQ7XkB0aW1lcl9zdGFydFxbKD9QJmx0O3RpZCZndDtbMC05XSYjNDM7KSxcVyooP1AmbHQ7aW5kZXgmZ3Q7WzAtOV0mIzQzOylcXTpcVyg/UCZsdDtzdGFydF90aW1lX3VzJmd0O1stMC05XSYjNDM7KSYjMzQ7CiYjNDM7ICApCiYjNDM7ICBkdXJhdGlvbl9yZWdleCA9IHJlLmNvbXBpbGUoCiYjNDM7ICAgICAgciYjMzQ7XkB0aW1lcl9kdXJhdGlvblxbKD9QJmx0O3RpZCZndDtbMC05XSYjNDM7KSxcVyooP1AmbHQ7aW5kZXgmZ3Q7WzAtOV0mIzQzOylcXTpcVyg/UCZsdDtkdXJhdGlvbl91cyZndDtbLTAtOV0mIzQzOykmIzM0OwomIzQzOyAgKQomIzQzOyAgZGVwdGhfcmVnZXggPSByZS5jb21waWxlKAomIzQzOyAgICAgIHImIzM0O15AdGltZXJfZGVwdGhcWyg/UCZsdDt0aWQmZ3Q7WzAtOV0mIzQzOyksXFcqKD9QJmx0O2luZGV4Jmd0O1swLTldJiM0MzspXF06XFcoP1AmbHQ7ZGVwdGgmZ3Q7Wy0wLTldJiM0MzspJiMzNDsKJiM0MzsgICkKJiM0MzsKJiM0MzsgIGF0dGFjaGluZ19yZWdleCA9IHJlLmNvbXBpbGUoCiYjNDM7ICAgICAgciYjMzQ7XkF0dGFjaGluZy4qJiMzNDsKJiM0MzsgICkKJiM0MzsKJiM0MzsgICMgR2V0IGFsbCBjb3VudHMuICBUaGF0IHdheSB3ZSBrbm93IGhvdyBtYW55IHRpbWVycyBlYWNoIHRocmVhZCB1c2VkLgomIzQzOyAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzKToKJiM0MzsgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKJiM0MzsKJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSkKJiM0MzsgICAgaWYgbToKJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cCgmIzM0O3RpZCYjMzQ7KSkKJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKCYjMzQ7aW5kZXgmIzM0OykpCiYjNDM7ICAgICAgZHVyYXRpb25fc3RyID0gbS5ncm91cCgmIzM0O2R1cmF0aW9uX3VzJiMzNDspCiYjNDM7ICAgICAgZHVyYXRpb24gPSBpbnQobS5ncm91cCgmIzM0O2R1cmF0aW9uX3VzJiMzNDspKQomIzQzOwomIzQzOyAgICAgIGlmIG5vdCB0aWQgaW4gdGltZXJfY291bnRzOgomIzQzOyAgICAgICAgdGltZXJfY291bnRzW3RpZF0gPSBpbmRleAomIzQzOyAgICAgIGVsc2U6CiYjNDM7ICAgICAgICB0aW1lcl9jb3VudHNbdGlkXSA9IG1heCh0aW1lcl9jb3VudHNbdGlkXSwgaW5kZXgpCiYjNDM7CiYjNDM7ICAjIEFsbG9jYXRlIGVub3VnaCB0aW1lcnMgdG8gZml0IHRoZSB0cmFjZS4KJiM0MzsgIGZvciB0aWQsIGNvdW50IGluIHRpbWVyX2NvdW50cy5pdGVtcygpOgomIzQzOyAgICBhbGxfdGltZXJzW3RpZF0gPSBbTm9uZV0gKiAoY291bnQgJiM0MzsgMSkKJiM0MzsKJiM0MzsgICMgUG9wdWxhdGUgdGhlIHRyYWNlLgomIzQzOyAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzKToKJiM0MzsgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKJiM0MzsKJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChuYW1lX3JlZ2V4LCBsaW5lKQomIzQzOyAgICBpZiBtOgomIzQzOyAgICAgIHRpZCA9IGludChtLmdyb3VwKCYjMzQ7dGlkJiMzNDspKQomIzQzOyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoJiMzNDtpbmRleCYjMzQ7KSkKJiM0MzsgICAgICBuYW1lID0gbS5ncm91cCgmIzM0O25hbWUmIzM0OykKJiM0MzsgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6CiYjNDM7ICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoJiMzNDsmIzM0OywgMCwgLTEsIC0xKQomIzQzOyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0ubmFtZSA9IG5hbWUKJiM0MzsgICAgICBjb250aW51ZQomIzQzOwomIzQzOyAgICBtID0gcmUuZnVsbG1hdGNoKHN0YXJ0X3RpbWVfcmVnZXgsIGxpbmUpCiYjNDM7ICAgIGlmIG06CiYjNDM7ICAgICAgdGlkID0gaW50KG0uZ3JvdXAoJiMzNDt0aWQmIzM0OykpCiYjNDM7ICAgICAgaW5kZXggPSBpbnQobS5ncm91cCgmIzM0O2luZGV4JiMzNDspKQomIzQzOyAgICAgIHN0YXJ0X3RpbWUgPSBpbnQobS5ncm91cCgmIzM0O3N0YXJ0X3RpbWVfdXMmIzM0OykpCiYjNDM7ICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOgomIzQzOyAgICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9IEJwZlRpbWVyKCYjMzQ7JiMzNDssIDAsIC0xLCAtMSkKJiM0MzsgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLnN0YXJ0X3RpbWVfdXMgPSBzdGFydF90aW1lCiYjNDM7ICAgICAgY29udGludWUKJiM0MzsKJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSkKJiM0MzsgICAgaWYgbToKJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cCgmIzM0O3RpZCYjMzQ7KSkKJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKCYjMzQ7aW5kZXgmIzM0OykpCiYjNDM7ICAgICAgZHVyYXRpb24gPSBpbnQobS5ncm91cCgmIzM0O2R1cmF0aW9uX3VzJiMzNDspKQomIzQzOyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZToKJiM0MzsgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcigmIzM0OyYjMzQ7LCAwLCAtMSwgLTEpCiYjNDM7ICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XS5kdXJhdGlvbl91cyA9IGR1cmF0aW9uCiYjNDM7ICAgICAgY29udGludWUKJiM0MzsKJiM0MzsgICAgbSA9IHJlLmZ1bGxtYXRjaChkZXB0aF9yZWdleCwgbGluZSkKJiM0MzsgICAgaWYgbToKJiM0MzsgICAgICB0aWQgPSBpbnQobS5ncm91cCgmIzM0O3RpZCYjMzQ7KSkKJiM0MzsgICAgICBpbmRleCA9IGludChtLmdyb3VwKCYjMzQ7aW5kZXgmIzM0OykpCiYjNDM7ICAgICAgZGVwdGggPSBpbnQobS5ncm91cCgmIzM0O2RlcHRoJiMzNDspKQomIzQzOyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZToKJiM0MzsgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcigmIzM0OyYjMzQ7LCAwLCAtMSwgLTEpCiYjNDM7ICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XS5kZXB0aCA9IGRlcHRoCiYjNDM7ICAgICAgY29udGludWUKJiM0MzsKJiM0MzsgICAgaWYgcmUuZnVsbG1hdGNoKGNvdW50X3JlZ2V4LCBsaW5lKToKJiM0MzsgICAgICAjIFNraXAgdGhpcyBjYXNlLiAgSXQmIzM5O3MgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZC4KJiM0MzsgICAgICBjb250aW51ZQomIzQzOyAgICBpZiByZS5mdWxsbWF0Y2goYXR0YWNoaW5nX3JlZ2V4LCBsaW5lKToKJiM0MzsgICAgICAjIFNraXAgJiMzNDtBdHRhY2hpbmcgWFggcHJvYmVzLi4uJiMzNDsKJiM0MzsgICAgICBjb250aW51ZQomIzQzOyAgICBpZiBub3QgbGluZToKJiM0MzsgICAgICAjIFNraXAgZW1wdHkgc3RyaW5ncy4KJiM0MzsgICAgICBjb250aW51ZQomIzQzOwomIzQzOyAgICByYWlzZSBWYWx1ZUVycm9yKCYjMzQ7SW52YWxpZCBpbnB1dCwgJiMzOTslcyYjMzk7JiMzNDsgJSAobGluZSkpCiYjNDM7CiYjNDM7ICByb290ID0gQnBmUmVzdWx0KCYjMzQ7JiMzNDssIDAsIDAsIDAsIDAsIDAsIDEsIDEsIC0xLCAtMSkKJiM0MzsgIHJlc3VsdHMgPSBbXQomIzQzOyAgZm9yIHRpZCwgdGltZXJzIGluIGFsbF90aW1lcnMuaXRlbXMoKToKJiM0MzsgICAgbWVyZ2VfdGltZXJzKHJvb3QsIHRpZCwgdGltZXJzKQomIzQzOyAgcHJpbnRfcmVzdWx0cyhyb290LCByZXN1bHRzKQomIzQzOwomIzQzOyAgaWYgZmlsZWlucHV0LmZpbGVubygpID09IDA6CiYjNDM7ICAgIHJhaXNlIFZhbHVlRXJyb3IoJiMzNDtFeHBlY3RlZCBhIGZpbGUgdG8gcmVhZC4mIzM0OykKJiM0MzsKJiM0MzsgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSAmZ3Q7IDE6CiYjNDM7ICAgIHJhaXNlIFZhbHVlRXJyb3IoJiMzNDtUb28gbWFueSBmaWxlcyByZWFkLiAgRXhwZWN0ZWQgMSYjMzQ7KQomIzQzOwomIzQzO2RlZiBtYWluKCkgLSZndDsgTm9uZToKJiM0MzsgICYjMzQ7JiMzNDsmIzM0O01haW4gZnVuY3Rpb24uJiMzNDsmIzM0OyYjMzQ7CiYjNDM7CiYjNDM7ICBpZiBsZW4oc3lzLmFyZ3YpICZsdDs9IDE6CiYjNDM7ICAgIHByaW50KCYjMzQ7RXJyb3I6IE5vdCBlbm91Z2ggY29tbWFuZC1saW5lIGFyZ3VtZW50cy4gRXhwZWN0ZWQgYW4gaW5wdXQgZmlsZSYjMzQ7LCBmaWxlPXN5cy5zdGRlcnIpCiYjNDM7ICAgIHN5cy5leGl0KDEpCiYjNDM7CiYjNDM7ICBnZW5lcmF0ZV9mcm9tX2xvZyhzeXMuYXJndlsxOl0pCiYjNDM7CiYjNDM7CiYjNDM7aWYgX19uYW1lX18gPT0gJiMzNDtfX21haW5fXyYjMzQ7OgomIzQzOyAgbWFpbigpCmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmJkMzQxZTQwODU3MGVjCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL3NhbXBsZXMva3ZtX3RyYWNlLmJ0CkBAIC0wLDAgJiM0MzsxLDE5NyBAQAomIzQzOyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMCkKJiM0MzsjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKQomIzQzOyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpCiYjNDM7CiYjNDM7Y29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfQomIzQzOwomIzQzO21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpCiYjNDM7ewomIzQzOwlAdHJhY2Vfc3RhY2tfdG9wWzBdID0gMDsKJiM0MzsJQHRpbWVyX2NvdW50WzBdID0gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7bWFjcm8gQ0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCkKJiM0Mzt7CiYjNDM7CWNsZWFyKEB0cmFjZV9zdGFjayk7CiYjNDM7CWNsZWFyKEB0cmFjZV9zdGFja190b3ApOwomIzQzOwljbGVhcihAdGltZXJfY291bnQpOwomIzQzO30KJiM0MzsKJiM0MzttYWNybyBTVEFSVF9USU1FUihuYW1lLCBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApCiYjNDM7ewomIzQzOwlAdGltZXJfbmFtZVt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IG5hbWU7CiYjNDM7CUB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTsKJiM0MzsJQHRpbWVyX3N0YXJ0W3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gdXNlY3M7CiYjNDM7CUB0aW1lcl9kdXJhdGlvblt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IERVUkFUSU9OX1VOU0VUOwomIzQzOwlAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07CiYjNDM7CUB0aW1lcl9jb3VudFt0aWRdJiM0MzsmIzQzOzsKJiM0MzsJQHRyYWNlX3N0YWNrX3RvcFt0aWRdJiM0MzsmIzQzOzsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBVbmZvcnR1bmF0ZWx5IGJyYW5jaCBzdGF0ZW1lbnRzIGNyYXNoIHRoZSBicGZ0cmFjZSBjb21waWxlci4gIEFzIGEgcmVzdWx0LAomIzQzOyAqIHRoZSBicmFuY2ggaGFzIGJlZW4gbW92ZWQgZGlyZWN0bHkgaW50byB0aGUgcHJvYmUuICBSZXZlcnNlIHRoaXMgaWYgdGhlCiYjNDM7ICogY29tcGlsZXIgZXZlciBnZXRzIHRoYXQgZml4ZWQuCiYjNDM7ICovCiYjNDM7bWFjcm8gU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KQomIzQzO3sKJiM0MzsJJGlkeCA9IEB0cmFjZV9zdGFja1t0aWQsIC0tQHRyYWNlX3N0YWNrX3RvcFt0aWRdXTsKJiM0MzsJQHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdOwomIzQzO30KJiM0MzsKJiM0MztCRUdJTgomIzQzO3sKJiM0MzsJSU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O2t2bV9zY2hlZF9pbigpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9zY2hlZF9pbiAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOmt2bV9zY2hlZF9pbgomIzQzO3sKJiM0MzsJU1RBUlRfVElNRVIoJiMzNDtrdm1fc2NoZWRfaW4mIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOmt2bV9zY2hlZF9pbgomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7a3ZtX3NjaGVkX291dCgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9zY2hlZF9vdXQgL3Byb2Mva2FsbHN5bXMKJiM0MzsgKi8KJiM0MztrZnVuYzprdm1fc2NoZWRfb3V0CiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O2t2bV9zY2hlZF9vdXQmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzOwomIzQzO2tyZXRmdW5jOmt2bV9zY2hlZF9vdXQKJiM0Mzt7CiYjNDM7CWlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gJmd0OyAwKSB7CiYjNDM7CQlTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O2t2bV9hcmNoX3ZjcHVfbG9hZCgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfbG9hZCAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOmt2bV9hcmNoX3ZjcHVfbG9hZAomIzQzO3sKJiM0MzsJU1RBUlRfVElNRVIoJiMzNDtrdm1fYXJjaF92Y3B1X2xvYWQmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOmt2bV9hcmNoX3ZjcHVfbG9hZAomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7a3ZtX2FyY2hfdmNwdV9wdXQoKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fYXJjaF92Y3B1X3B1dCAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOmt2bV9hcmNoX3ZjcHVfcHV0CiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O2t2bV9hcmNoX3ZjcHVfcHV0JiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X3B1dAomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7S1ZNX1JVTiYjMzk7LCBpLmUuIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKCkuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4KJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4mIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOmt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgaG93IGxvbmcgYSBndWVzdCBydW5zIHVzaW5nIHRyYWNlcG9pbnRzICYjMzQ7a3ZtX2VudHJ5JiMzNDsgYW5kICYjMzQ7a3ZtX2V4aXQmIzM0Oy4KJiM0MzsgKi8KJiM0Mzt0cmFjZXBvaW50Omt2bTprdm1fZW50cnkKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7cnVuX2d1ZXN0JiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0Mzt0cmFjZXBvaW50Omt2bTprdm1fZXhpdAomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7a3ZtX3ZjcHVfYmxvY2soKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fdmNwdV9ibG9jayAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOmt2bV92Y3B1X2Jsb2NrCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O2t2bV92Y3B1X2Jsb2NrJiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzprdm1fdmNwdV9ibG9jawomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7a3ZtX21tdV9wYWdlX2ZhdWx0KCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX21tdV9wYWdlX2ZhdWx0IC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6a3ZtX21tdV9wYWdlX2ZhdWx0CiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O2t2bV92Y3B1X2Jsb2NrJiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzprdm1fbW11X3BhZ2VfZmF1bHQKJiM0Mzt7CiYjNDM7CWlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gJmd0OyAwKSB7CiYjNDM7CQlTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogRHVtcCB0aGUgcmVzdWx0cyB0byBzdGRvdXQuCiYjNDM7ICovCiYjNDM7RU5ECiYjNDM7ewomIzQzOwlDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KTsKJiM0Mzt9CmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL3NhbXBsZXMvdmZpb190cmFjZS5idApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uM2I4Y2I3ZmY2MjEwZGUKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0CkBAIC0wLDAgJiM0MzsxLDMxNSBAQAomIzQzOyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMCkKJiM0MzsjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKQomIzQzOyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpCiYjNDM7CiYjNDM7Y29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfQomIzQzOwomIzQzO21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpCiYjNDM7ewomIzQzOwlAdHJhY2Vfc3RhY2tfdG9wWzBdID0gMDsKJiM0MzsJQHRpbWVyX2NvdW50WzBdID0gMDsKJiM0Mzt9CiYjNDM7CiYjNDM7bWFjcm8gQ0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCkKJiM0Mzt7CiYjNDM7CWNsZWFyKEB0cmFjZV9zdGFjayk7CiYjNDM7CWNsZWFyKEB0cmFjZV9zdGFja190b3ApOwomIzQzOwljbGVhcihAdGltZXJfY291bnQpOwomIzQzO30KJiM0MzsKJiM0MzttYWNybyBTVEFSVF9USU1FUihuYW1lLCBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApCiYjNDM7ewomIzQzOwlAdGltZXJfbmFtZVt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IG5hbWU7CiYjNDM7CUB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTsKJiM0MzsJQHRpbWVyX3N0YXJ0W3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gdXNlY3M7CiYjNDM7CUB0aW1lcl9kdXJhdGlvblt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IERVUkFUSU9OX1VOU0VUOwomIzQzOwlAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07CiYjNDM7CUB0aW1lcl9jb3VudFt0aWRdJiM0MzsmIzQzOzsKJiM0MzsJQHRyYWNlX3N0YWNrX3RvcFt0aWRdJiM0MzsmIzQzOzsKJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBVbmZvcnR1bmF0ZWx5IGJyYW5jaCBzdGF0ZW1lbnRzIGNyYXNoIHRoZSBicGZ0cmFjZSBjb21waWxlci4gIEFzIGEgcmVzdWx0LAomIzQzOyAqIHRoZSBicmFuY2ggaGFzIGJlZW4gbW92ZWQgZGlyZWN0bHkgaW50byB0aGUgcHJvYmUuICBSZXZlcnNlIHRoaXMgaWYgdGhlCiYjNDM7ICogY29tcGlsZXIgZXZlciBnZXRzIHRoYXQgZml4ZWQuCiYjNDM7ICovCiYjNDM7bWFjcm8gU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KQomIzQzO3sKJiM0MzsJJGlkeCA9IEB0cmFjZV9zdGFja1t0aWQsIC0tQHRyYWNlX3N0YWNrX3RvcFt0aWRdXTsKJiM0MzsJQHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdOwomIzQzO30KJiM0MzsKJiM0MztCRUdJTgomIzQzO3sKJiM0MzsJSU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O3ZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwoKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZEID0gMHgzYjZhCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL3Byb2Mva2FsbHN5bXMKJiM0MzsgKi8KJiM0MztrZnVuYzp2ZmlvX2dyb3VwX2ZvcHNfdW5sX2lvY3RsIC9hcmdzLSZndDtjbWQgPT0gMHgzYjZhLwomIzQzO3sKJiM0MzsJU1RBUlRfVElNRVIoJiMzNDt2ZmlvX2dyb3VwX2lvY3RsX2dldF9kZXZpY2VfZmQmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL2FyZ3MtJmd0O2NtZCA9PSAweDNiNmEvCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZCgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmQKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmQmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2RmX3VuYmluZF9pb21tdWZkKCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl91bmJpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOnZmaW9fZGZfdW5iaW5kX2lvbW11ZmQKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb19kZl91bmJpbmRfaW9tbXVmZCYjMzQ7LAomIzQzOwkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOwkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0Mzt9CiYjNDM7a3JldGZ1bmM6dmZpb19kZl91bmJpbmRfaW9tbXVmZAomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7dmZpb19kZl9vcGVuKCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl9vcGVuIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19kZl9vcGVuCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O3ZmaW9fZGZfb3BlbiYjMzQ7LAomIzQzOwkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOwkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0Mzt9CiYjNDM7a3JldGZ1bmM6dmZpb19kZl9vcGVuCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTtwY2llX2ZscigpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHBjaWVfZmxyIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6cGNpZV9mbHIKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7cGNpZV9mbHImIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnBjaWVfZmxyCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTtwY2lfZGV2X3dhaXQoKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2lfZGV2X3dhaXQgL3Byb2Mva2FsbHN5bXMKJiM0MzsgKi8KJiM0MztrZnVuYzpwY2lfZGV2X3dhaXQKJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7cGNpX2Rldl93YWl0JiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzpwY2lfZGV2X3dhaXQKJiM0Mzt7CiYjNDM7CWlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gJmd0OyAwKSB7CiYjNDM7CQlTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O3ZmaW9faW9tbXVfdHlwZTFfaW9jdGwoKSYjMzk7IHdoZW4gJiMzOTtWRklPX0lPTU1VX01BUF9ETUEmIzM5OyBpcyBjYWxsZWQuCiYjNDM7ICoKJiM0MzsgKgomIzQzOyAqIFZGSU9fSU9NTVVfTUFQX0RNQSA9IDB4M2I3MQomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy0mZ3Q7Y21kID09IDB4M2I3MS8KJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb19pb21tdV90eXBlMV9tYXBfZG1hJiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLSZndDtjbWQgPT0gMHgzYjcxLwomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7dmZpb19waW5fbWFwX2RtYSgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fcGluX21hcF9kbWEgL3Byb2Mva2FsbHN5bXMKJiM0MzsgKi8KJiM0MztrZnVuYzp2ZmlvX3Bpbl9tYXBfZG1hCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O3ZmaW9fcGluX21hcF9kbWEmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9fcGluX21hcF9kbWEKJiM0Mzt7CiYjNDM7CWlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gJmd0OyAwKSB7CiYjNDM7CQlTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qCiYjNDM7ICogVGltZSAmIzM5O3ZmaW9fcGluX3BhZ2VzX3JlbW90ZSgpJiMzOTsuCiYjNDM7ICoKJiM0MzsgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fcGluX3BhZ2VzX3JlbW90ZSAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOnZmaW9fcGluX3BhZ2VzX3JlbW90ZQomIzQzO3sKJiM0MzsJU1RBUlRfVElNRVIoJiMzNDt2ZmlvX3Bpbl9wYWdlc19yZW1vdGUmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9fcGluX3BhZ2VzX3JlbW90ZQomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7dmFkZHJfZ2V0X3BmbnMoKSYjMzk7LgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2YWRkcl9nZXRfcGZucyAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOnZhZGRyX2dldF9wZm5zCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O3ZhZGRyX2dldF9wZm5zJiMzNDssCiYjNDM7CQkgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sCiYjNDM7CQkgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApOwomIzQzO30KJiM0MztrcmV0ZnVuYzp2YWRkcl9nZXRfcGZucwomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7Ly8gLyoKJiM0MzsvLyAgKiBUaW1lICYjMzk7aW9tbXVfbWFwKCkmIzM5Oy4KJiM0MzsvLyAgKgomIzQzOy8vICAqIENoZWNrOiBzdWRvIGdyZXAgaW9tbXVfbWFwIC9wcm9jL2thbGxzeW1zCiYjNDM7Ly8gICovCiYjNDM7Ly8ga2Z1bmM6aW9tbXVfbWFwCiYjNDM7Ly8gewomIzQzOy8vIAlTVEFSVF9USU1FUigmIzM0O2lvbW11X21hcCYjMzQ7LAomIzQzOy8vIAkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOy8vIAkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0MzsvLyB9CiYjNDM7Ly8ga3JldGZ1bmM6aW9tbXVfbWFwCiYjNDM7Ly8gewomIzQzOy8vIAlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOy8vIAkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsvLyAJfQomIzQzOy8vIH0KJiM0MzsKJiM0MzsKJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCkmIzM5OyB3aGVuICYjMzk7VkZJT19JT01NVV9VTk1BUF9ETUEmIzM5OyBpcyBjYWxsZWQuCiYjNDM7ICoKJiM0MzsgKiBWRklPX0lPTU1VX1VOTUFQX0RNQSA9IDB4M2I3MgomIzQzOyAqCiYjNDM7ICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy0mZ3Q7Y21kID09IDB4M2I3Mi8KJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb19pb21tdV90eXBlMV91bm1hcF9kbWEmIzM0OywKJiM0MzsJCSAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbiwKJiM0MzsJCSAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7CiYjNDM7fQomIzQzO2tyZXRmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtJmd0O2NtZCA9PSAweDNiNzIvCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIFRpbWUgJiMzOTt2ZmlvX3VubWFwX3VucGluKCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb191bm1hcF91bnBpbiAvcHJvYy9rYWxsc3ltcwomIzQzOyAqLwomIzQzO2tmdW5jOnZmaW9fdW5tYXBfdW5waW4KJiM0Mzt7CiYjNDM7CVNUQVJUX1RJTUVSKCYjMzQ7dmZpb191bm1hcF91bnBpbiYjMzQ7LAomIzQzOwkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOwkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0Mzt9CiYjNDM7a3JldGZ1bmM6dmZpb191bm1hcF91bnBpbgomIzQzO3sKJiM0MzsJaWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSAmZ3Q7IDApIHsKJiM0MzsJCVNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyoKJiM0MzsgKiBUaW1lICYjMzk7dmZpb19zeW5jX3VucGluKCkmIzM5Oy4KJiM0MzsgKgomIzQzOyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19zeW5jX3VucGluIC9wcm9jL2thbGxzeW1zCiYjNDM7ICovCiYjNDM7a2Z1bmM6dmZpb19zeW5jX3VucGluCiYjNDM7ewomIzQzOwlTVEFSVF9USU1FUigmIzM0O3ZmaW9fc3luY191bnBpbiYjMzQ7LAomIzQzOwkJICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLAomIzQzOwkJICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTsKJiM0Mzt9CiYjNDM7a3JldGZ1bmM6dmZpb19zeW5jX3VucGluCiYjNDM7ewomIzQzOwlpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdICZndDsgMCkgewomIzQzOwkJU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MzsvKgomIzQzOyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LgomIzQzOyAqLwomIzQzO0VORAomIzQzO3sKJiM0MzsJQ0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7CiYjNDM7fQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAyMjowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTMwNgoJCQkJCQkJb3V0cHV0OiA3NwoJCQkJCQkJdGhvdWdodHM6IDIzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9RmFsc2U6IEEgUXVpY2sgQXNzZXNzbWVudCoqCgpPa2F5LCBoZXJlJiMzOTtzIHRoZSBkZWFsLiBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbmV3IHByb2ZpbGluZyB0b29scyDigJMgc3BlY2lmaWNhbGx5IGEgUHl0aG9uIHNjcmlwdCwgYGFnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weWAsIGFuZCB0d28gYnBmdHJhY2Ugc2NyaXB0cywgYGt2bV90cmFjZS5idGAgYW5kIGB2ZmlvX3RyYWNlLmJ0YCDigJMgYWxsIHR1Y2tlZCBhd2F5IHVuZGVyIGB0b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvYC4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhlc2UgYXJlIHN0cmljdGx5IGZvciBpbnN0cnVtZW50YXRpb24gYW5kIGFuYWx5c2lzOyB0aGV5IGRvbiYjMzk7dCBzZWVtIHRvIGJlIHRvdWNoaW5nIGFueSBjb3JlIGtlcm5lbCBjb2RlLCBkcml2ZXJzLCBvciBldmVuIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZXMuIFRoaXMgaXNuJiMzOTt0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIHNlbnNlIHRoYXQgaXQgaW50cm9kdWNlcyBuZXcga2VybmVsIGJlaGF2aW9yIG9yIG1vZGlmaWVzIGV4aXN0aW5nIGxvZ2ljIHRoYXQgbmVlZHMgdG8gYmUgaGVhdmlseSBmdXp6ZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7dmUgdGFrZW4gYSBzZWNvbmQgbG9vayBhdCB0aGUgZGlmZi4gSSBzZWUgdGhlIFB5dGhvbiBzY3JpcHQgYW5kIHRoZSB0d28gYnQgc2NyaXB0cywgYXMgZXhwZWN0ZWQuIEkmIzM5O20gbm90IHNlZWluZyBhbnkgQyBjb2RlIG9yIGFueSBtb2RpZmljYXRpb25zIHRoYXQgd291bGQgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiBrZXJuZWwgc3Vic3lzdGVtcy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhci4gSSYjMzk7bSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZ2AgdG8gYGZhbHNlYCBmb3IgdGhpcyBwYXRjaC4gSSYjMzk7bGwgbmVlZCB0byBjYWxsIGBzZXQtcmVzdWx0c2AgYW5kIGVuc3VyZSB0aGF0JiMzOTtzIHJlZmxlY3RlZCBjb3JyZWN0bHkuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUgdGhhdCB3YXJyYW50cyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDIyOjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGJwZnRyYWNlIHNjcmlwdHMgYW5kIGEgcHl0aG9uIHNjcmlwdCBmb3IgcHJvZmlsaW5nIHVuZGVyIHRvb2xzL2JwZnRyYWNlLy4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IGNhbiBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgYnBmdHJhY2Ugc2NyaXB0cyBhbmQgYSBweXRob24gc2NyaXB0IGZvciBwcm9maWxpbmcgdW5kZXIgdG9vbHMvYnBmdHJhY2UvLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgY2FuIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0zMFQyMjowOTo1NC4xMTc5NTIzMjVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTc5MzUxMjk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYnBmdHJhY2Ugc2NyaXB0cyBhbmQgYSBweXRob24gc2NyaXB0IGZvciBwcm9maWxpbmcgdW5kZXIgdG9vbHMvYnBmdHJhY2UvLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjA5OjU0LjExNzk1NzU5NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzczNTQ2NjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTU4YWU0ZWM3MzYwYTA1M2I0NWZiNDdhZGUyNTk1ZDk0YTBjMDRjM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAyMjowOTo1MyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvYWdncmVnYXRlX2JwZl9yZXN1bHRzLnB5IGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weVxcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmY0ZmZlOGNmZjQ0MThlXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9hZ2dyZWdhdGVfYnBmX3Jlc3VsdHMucHlcXG5AQCAtMCwwICsxLDMxOCBAQFxcbisjIS91c3IvYmluL2VudiBweXRob24zXFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcXG4rI1xcbisjIFByaW50cyB0aGUgYWdncmVnYXRlIHJlc3VsdHMgb2YgYW4gaW5zdHJ1bWVudGVkIEJQRiB0cmFjZS5cXG4rI1xcbisjIENvcHlyaWdodCAyMDI2IEdvb2dsZSBMTENcXG4rI1xcbisjIEF1dGhvcjogQWFyb24gTGV3aXMgXFx1MDAzY2Fhcm9ubGV3aXNAZ29vZ2xlLmNvbVxcdTAwM2VcXG4rXFxuK2ltcG9ydCBmaWxlaW5wdXRcXG4raW1wb3J0IHJlXFxuK2ltcG9ydCBzeXNcXG4raW1wb3J0IHdhcm5pbmdzXFxuK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0LCBTZXF1ZW5jZVxcbitcXG4rY2xhc3MgUHJvZmlsZXJSZXN1bHQ6XFxuKyAgXFxcIlxcXCJcXFwiQ2xhc3MgZm9yIGhvbGRpbmcgdGhlIHByb2ZpbGVyIHJlc3VsdHMuXFxcIlxcXCJcXFwiXFxuK1xcbisgIGRlZiBfX2luaXRfXyhcXG4rICAgICAgc2VsZixcXG4rICAgICAgbmFtZTogc3RyLFxcbisgICAgICB0aHJlYWRfdXNlYzogaW50LFxcbisgICAgICB3YWxsX3VzZWM6IGludCxcXG4rICAgICAgbWF4X3VzZWM6IGludCxcXG4rICAgICAgYXZnX3VzZWM6IGludCxcXG4rICAgICAgY291bnQ6IGludCxcXG4rICAgICAgdGhyZWFkX2NvdW50OiBpbnQsXFxuKyAgICAgIGluY29tcGxldGVfY291bnQ6IGludCxcXG4rICAgICAgZGVwdGg6IGludCxcXG4rICApOlxcbisgICAgc2VsZi5uYW1lID0gbmFtZVxcbisgICAgc2VsZi50aHJlYWRfdXNlYyA9IHRocmVhZF91c2VjXFxuKyAgICBzZWxmLndhbGxfdXNlYyA9IHdhbGxfdXNlY1xcbisgICAgc2VsZi5tYXhfdXNlYyA9IG1heF91c2VjXFxuKyAgICBzZWxmLmF2Z191c2VjID0gYXZnX3VzZWNcXG4rICAgIHNlbGYuY291bnQgPSBjb3VudFxcbisgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnRcXG4rICAgIHNlbGYuaW5jb21wbGV0ZV9jb3VudCA9IGluY29tcGxldGVfY291bnRcXG4rICAgIHNlbGYuZGVwdGggPSBkZXB0aFxcbitcXG4rY2xhc3MgQnBmVGltZXI6XFxuKyAgXFxcIlxcXCJcXFwiQ2xhc3MgZm9yIGhvbGRpbmcgYSB0aW1lci5cXFwiXFxcIlxcXCJcXG4rXFxuKyAgZGVmIF9faW5pdF9fKFxcbisgICAgICBzZWxmLFxcbisgICAgICBuYW1lOiBzdHIsXFxuKyAgICAgIHN0YXJ0X3RpbWVfdXM6IGludCxcXG4rICAgICAgZHVyYXRpb25fdXM6IGludCxcXG4rICAgICAgZGVwdGg6IGludCxcXG4rICApOlxcbisgICAgc2VsZi5uYW1lID0gbmFtZVxcbisgICAgc2VsZi5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZV91c1xcbisgICAgc2VsZi5kdXJhdGlvbl91cyA9IGR1cmF0aW9uX3VzXFxuKyAgICBzZWxmLmRlcHRoID0gZGVwdGhcXG4rXFxuK2NsYXNzIEJwZlJlc3VsdDpcXG4rICBcXFwiXFxcIlxcXCJDbGFzcyBmb3IgaG9sZGluZyB0aGUgcHJvZmlsZXIgcmVzdWx0cy5cXFwiXFxcIlxcXCJcXG4rXFxuKyAgZGVmIF9faW5pdF9fKFxcbisgICAgICBzZWxmLFxcbisgICAgICBuYW1lOiBzdHIsXFxuKyAgICAgIHdhbGxfdGltZV9zdGFydF91czogaW50LFxcbisgICAgICB3YWxsX3RpbWVfZW5kX3VzOiBpbnQsXFxuKyAgICAgIHRocmVhZF91czogaW50LFxcbisgICAgICBtYXhfdXM6IGludCxcXG4rICAgICAgYXZnX3VzOiBpbnQsXFxuKyAgICAgIGNvdW50OiBpbnQsXFxuKyAgICAgIHRocmVhZF9jb3VudDogaW50LFxcbisgICAgICBkZXB0aDogaW50LFxcbisgICAgICB0aWQ6IGludCxcXG4rICApOlxcbisgICAgc2VsZi5uYW1lID0gbmFtZVxcbisgICAgc2VsZi53YWxsX3RpbWVfc3RhcnRfdXMgPSB3YWxsX3RpbWVfc3RhcnRfdXNcXG4rICAgIHNlbGYud2FsbF90aW1lX2VuZF91cyA9IHdhbGxfdGltZV9lbmRfdXNcXG4rICAgIHNlbGYudGhyZWFkX3VzID0gdGhyZWFkX3VzXFxuKyAgICBzZWxmLm1heF91cyA9IG1heF91c1xcbisgICAgc2VsZi5hdmdfdXMgPSBhdmdfdXNcXG4rICAgIHNlbGYuY291bnQgPSBjb3VudFxcbisgICAgc2VsZi50aHJlYWRfY291bnQgPSB0aHJlYWRfY291bnRcXG4rICAgIHNlbGYuZGVwdGggPSBkZXB0aFxcbisgICAgc2VsZi5jaGlsZHJlbiA9IFtdXFxuKyAgICBzZWxmLmNoaWxkX2luZGV4ID0ge31cXG4rICAgIHNlbGYudGhyZWFkcyA9IHt9XFxuKyAgICBzZWxmLnRocmVhZHNbdGlkXSA9IFRydWVcXG4rXFxuK2RlZiB1cGRhdGVfY2hpbGQocjogQnBmUmVzdWx0LCB0aW1lcjogQnBmVGltZXIsIHRpZDogaW50KSAtXFx1MDAzZSBpbnQ6XFxuKyAgaSA9IHIuY2hpbGRfaW5kZXguZ2V0KHRpbWVyLm5hbWUpXFxuKyAgaWYgaSBpcyBOb25lOlxcbisgICAgaSA9IGxlbihyLmNoaWxkcmVuKVxcbisgICAgci5jaGlsZHJlbi5hcHBlbmQoQnBmUmVzdWx0KFxcbisgICAgICAgIHRpbWVyLm5hbWUsXFxuKyAgICAgICAgdGltZXIuc3RhcnRfdGltZV91cyxcXG4rICAgICAgICB0aW1lci5zdGFydF90aW1lX3VzICsgdGltZXIuZHVyYXRpb25fdXMsXFxuKyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXFxuKyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXFxuKyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXFxuKyAgICAgICAgMSxcXG4rICAgICAgICAxLFxcbisgICAgICAgIHRpbWVyLmRlcHRoLFxcbisgICAgICAgIHRpZCkpXFxuKyAgICByLmNoaWxkX2luZGV4W3RpbWVyLm5hbWVdID0gaVxcbisgIGVsc2U6XFxuKyAgICByLmNoaWxkcmVuW2ldLndhbGxfdGltZV9zdGFydF91cyA9IG1pbihyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9zdGFydF91cywgdGltZXIuc3RhcnRfdGltZV91cylcXG4rICAgIHIuY2hpbGRyZW5baV0ud2FsbF90aW1lX2VuZF91cyA9IG1heChyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9lbmRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMgKyB0aW1lci5kdXJhdGlvbl91cylcXG4rICAgIHIuY2hpbGRyZW5baV0udGhyZWFkX3VzICs9IHRpbWVyLmR1cmF0aW9uX3VzXFxuKyAgICByLmNoaWxkcmVuW2ldLm1heF91cyA9IG1heChyLmNoaWxkcmVuW2ldLm1heF91cywgdGltZXIuZHVyYXRpb25fdXMpXFxuKyAgICByLmNoaWxkcmVuW2ldLmNvdW50ICs9IDFcXG4rICAgIHIuY2hpbGRyZW5baV0uYXZnX3VzID0gci5jaGlsZHJlbltpXS50aHJlYWRfdXMgLyByLmNoaWxkcmVuW2ldLmNvdW50XFxuKyAgICBpZiByLmNoaWxkcmVuW2ldLnRocmVhZHMuZ2V0KHRpZCkgaXMgTm9uZTpcXG4rICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRzW3RpZF0gPSBUcnVlXFxuKyAgICAgIHIuY2hpbGRyZW5baV0udGhyZWFkX2NvdW50ICs9IDFcXG4rXFxuKyAgcmV0dXJuIGlcXG4rXFxuK2RlZiBtZXJnZV9yZWN1cnNpdmUocjogQnBmUmVzdWx0LCB0aWQ6IGludCwgdGltZXJzOiBMaXN0W0JwZlRpbWVyXSwgaW5kZXg6IGludCwgY2hpbGRfaW5kZXg6IGludCkgLVxcdTAwM2UgaW50OlxcbisgIHdoaWxlIGluZGV4IFxcdTAwM2MgbGVuKHRpbWVycyk6XFxuKyAgICB3aGlsZSBpbmRleCBcXHUwMDNjIGxlbih0aW1lcnMpIGFuZCB0aW1lcnNbaW5kZXhdID09IE5vbmU6XFxuKyAgICAgIGluZGV4ICs9IDFcXG4rXFxuKyAgICBpZiBpbmRleCBcXHUwMDNlPSBsZW4odGltZXJzKTpcXG4rICAgICAgcmV0dXJuIGluZGV4XFxuK1xcbisgICAgIyBUaGUgdGltZXIgaXMgYSBjaGlsZCBvZiAncicuIChDaGlsZCBjYXNlKVxcbisgICAgaWYgdGltZXJzW2luZGV4XS5kZXB0aCA9PSAoci5kZXB0aCArIDEpOlxcbisgICAgICAjIEFkZCBjaGlsZFxcbisgICAgICBjaGlsZF9pbmRleCA9IHVwZGF0ZV9jaGlsZChyLCB0aW1lcnNbaW5kZXhdLCB0aWQpXFxuK1xcbisgICAgICAjIE5vdyB0aGF0IHRoZSB0aW1lciBoYXMgYmVlbiBoYW5kbGVkIGluY3JlbWVudCB0byB0aGUgbmV4dCBvbmUuXFxuKyAgICAgIGluZGV4ICs9IDFcXG4rXFxuKyAgICAjIFRoZSB0aW1lciBpcyBhIGNoaWxkIG9mICdyJy4gKEdyYW5kY2hpbGQgY2FzZSlcXG4rICAgIGVsaWYgdGltZXJzW2luZGV4XS5kZXB0aCA9PSAoci5kZXB0aCArIDIpOlxcbisgICAgICBpZiBjaGlsZF9pbmRleCBcXHUwMDNjIDA6XFxuKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihcXFwiSW52YWxpZCAnY2hpbGRfaW5kZXgnXFxcIilcXG4rICAgICAgIyBSZWN1cnNlIGRvd24gdGhlIGNoaWxkIGJlY3Vhc2UgdGhhdCBpcyB0aGUgcGFyZW50IHRoaXMgdGltZXIuXFxuKyAgICAgIGluZGV4ID0gbWVyZ2VfcmVjdXJzaXZlKHIuY2hpbGRyZW5bY2hpbGRfaW5kZXhdLCB0aWQsIHRpbWVycywgaW5kZXgsIGNoaWxkX2luZGV4KVxcbitcXG4rICAgICMgVGhlIHRpbWVyIGlzIGEgZGVzY2VuZGFudCBvZiAncicsIGJ1dCBub3QgdGhlIGNoaWxkLi4uIEludmFsaWQgY2FzZSFcXG4rICAgIGVsaWYgdGltZXJzW2luZGV4XS5kZXB0aCBcXHUwMDNlIChyLmRlcHRoICsgMik6XFxuKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IoXFxcIkludmFsaWQgZGVwdGguICBkZXNjZW5kYW50IGNhbiBvbmx5IGJlIGNoaWxkcmVuLiBuYW1lID0gJyVzJywgdGlkID0gJWQsIGluZGV4ID0gJWRcXFwiICUgKHRpbWVyc1tpbmRleF0ubmFtZSwgdGlkLCBpbmRleCkpXFxuK1xcbisgICAgIyBOZXcgZmFtaWx5IHRyZWUuICBQb3Agb3V0IG9mIHRoaXMgb25lLlxcbisgICAgZWxpZiB0aW1lcnNbaW5kZXhdLmRlcHRoIFxcdTAwM2M9IHIuZGVwdGg6XFxuKyAgICAgICMgVGhlIHRpbWVyIGlzIGFuIGFuY2VzdG9yIG9mICdyJy4gIFJldHVybiBzbyBpdCBjYW4gYmUgcHJvY2Vzc2VkIGVsc2V3aGVyZS5cXG4rICAgICAgcmV0dXJuIGluZGV4XFxuK1xcbisgIHJldHVybiBpbmRleFxcbitcXG4rZGVmIG1lcmdlX3RpbWVycyhyOiBCcGZSZXN1bHQsIHRpZDogaW50LCB0aW1lcnM6IExpc3RbQnBmVGltZXJdKTpcXG4rICBpZiBsZW4odGltZXJzKSA9PSAwOlxcbisgICAgcmV0dXJuXFxuK1xcbisgIGlmIHRpbWVyc1swXS5kZXB0aCAhPSAwOlxcbisgICAgcmFpc2UgVmFsdWVFcnJvcihcXFwiRXhwZWN0ZWQgYSBkZXB0aCBvZiAwLiAgJyVzJywgZGVwdGggPSAlZFxcXCIgJSAodGltZXJzWzBdLm5hbWUsIHRpbWVyc1swXS5kZXB0aCkpXFxuK1xcbisgIG1lcmdlX3JlY3Vyc2l2ZShyLCB0aWQsIHRpbWVycywgMCwgLTEpXFxuK1xcbitkZWYgcHJpbnRfcmVjdXJzaXZlKHI6IEJwZlJlc3VsdCwgcmVzdWx0cyA6IExpc3RbUHJvZmlsZXJSZXN1bHRdKTpcXG4rICB0aHJlYWRfdGltZSA9IGZsb2F0KHIudGhyZWFkX3VzKSAvIDEwMDAuMFxcbisgIHdhbGxfdGltZV91cyA9IHIud2FsbF90aW1lX2VuZF91cyAtIHIud2FsbF90aW1lX3N0YXJ0X3VzXFxuKyAgd2FsbF90aW1lID0gZmxvYXQod2FsbF90aW1lX3VzKSAvIDEwMDAuMFxcbisgIG1heF90aW1lID0gZmxvYXQoci5tYXhfdXMpIC8gMTAwMC4wXFxuKyAgYXZnX3RpbWUgPSBmbG9hdChyLmF2Z191cykgLyAxMDAwLjBcXG4rXFxuKyAgaW5kZW50ID0gXFxcIlxcXCJcXG4rICBmb3IgaSBpbiByYW5nZShyLmRlcHRoKTpcXG4rICAgIGluZGVudCArPSBcXFwiICBcXFwiXFxuK1xcbisgIHByaW50KFxcXCIlcyVzLCB0aHJlYWRfdGltZSA9ICUuMmZtcywgd2FsbF90aW1lID0gJS4yZm1zLCBtYXggPSAlLjJmLCBhdmcgPSAlLjJmLCBjb3VudCA9ICVkLCB0aHJlYWRfY291bnQgPSAlZFxcXCIgJVxcbisgICAgICAgIChpbmRlbnQsIHIubmFtZSwgdGhyZWFkX3RpbWUsIHdhbGxfdGltZSwgbWF4X3RpbWUsIGF2Z190aW1lLCByLmNvdW50LCByLnRocmVhZF9jb3VudCkpO1xcbitcXG4rICByZXN1bHRzLmFwcGVuZChcXG4rICAgICAgUHJvZmlsZXJSZXN1bHQoXFxuKyAgICAgICAgICByLm5hbWUsXFxuKyAgICAgICAgICByLnRocmVhZF91cyxcXG4rICAgICAgICAgIHdhbGxfdGltZV91cyxcXG4rICAgICAgICAgIHIubWF4X3VzLFxcbisgICAgICAgICAgci5hdmdfdXMsXFxuKyAgICAgICAgICByLmNvdW50LFxcbisgICAgICAgICAgci50aHJlYWRfY291bnQsXFxuKyAgICAgICAgICAwLFxcbisgICAgICAgICAgci5kZXB0aCxcXG4rICAgICAgKVxcbisgIClcXG4rXFxuKyAgZm9yIGNoaWxkIGluIHIuY2hpbGRyZW46XFxuKyAgICBwcmludF9yZWN1cnNpdmUoY2hpbGQsIHJlc3VsdHMpXFxuK1xcbitkZWYgcHJpbnRfcmVzdWx0cyhyOiBCcGZSZXN1bHQsIHJlc3VsdHMgOiBMaXN0W1Byb2ZpbGVyUmVzdWx0XSk6XFxuKyAgZm9yIGNoaWxkIGluIHIuY2hpbGRyZW46XFxuKyAgICBwcmludF9yZWN1cnNpdmUoY2hpbGQsIHJlc3VsdHMpXFxuK1xcbitkZWYgZ2VuZXJhdGVfZnJvbV9sb2coZmlsZXM6IFNlcXVlbmNlW3N0cl0pOlxcbisgIFxcXCJcXFwiXFxcIlJlYWQgdGhlIHRyYWNlIGFuZCByZXR1cm4gYSBsaXN0IG9mIFByb2ZpbGVyUmVzdWx0IG9iamVjdHMuXFxcIlxcXCJcXFwiXFxuK1xcbisgIHRpbWVyX2NvdW50cyA9IHt9XFxuKyAgYWxsX3RpbWVycyA9IHt9XFxuK1xcbisgIGNvdW50X3JlZ2V4ID0gcmUuY29tcGlsZShcXG4rICAgICAgclxcXCJeQHRpbWVyX2NvdW50XFxcXFsoP1BcXHUwMDNjdGlkXFx1MDAzZVswLTldKylcXFxcXTpcXFxcVyg/UFxcdTAwM2Njb3VudFxcdTAwM2VbLTAtOV0rKVxcXCJcXG4rICApXFxuKyAgbmFtZV9yZWdleCA9IHJlLmNvbXBpbGUoXFxuKyAgICAgIHJcXFwiXkB0aW1lcl9uYW1lXFxcXFsoP1BcXHUwMDNjdGlkXFx1MDAzZVswLTldKyksXFxcXFcqKD9QXFx1MDAzY2luZGV4XFx1MDAzZVswLTldKylcXFxcXTpcXFxcVyg/UFxcdTAwM2NuYW1lXFx1MDAzZVtcXFxcd1xcXFwuMC05XSspXFxcIlxcbisgIClcXG4rICBzdGFydF90aW1lX3JlZ2V4ID0gcmUuY29tcGlsZShcXG4rICAgICAgclxcXCJeQHRpbWVyX3N0YXJ0XFxcXFsoP1BcXHUwMDNjdGlkXFx1MDAzZVswLTldKyksXFxcXFcqKD9QXFx1MDAzY2luZGV4XFx1MDAzZVswLTldKylcXFxcXTpcXFxcVyg/UFxcdTAwM2NzdGFydF90aW1lX3VzXFx1MDAzZVstMC05XSspXFxcIlxcbisgIClcXG4rICBkdXJhdGlvbl9yZWdleCA9IHJlLmNvbXBpbGUoXFxuKyAgICAgIHJcXFwiXkB0aW1lcl9kdXJhdGlvblxcXFxbKD9QXFx1MDAzY3RpZFxcdTAwM2VbMC05XSspLFxcXFxXKig/UFxcdTAwM2NpbmRleFxcdTAwM2VbMC05XSspXFxcXF06XFxcXFcoP1BcXHUwMDNjZHVyYXRpb25fdXNcXHUwMDNlWy0wLTldKylcXFwiXFxuKyAgKVxcbisgIGRlcHRoX3JlZ2V4ID0gcmUuY29tcGlsZShcXG4rICAgICAgclxcXCJeQHRpbWVyX2RlcHRoXFxcXFsoP1BcXHUwMDNjdGlkXFx1MDAzZVswLTldKyksXFxcXFcqKD9QXFx1MDAzY2luZGV4XFx1MDAzZVswLTldKylcXFxcXTpcXFxcVyg/UFxcdTAwM2NkZXB0aFxcdTAwM2VbLTAtOV0rKVxcXCJcXG4rICApXFxuK1xcbisgIGF0dGFjaGluZ19yZWdleCA9IHJlLmNvbXBpbGUoXFxuKyAgICAgIHJcXFwiXkF0dGFjaGluZy4qXFxcIlxcbisgIClcXG4rXFxuKyAgIyBHZXQgYWxsIGNvdW50cy4gIFRoYXQgd2F5IHdlIGtub3cgaG93IG1hbnkgdGltZXJzIGVhY2ggdGhyZWFkIHVzZWQuXFxuKyAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzKTpcXG4rICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpXFxuK1xcbisgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSlcXG4rICAgIGlmIG06XFxuKyAgICAgIHRpZCA9IGludChtLmdyb3VwKFxcXCJ0aWRcXFwiKSlcXG4rICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcXFwiaW5kZXhcXFwiKSlcXG4rICAgICAgZHVyYXRpb25fc3RyID0gbS5ncm91cChcXFwiZHVyYXRpb25fdXNcXFwiKVxcbisgICAgICBkdXJhdGlvbiA9IGludChtLmdyb3VwKFxcXCJkdXJhdGlvbl91c1xcXCIpKVxcbitcXG4rICAgICAgaWYgbm90IHRpZCBpbiB0aW1lcl9jb3VudHM6XFxuKyAgICAgICAgdGltZXJfY291bnRzW3RpZF0gPSBpbmRleFxcbisgICAgICBlbHNlOlxcbisgICAgICAgIHRpbWVyX2NvdW50c1t0aWRdID0gbWF4KHRpbWVyX2NvdW50c1t0aWRdLCBpbmRleClcXG4rXFxuKyAgIyBBbGxvY2F0ZSBlbm91Z2ggdGltZXJzIHRvIGZpdCB0aGUgdHJhY2UuXFxuKyAgZm9yIHRpZCwgY291bnQgaW4gdGltZXJfY291bnRzLml0ZW1zKCk6XFxuKyAgICBhbGxfdGltZXJzW3RpZF0gPSBbTm9uZV0gKiAoY291bnQgKyAxKVxcbitcXG4rICAjIFBvcHVsYXRlIHRoZSB0cmFjZS5cXG4rICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuaW5wdXQoZmlsZXM9ZmlsZXMpOlxcbisgICAgbGluZSA9IGxpbmUucnN0cmlwKClcXG4rXFxuKyAgICBtID0gcmUuZnVsbG1hdGNoKG5hbWVfcmVnZXgsIGxpbmUpXFxuKyAgICBpZiBtOlxcbisgICAgICB0aWQgPSBpbnQobS5ncm91cChcXFwidGlkXFxcIikpXFxuKyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXFxcImluZGV4XFxcIikpXFxuKyAgICAgIG5hbWUgPSBtLmdyb3VwKFxcXCJuYW1lXFxcIilcXG4rICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxcbisgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcXFwiXFxcIiwgMCwgLTEsIC0xKVxcbisgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLm5hbWUgPSBuYW1lXFxuKyAgICAgIGNvbnRpbnVlXFxuK1xcbisgICAgbSA9IHJlLmZ1bGxtYXRjaChzdGFydF90aW1lX3JlZ2V4LCBsaW5lKVxcbisgICAgaWYgbTpcXG4rICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXFxcInRpZFxcXCIpKVxcbisgICAgICBpbmRleCA9IGludChtLmdyb3VwKFxcXCJpbmRleFxcXCIpKVxcbisgICAgICBzdGFydF90aW1lID0gaW50KG0uZ3JvdXAoXFxcInN0YXJ0X3RpbWVfdXNcXFwiKSlcXG4rICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxcbisgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcXFwiXFxcIiwgMCwgLTEsIC0xKVxcbisgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLnN0YXJ0X3RpbWVfdXMgPSBzdGFydF90aW1lXFxuKyAgICAgIGNvbnRpbnVlXFxuK1xcbisgICAgbSA9IHJlLmZ1bGxtYXRjaChkdXJhdGlvbl9yZWdleCwgbGluZSlcXG4rICAgIGlmIG06XFxuKyAgICAgIHRpZCA9IGludChtLmdyb3VwKFxcXCJ0aWRcXFwiKSlcXG4rICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcXFwiaW5kZXhcXFwiKSlcXG4rICAgICAgZHVyYXRpb24gPSBpbnQobS5ncm91cChcXFwiZHVyYXRpb25fdXNcXFwiKSlcXG4rICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxcbisgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcXFwiXFxcIiwgMCwgLTEsIC0xKVxcbisgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLmR1cmF0aW9uX3VzID0gZHVyYXRpb25cXG4rICAgICAgY29udGludWVcXG4rXFxuKyAgICBtID0gcmUuZnVsbG1hdGNoKGRlcHRoX3JlZ2V4LCBsaW5lKVxcbisgICAgaWYgbTpcXG4rICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXFxcInRpZFxcXCIpKVxcbisgICAgICBpbmRleCA9IGludChtLmdyb3VwKFxcXCJpbmRleFxcXCIpKVxcbisgICAgICBkZXB0aCA9IGludChtLmdyb3VwKFxcXCJkZXB0aFxcXCIpKVxcbisgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6XFxuKyAgICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9IEJwZlRpbWVyKFxcXCJcXFwiLCAwLCAtMSwgLTEpXFxuKyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZGVwdGggPSBkZXB0aFxcbisgICAgICBjb250aW51ZVxcbitcXG4rICAgIGlmIHJlLmZ1bGxtYXRjaChjb3VudF9yZWdleCwgbGluZSk6XFxuKyAgICAgICMgU2tpcCB0aGlzIGNhc2UuICBJdCdzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQuXFxuKyAgICAgIGNvbnRpbnVlXFxuKyAgICBpZiByZS5mdWxsbWF0Y2goYXR0YWNoaW5nX3JlZ2V4LCBsaW5lKTpcXG4rICAgICAgIyBTa2lwIFxcXCJBdHRhY2hpbmcgWFggcHJvYmVzLi4uXFxcIlxcbisgICAgICBjb250aW51ZVxcbisgICAgaWYgbm90IGxpbmU6XFxuKyAgICAgICMgU2tpcCBlbXB0eSBzdHJpbmdzLlxcbisgICAgICBjb250aW51ZVxcbitcXG4rICAgIHJhaXNlIFZhbHVlRXJyb3IoXFxcIkludmFsaWQgaW5wdXQsICclcydcXFwiICUgKGxpbmUpKVxcbitcXG4rICByb290ID0gQnBmUmVzdWx0KFxcXCJcXFwiLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAtMSwgLTEpXFxuKyAgcmVzdWx0cyA9IFtdXFxuKyAgZm9yIHRpZCwgdGltZXJzIGluIGFsbF90aW1lcnMuaXRlbXMoKTpcXG4rICAgIG1lcmdlX3RpbWVycyhyb290LCB0aWQsIHRpbWVycylcXG4rICBwcmludF9yZXN1bHRzKHJvb3QsIHJlc3VsdHMpXFxuK1xcbisgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSA9PSAwOlxcbisgICAgcmFpc2UgVmFsdWVFcnJvcihcXFwiRXhwZWN0ZWQgYSBmaWxlIHRvIHJlYWQuXFxcIilcXG4rXFxuKyAgaWYgZmlsZWlucHV0LmZpbGVubygpIFxcdTAwM2UgMTpcXG4rICAgIHJhaXNlIFZhbHVlRXJyb3IoXFxcIlRvbyBtYW55IGZpbGVzIHJlYWQuICBFeHBlY3RlZCAxXFxcIilcXG4rXFxuK2RlZiBtYWluKCkgLVxcdTAwM2UgTm9uZTpcXG4rICBcXFwiXFxcIlxcXCJNYWluIGZ1bmN0aW9uLlxcXCJcXFwiXFxcIlxcbitcXG4rICBpZiBsZW4oc3lzLmFyZ3YpIFxcdTAwM2M9IDE6XFxuKyAgICBwcmludChcXFwiRXJyb3I6IE5vdCBlbm91Z2ggY29tbWFuZC1saW5lIGFyZ3VtZW50cy4gRXhwZWN0ZWQgYW4gaW5wdXQgZmlsZVxcXCIsIGZpbGU9c3lzLnN0ZGVycilcXG4rICAgIHN5cy5leGl0KDEpXFxuK1xcbisgIGdlbmVyYXRlX2Zyb21fbG9nKHN5cy5hcmd2WzE6XSlcXG4rXFxuK1xcbitpZiBfX25hbWVfXyA9PSBcXFwiX19tYWluX19cXFwiOlxcbisgIG1haW4oKVxcbmRpZmYgLS1naXQgYS90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnRcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZDM0MWU0MDg1NzBlY1xcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy9rdm1fdHJhY2UuYnRcXG5AQCAtMCwwICsxLDE5NyBAQFxcbisjZGVmaW5lIHVzZWNzIChuc2VjcyAvIDEwMDApXFxuKyNkZWZpbmUgbXNlY3MgKG5zZWNzIC8gMTAwMCAvIDEwMDApXFxuKyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpXFxuK1xcbitjb25maWcgPSB7IG1heF9tYXBfa2V5cz00MTk0MzA0OyB9XFxuK1xcbittYWNybyBJTklUX01BUFMoQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxcbit7XFxuK1xcdEB0cmFjZV9zdGFja190b3BbMF0gPSAwO1xcbitcXHRAdGltZXJfY291bnRbMF0gPSAwO1xcbit9XFxuK1xcbittYWNybyBDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxcbit7XFxuK1xcdGNsZWFyKEB0cmFjZV9zdGFjayk7XFxuK1xcdGNsZWFyKEB0cmFjZV9zdGFja190b3ApO1xcbitcXHRjbGVhcihAdGltZXJfY291bnQpO1xcbit9XFxuK1xcbittYWNybyBTVEFSVF9USU1FUihuYW1lLCBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcClcXG4re1xcbitcXHRAdGltZXJfbmFtZVt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IG5hbWU7XFxuK1xcdEB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTtcXG4rXFx0QHRpbWVyX3N0YXJ0W3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gdXNlY3M7XFxuK1xcdEB0aW1lcl9kdXJhdGlvblt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IERVUkFUSU9OX1VOU0VUO1xcbitcXHRAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07XFxuK1xcdEB0aW1lcl9jb3VudFt0aWRdKys7XFxuK1xcdEB0cmFjZV9zdGFja190b3BbdGlkXSsrO1xcbit9XFxuK1xcbisvKlxcbisgKiBVbmZvcnR1bmF0ZWx5IGJyYW5jaCBzdGF0ZW1lbnRzIGNyYXNoIHRoZSBicGZ0cmFjZSBjb21waWxlci4gIEFzIGEgcmVzdWx0LFxcbisgKiB0aGUgYnJhbmNoIGhhcyBiZWVuIG1vdmVkIGRpcmVjdGx5IGludG8gdGhlIHByb2JlLiAgUmV2ZXJzZSB0aGlzIGlmIHRoZVxcbisgKiBjb21waWxlciBldmVyIGdldHMgdGhhdCBmaXhlZC5cXG4rICovXFxuK21hY3JvIFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydClcXG4re1xcbitcXHQkaWR4ID0gQHRyYWNlX3N0YWNrW3RpZCwgLS1AdHJhY2Vfc3RhY2tfdG9wW3RpZF1dO1xcbitcXHRAdGltZXJfZHVyYXRpb25bdGlkLCAkaWR4XSA9IHVzZWNzIC0gQHRpbWVyX3N0YXJ0W3RpZCwgJGlkeF07XFxuK31cXG4rXFxuK0JFR0lOXFxuK3tcXG4rXFx0SU5JVF9NQVBTKEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ2t2bV9zY2hlZF9pbigpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fc2NoZWRfaW4gL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOmt2bV9zY2hlZF9pblxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJrdm1fc2NoZWRfaW5cXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6a3ZtX3NjaGVkX2luXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICdrdm1fc2NoZWRfb3V0KCknLlxcbisgKlxcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9zY2hlZF9vdXQgL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOmt2bV9zY2hlZF9vdXRcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwia3ZtX3NjaGVkX291dFxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitcXG4ra3JldGZ1bmM6a3ZtX3NjaGVkX291dFxcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAna3ZtX2FyY2hfdmNwdV9sb2FkKCknLlxcbisgKlxcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfbG9hZCAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6a3ZtX2FyY2hfdmNwdV9sb2FkXFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcImt2bV9hcmNoX3ZjcHVfbG9hZFxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X2xvYWRcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ2t2bV9hcmNoX3ZjcHVfcHV0KCknLlxcbisgKlxcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfcHV0IC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzprdm1fYXJjaF92Y3B1X3B1dFxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJrdm1fYXJjaF92Y3B1X3B1dFxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X3B1dFxcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAnS1ZNX1JVTicsIGkuZS4ga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKS5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6a3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgaG93IGxvbmcgYSBndWVzdCBydW5zIHVzaW5nIHRyYWNlcG9pbnRzIFxcXCJrdm1fZW50cnlcXFwiIGFuZCBcXFwia3ZtX2V4aXRcXFwiLlxcbisgKi9cXG4rdHJhY2Vwb2ludDprdm06a3ZtX2VudHJ5XFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcInJ1bl9ndWVzdFxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbit0cmFjZXBvaW50Omt2bTprdm1fZXhpdFxcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAna3ZtX3ZjcHVfYmxvY2soKScuXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3ZjcHVfYmxvY2sgL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOmt2bV92Y3B1X2Jsb2NrXFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcImt2bV92Y3B1X2Jsb2NrXFxcIixcXG4rXFx0XFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xcbit9XFxuK2tyZXRmdW5jOmt2bV92Y3B1X2Jsb2NrXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICdrdm1fbW11X3BhZ2VfZmF1bHQoKScuXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX21tdV9wYWdlX2ZhdWx0IC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzprdm1fbW11X3BhZ2VfZmF1bHRcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwia3ZtX3ZjcHVfYmxvY2tcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6a3ZtX21tdV9wYWdlX2ZhdWx0XFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBEdW1wIHRoZSByZXN1bHRzIHRvIHN0ZG91dC5cXG4rICovXFxuK0VORFxcbit7XFxuK1xcdENMRUFSX01BUFMoQHRyYWNlX3N0YWNrLCBAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xcbit9XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL3ZmaW9fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uM2I4Y2I3ZmY2MjEwZGVcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL3NhbXBsZXMvdmZpb190cmFjZS5idFxcbkBAIC0wLDAgKzEsMzE1IEBAXFxuKyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMClcXG4rI2RlZmluZSBtc2VjcyAobnNlY3MgLyAxMDAwIC8gMTAwMClcXG4rI2RlZmluZSBEVVJBVElPTl9VTlNFVCAoKHVpbnQ2NCktMSlcXG4rXFxuK2NvbmZpZyA9IHsgbWF4X21hcF9rZXlzPTQxOTQzMDQ7IH1cXG4rXFxuK21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXFxuK3tcXG4rXFx0QHRyYWNlX3N0YWNrX3RvcFswXSA9IDA7XFxuK1xcdEB0aW1lcl9jb3VudFswXSA9IDA7XFxuK31cXG4rXFxuK21hY3JvIENMRUFSX01BUFMoQHRyYWNlX3N0YWNrLCBAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXFxuK3tcXG4rXFx0Y2xlYXIoQHRyYWNlX3N0YWNrKTtcXG4rXFx0Y2xlYXIoQHRyYWNlX3N0YWNrX3RvcCk7XFxuK1xcdGNsZWFyKEB0aW1lcl9jb3VudCk7XFxuK31cXG4rXFxuK21hY3JvIFNUQVJUX1RJTUVSKG5hbWUsIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKVxcbit7XFxuK1xcdEB0aW1lcl9uYW1lW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gbmFtZTtcXG4rXFx0QHRyYWNlX3N0YWNrW3RpZCwgQHRyYWNlX3N0YWNrX3RvcFt0aWRdXSA9IEB0aW1lcl9jb3VudFt0aWRdO1xcbitcXHRAdGltZXJfc3RhcnRbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSB1c2VjcztcXG4rXFx0QHRpbWVyX2R1cmF0aW9uW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gRFVSQVRJT05fVU5TRVQ7XFxuK1xcdEB0aW1lcl9kZXB0aFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IEB0cmFjZV9zdGFja190b3BbdGlkXTtcXG4rXFx0QHRpbWVyX2NvdW50W3RpZF0rKztcXG4rXFx0QHRyYWNlX3N0YWNrX3RvcFt0aWRdKys7XFxuK31cXG4rXFxuKy8qXFxuKyAqIFVuZm9ydHVuYXRlbHkgYnJhbmNoIHN0YXRlbWVudHMgY3Jhc2ggdGhlIGJwZnRyYWNlIGNvbXBpbGVyLiAgQXMgYSByZXN1bHQsXFxuKyAqIHRoZSBicmFuY2ggaGFzIGJlZW4gbW92ZWQgZGlyZWN0bHkgaW50byB0aGUgcHJvYmUuICBSZXZlcnNlIHRoaXMgaWYgdGhlXFxuKyAqIGNvbXBpbGVyIGV2ZXIgZ2V0cyB0aGF0IGZpeGVkLlxcbisgKi9cXG4rbWFjcm8gU1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KVxcbit7XFxuK1xcdCRpZHggPSBAdHJhY2Vfc3RhY2tbdGlkLCAtLUB0cmFjZV9zdGFja190b3BbdGlkXV07XFxuK1xcdEB0aW1lcl9kdXJhdGlvblt0aWQsICRpZHhdID0gdXNlY3MgLSBAdGltZXJfc3RhcnRbdGlkLCAkaWR4XTtcXG4rfVxcbitcXG4rQkVHSU5cXG4re1xcbitcXHRJTklUX01BUFMoQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KTtcXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAndmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCgpJy5cXG4rICpcXG4rICogVkZJT19HUk9VUF9HRVRfREVWSUNFX0ZEID0gMHgzYjZhXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvYXJncy1cXHUwMDNlY21kID09IDB4M2I2YS9cXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwidmZpb19ncm91cF9pb2N0bF9nZXRfZGV2aWNlX2ZkXFxcIixcXG4rXFx0XFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xcbit9XFxuK2tyZXRmdW5jOnZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL2FyZ3MtXFx1MDAzZWNtZCA9PSAweDNiNmEvXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICd2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZCgpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2RmX2lvY3RsX2JpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwidmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9fZGZfdW5iaW5kX2lvbW11ZmQoKScuXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl91bmJpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19kZl91bmJpbmRfaW9tbXVmZFxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX2RmX3VuYmluZF9pb21tdWZkXFxcIixcXG4rXFx0XFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xcbit9XFxuK2tyZXRmdW5jOnZmaW9fZGZfdW5iaW5kX2lvbW11ZmRcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9fZGZfb3BlbigpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2RmX29wZW4gL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOnZmaW9fZGZfb3Blblxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX2RmX29wZW5cXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb19kZl9vcGVuXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICdwY2llX2ZscigpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2llX2ZsciAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6cGNpZV9mbHJcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwicGNpZV9mbHJcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6cGNpZV9mbHJcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3BjaV9kZXZfd2FpdCgpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2lfZGV2X3dhaXQgL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOnBjaV9kZXZfd2FpdFxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJwY2lfZGV2X3dhaXRcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6cGNpX2Rldl93YWl0XFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICd2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCknIHdoZW4gJ1ZGSU9fSU9NTVVfTUFQX0RNQScgaXMgY2FsbGVkLlxcbisgKlxcbisgKlxcbisgKiBWRklPX0lPTU1VX01BUF9ETUEgPSAweDNiNzFcXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVxcdTAwM2VjbWQgPT0gMHgzYjcxL1xcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX2lvbW11X3R5cGUxX21hcF9kbWFcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy1cXHUwMDNlY21kID09IDB4M2I3MS9cXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9fcGluX21hcF9kbWEoKScuXFxuKyAqXFxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19waW5fbWFwX2RtYSAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19waW5fbWFwX2RtYVxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX3Bpbl9tYXBfZG1hXFxcIixcXG4rXFx0XFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxcbitcXHRcXHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xcbit9XFxuK2tyZXRmdW5jOnZmaW9fcGluX21hcF9kbWFcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9fcGluX3BhZ2VzX3JlbW90ZSgpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX3Bpbl9wYWdlc19yZW1vdGUgL3Byb2Mva2FsbHN5bXNcXG4rICovXFxuK2tmdW5jOnZmaW9fcGluX3BhZ2VzX3JlbW90ZVxcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX3Bpbl9wYWdlc19yZW1vdGVcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb19waW5fcGFnZXNfcmVtb3RlXFxuK3tcXG4rXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rXFx0fVxcbit9XFxuK1xcbisvKlxcbisgKiBUaW1lICd2YWRkcl9nZXRfcGZucygpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2YWRkcl9nZXRfcGZucyAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmFkZHJfZ2V0X3BmbnNcXG4re1xcbitcXHRTVEFSVF9USU1FUihcXFwidmFkZHJfZ2V0X3BmbnNcXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmFkZHJfZ2V0X3BmbnNcXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8vIC8qXFxuKy8vICAqIFRpbWUgJ2lvbW11X21hcCgpJy5cXG4rLy8gICpcXG4rLy8gICogQ2hlY2s6IHN1ZG8gZ3JlcCBpb21tdV9tYXAgL3Byb2Mva2FsbHN5bXNcXG4rLy8gICovXFxuKy8vIGtmdW5jOmlvbW11X21hcFxcbisvLyB7XFxuKy8vIFxcdFNUQVJUX1RJTUVSKFxcXCJpb21tdV9tYXBcXFwiLFxcbisvLyBcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuKy8vIFxcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuKy8vIH1cXG4rLy8ga3JldGZ1bmM6aW9tbXVfbWFwXFxuKy8vIHtcXG4rLy8gXFx0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcXHUwMDNlIDApIHtcXG4rLy8gXFx0XFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcXG4rLy8gXFx0fVxcbisvLyB9XFxuK1xcbitcXG4rXFxuKy8qXFxuKyAqIFRpbWUgJ3ZmaW9faW9tbXVfdHlwZTFfaW9jdGwoKScgd2hlbiAnVkZJT19JT01NVV9VTk1BUF9ETUEnIGlzIGNhbGxlZC5cXG4rICpcXG4rICogVkZJT19JT01NVV9VTk1BUF9ETUEgPSAweDNiNzJcXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVxcdTAwM2VjbWQgPT0gMHgzYjcyL1xcbit7XFxuK1xcdFNUQVJUX1RJTUVSKFxcXCJ2ZmlvX2lvbW11X3R5cGUxX3VubWFwX2RtYVxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitrcmV0ZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVxcdTAwM2VjbWQgPT0gMHgzYjcyL1xcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAndmZpb191bm1hcF91bnBpbigpJy5cXG4rICpcXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX3VubWFwX3VucGluIC9wcm9jL2thbGxzeW1zXFxuKyAqL1xcbitrZnVuYzp2ZmlvX3VubWFwX3VucGluXFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcInZmaW9fdW5tYXBfdW5waW5cXFwiLFxcbitcXHRcXHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXFxuK1xcdFxcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XFxuK31cXG4ra3JldGZ1bmM6dmZpb191bm1hcF91bnBpblxcbit7XFxuK1xcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXFx1MDAzZSAwKSB7XFxuK1xcdFxcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XFxuK1xcdH1cXG4rfVxcbitcXG4rLypcXG4rICogVGltZSAndmZpb19zeW5jX3VucGluKCknLlxcbisgKlxcbisgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fc3luY191bnBpbiAvcHJvYy9rYWxsc3ltc1xcbisgKi9cXG4ra2Z1bmM6dmZpb19zeW5jX3VucGluXFxuK3tcXG4rXFx0U1RBUlRfVElNRVIoXFxcInZmaW9fc3luY191bnBpblxcXCIsXFxuK1xcdFxcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcXG4rXFx0XFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcXG4rfVxcbitrcmV0ZnVuYzp2ZmlvX3N5bmNfdW5waW5cXG4re1xcbitcXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFxcdTAwM2UgMCkge1xcbitcXHRcXHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qXFxuKyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LlxcbisgKi9cXG4rRU5EXFxuK3tcXG4rXFx0Q0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7XFxuK31cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMjI6MDk6NTQuNDkyMzc2Nzc5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjA0OTIwNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYnBmdHJhY2Ugc2NyaXB0cyBhbmQgYSBweXRob24gc2NyaXB0IGZvciBwcm9maWxpbmcgdW5kZXIgdG9vbHMvYnBmdHJhY2UvLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTU4YWU0ZWM3MzYwYTA1M2I0NWZiNDdhZGUyNTk1ZDk0YTBjMDRjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDIyOjA5OjUzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL2FnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weSBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9hZ2dyZWdhdGVfYnBmX3Jlc3VsdHMucHlcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uZjRmZmU4Y2ZmNDQxOGVcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9hZ2dyZWdhdGVfYnBmX3Jlc3VsdHMucHlcbkBAIC0wLDAgKzEsMzE4IEBAXG4rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXJcbisjXG4rIyBQcmludHMgdGhlIGFnZ3JlZ2F0ZSByZXN1bHRzIG9mIGFuIGluc3RydW1lbnRlZCBCUEYgdHJhY2UuXG4rI1xuKyMgQ29weXJpZ2h0IDIwMjYgR29vZ2xlIExMQ1xuKyNcbisjIEF1dGhvcjogQWFyb24gTGV3aXMgXHUwMDNjYWFyb25sZXdpc0Bnb29nbGUuY29tXHUwMDNlXG4rXG4raW1wb3J0IGZpbGVpbnB1dFxuK2ltcG9ydCByZVxuK2ltcG9ydCBzeXNcbitpbXBvcnQgd2FybmluZ3Ncbitmcm9tIHR5cGluZyBpbXBvcnQgTGlzdCwgU2VxdWVuY2VcbitcbitjbGFzcyBQcm9maWxlclJlc3VsdDpcbisgIFwiXCJcIkNsYXNzIGZvciBob2xkaW5nIHRoZSBwcm9maWxlciByZXN1bHRzLlwiXCJcIlxuK1xuKyAgZGVmIF9faW5pdF9fKFxuKyAgICAgIHNlbGYsXG4rICAgICAgbmFtZTogc3RyLFxuKyAgICAgIHRocmVhZF91c2VjOiBpbnQsXG4rICAgICAgd2FsbF91c2VjOiBpbnQsXG4rICAgICAgbWF4X3VzZWM6IGludCxcbisgICAgICBhdmdfdXNlYzogaW50LFxuKyAgICAgIGNvdW50OiBpbnQsXG4rICAgICAgdGhyZWFkX2NvdW50OiBpbnQsXG4rICAgICAgaW5jb21wbGV0ZV9jb3VudDogaW50LFxuKyAgICAgIGRlcHRoOiBpbnQsXG4rICApOlxuKyAgICBzZWxmLm5hbWUgPSBuYW1lXG4rICAgIHNlbGYudGhyZWFkX3VzZWMgPSB0aHJlYWRfdXNlY1xuKyAgICBzZWxmLndhbGxfdXNlYyA9IHdhbGxfdXNlY1xuKyAgICBzZWxmLm1heF91c2VjID0gbWF4X3VzZWNcbisgICAgc2VsZi5hdmdfdXNlYyA9IGF2Z191c2VjXG4rICAgIHNlbGYuY291bnQgPSBjb3VudFxuKyAgICBzZWxmLnRocmVhZF9jb3VudCA9IHRocmVhZF9jb3VudFxuKyAgICBzZWxmLmluY29tcGxldGVfY291bnQgPSBpbmNvbXBsZXRlX2NvdW50XG4rICAgIHNlbGYuZGVwdGggPSBkZXB0aFxuK1xuK2NsYXNzIEJwZlRpbWVyOlxuKyAgXCJcIlwiQ2xhc3MgZm9yIGhvbGRpbmcgYSB0aW1lci5cIlwiXCJcbitcbisgIGRlZiBfX2luaXRfXyhcbisgICAgICBzZWxmLFxuKyAgICAgIG5hbWU6IHN0cixcbisgICAgICBzdGFydF90aW1lX3VzOiBpbnQsXG4rICAgICAgZHVyYXRpb25fdXM6IGludCxcbisgICAgICBkZXB0aDogaW50LFxuKyAgKTpcbisgICAgc2VsZi5uYW1lID0gbmFtZVxuKyAgICBzZWxmLnN0YXJ0X3RpbWVfdXMgPSBzdGFydF90aW1lX3VzXG4rICAgIHNlbGYuZHVyYXRpb25fdXMgPSBkdXJhdGlvbl91c1xuKyAgICBzZWxmLmRlcHRoID0gZGVwdGhcbitcbitjbGFzcyBCcGZSZXN1bHQ6XG4rICBcIlwiXCJDbGFzcyBmb3IgaG9sZGluZyB0aGUgcHJvZmlsZXIgcmVzdWx0cy5cIlwiXCJcbitcbisgIGRlZiBfX2luaXRfXyhcbisgICAgICBzZWxmLFxuKyAgICAgIG5hbWU6IHN0cixcbisgICAgICB3YWxsX3RpbWVfc3RhcnRfdXM6IGludCxcbisgICAgICB3YWxsX3RpbWVfZW5kX3VzOiBpbnQsXG4rICAgICAgdGhyZWFkX3VzOiBpbnQsXG4rICAgICAgbWF4X3VzOiBpbnQsXG4rICAgICAgYXZnX3VzOiBpbnQsXG4rICAgICAgY291bnQ6IGludCxcbisgICAgICB0aHJlYWRfY291bnQ6IGludCxcbisgICAgICBkZXB0aDogaW50LFxuKyAgICAgIHRpZDogaW50LFxuKyAgKTpcbisgICAgc2VsZi5uYW1lID0gbmFtZVxuKyAgICBzZWxmLndhbGxfdGltZV9zdGFydF91cyA9IHdhbGxfdGltZV9zdGFydF91c1xuKyAgICBzZWxmLndhbGxfdGltZV9lbmRfdXMgPSB3YWxsX3RpbWVfZW5kX3VzXG4rICAgIHNlbGYudGhyZWFkX3VzID0gdGhyZWFkX3VzXG4rICAgIHNlbGYubWF4X3VzID0gbWF4X3VzXG4rICAgIHNlbGYuYXZnX3VzID0gYXZnX3VzXG4rICAgIHNlbGYuY291bnQgPSBjb3VudFxuKyAgICBzZWxmLnRocmVhZF9jb3VudCA9IHRocmVhZF9jb3VudFxuKyAgICBzZWxmLmRlcHRoID0gZGVwdGhcbisgICAgc2VsZi5jaGlsZHJlbiA9IFtdXG4rICAgIHNlbGYuY2hpbGRfaW5kZXggPSB7fVxuKyAgICBzZWxmLnRocmVhZHMgPSB7fVxuKyAgICBzZWxmLnRocmVhZHNbdGlkXSA9IFRydWVcbitcbitkZWYgdXBkYXRlX2NoaWxkKHI6IEJwZlJlc3VsdCwgdGltZXI6IEJwZlRpbWVyLCB0aWQ6IGludCkgLVx1MDAzZSBpbnQ6XG4rICBpID0gci5jaGlsZF9pbmRleC5nZXQodGltZXIubmFtZSlcbisgIGlmIGkgaXMgTm9uZTpcbisgICAgaSA9IGxlbihyLmNoaWxkcmVuKVxuKyAgICByLmNoaWxkcmVuLmFwcGVuZChCcGZSZXN1bHQoXG4rICAgICAgICB0aW1lci5uYW1lLFxuKyAgICAgICAgdGltZXIuc3RhcnRfdGltZV91cyxcbisgICAgICAgIHRpbWVyLnN0YXJ0X3RpbWVfdXMgKyB0aW1lci5kdXJhdGlvbl91cyxcbisgICAgICAgIHRpbWVyLmR1cmF0aW9uX3VzLFxuKyAgICAgICAgdGltZXIuZHVyYXRpb25fdXMsXG4rICAgICAgICB0aW1lci5kdXJhdGlvbl91cyxcbisgICAgICAgIDEsXG4rICAgICAgICAxLFxuKyAgICAgICAgdGltZXIuZGVwdGgsXG4rICAgICAgICB0aWQpKVxuKyAgICByLmNoaWxkX2luZGV4W3RpbWVyLm5hbWVdID0gaVxuKyAgZWxzZTpcbisgICAgci5jaGlsZHJlbltpXS53YWxsX3RpbWVfc3RhcnRfdXMgPSBtaW4oci5jaGlsZHJlbltpXS53YWxsX3RpbWVfc3RhcnRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMpXG4rICAgIHIuY2hpbGRyZW5baV0ud2FsbF90aW1lX2VuZF91cyA9IG1heChyLmNoaWxkcmVuW2ldLndhbGxfdGltZV9lbmRfdXMsIHRpbWVyLnN0YXJ0X3RpbWVfdXMgKyB0aW1lci5kdXJhdGlvbl91cylcbisgICAgci5jaGlsZHJlbltpXS50aHJlYWRfdXMgKz0gdGltZXIuZHVyYXRpb25fdXNcbisgICAgci5jaGlsZHJlbltpXS5tYXhfdXMgPSBtYXgoci5jaGlsZHJlbltpXS5tYXhfdXMsIHRpbWVyLmR1cmF0aW9uX3VzKVxuKyAgICByLmNoaWxkcmVuW2ldLmNvdW50ICs9IDFcbisgICAgci5jaGlsZHJlbltpXS5hdmdfdXMgPSByLmNoaWxkcmVuW2ldLnRocmVhZF91cyAvIHIuY2hpbGRyZW5baV0uY291bnRcbisgICAgaWYgci5jaGlsZHJlbltpXS50aHJlYWRzLmdldCh0aWQpIGlzIE5vbmU6XG4rICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRzW3RpZF0gPSBUcnVlXG4rICAgICAgci5jaGlsZHJlbltpXS50aHJlYWRfY291bnQgKz0gMVxuK1xuKyAgcmV0dXJuIGlcbitcbitkZWYgbWVyZ2VfcmVjdXJzaXZlKHI6IEJwZlJlc3VsdCwgdGlkOiBpbnQsIHRpbWVyczogTGlzdFtCcGZUaW1lcl0sIGluZGV4OiBpbnQsIGNoaWxkX2luZGV4OiBpbnQpIC1cdTAwM2UgaW50OlxuKyAgd2hpbGUgaW5kZXggXHUwMDNjIGxlbih0aW1lcnMpOlxuKyAgICB3aGlsZSBpbmRleCBcdTAwM2MgbGVuKHRpbWVycykgYW5kIHRpbWVyc1tpbmRleF0gPT0gTm9uZTpcbisgICAgICBpbmRleCArPSAxXG4rXG4rICAgIGlmIGluZGV4IFx1MDAzZT0gbGVuKHRpbWVycyk6XG4rICAgICAgcmV0dXJuIGluZGV4XG4rXG4rICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJ3InLiAoQ2hpbGQgY2FzZSlcbisgICAgaWYgdGltZXJzW2luZGV4XS5kZXB0aCA9PSAoci5kZXB0aCArIDEpOlxuKyAgICAgICMgQWRkIGNoaWxkXG4rICAgICAgY2hpbGRfaW5kZXggPSB1cGRhdGVfY2hpbGQociwgdGltZXJzW2luZGV4XSwgdGlkKVxuK1xuKyAgICAgICMgTm93IHRoYXQgdGhlIHRpbWVyIGhhcyBiZWVuIGhhbmRsZWQgaW5jcmVtZW50IHRvIHRoZSBuZXh0IG9uZS5cbisgICAgICBpbmRleCArPSAxXG4rXG4rICAgICMgVGhlIHRpbWVyIGlzIGEgY2hpbGQgb2YgJ3InLiAoR3JhbmRjaGlsZCBjYXNlKVxuKyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggPT0gKHIuZGVwdGggKyAyKTpcbisgICAgICBpZiBjaGlsZF9pbmRleCBcdTAwM2MgMDpcbisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoXCJJbnZhbGlkICdjaGlsZF9pbmRleCdcIilcbisgICAgICAjIFJlY3Vyc2UgZG93biB0aGUgY2hpbGQgYmVjdWFzZSB0aGF0IGlzIHRoZSBwYXJlbnQgdGhpcyB0aW1lci5cbisgICAgICBpbmRleCA9IG1lcmdlX3JlY3Vyc2l2ZShyLmNoaWxkcmVuW2NoaWxkX2luZGV4XSwgdGlkLCB0aW1lcnMsIGluZGV4LCBjaGlsZF9pbmRleClcbitcbisgICAgIyBUaGUgdGltZXIgaXMgYSBkZXNjZW5kYW50IG9mICdyJywgYnV0IG5vdCB0aGUgY2hpbGQuLi4gSW52YWxpZCBjYXNlIVxuKyAgICBlbGlmIHRpbWVyc1tpbmRleF0uZGVwdGggXHUwMDNlIChyLmRlcHRoICsgMik6XG4rICAgICAgcmFpc2UgVmFsdWVFcnJvcihcIkludmFsaWQgZGVwdGguICBkZXNjZW5kYW50IGNhbiBvbmx5IGJlIGNoaWxkcmVuLiBuYW1lID0gJyVzJywgdGlkID0gJWQsIGluZGV4ID0gJWRcIiAlICh0aW1lcnNbaW5kZXhdLm5hbWUsIHRpZCwgaW5kZXgpKVxuK1xuKyAgICAjIE5ldyBmYW1pbHkgdHJlZS4gIFBvcCBvdXQgb2YgdGhpcyBvbmUuXG4rICAgIGVsaWYgdGltZXJzW2luZGV4XS5kZXB0aCBcdTAwM2M9IHIuZGVwdGg6XG4rICAgICAgIyBUaGUgdGltZXIgaXMgYW4gYW5jZXN0b3Igb2YgJ3InLiAgUmV0dXJuIHNvIGl0IGNhbiBiZSBwcm9jZXNzZWQgZWxzZXdoZXJlLlxuKyAgICAgIHJldHVybiBpbmRleFxuK1xuKyAgcmV0dXJuIGluZGV4XG4rXG4rZGVmIG1lcmdlX3RpbWVycyhyOiBCcGZSZXN1bHQsIHRpZDogaW50LCB0aW1lcnM6IExpc3RbQnBmVGltZXJdKTpcbisgIGlmIGxlbih0aW1lcnMpID09IDA6XG4rICAgIHJldHVyblxuK1xuKyAgaWYgdGltZXJzWzBdLmRlcHRoICE9IDA6XG4rICAgIHJhaXNlIFZhbHVlRXJyb3IoXCJFeHBlY3RlZCBhIGRlcHRoIG9mIDAuICAnJXMnLCBkZXB0aCA9ICVkXCIgJSAodGltZXJzWzBdLm5hbWUsIHRpbWVyc1swXS5kZXB0aCkpXG4rXG4rICBtZXJnZV9yZWN1cnNpdmUociwgdGlkLCB0aW1lcnMsIDAsIC0xKVxuK1xuK2RlZiBwcmludF9yZWN1cnNpdmUocjogQnBmUmVzdWx0LCByZXN1bHRzIDogTGlzdFtQcm9maWxlclJlc3VsdF0pOlxuKyAgdGhyZWFkX3RpbWUgPSBmbG9hdChyLnRocmVhZF91cykgLyAxMDAwLjBcbisgIHdhbGxfdGltZV91cyA9IHIud2FsbF90aW1lX2VuZF91cyAtIHIud2FsbF90aW1lX3N0YXJ0X3VzXG4rICB3YWxsX3RpbWUgPSBmbG9hdCh3YWxsX3RpbWVfdXMpIC8gMTAwMC4wXG4rICBtYXhfdGltZSA9IGZsb2F0KHIubWF4X3VzKSAvIDEwMDAuMFxuKyAgYXZnX3RpbWUgPSBmbG9hdChyLmF2Z191cykgLyAxMDAwLjBcbitcbisgIGluZGVudCA9IFwiXCJcbisgIGZvciBpIGluIHJhbmdlKHIuZGVwdGgpOlxuKyAgICBpbmRlbnQgKz0gXCIgIFwiXG4rXG4rICBwcmludChcIiVzJXMsIHRocmVhZF90aW1lID0gJS4yZm1zLCB3YWxsX3RpbWUgPSAlLjJmbXMsIG1heCA9ICUuMmYsIGF2ZyA9ICUuMmYsIGNvdW50ID0gJWQsIHRocmVhZF9jb3VudCA9ICVkXCIgJVxuKyAgICAgICAgKGluZGVudCwgci5uYW1lLCB0aHJlYWRfdGltZSwgd2FsbF90aW1lLCBtYXhfdGltZSwgYXZnX3RpbWUsIHIuY291bnQsIHIudGhyZWFkX2NvdW50KSk7XG4rXG4rICByZXN1bHRzLmFwcGVuZChcbisgICAgICBQcm9maWxlclJlc3VsdChcbisgICAgICAgICAgci5uYW1lLFxuKyAgICAgICAgICByLnRocmVhZF91cyxcbisgICAgICAgICAgd2FsbF90aW1lX3VzLFxuKyAgICAgICAgICByLm1heF91cyxcbisgICAgICAgICAgci5hdmdfdXMsXG4rICAgICAgICAgIHIuY291bnQsXG4rICAgICAgICAgIHIudGhyZWFkX2NvdW50LFxuKyAgICAgICAgICAwLFxuKyAgICAgICAgICByLmRlcHRoLFxuKyAgICAgIClcbisgIClcbitcbisgIGZvciBjaGlsZCBpbiByLmNoaWxkcmVuOlxuKyAgICBwcmludF9yZWN1cnNpdmUoY2hpbGQsIHJlc3VsdHMpXG4rXG4rZGVmIHByaW50X3Jlc3VsdHMocjogQnBmUmVzdWx0LCByZXN1bHRzIDogTGlzdFtQcm9maWxlclJlc3VsdF0pOlxuKyAgZm9yIGNoaWxkIGluIHIuY2hpbGRyZW46XG4rICAgIHByaW50X3JlY3Vyc2l2ZShjaGlsZCwgcmVzdWx0cylcbitcbitkZWYgZ2VuZXJhdGVfZnJvbV9sb2coZmlsZXM6IFNlcXVlbmNlW3N0cl0pOlxuKyAgXCJcIlwiUmVhZCB0aGUgdHJhY2UgYW5kIHJldHVybiBhIGxpc3Qgb2YgUHJvZmlsZXJSZXN1bHQgb2JqZWN0cy5cIlwiXCJcbitcbisgIHRpbWVyX2NvdW50cyA9IHt9XG4rICBhbGxfdGltZXJzID0ge31cbitcbisgIGNvdW50X3JlZ2V4ID0gcmUuY29tcGlsZShcbisgICAgICByXCJeQHRpbWVyX2NvdW50XFxbKD9QXHUwMDNjdGlkXHUwMDNlWzAtOV0rKVxcXTpcXFcoP1BcdTAwM2Njb3VudFx1MDAzZVstMC05XSspXCJcbisgIClcbisgIG5hbWVfcmVnZXggPSByZS5jb21waWxlKFxuKyAgICAgIHJcIl5AdGltZXJfbmFtZVxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldKyksXFxXKig/UFx1MDAzY2luZGV4XHUwMDNlWzAtOV0rKVxcXTpcXFcoP1BcdTAwM2NuYW1lXHUwMDNlW1xcd1xcLjAtOV0rKVwiXG4rICApXG4rICBzdGFydF90aW1lX3JlZ2V4ID0gcmUuY29tcGlsZShcbisgICAgICByXCJeQHRpbWVyX3N0YXJ0XFxbKD9QXHUwMDNjdGlkXHUwMDNlWzAtOV0rKSxcXFcqKD9QXHUwMDNjaW5kZXhcdTAwM2VbMC05XSspXFxdOlxcVyg/UFx1MDAzY3N0YXJ0X3RpbWVfdXNcdTAwM2VbLTAtOV0rKVwiXG4rICApXG4rICBkdXJhdGlvbl9yZWdleCA9IHJlLmNvbXBpbGUoXG4rICAgICAgclwiXkB0aW1lcl9kdXJhdGlvblxcWyg/UFx1MDAzY3RpZFx1MDAzZVswLTldKyksXFxXKig/UFx1MDAzY2luZGV4XHUwMDNlWzAtOV0rKVxcXTpcXFcoP1BcdTAwM2NkdXJhdGlvbl91c1x1MDAzZVstMC05XSspXCJcbisgIClcbisgIGRlcHRoX3JlZ2V4ID0gcmUuY29tcGlsZShcbisgICAgICByXCJeQHRpbWVyX2RlcHRoXFxbKD9QXHUwMDNjdGlkXHUwMDNlWzAtOV0rKSxcXFcqKD9QXHUwMDNjaW5kZXhcdTAwM2VbMC05XSspXFxdOlxcVyg/UFx1MDAzY2RlcHRoXHUwMDNlWy0wLTldKylcIlxuKyAgKVxuK1xuKyAgYXR0YWNoaW5nX3JlZ2V4ID0gcmUuY29tcGlsZShcbisgICAgICByXCJeQXR0YWNoaW5nLipcIlxuKyAgKVxuK1xuKyAgIyBHZXQgYWxsIGNvdW50cy4gIFRoYXQgd2F5IHdlIGtub3cgaG93IG1hbnkgdGltZXJzIGVhY2ggdGhyZWFkIHVzZWQuXG4rICBmb3IgbGluZSBpbiBmaWxlaW5wdXQuaW5wdXQoZmlsZXM9ZmlsZXMpOlxuKyAgICBsaW5lID0gbGluZS5yc3RyaXAoKVxuK1xuKyAgICBtID0gcmUuZnVsbG1hdGNoKGR1cmF0aW9uX3JlZ2V4LCBsaW5lKVxuKyAgICBpZiBtOlxuKyAgICAgIHRpZCA9IGludChtLmdyb3VwKFwidGlkXCIpKVxuKyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXCJpbmRleFwiKSlcbisgICAgICBkdXJhdGlvbl9zdHIgPSBtLmdyb3VwKFwiZHVyYXRpb25fdXNcIilcbisgICAgICBkdXJhdGlvbiA9IGludChtLmdyb3VwKFwiZHVyYXRpb25fdXNcIikpXG4rXG4rICAgICAgaWYgbm90IHRpZCBpbiB0aW1lcl9jb3VudHM6XG4rICAgICAgICB0aW1lcl9jb3VudHNbdGlkXSA9IGluZGV4XG4rICAgICAgZWxzZTpcbisgICAgICAgIHRpbWVyX2NvdW50c1t0aWRdID0gbWF4KHRpbWVyX2NvdW50c1t0aWRdLCBpbmRleClcbitcbisgICMgQWxsb2NhdGUgZW5vdWdoIHRpbWVycyB0byBmaXQgdGhlIHRyYWNlLlxuKyAgZm9yIHRpZCwgY291bnQgaW4gdGltZXJfY291bnRzLml0ZW1zKCk6XG4rICAgIGFsbF90aW1lcnNbdGlkXSA9IFtOb25lXSAqIChjb3VudCArIDEpXG4rXG4rICAjIFBvcHVsYXRlIHRoZSB0cmFjZS5cbisgIGZvciBsaW5lIGluIGZpbGVpbnB1dC5pbnB1dChmaWxlcz1maWxlcyk6XG4rICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpXG4rXG4rICAgIG0gPSByZS5mdWxsbWF0Y2gobmFtZV9yZWdleCwgbGluZSlcbisgICAgaWYgbTpcbisgICAgICB0aWQgPSBpbnQobS5ncm91cChcInRpZFwiKSlcbisgICAgICBpbmRleCA9IGludChtLmdyb3VwKFwiaW5kZXhcIikpXG4rICAgICAgbmFtZSA9IG0uZ3JvdXAoXCJuYW1lXCIpXG4rICAgICAgaWYgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9PSBOb25lOlxuKyAgICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XSA9IEJwZlRpbWVyKFwiXCIsIDAsIC0xLCAtMSlcbisgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdLm5hbWUgPSBuYW1lXG4rICAgICAgY29udGludWVcbitcbisgICAgbSA9IHJlLmZ1bGxtYXRjaChzdGFydF90aW1lX3JlZ2V4LCBsaW5lKVxuKyAgICBpZiBtOlxuKyAgICAgIHRpZCA9IGludChtLmdyb3VwKFwidGlkXCIpKVxuKyAgICAgIGluZGV4ID0gaW50KG0uZ3JvdXAoXCJpbmRleFwiKSlcbisgICAgICBzdGFydF90aW1lID0gaW50KG0uZ3JvdXAoXCJzdGFydF90aW1lX3VzXCIpKVxuKyAgICAgIGlmIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPT0gTm9uZTpcbisgICAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0gPSBCcGZUaW1lcihcIlwiLCAwLCAtMSwgLTEpXG4rICAgICAgYWxsX3RpbWVyc1t0aWRdW2luZGV4XS5zdGFydF90aW1lX3VzID0gc3RhcnRfdGltZVxuKyAgICAgIGNvbnRpbnVlXG4rXG4rICAgIG0gPSByZS5mdWxsbWF0Y2goZHVyYXRpb25fcmVnZXgsIGxpbmUpXG4rICAgIGlmIG06XG4rICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXCJ0aWRcIikpXG4rICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcImluZGV4XCIpKVxuKyAgICAgIGR1cmF0aW9uID0gaW50KG0uZ3JvdXAoXCJkdXJhdGlvbl91c1wiKSlcbisgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6XG4rICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoXCJcIiwgMCwgLTEsIC0xKVxuKyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZHVyYXRpb25fdXMgPSBkdXJhdGlvblxuKyAgICAgIGNvbnRpbnVlXG4rXG4rICAgIG0gPSByZS5mdWxsbWF0Y2goZGVwdGhfcmVnZXgsIGxpbmUpXG4rICAgIGlmIG06XG4rICAgICAgdGlkID0gaW50KG0uZ3JvdXAoXCJ0aWRcIikpXG4rICAgICAgaW5kZXggPSBpbnQobS5ncm91cChcImluZGV4XCIpKVxuKyAgICAgIGRlcHRoID0gaW50KG0uZ3JvdXAoXCJkZXB0aFwiKSlcbisgICAgICBpZiBhbGxfdGltZXJzW3RpZF1baW5kZXhdID09IE5vbmU6XG4rICAgICAgICBhbGxfdGltZXJzW3RpZF1baW5kZXhdID0gQnBmVGltZXIoXCJcIiwgMCwgLTEsIC0xKVxuKyAgICAgIGFsbF90aW1lcnNbdGlkXVtpbmRleF0uZGVwdGggPSBkZXB0aFxuKyAgICAgIGNvbnRpbnVlXG4rXG4rICAgIGlmIHJlLmZ1bGxtYXRjaChjb3VudF9yZWdleCwgbGluZSk6XG4rICAgICAgIyBTa2lwIHRoaXMgY2FzZS4gIEl0J3MgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZC5cbisgICAgICBjb250aW51ZVxuKyAgICBpZiByZS5mdWxsbWF0Y2goYXR0YWNoaW5nX3JlZ2V4LCBsaW5lKTpcbisgICAgICAjIFNraXAgXCJBdHRhY2hpbmcgWFggcHJvYmVzLi4uXCJcbisgICAgICBjb250aW51ZVxuKyAgICBpZiBub3QgbGluZTpcbisgICAgICAjIFNraXAgZW1wdHkgc3RyaW5ncy5cbisgICAgICBjb250aW51ZVxuK1xuKyAgICByYWlzZSBWYWx1ZUVycm9yKFwiSW52YWxpZCBpbnB1dCwgJyVzJ1wiICUgKGxpbmUpKVxuK1xuKyAgcm9vdCA9IEJwZlJlc3VsdChcIlwiLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAtMSwgLTEpXG4rICByZXN1bHRzID0gW11cbisgIGZvciB0aWQsIHRpbWVycyBpbiBhbGxfdGltZXJzLml0ZW1zKCk6XG4rICAgIG1lcmdlX3RpbWVycyhyb290LCB0aWQsIHRpbWVycylcbisgIHByaW50X3Jlc3VsdHMocm9vdCwgcmVzdWx0cylcbitcbisgIGlmIGZpbGVpbnB1dC5maWxlbm8oKSA9PSAwOlxuKyAgICByYWlzZSBWYWx1ZUVycm9yKFwiRXhwZWN0ZWQgYSBmaWxlIHRvIHJlYWQuXCIpXG4rXG4rICBpZiBmaWxlaW5wdXQuZmlsZW5vKCkgXHUwMDNlIDE6XG4rICAgIHJhaXNlIFZhbHVlRXJyb3IoXCJUb28gbWFueSBmaWxlcyByZWFkLiAgRXhwZWN0ZWQgMVwiKVxuK1xuK2RlZiBtYWluKCkgLVx1MDAzZSBOb25lOlxuKyAgXCJcIlwiTWFpbiBmdW5jdGlvbi5cIlwiXCJcbitcbisgIGlmIGxlbihzeXMuYXJndikgXHUwMDNjPSAxOlxuKyAgICBwcmludChcIkVycm9yOiBOb3QgZW5vdWdoIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIEV4cGVjdGVkIGFuIGlucHV0IGZpbGVcIiwgZmlsZT1zeXMuc3RkZXJyKVxuKyAgICBzeXMuZXhpdCgxKVxuK1xuKyAgZ2VuZXJhdGVfZnJvbV9sb2coc3lzLmFyZ3ZbMTpdKVxuK1xuK1xuK2lmIF9fbmFtZV9fID09IFwiX19tYWluX19cIjpcbisgIG1haW4oKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL2t2bV90cmFjZS5idCBiL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL2t2bV90cmFjZS5idFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5iZDM0MWU0MDg1NzBlY1xuLS0tIC9kZXYvbnVsbFxuKysrIGIvdG9vbHMvYnBmdHJhY2UvaW5zdHJ1bWVudGVkX3Byb2ZpbGVyL3NhbXBsZXMva3ZtX3RyYWNlLmJ0XG5AQCAtMCwwICsxLDE5NyBAQFxuKyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMClcbisjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKVxuKyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpXG4rXG4rY29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfVxuK1xuK21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXG4re1xuK1x0QHRyYWNlX3N0YWNrX3RvcFswXSA9IDA7XG4rXHRAdGltZXJfY291bnRbMF0gPSAwO1xuK31cbitcbittYWNybyBDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxuK3tcbitcdGNsZWFyKEB0cmFjZV9zdGFjayk7XG4rXHRjbGVhcihAdHJhY2Vfc3RhY2tfdG9wKTtcbitcdGNsZWFyKEB0aW1lcl9jb3VudCk7XG4rfVxuK1xuK21hY3JvIFNUQVJUX1RJTUVSKG5hbWUsIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKVxuK3tcbitcdEB0aW1lcl9uYW1lW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gbmFtZTtcbitcdEB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTtcbitcdEB0aW1lcl9zdGFydFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IHVzZWNzO1xuK1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gRFVSQVRJT05fVU5TRVQ7XG4rXHRAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07XG4rXHRAdGltZXJfY291bnRbdGlkXSsrO1xuK1x0QHRyYWNlX3N0YWNrX3RvcFt0aWRdKys7XG4rfVxuK1xuKy8qXG4rICogVW5mb3J0dW5hdGVseSBicmFuY2ggc3RhdGVtZW50cyBjcmFzaCB0aGUgYnBmdHJhY2UgY29tcGlsZXIuICBBcyBhIHJlc3VsdCxcbisgKiB0aGUgYnJhbmNoIGhhcyBiZWVuIG1vdmVkIGRpcmVjdGx5IGludG8gdGhlIHByb2JlLiAgUmV2ZXJzZSB0aGlzIGlmIHRoZVxuKyAqIGNvbXBpbGVyIGV2ZXIgZ2V0cyB0aGF0IGZpeGVkLlxuKyAqL1xuK21hY3JvIFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydClcbit7XG4rXHQkaWR4ID0gQHRyYWNlX3N0YWNrW3RpZCwgLS1AdHJhY2Vfc3RhY2tfdG9wW3RpZF1dO1xuK1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdO1xuK31cbitcbitCRUdJTlxuK3tcbitcdElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xuK31cbitcbisvKlxuKyAqIFRpbWUgJ2t2bV9zY2hlZF9pbigpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3NjaGVkX2luIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6a3ZtX3NjaGVkX2luXG4re1xuK1x0U1RBUlRfVElNRVIoXCJrdm1fc2NoZWRfaW5cIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fc2NoZWRfaW5cbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAna3ZtX3NjaGVkX291dCgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3NjaGVkX291dCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOmt2bV9zY2hlZF9vdXRcbit7XG4rXHRTVEFSVF9USU1FUihcImt2bV9zY2hlZF9vdXRcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitcbitrcmV0ZnVuYzprdm1fc2NoZWRfb3V0XG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIFRpbWUgJ2t2bV9hcmNoX3ZjcHVfbG9hZCgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX2FyY2hfdmNwdV9sb2FkIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6a3ZtX2FyY2hfdmNwdV9sb2FkXG4re1xuK1x0U1RBUlRfVElNRVIoXCJrdm1fYXJjaF92Y3B1X2xvYWRcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X2xvYWRcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAna3ZtX2FyY2hfdmNwdV9wdXQoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9hcmNoX3ZjcHVfcHV0IC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6a3ZtX2FyY2hfdmNwdV9wdXRcbit7XG4rXHRTVEFSVF9USU1FUihcImt2bV9hcmNoX3ZjcHVfcHV0XCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6a3ZtX2FyY2hfdmNwdV9wdXRcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAnS1ZNX1JVTicsIGkuZS4ga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oKS5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4gL3Byb2Mva2FsbHN5bXNcbisgKi9cbitrZnVuYzprdm1fYXJjaF92Y3B1X2lvY3RsX3J1blxuK3tcbitcdFNUQVJUX1RJTUVSKFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fYXJjaF92Y3B1X2lvY3RsX3J1blxuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lIGhvdyBsb25nIGEgZ3Vlc3QgcnVucyB1c2luZyB0cmFjZXBvaW50cyBcImt2bV9lbnRyeVwiIGFuZCBcImt2bV9leGl0XCIuXG4rICovXG4rdHJhY2Vwb2ludDprdm06a3ZtX2VudHJ5XG4re1xuK1x0U1RBUlRfVElNRVIoXCJydW5fZ3Vlc3RcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbit0cmFjZXBvaW50Omt2bTprdm1fZXhpdFxuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lICdrdm1fdmNwdV9ibG9jaygpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAga3ZtX3ZjcHVfYmxvY2sgL3Byb2Mva2FsbHN5bXNcbisgKi9cbitrZnVuYzprdm1fdmNwdV9ibG9ja1xuK3tcbitcdFNUQVJUX1RJTUVSKFwia3ZtX3ZjcHVfYmxvY2tcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fdmNwdV9ibG9ja1xuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lICdrdm1fbW11X3BhZ2VfZmF1bHQoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIGt2bV9tbXVfcGFnZV9mYXVsdCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOmt2bV9tbXVfcGFnZV9mYXVsdFxuK3tcbitcdFNUQVJUX1RJTUVSKFwia3ZtX3ZjcHVfYmxvY2tcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzprdm1fbW11X3BhZ2VfZmF1bHRcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogRHVtcCB0aGUgcmVzdWx0cyB0byBzdGRvdXQuXG4rICovXG4rRU5EXG4re1xuK1x0Q0xFQVJfTUFQUyhAdHJhY2Vfc3RhY2ssIEB0cmFjZV9zdGFja190b3AsIEB0aW1lcl9jb3VudCk7XG4rfVxuZGlmZiAtLWdpdCBhL3Rvb2xzL2JwZnRyYWNlL2luc3RydW1lbnRlZF9wcm9maWxlci9zYW1wbGVzL3ZmaW9fdHJhY2UuYnQgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjNiOGNiN2ZmNjIxMGRlXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvc2FtcGxlcy92ZmlvX3RyYWNlLmJ0XG5AQCAtMCwwICsxLDMxNSBAQFxuKyNkZWZpbmUgdXNlY3MgKG5zZWNzIC8gMTAwMClcbisjZGVmaW5lIG1zZWNzIChuc2VjcyAvIDEwMDAgLyAxMDAwKVxuKyNkZWZpbmUgRFVSQVRJT05fVU5TRVQgKCh1aW50NjQpLTEpXG4rXG4rY29uZmlnID0geyBtYXhfbWFwX2tleXM9NDE5NDMwNDsgfVxuK1xuK21hY3JvIElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpXG4re1xuK1x0QHRyYWNlX3N0YWNrX3RvcFswXSA9IDA7XG4rXHRAdGltZXJfY291bnRbMF0gPSAwO1xuK31cbitcbittYWNybyBDTEVBUl9NQVBTKEB0cmFjZV9zdGFjaywgQHRyYWNlX3N0YWNrX3RvcCwgQHRpbWVyX2NvdW50KVxuK3tcbitcdGNsZWFyKEB0cmFjZV9zdGFjayk7XG4rXHRjbGVhcihAdHJhY2Vfc3RhY2tfdG9wKTtcbitcdGNsZWFyKEB0aW1lcl9jb3VudCk7XG4rfVxuK1xuK21hY3JvIFNUQVJUX1RJTUVSKG5hbWUsIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKVxuK3tcbitcdEB0aW1lcl9uYW1lW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gbmFtZTtcbitcdEB0cmFjZV9zdGFja1t0aWQsIEB0cmFjZV9zdGFja190b3BbdGlkXV0gPSBAdGltZXJfY291bnRbdGlkXTtcbitcdEB0aW1lcl9zdGFydFt0aWQsIEB0aW1lcl9jb3VudFt0aWRdXSA9IHVzZWNzO1xuK1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgQHRpbWVyX2NvdW50W3RpZF1dID0gRFVSQVRJT05fVU5TRVQ7XG4rXHRAdGltZXJfZGVwdGhbdGlkLCBAdGltZXJfY291bnRbdGlkXV0gPSBAdHJhY2Vfc3RhY2tfdG9wW3RpZF07XG4rXHRAdGltZXJfY291bnRbdGlkXSsrO1xuK1x0QHRyYWNlX3N0YWNrX3RvcFt0aWRdKys7XG4rfVxuK1xuKy8qXG4rICogVW5mb3J0dW5hdGVseSBicmFuY2ggc3RhdGVtZW50cyBjcmFzaCB0aGUgYnBmdHJhY2UgY29tcGlsZXIuICBBcyBhIHJlc3VsdCxcbisgKiB0aGUgYnJhbmNoIGhhcyBiZWVuIG1vdmVkIGRpcmVjdGx5IGludG8gdGhlIHByb2JlLiAgUmV2ZXJzZSB0aGlzIGlmIHRoZVxuKyAqIGNvbXBpbGVyIGV2ZXIgZ2V0cyB0aGF0IGZpeGVkLlxuKyAqL1xuK21hY3JvIFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydClcbit7XG4rXHQkaWR4ID0gQHRyYWNlX3N0YWNrW3RpZCwgLS1AdHJhY2Vfc3RhY2tfdG9wW3RpZF1dO1xuK1x0QHRpbWVyX2R1cmF0aW9uW3RpZCwgJGlkeF0gPSB1c2VjcyAtIEB0aW1lcl9zdGFydFt0aWQsICRpZHhdO1xuK31cbitcbitCRUdJTlxuK3tcbitcdElOSVRfTUFQUyhAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xuK31cbitcbisvKlxuKyAqIFRpbWUgJ3ZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwoKScuXG4rICpcbisgKiBWRklPX0dST1VQX0dFVF9ERVZJQ0VfRkQgPSAweDNiNmFcbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19ncm91cF9mb3BzX3VubF9pb2N0bCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I2YS9cbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9fZ3JvdXBfaW9jdGxfZ2V0X2RldmljZV9mZFwiLFxuK1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4rXHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4rfVxuK2tyZXRmdW5jOnZmaW9fZ3JvdXBfZm9wc191bmxfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I2YS9cbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAndmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmQoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9fZGZfaW9jdGxfYmluZF9pb21tdWZkXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6dmZpb19kZl9pb2N0bF9iaW5kX2lvbW11ZmRcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAndmZpb19kZl91bmJpbmRfaW9tbXVmZCgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl91bmJpbmRfaW9tbXVmZCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9fZGZfdW5iaW5kX2lvbW11ZmRcbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9fZGZfdW5iaW5kX2lvbW11ZmRcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX2RmX3VuYmluZF9pb21tdWZkXG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIFRpbWUgJ3ZmaW9fZGZfb3BlbigpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19kZl9vcGVuIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmZpb19kZl9vcGVuXG4re1xuK1x0U1RBUlRfVElNRVIoXCJ2ZmlvX2RmX29wZW5cIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX2RmX29wZW5cbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAncGNpZV9mbHIoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHBjaWVfZmxyIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6cGNpZV9mbHJcbit7XG4rXHRTVEFSVF9USU1FUihcInBjaWVfZmxyXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6cGNpZV9mbHJcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAncGNpX2Rldl93YWl0KCknLlxuKyAqXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCBwY2lfZGV2X3dhaXQgL3Byb2Mva2FsbHN5bXNcbisgKi9cbitrZnVuYzpwY2lfZGV2X3dhaXRcbit7XG4rXHRTVEFSVF9USU1FUihcInBjaV9kZXZfd2FpdFwiLFxuK1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4rXHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4rfVxuK2tyZXRmdW5jOnBjaV9kZXZfd2FpdFxuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lICd2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCknIHdoZW4gJ1ZGSU9fSU9NTVVfTUFQX0RNQScgaXMgY2FsbGVkLlxuKyAqXG4rICpcbisgKiBWRklPX0lPTU1VX01BUF9ETUEgPSAweDNiNzFcbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19pb21tdV90eXBlMV9pb2N0bCAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I3MS9cbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9faW9tbXVfdHlwZTFfbWFwX2RtYVwiLFxuK1x0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4rXHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4rfVxuK2tyZXRmdW5jOnZmaW9faW9tbXVfdHlwZTFfaW9jdGwgL2FyZ3MtXHUwMDNlY21kID09IDB4M2I3MS9cbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAndmZpb19waW5fbWFwX2RtYSgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19waW5fbWFwX2RtYSAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9fcGluX21hcF9kbWFcbit7XG4rXHRTVEFSVF9USU1FUihcInZmaW9fcGluX21hcF9kbWFcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX3Bpbl9tYXBfZG1hXG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIFRpbWUgJ3ZmaW9fcGluX3BhZ2VzX3JlbW90ZSgpJy5cbisgKlxuKyAqIENoZWNrOiBzdWRvIGdyZXAgdmZpb19waW5fcGFnZXNfcmVtb3RlIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmZpb19waW5fcGFnZXNfcmVtb3RlXG4re1xuK1x0U1RBUlRfVElNRVIoXCJ2ZmlvX3Bpbl9wYWdlc19yZW1vdGVcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX3Bpbl9wYWdlc19yZW1vdGVcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8qXG4rICogVGltZSAndmFkZHJfZ2V0X3BmbnMoKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHZhZGRyX2dldF9wZm5zIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmFkZHJfZ2V0X3BmbnNcbit7XG4rXHRTVEFSVF9USU1FUihcInZhZGRyX2dldF9wZm5zXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6dmFkZHJfZ2V0X3BmbnNcbit7XG4rXHRpZiAoQHRyYWNlX3N0YWNrX3RvcFt0aWRdIFx1MDAzZSAwKSB7XG4rXHRcdFNUT1BfVElNRVIoQHRyYWNlX3N0YWNrX3RvcCwgQHRyYWNlX3N0YWNrLCBAdGltZXJfZHVyYXRpb24sIEB0aW1lcl9zdGFydCk7XG4rXHR9XG4rfVxuK1xuKy8vIC8qXG4rLy8gICogVGltZSAnaW9tbXVfbWFwKCknLlxuKy8vICAqXG4rLy8gICogQ2hlY2s6IHN1ZG8gZ3JlcCBpb21tdV9tYXAgL3Byb2Mva2FsbHN5bXNcbisvLyAgKi9cbisvLyBrZnVuYzppb21tdV9tYXBcbisvLyB7XG4rLy8gXHRTVEFSVF9USU1FUihcImlvbW11X21hcFwiLFxuKy8vIFx0XHQgICAgQHRpbWVyX25hbWUsIEB0cmFjZV9zdGFjaywgQHRpbWVyX3N0YXJ0LCBAdGltZXJfZHVyYXRpb24sXG4rLy8gXHRcdCAgICBAdGltZXJfZGVwdGgsIEB0aW1lcl9jb3VudCwgQHRyYWNlX3N0YWNrX3RvcCk7XG4rLy8gfVxuKy8vIGtyZXRmdW5jOmlvbW11X21hcFxuKy8vIHtcbisvLyBcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbisvLyBcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbisvLyBcdH1cbisvLyB9XG4rXG4rXG4rXG4rLypcbisgKiBUaW1lICd2ZmlvX2lvbW11X3R5cGUxX2lvY3RsKCknIHdoZW4gJ1ZGSU9fSU9NTVVfVU5NQVBfRE1BJyBpcyBjYWxsZWQuXG4rICpcbisgKiBWRklPX0lPTU1VX1VOTUFQX0RNQSA9IDB4M2I3MlxuKyAqXG4rICogQ2hlY2s6IHN1ZG8gZ3JlcCB2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9wcm9jL2thbGxzeW1zXG4rICovXG4ra2Z1bmM6dmZpb19pb21tdV90eXBlMV9pb2N0bCAvYXJncy1cdTAwM2VjbWQgPT0gMHgzYjcyL1xuK3tcbitcdFNUQVJUX1RJTUVSKFwidmZpb19pb21tdV90eXBlMV91bm1hcF9kbWFcIixcbitcdFx0ICAgIEB0aW1lcl9uYW1lLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9zdGFydCwgQHRpbWVyX2R1cmF0aW9uLFxuK1x0XHQgICAgQHRpbWVyX2RlcHRoLCBAdGltZXJfY291bnQsIEB0cmFjZV9zdGFja190b3ApO1xuK31cbitrcmV0ZnVuYzp2ZmlvX2lvbW11X3R5cGUxX2lvY3RsIC9hcmdzLVx1MDAzZWNtZCA9PSAweDNiNzIvXG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIFRpbWUgJ3ZmaW9fdW5tYXBfdW5waW4oKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fdW5tYXBfdW5waW4gL3Byb2Mva2FsbHN5bXNcbisgKi9cbitrZnVuYzp2ZmlvX3VubWFwX3VucGluXG4re1xuK1x0U1RBUlRfVElNRVIoXCJ2ZmlvX3VubWFwX3VucGluXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6dmZpb191bm1hcF91bnBpblxuK3tcbitcdGlmIChAdHJhY2Vfc3RhY2tfdG9wW3RpZF0gXHUwMDNlIDApIHtcbitcdFx0U1RPUF9USU1FUihAdHJhY2Vfc3RhY2tfdG9wLCBAdHJhY2Vfc3RhY2ssIEB0aW1lcl9kdXJhdGlvbiwgQHRpbWVyX3N0YXJ0KTtcbitcdH1cbit9XG4rXG4rLypcbisgKiBUaW1lICd2ZmlvX3N5bmNfdW5waW4oKScuXG4rICpcbisgKiBDaGVjazogc3VkbyBncmVwIHZmaW9fc3luY191bnBpbiAvcHJvYy9rYWxsc3ltc1xuKyAqL1xuK2tmdW5jOnZmaW9fc3luY191bnBpblxuK3tcbitcdFNUQVJUX1RJTUVSKFwidmZpb19zeW5jX3VucGluXCIsXG4rXHRcdCAgICBAdGltZXJfbmFtZSwgQHRyYWNlX3N0YWNrLCBAdGltZXJfc3RhcnQsIEB0aW1lcl9kdXJhdGlvbixcbitcdFx0ICAgIEB0aW1lcl9kZXB0aCwgQHRpbWVyX2NvdW50LCBAdHJhY2Vfc3RhY2tfdG9wKTtcbit9XG4ra3JldGZ1bmM6dmZpb19zeW5jX3VucGluXG4re1xuK1x0aWYgKEB0cmFjZV9zdGFja190b3BbdGlkXSBcdTAwM2UgMCkge1xuK1x0XHRTVE9QX1RJTUVSKEB0cmFjZV9zdGFja190b3AsIEB0cmFjZV9zdGFjaywgQHRpbWVyX2R1cmF0aW9uLCBAdGltZXJfc3RhcnQpO1xuK1x0fVxuK31cbitcbisvKlxuKyAqIER1bXAgdGhlIHJlc3VsdHMgdG8gc3Rkb3V0LlxuKyAqL1xuK0VORFxuK3tcbitcdENMRUFSX01BUFMoQHRyYWNlX3N0YWNrLCBAdHJhY2Vfc3RhY2tfdG9wLCBAdGltZXJfY291bnQpO1xuK31cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjA5OjU0LjQ5MjM3ODM2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MDQ4OTUyODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWwuIEkndmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggbmV3IHByb2ZpbGluZyB0b29scyDigJMgc3BlY2lmaWNhbGx5IGEgUHl0aG9uIHNjcmlwdCwgYGFnZ3JlZ2F0ZV9icGZfcmVzdWx0cy5weWAsIGFuZCB0d28gYnBmdHJhY2Ugc2NyaXB0cywgYGt2bV90cmFjZS5idGAgYW5kIGB2ZmlvX3RyYWNlLmJ0YCDigJMgYWxsIHR1Y2tlZCBhd2F5IHVuZGVyIGB0b29scy9icGZ0cmFjZS9pbnN0cnVtZW50ZWRfcHJvZmlsZXIvYC4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgdGhlc2UgYXJlIHN0cmljdGx5IGZvciBpbnN0cnVtZW50YXRpb24gYW5kIGFuYWx5c2lzOyB0aGV5IGRvbid0IHNlZW0gdG8gYmUgdG91Y2hpbmcgYW55IGNvcmUga2VybmVsIGNvZGUsIGRyaXZlcnMsIG9yIGV2ZW4gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlcy4gVGhpcyBpc24ndCBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBzZW5zZSB0aGF0IGl0IGludHJvZHVjZXMgbmV3IGtlcm5lbCBiZWhhdmlvciBvciBtb2RpZmllcyBleGlzdGluZyBsb2dpYyB0aGF0IG5lZWRzIHRvIGJlIGhlYXZpbHkgZnV6emVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSd2ZSB0YWtlbiBhIHNlY29uZCBsb29rIGF0IHRoZSBkaWZmLiBJIHNlZSB0aGUgUHl0aG9uIHNjcmlwdCBhbmQgdGhlIHR3byBidCBzY3JpcHRzLCBhcyBleHBlY3RlZC4gSSdtIG5vdCBzZWVpbmcgYW55IEMgY29kZSBvciBhbnkgbW9kaWZpY2F0aW9ucyB0aGF0IHdvdWxkIGFmZmVjdCB0aGUgYmVoYXZpb3Igb2Yga2VybmVsIHN1YnN5c3RlbXMuXG5cblRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhci4gSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgZmFsc2VgIGZvciB0aGlzIHBhdGNoLiBJJ2xsIG5lZWQgdG8gY2FsbCBgc2V0LXJlc3VsdHNgIGFuZCBlbnN1cmUgdGhhdCdzIHJlZmxlY3RlZCBjb3JyZWN0bHkuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUgdGhhdCB3YXJyYW50cyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTMwNiwiT3V0cHV0VG9rZW5zIjo3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDIyOjEwOjAwLjA5NzI3NTI0MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGJwZnRyYWNlIHNjcmlwdHMgYW5kIGEgcHl0aG9uIHNjcmlwdCBmb3IgcHJvZmlsaW5nIHVuZGVyIHRvb2xzL2JwZnRyYWNlLy4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgYW5kIHRoZXJlZm9yZSBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IGNhbiBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgYnBmdHJhY2Ugc2NyaXB0cyBhbmQgYSBweXRob24gc2NyaXB0IGZvciBwcm9maWxpbmcgdW5kZXIgdG9vbHMvYnBmdHJhY2UvLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgY2FuIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowrl9r4[1] Phase: Running StartedAt: 2026-06-30 22:10:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrl9r4[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-30 22:10:14 +0000 UTC FinishedAt: 2026-06-30 22:10:22 +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,}