Name: series-workflowjkv2r Phase: Failed StartedAt: 2026-08-01 22:39:02 +0000 UTC FinishedAt: 2026-08-01 22:40:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjkv2r[0] Phase: Succeeded StartedAt: 2026-08-01 22:39:02 +0000 UTC FinishedAt: 2026-08-01 22:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjkv2r[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 22:39:02 +0000 UTC FinishedAt: 2026-08-01 22:40:32 +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+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYW4gdW51c2VkIGZ1bmN0aW9uIGBrdGltZV9nZXRfY2xvY2tfdHM2NGAgYW5kIGFkZHMgYF9fbXVzdF9jaGVja2AgYW5ub3RhdGlvbnMgdG8gYGt0aW1lX2dldF9hdXhgIGFuZCBga3RpbWVfZ2V0X2F1eF90czY0YC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWEyNjI2YjZiZjBiOGVmODM4YzczNjlmYTAyM2Q3YWI1ZTM1ZTZlZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMjI6NDA6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIGIvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXG5pbmRleCBiNDE5MWE4NzNjMzkwLi41NjEzMTNiNWNiNmQ0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmhcbkBAIC00NCw3ICYjNDM7NDQsNiBAQCBleHRlcm4gdm9pZCBrdGltZV9nZXRfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuIGV4dGVybiB2b2lkIGt0aW1lX2dldF9yZWFsX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnR2KTtcbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuLWV4dGVybiB2b2lkIGt0aW1lX2dldF9jbG9ja190czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcbiBcbiAvKiBNdWx0aWdyYWluIHRpbWVzdGFtcCBpbnRlcmZhY2VzICovXG4gZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2NvYXJzZV9yZWFsX3RzNjRfbWcoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcbkBAIC0yNjgsMTEgJiM0MzsyNjcsMTQgQEAgZXh0ZXJuIHZvaWQgdGltZWtlZXBpbmdfaW5qZWN0X3NsZWVwdGltZTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICpkZWx0YSk7XG4gICogQXV4aWxpYXJ5IGNsb2NrIGludGVyZmFjZXNcbiAgKi9cbiAjaWZkZWYgQ09ORklHX1BPU0lYX0FVWF9DTE9DS1Ncbi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpO1xuLWV4dGVybiBib29sIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCk7XG4mIzQzO2V4dGVybiBib29sIF9fbXVzdF9jaGVjayBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpO1xuJiM0MztleHRlcm4gYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KTtcbiAjZWxzZVxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpIHsgcmV0dXJuIGZhbHNlOyB9XG4tc3RhdGljIGlubGluZSBib29sIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCkgeyByZXR1cm4gZmFsc2U7IH1cbiYjNDM7c3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVjayBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpIHsgcmV0dXJuIGZhbHNlOyB9XG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4gI2VuZGlmXG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNcbmluZGV4IDk3ZGIyZTkzOTNmOWQuLjI5YjJhMzhiMjdiNGUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXG5AQCAtMTkzNyw0MCAmIzQzOzE5MzcsNiBAQCB2b2lkIGt0aW1lX2dldF9yYXdfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4gfVxuIEVYUE9SVF9TWU1CT0woa3RpbWVfZ2V0X3Jhd190czY0KTtcbiBcbi0vKipcbi0gKiBrdGltZV9nZXRfY2xvY2tfdHM2NCAtIFJldHVybnMgdGltZSBvZiBhIGNsb2NrIGluIGEgdGltZXNwZWNcbi0gKiBAaWQ6XHRcdFBPU0lYIGNsb2NrIElEIG9mIHRoZSBjbG9jayB0byByZWFkXG4tICogQHRzOlx0XHRQb2ludGVyIHRvIHRoZSB0aW1lc3BlYzY0IHRvIGJlIHNldFxuLSAqXG4tICogVGhlIHRpbWVzdGFtcCBpcyBpbnZhbGlkYXRlZCAoQHRzLVx1MDAzZXNlYyBpcyBzZXQgdG8gLTEpIGlmIHRoZVxuLSAqIGNsb2NrIEBpZCBpcyBub3QgYXZhaWxhYmxlLlxuLSAqL1xuLXZvaWQga3RpbWVfZ2V0X2Nsb2NrX3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4te1xuLVx0LyogSW52YWxpZGF0ZSB0aW1lIHN0YW1wICovXG4tXHR0cy1cdTAwM2V0dl9zZWMgPSAtMTtcbi1cdHRzLVx1MDAzZXR2X25zZWMgPSAwO1xuLVxuLVx0c3dpdGNoIChpZCkge1xuLVx0Y2FzZSBDTE9DS19SRUFMVElNRTpcbi1cdFx0a3RpbWVfZ2V0X3JlYWxfdHM2NCh0cyk7XG4tXHRcdHJldHVybjtcbi1cdGNhc2UgQ0xPQ0tfTU9OT1RPTklDOlxuLVx0XHRrdGltZV9nZXRfdHM2NCh0cyk7XG4tXHRcdHJldHVybjtcbi1cdGNhc2UgQ0xPQ0tfTU9OT1RPTklDX1JBVzpcbi1cdFx0a3RpbWVfZ2V0X3Jhd190czY0KHRzKTtcbi1cdFx0cmV0dXJuO1xuLVx0Y2FzZSBDTE9DS19BVVggLi4uIENMT0NLX0FVWF9MQVNUOlxuLVx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUE9TSVhfQVVYX0NMT0NLUykpXG4tXHRcdFx0a3RpbWVfZ2V0X2F1eF90czY0KGlkLCB0cyk7XG4tXHRcdHJldHVybjtcbi1cdGRlZmF1bHQ6XG4tXHRcdFdBUk5fT05fT05DRSgxKTtcbi1cdH1cbi19XG4tRVhQT1JUX1NZTUJPTF9HUEwoa3RpbWVfZ2V0X2Nsb2NrX3RzNjQpO1xuLVxuIC8qKlxuICAqIHRpbWVrZWVwaW5nX3ZhbGlkX2Zvcl9ocmVzIC0gQ2hlY2sgaWYgdGltZWtlZXBpbmcgaXMgc3VpdGFibGUgZm9yIGhyZXNcbiAgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlYTI2MjZiNmJmMGI4ZWY4MzhjNzM2OWZhMDIzZDdhYjVlMzVlNmVkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAyMjo0MDoxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaCBiL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaAppbmRleCBiNDE5MWE4NzNjMzkwLi41NjEzMTNiNWNiNmQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oCkBAIC00NCw3ICYjNDM7NDQsNiBAQCBleHRlcm4gdm9pZCBrdGltZV9nZXRfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwogZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHYpOwogZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2NvYXJzZV90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwotZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2Nsb2NrX3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwogCiAvKiBNdWx0aWdyYWluIHRpbWVzdGFtcCBpbnRlcmZhY2VzICovCiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NF9tZyhzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwpAQCAtMjY4LDExICYjNDM7MjY3LDE0IEBAIGV4dGVybiB2b2lkIHRpbWVrZWVwaW5nX2luamVjdF9zbGVlcHRpbWU2NChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqZGVsdGEpOwogICogQXV4aWxpYXJ5IGNsb2NrIGludGVyZmFjZXMKICAqLwogI2lmZGVmIENPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTCi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpOwotZXh0ZXJuIGJvb2wga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KTsKJiM0MztleHRlcm4gYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KTsKJiM0MztleHRlcm4gYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KTsKICNlbHNlCi1zdGF0aWMgaW5saW5lIGJvb2wga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KSB7IHJldHVybiBmYWxzZTsgfQotc3RhdGljIGlubGluZSBib29sIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCkgeyByZXR1cm4gZmFsc2U7IH0KJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIGt0aW1lX2dldF9hdXgoY2xvY2tpZF90IGlkLCBrdGltZV90ICprdCkgeyByZXR1cm4gZmFsc2U7IH0KJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCkKJiM0Mzt7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiAjZW5kaWYKIAogLyoqCmRpZmYgLS1naXQgYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jIGIva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYwppbmRleCA5N2RiMmU5MzkzZjlkLi4yOWIyYTM4YjI3YjRlIDEwMDY0NAotLS0gYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmMKQEAgLTE5MzcsNDAgJiM0MzsxOTM3LDYgQEAgdm9pZCBrdGltZV9nZXRfcmF3X3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKQogfQogRVhQT1JUX1NZTUJPTChrdGltZV9nZXRfcmF3X3RzNjQpOwogCi0vKioKLSAqIGt0aW1lX2dldF9jbG9ja190czY0IC0gUmV0dXJucyB0aW1lIG9mIGEgY2xvY2sgaW4gYSB0aW1lc3BlYwotICogQGlkOgkJUE9TSVggY2xvY2sgSUQgb2YgdGhlIGNsb2NrIHRvIHJlYWQKLSAqIEB0czoJCVBvaW50ZXIgdG8gdGhlIHRpbWVzcGVjNjQgdG8gYmUgc2V0Ci0gKgotICogVGhlIHRpbWVzdGFtcCBpcyBpbnZhbGlkYXRlZCAoQHRzLSZndDtzZWMgaXMgc2V0IHRvIC0xKSBpZiB0aGUKLSAqIGNsb2NrIEBpZCBpcyBub3QgYXZhaWxhYmxlLgotICovCi12b2lkIGt0aW1lX2dldF9jbG9ja190czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKnRzKQotewotCS8qIEludmFsaWRhdGUgdGltZSBzdGFtcCAqLwotCXRzLSZndDt0dl9zZWMgPSAtMTsKLQl0cy0mZ3Q7dHZfbnNlYyA9IDA7Ci0KLQlzd2l0Y2ggKGlkKSB7Ci0JY2FzZSBDTE9DS19SRUFMVElNRToKLQkJa3RpbWVfZ2V0X3JlYWxfdHM2NCh0cyk7Ci0JCXJldHVybjsKLQljYXNlIENMT0NLX01PTk9UT05JQzoKLQkJa3RpbWVfZ2V0X3RzNjQodHMpOwotCQlyZXR1cm47Ci0JY2FzZSBDTE9DS19NT05PVE9OSUNfUkFXOgotCQlrdGltZV9nZXRfcmF3X3RzNjQodHMpOwotCQlyZXR1cm47Ci0JY2FzZSBDTE9DS19BVVggLi4uIENMT0NLX0FVWF9MQVNUOgotCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfUE9TSVhfQVVYX0NMT0NLUykpCi0JCQlrdGltZV9nZXRfYXV4X3RzNjQoaWQsIHRzKTsKLQkJcmV0dXJuOwotCWRlZmF1bHQ6Ci0JCVdBUk5fT05fT05DRSgxKTsKLQl9Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChrdGltZV9nZXRfY2xvY2tfdHM2NCk7Ci0KIC8qKgogICogdGltZWtlZXBpbmdfdmFsaWRfZm9yX2hyZXMgLSBDaGVjayBpZiB0aW1la2VlcGluZyBpcyBzdWl0YWJsZSBmb3IgaHJlcwogICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTMKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVGltZWtlZXBpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBwdWxsaW5nIGBrdGltZV9nZXRfY2xvY2tfdHM2NGAgZnJvbSBgaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oYCBhbmQgYGtlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNgLiAgSSBzZWUgdGhlIHJlbW92YWwsIGFuZCBhbHNvIHRoZSBhZGRpdGlvbiBvZiBgX19tdXN0X2NoZWNrYCB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBidXQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSByZW1vdmFsIG9mIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uIEhtbSwgYGt0aW1lX2dldF9jbG9ja190czY0YC4uLiBpcyB0aGF0IGFjdHVhbGx5IHVzZWQgYW55d2hlcmU/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBiZWZvcmUgSSBzcGVuZCBhbnkgbW9yZSB0aW1lLiBJZiBpdCYjMzk7cyBqdXN0IGRlYWQgY29kZSwgdGhpcyBpc24mIzM5O3QgZ29pbmcgdG8gYmUgd29ydGggYSBkZWVwIGRpdmUgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZSAqbm8qIG90aGVyIGNoYW5nZXMgaW4gdGhlIGRpZmYuIEFscmlnaHQsIHNvIHRoZSBkaWZmICpvbmx5KiBzaG93cyByZW1vdmFsIG9mIHRoZSBmdW5jdGlvbiBhbmQgdGhlIGFkZGl0aW9uIG9mIGBfX211c3RfY2hlY2tgLiBHb29kLiBOb3csIEkgbmVlZCB0byBjaGVjayB3aGVyZSBga3RpbWVfZ2V0X2Nsb2NrX3RzNjRgIGlzIHVzZWQgaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCBhbnl3aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t0aW1lX2dldF9jbG9ja190czY0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDExCgkJCQkJCQlvdXRwdXQ6IDkxCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoZSBwcmltYXJ5IGFjdGlvbiBpcyB0aGUgcmVtb3ZhbCBvZiBhIGZ1bmN0aW9uIHRoYXQgaXNuJiMzOTt0IGFjdHVhbGx5IHV0aWxpemVkIGFueXdoZXJlIGluIHRoZSBjb2RlYmFzZS4gRXNzZW50aWFsbHksIGEgYml0IG9mIGRlYWQgY29kZSByZW1vdmFsLiBCZXlvbmQgdGhhdCwgaXQgYWxzbyBzcHJpbmtsZXMgaW4gc29tZSBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyBvbiBhIGZldyBvdGhlciBmdW5jdGlvbnMuCgpHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9qZWN0JiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgdGhlIHByaW5jaXBsZXMgb2YgZnV6emluZywgdGhpcyBzdHJpa2VzIG1lIGFzIGEgbm9uLWZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgZGVsZXRpb24gb2YgdW51c2VkIGNvZGUgd29uJiMzOTt0IGludHJvZHVjZSBuZXcgYXR0YWNrIHN1cmZhY2VzIG9yIHZ1bG5lcmFiaWxpdGllcyBkZXRlY3RhYmxlIHRocm91Z2ggZnV6emluZywgbm9yIHdpbGwgdGhlIGFkZGl0aW9uIG9mIGBfX211c3RfY2hlY2tgIGFzIHRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBmdW5jdGlvbiYjMzk7cyBmdW5jdGlvbmFsaXR5LCBvciB0aGUgd2F5IHRoZSBwcm9ncmFtIGJlaGF2ZXMgZHVyaW5nIG5vcm1hbCBleGVjdXRpb24uIFRoaXMgaXMgYWJvdXQgY29kZSBoeWdpZW5lIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50aW5nIGZ1dHVyZSBtaXN1c2UsIGJ1dCBpdCYjMzk7cyBub3QgYSBjaGFuZ2UgdGhhdCByZXF1aXJlcywgb3Igd291bGQgZXZlbiBiZW5lZml0IGZyb20sIGZ1enppbmcuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyB0byBgZmFsc2VgLiBObyBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYW4gdW51c2VkIGZ1bmN0aW9uIGBrdGltZV9nZXRfY2xvY2tfdHM2NGAgYW5kIGFkZHMgYF9fbXVzdF9jaGVja2AgYW5ub3RhdGlvbnMgdG8gYGt0aW1lX2dldF9hdXhgIGFuZCBga3RpbWVfZ2V0X2F1eF90czY0YC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6NDA6MTEuMjI3ODcxMjczWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg4NTk3NzQxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjQwOjExLjIyNzg3NzQ0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3MzYxMTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWEyNjI2YjZiZjBiOGVmODM4YzczNjlmYTAyM2Q3YWI1ZTM1ZTZlZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjQwOjEwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaCBiL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaFxcbmluZGV4IGI0MTkxYTg3M2MzOTAuLjU2MTMxM2I1Y2I2ZDQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXFxuQEAgLTQ0LDcgKzQ0LDYgQEAgZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcXG4gZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHYpO1xcbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcXG4gZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2NvYXJzZV9yZWFsX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcXG4tZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2Nsb2NrX3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xcbiBcXG4gLyogTXVsdGlncmFpbiB0aW1lc3RhbXAgaW50ZXJmYWNlcyAqL1xcbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NF9tZyhzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xcbkBAIC0yNjgsMTEgKzI2NywxNCBAQCBleHRlcm4gdm9pZCB0aW1la2VlcGluZ19pbmplY3Rfc2xlZXB0aW1lNjQoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKmRlbHRhKTtcXG4gICogQXV4aWxpYXJ5IGNsb2NrIGludGVyZmFjZXNcXG4gICovXFxuICNpZmRlZiBDT05GSUdfUE9TSVhfQVVYX0NMT0NLU1xcbi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpO1xcbi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4X3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqa3QpO1xcbitleHRlcm4gYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KTtcXG4rZXh0ZXJuIGJvb2wgX19tdXN0X2NoZWNrIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCk7XFxuICNlbHNlXFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdGltZV9nZXRfYXV4X3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqa3QpIHsgcmV0dXJuIGZhbHNlOyB9XFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KSB7IHJldHVybiBmYWxzZTsgfVxcbitzdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdClcXG4re1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuK31cXG4gI2VuZGlmXFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNcXG5pbmRleCA5N2RiMmU5MzkzZjlkLi4yOWIyYTM4YjI3YjRlIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNcXG4rKysgYi9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXFxuQEAgLTE5MzcsNDAgKzE5MzcsNiBAQCB2b2lkIGt0aW1lX2dldF9yYXdfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTChrdGltZV9nZXRfcmF3X3RzNjQpO1xcbiBcXG4tLyoqXFxuLSAqIGt0aW1lX2dldF9jbG9ja190czY0IC0gUmV0dXJucyB0aW1lIG9mIGEgY2xvY2sgaW4gYSB0aW1lc3BlY1xcbi0gKiBAaWQ6XFx0XFx0UE9TSVggY2xvY2sgSUQgb2YgdGhlIGNsb2NrIHRvIHJlYWRcXG4tICogQHRzOlxcdFxcdFBvaW50ZXIgdG8gdGhlIHRpbWVzcGVjNjQgdG8gYmUgc2V0XFxuLSAqXFxuLSAqIFRoZSB0aW1lc3RhbXAgaXMgaW52YWxpZGF0ZWQgKEB0cy1cXHUwMDNlc2VjIGlzIHNldCB0byAtMSkgaWYgdGhlXFxuLSAqIGNsb2NrIEBpZCBpcyBub3QgYXZhaWxhYmxlLlxcbi0gKi9cXG4tdm9pZCBrdGltZV9nZXRfY2xvY2tfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4te1xcbi1cXHQvKiBJbnZhbGlkYXRlIHRpbWUgc3RhbXAgKi9cXG4tXFx0dHMtXFx1MDAzZXR2X3NlYyA9IC0xO1xcbi1cXHR0cy1cXHUwMDNldHZfbnNlYyA9IDA7XFxuLVxcbi1cXHRzd2l0Y2ggKGlkKSB7XFxuLVxcdGNhc2UgQ0xPQ0tfUkVBTFRJTUU6XFxuLVxcdFxcdGt0aW1lX2dldF9yZWFsX3RzNjQodHMpO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdGNhc2UgQ0xPQ0tfTU9OT1RPTklDOlxcbi1cXHRcXHRrdGltZV9nZXRfdHM2NCh0cyk7XFxuLVxcdFxcdHJldHVybjtcXG4tXFx0Y2FzZSBDTE9DS19NT05PVE9OSUNfUkFXOlxcbi1cXHRcXHRrdGltZV9nZXRfcmF3X3RzNjQodHMpO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdGNhc2UgQ0xPQ0tfQVVYIC4uLiBDTE9DS19BVVhfTEFTVDpcXG4tXFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BPU0lYX0FVWF9DTE9DS1MpKVxcbi1cXHRcXHRcXHRrdGltZV9nZXRfYXV4X3RzNjQoaWQsIHRzKTtcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXHRkZWZhdWx0Olxcbi1cXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuLVxcdH1cXG4tfVxcbi1FWFBPUlRfU1lNQk9MX0dQTChrdGltZV9nZXRfY2xvY2tfdHM2NCk7XFxuLVxcbiAvKipcXG4gICogdGltZWtlZXBpbmdfdmFsaWRfZm9yX2hyZXMgLSBDaGVjayBpZiB0aW1la2VlcGluZyBpcyBzdWl0YWJsZSBmb3IgaHJlc1xcbiAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6NDA6MTEuNjk2MDQ3NzQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTQxNzc5NTQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVhMjYyNmI2YmYwYjhlZjgzOGM3MzY5ZmEwMjNkN2FiNWUzNWU2ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjQwOjEwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIGIvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXG5pbmRleCBiNDE5MWE4NzNjMzkwLi41NjEzMTNiNWNiNmQ0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmhcbkBAIC00NCw3ICs0NCw2IEBAIGV4dGVybiB2b2lkIGt0aW1lX2dldF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7XG4gZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHYpO1xuIGV4dGVybiB2b2lkIGt0aW1lX2dldF9jb2Fyc2VfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuIGV4dGVybiB2b2lkIGt0aW1lX2dldF9jb2Fyc2VfcmVhbF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7XG4tZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2Nsb2NrX3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuIFxuIC8qIE11bHRpZ3JhaW4gdGltZXN0YW1wIGludGVyZmFjZXMgKi9cbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NF9tZyhzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuQEAgLTI2OCwxMSArMjY3LDE0IEBAIGV4dGVybiB2b2lkIHRpbWVrZWVwaW5nX2luamVjdF9zbGVlcHRpbWU2NChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqZGVsdGEpO1xuICAqIEF1eGlsaWFyeSBjbG9jayBpbnRlcmZhY2VzXG4gICovXG4gI2lmZGVmIENPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTXG4tZXh0ZXJuIGJvb2wga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KTtcbi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4X3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqa3QpO1xuK2V4dGVybiBib29sIF9fbXVzdF9jaGVjayBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpO1xuK2V4dGVybiBib29sIF9fbXVzdF9jaGVjayBrdGltZV9nZXRfYXV4X3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqa3QpO1xuICNlbHNlXG4tc3RhdGljIGlubGluZSBib29sIGt0aW1lX2dldF9hdXgoY2xvY2tpZF90IGlkLCBrdGltZV90ICprdCkgeyByZXR1cm4gZmFsc2U7IH1cbi1zdGF0aWMgaW5saW5lIGJvb2wga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KSB7IHJldHVybiBmYWxzZTsgfVxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KSB7IHJldHVybiBmYWxzZTsgfVxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KVxuK3tcbitcdHJldHVybiBmYWxzZTtcbit9XG4gI2VuZGlmXG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNcbmluZGV4IDk3ZGIyZTkzOTNmOWQuLjI5YjJhMzhiMjdiNGUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXG4rKysgYi9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXG5AQCAtMTkzNyw0MCArMTkzNyw2IEBAIHZvaWQga3RpbWVfZ2V0X3Jhd190czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbiB9XG4gRVhQT1JUX1NZTUJPTChrdGltZV9nZXRfcmF3X3RzNjQpO1xuIFxuLS8qKlxuLSAqIGt0aW1lX2dldF9jbG9ja190czY0IC0gUmV0dXJucyB0aW1lIG9mIGEgY2xvY2sgaW4gYSB0aW1lc3BlY1xuLSAqIEBpZDpcdFx0UE9TSVggY2xvY2sgSUQgb2YgdGhlIGNsb2NrIHRvIHJlYWRcbi0gKiBAdHM6XHRcdFBvaW50ZXIgdG8gdGhlIHRpbWVzcGVjNjQgdG8gYmUgc2V0XG4tICpcbi0gKiBUaGUgdGltZXN0YW1wIGlzIGludmFsaWRhdGVkIChAdHMtXHUwMDNlc2VjIGlzIHNldCB0byAtMSkgaWYgdGhlXG4tICogY2xvY2sgQGlkIGlzIG5vdCBhdmFpbGFibGUuXG4tICovXG4tdm9pZCBrdGltZV9nZXRfY2xvY2tfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbi17XG4tXHQvKiBJbnZhbGlkYXRlIHRpbWUgc3RhbXAgKi9cbi1cdHRzLVx1MDAzZXR2X3NlYyA9IC0xO1xuLVx0dHMtXHUwMDNldHZfbnNlYyA9IDA7XG4tXG4tXHRzd2l0Y2ggKGlkKSB7XG4tXHRjYXNlIENMT0NLX1JFQUxUSU1FOlxuLVx0XHRrdGltZV9nZXRfcmVhbF90czY0KHRzKTtcbi1cdFx0cmV0dXJuO1xuLVx0Y2FzZSBDTE9DS19NT05PVE9OSUM6XG4tXHRcdGt0aW1lX2dldF90czY0KHRzKTtcbi1cdFx0cmV0dXJuO1xuLVx0Y2FzZSBDTE9DS19NT05PVE9OSUNfUkFXOlxuLVx0XHRrdGltZV9nZXRfcmF3X3RzNjQodHMpO1xuLVx0XHRyZXR1cm47XG4tXHRjYXNlIENMT0NLX0FVWCAuLi4gQ0xPQ0tfQVVYX0xBU1Q6XG4tXHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTKSlcbi1cdFx0XHRrdGltZV9nZXRfYXV4X3RzNjQoaWQsIHRzKTtcbi1cdFx0cmV0dXJuO1xuLVx0ZGVmYXVsdDpcbi1cdFx0V0FSTl9PTl9PTkNFKDEpO1xuLVx0fVxuLX1cbi1FWFBPUlRfU1lNQk9MX0dQTChrdGltZV9nZXRfY2xvY2tfdHM2NCk7XG4tXG4gLyoqXG4gICogdGltZWtlZXBpbmdfdmFsaWRfZm9yX2hyZXMgLSBDaGVjayBpZiB0aW1la2VlcGluZyBpcyBzdWl0YWJsZSBmb3IgaHJlc1xuICAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6NDA6MTEuNjk2MDQ5NDA0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzOTQ3MjA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUaW1la2VlcGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcHVsbGluZyBga3RpbWVfZ2V0X2Nsb2NrX3RzNjRgIGZyb20gYGluY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaGAgYW5kIGBrZXJuZWwvdGltZS90aW1la2VlcGluZy5jYC4gIEkgc2VlIHRoZSByZW1vdmFsLCBhbmQgYWxzbyB0aGUgYWRkaXRpb24gb2YgYF9fbXVzdF9jaGVja2AgdG8gYGt0aW1lX2dldF9hdXhgIGFuZCBga3RpbWVfZ2V0X2F1eF90czY0YC4gVGhhdCdzIGludGVyZXN0aW5nLCBidXQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSByZW1vdmFsIG9mIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uIEhtbSwgYGt0aW1lX2dldF9jbG9ja190czY0YC4uLiBpcyB0aGF0IGFjdHVhbGx5IHVzZWQgYW55d2hlcmU/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBiZWZvcmUgSSBzcGVuZCBhbnkgbW9yZSB0aW1lLiBJZiBpdCdzIGp1c3QgZGVhZCBjb2RlLCB0aGlzIGlzbid0IGdvaW5nIHRvIGJlIHdvcnRoIGEgZGVlcCBkaXZlIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gTGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZSAqbm8qIG90aGVyIGNoYW5nZXMgaW4gdGhlIGRpZmYuIEFscmlnaHQsIHNvIHRoZSBkaWZmICpvbmx5KiBzaG93cyByZW1vdmFsIG9mIHRoZSBmdW5jdGlvbiBhbmQgdGhlIGFkZGl0aW9uIG9mIGBfX211c3RfY2hlY2tgLiBHb29kLiBOb3csIEkgbmVlZCB0byBjaGVjayB3aGVyZSBga3RpbWVfZ2V0X2Nsb2NrX3RzNjRgIGlzIHVzZWQgaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc2VlIGlmIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgY2FsbGVkIGFueXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTUzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6NDA6MTUuNjM1NTI0NDc5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDc0NTUwMzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt0aW1lX2dldF9jbG9ja190czY0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjo0MDoxNy40NDI5ODg1NTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjcwODI1OTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgdGhlIHByaW1hcnkgYWN0aW9uIGlzIHRoZSByZW1vdmFsIG9mIGEgZnVuY3Rpb24gdGhhdCBpc24ndCBhY3R1YWxseSB1dGlsaXplZCBhbnl3aGVyZSBpbiB0aGUgY29kZWJhc2UuIEVzc2VudGlhbGx5LCBhIGJpdCBvZiBkZWFkIGNvZGUgcmVtb3ZhbC4gQmV5b25kIHRoYXQsIGl0IGFsc28gc3ByaW5rbGVzIGluIHNvbWUgYF9fbXVzdF9jaGVja2AgYW5ub3RhdGlvbnMgb24gYSBmZXcgb3RoZXIgZnVuY3Rpb25zLlxuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9qZWN0J3MgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgcHJpbmNpcGxlcyBvZiBmdXp6aW5nLCB0aGlzIHN0cmlrZXMgbWUgYXMgYSBub24tZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBkZWxldGlvbiBvZiB1bnVzZWQgY29kZSB3b24ndCBpbnRyb2R1Y2UgbmV3IGF0dGFjayBzdXJmYWNlcyBvciB2dWxuZXJhYmlsaXRpZXMgZGV0ZWN0YWJsZSB0aHJvdWdoIGZ1enppbmcsIG5vciB3aWxsIHRoZSBhZGRpdGlvbiBvZiBgX19tdXN0X2NoZWNrYCBhcyB0aGlzIGRvZXMgbm90IGNoYW5nZSB0aGUgZnVuY3Rpb24ncyBmdW5jdGlvbmFsaXR5LCBvciB0aGUgd2F5IHRoZSBwcm9ncmFtIGJlaGF2ZXMgZHVyaW5nIG5vcm1hbCBleGVjdXRpb24uIFRoaXMgaXMgYWJvdXQgY29kZSBoeWdpZW5lIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50aW5nIGZ1dHVyZSBtaXN1c2UsIGJ1dCBpdCdzIG5vdCBhIGNoYW5nZSB0aGF0IHJlcXVpcmVzLCBvciB3b3VsZCBldmVuIGJlbmVmaXQgZnJvbSwgZnV6emluZy4gVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgdG8gYGZhbHNlYC4gTm8gZnV6emluZyBpcyB3YXJyYW50ZWQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxMSwiT3V0cHV0VG9rZW5zIjo5MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjQwOjIxLjExMzgxNzI2OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYW4gdW51c2VkIGZ1bmN0aW9uIGBrdGltZV9nZXRfY2xvY2tfdHM2NGAgYW5kIGFkZHMgYF9fbXVzdF9jaGVja2AgYW5ub3RhdGlvbnMgdG8gYGt0aW1lX2dldF9hdXhgIGFuZCBga3RpbWVfZ2V0X2F1eF90czY0YC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjkv2r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 22:39:02 +0000 UTC FinishedAt: 2026-08-01 22:40:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYW4gdW51c2VkIGZ1bmN0aW9uIGBrdGltZV9nZXRfY2xvY2tfdHM2NGAgYW5kIGFkZHMgYF9fbXVzdF9jaGVja2AgYW5ub3RhdGlvbnMgdG8gYGt0aW1lX2dldF9hdXhgIGFuZCBga3RpbWVfZ2V0X2F1eF90czY0YC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZWEyNjI2YjZiZjBiOGVmODM4YzczNjlmYTAyM2Q3YWI1ZTM1ZTZlZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMjI6NDA6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIGIvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXG5pbmRleCBiNDE5MWE4NzNjMzkwLi41NjEzMTNiNWNiNmQ0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmhcbkBAIC00NCw3ICYjNDM7NDQsNiBAQCBleHRlcm4gdm9pZCBrdGltZV9nZXRfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuIGV4dGVybiB2b2lkIGt0aW1lX2dldF9yZWFsX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnR2KTtcbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuLWV4dGVybiB2b2lkIGt0aW1lX2dldF9jbG9ja190czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcbiBcbiAvKiBNdWx0aWdyYWluIHRpbWVzdGFtcCBpbnRlcmZhY2VzICovXG4gZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2NvYXJzZV9yZWFsX3RzNjRfbWcoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcbkBAIC0yNjgsMTEgJiM0MzsyNjcsMTQgQEAgZXh0ZXJuIHZvaWQgdGltZWtlZXBpbmdfaW5qZWN0X3NsZWVwdGltZTY0KGNvbnN0IHN0cnVjdCB0aW1lc3BlYzY0ICpkZWx0YSk7XG4gICogQXV4aWxpYXJ5IGNsb2NrIGludGVyZmFjZXNcbiAgKi9cbiAjaWZkZWYgQ09ORklHX1BPU0lYX0FVWF9DTE9DS1Ncbi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpO1xuLWV4dGVybiBib29sIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCk7XG4mIzQzO2V4dGVybiBib29sIF9fbXVzdF9jaGVjayBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpO1xuJiM0MztleHRlcm4gYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KTtcbiAjZWxzZVxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpIHsgcmV0dXJuIGZhbHNlOyB9XG4tc3RhdGljIGlubGluZSBib29sIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCkgeyByZXR1cm4gZmFsc2U7IH1cbiYjNDM7c3RhdGljIGlubGluZSBib29sIF9fbXVzdF9jaGVjayBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpIHsgcmV0dXJuIGZhbHNlOyB9XG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGZhbHNlO1xuJiM0Mzt9XG4gI2VuZGlmXG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNcbmluZGV4IDk3ZGIyZTkzOTNmOWQuLjI5YjJhMzhiMjdiNGUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXG5AQCAtMTkzNyw0MCAmIzQzOzE5MzcsNiBAQCB2b2lkIGt0aW1lX2dldF9yYXdfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4gfVxuIEVYUE9SVF9TWU1CT0woa3RpbWVfZ2V0X3Jhd190czY0KTtcbiBcbi0vKipcbi0gKiBrdGltZV9nZXRfY2xvY2tfdHM2NCAtIFJldHVybnMgdGltZSBvZiBhIGNsb2NrIGluIGEgdGltZXNwZWNcbi0gKiBAaWQ6XHRcdFBPU0lYIGNsb2NrIElEIG9mIHRoZSBjbG9jayB0byByZWFkXG4tICogQHRzOlx0XHRQb2ludGVyIHRvIHRoZSB0aW1lc3BlYzY0IHRvIGJlIHNldFxuLSAqXG4tICogVGhlIHRpbWVzdGFtcCBpcyBpbnZhbGlkYXRlZCAoQHRzLVx1MDAzZXNlYyBpcyBzZXQgdG8gLTEpIGlmIHRoZVxuLSAqIGNsb2NrIEBpZCBpcyBub3QgYXZhaWxhYmxlLlxuLSAqL1xuLXZvaWQga3RpbWVfZ2V0X2Nsb2NrX3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4te1xuLVx0LyogSW52YWxpZGF0ZSB0aW1lIHN0YW1wICovXG4tXHR0cy1cdTAwM2V0dl9zZWMgPSAtMTtcbi1cdHRzLVx1MDAzZXR2X25zZWMgPSAwO1xuLVxuLVx0c3dpdGNoIChpZCkge1xuLVx0Y2FzZSBDTE9DS19SRUFMVElNRTpcbi1cdFx0a3RpbWVfZ2V0X3JlYWxfdHM2NCh0cyk7XG4tXHRcdHJldHVybjtcbi1cdGNhc2UgQ0xPQ0tfTU9OT1RPTklDOlxuLVx0XHRrdGltZV9nZXRfdHM2NCh0cyk7XG4tXHRcdHJldHVybjtcbi1cdGNhc2UgQ0xPQ0tfTU9OT1RPTklDX1JBVzpcbi1cdFx0a3RpbWVfZ2V0X3Jhd190czY0KHRzKTtcbi1cdFx0cmV0dXJuO1xuLVx0Y2FzZSBDTE9DS19BVVggLi4uIENMT0NLX0FVWF9MQVNUOlxuLVx0XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfUE9TSVhfQVVYX0NMT0NLUykpXG4tXHRcdFx0a3RpbWVfZ2V0X2F1eF90czY0KGlkLCB0cyk7XG4tXHRcdHJldHVybjtcbi1cdGRlZmF1bHQ6XG4tXHRcdFdBUk5fT05fT05DRSgxKTtcbi1cdH1cbi19XG4tRVhQT1JUX1NZTUJPTF9HUEwoa3RpbWVfZ2V0X2Nsb2NrX3RzNjQpO1xuLVxuIC8qKlxuICAqIHRpbWVrZWVwaW5nX3ZhbGlkX2Zvcl9ocmVzIC0gQ2hlY2sgaWYgdGltZWtlZXBpbmcgaXMgc3VpdGFibGUgZm9yIGhyZXNcbiAgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjo0MDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBlYTI2MjZiNmJmMGI4ZWY4MzhjNzM2OWZhMDIzZDdhYjVlMzVlNmVkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMSAyMjo0MDoxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaCBiL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaAppbmRleCBiNDE5MWE4NzNjMzkwLi41NjEzMTNiNWNiNmQ0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oCkBAIC00NCw3ICYjNDM7NDQsNiBAQCBleHRlcm4gdm9pZCBrdGltZV9nZXRfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwogZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHYpOwogZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2NvYXJzZV90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7CiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwotZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2Nsb2NrX3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwogCiAvKiBNdWx0aWdyYWluIHRpbWVzdGFtcCBpbnRlcmZhY2VzICovCiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NF9tZyhzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpOwpAQCAtMjY4LDExICYjNDM7MjY3LDE0IEBAIGV4dGVybiB2b2lkIHRpbWVrZWVwaW5nX2luamVjdF9zbGVlcHRpbWU2NChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqZGVsdGEpOwogICogQXV4aWxpYXJ5IGNsb2NrIGludGVyZmFjZXMKICAqLwogI2lmZGVmIENPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTCi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpOwotZXh0ZXJuIGJvb2wga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KTsKJiM0MztleHRlcm4gYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KTsKJiM0MztleHRlcm4gYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KTsKICNlbHNlCi1zdGF0aWMgaW5saW5lIGJvb2wga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KSB7IHJldHVybiBmYWxzZTsgfQotc3RhdGljIGlubGluZSBib29sIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCkgeyByZXR1cm4gZmFsc2U7IH0KJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIGt0aW1lX2dldF9hdXgoY2xvY2tpZF90IGlkLCBrdGltZV90ICprdCkgeyByZXR1cm4gZmFsc2U7IH0KJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCkKJiM0Mzt7CiYjNDM7CXJldHVybiBmYWxzZTsKJiM0Mzt9CiAjZW5kaWYKIAogLyoqCmRpZmYgLS1naXQgYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jIGIva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYwppbmRleCA5N2RiMmU5MzkzZjlkLi4yOWIyYTM4YjI3YjRlIDEwMDY0NAotLS0gYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmMKQEAgLTE5MzcsNDAgJiM0MzsxOTM3LDYgQEAgdm9pZCBrdGltZV9nZXRfcmF3X3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKQogfQogRVhQT1JUX1NZTUJPTChrdGltZV9nZXRfcmF3X3RzNjQpOwogCi0vKioKLSAqIGt0aW1lX2dldF9jbG9ja190czY0IC0gUmV0dXJucyB0aW1lIG9mIGEgY2xvY2sgaW4gYSB0aW1lc3BlYwotICogQGlkOgkJUE9TSVggY2xvY2sgSUQgb2YgdGhlIGNsb2NrIHRvIHJlYWQKLSAqIEB0czoJCVBvaW50ZXIgdG8gdGhlIHRpbWVzcGVjNjQgdG8gYmUgc2V0Ci0gKgotICogVGhlIHRpbWVzdGFtcCBpcyBpbnZhbGlkYXRlZCAoQHRzLSZndDtzZWMgaXMgc2V0IHRvIC0xKSBpZiB0aGUKLSAqIGNsb2NrIEBpZCBpcyBub3QgYXZhaWxhYmxlLgotICovCi12b2lkIGt0aW1lX2dldF9jbG9ja190czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKnRzKQotewotCS8qIEludmFsaWRhdGUgdGltZSBzdGFtcCAqLwotCXRzLSZndDt0dl9zZWMgPSAtMTsKLQl0cy0mZ3Q7dHZfbnNlYyA9IDA7Ci0KLQlzd2l0Y2ggKGlkKSB7Ci0JY2FzZSBDTE9DS19SRUFMVElNRToKLQkJa3RpbWVfZ2V0X3JlYWxfdHM2NCh0cyk7Ci0JCXJldHVybjsKLQljYXNlIENMT0NLX01PTk9UT05JQzoKLQkJa3RpbWVfZ2V0X3RzNjQodHMpOwotCQlyZXR1cm47Ci0JY2FzZSBDTE9DS19NT05PVE9OSUNfUkFXOgotCQlrdGltZV9nZXRfcmF3X3RzNjQodHMpOwotCQlyZXR1cm47Ci0JY2FzZSBDTE9DS19BVVggLi4uIENMT0NLX0FVWF9MQVNUOgotCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfUE9TSVhfQVVYX0NMT0NLUykpCi0JCQlrdGltZV9nZXRfYXV4X3RzNjQoaWQsIHRzKTsKLQkJcmV0dXJuOwotCWRlZmF1bHQ6Ci0JCVdBUk5fT05fT05DRSgxKTsKLQl9Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChrdGltZV9nZXRfY2xvY2tfdHM2NCk7Ci0KIC8qKgogICogdGltZWtlZXBpbmdfdmFsaWRfZm9yX2hyZXMgLSBDaGVjayBpZiB0aW1la2VlcGluZyBpcyBzdWl0YWJsZSBmb3IgaHJlcwogICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTMKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVGltZWtlZXBpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBwdWxsaW5nIGBrdGltZV9nZXRfY2xvY2tfdHM2NGAgZnJvbSBgaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oYCBhbmQgYGtlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNgLiAgSSBzZWUgdGhlIHJlbW92YWwsIGFuZCBhbHNvIHRoZSBhZGRpdGlvbiBvZiBgX19tdXN0X2NoZWNrYCB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBidXQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSByZW1vdmFsIG9mIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uIEhtbSwgYGt0aW1lX2dldF9jbG9ja190czY0YC4uLiBpcyB0aGF0IGFjdHVhbGx5IHVzZWQgYW55d2hlcmU/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBiZWZvcmUgSSBzcGVuZCBhbnkgbW9yZSB0aW1lLiBJZiBpdCYjMzk7cyBqdXN0IGRlYWQgY29kZSwgdGhpcyBpc24mIzM5O3QgZ29pbmcgdG8gYmUgd29ydGggYSBkZWVwIGRpdmUgZm9yIGZ1enppbmcgcG90ZW50aWFsLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZSAqbm8qIG90aGVyIGNoYW5nZXMgaW4gdGhlIGRpZmYuIEFscmlnaHQsIHNvIHRoZSBkaWZmICpvbmx5KiBzaG93cyByZW1vdmFsIG9mIHRoZSBmdW5jdGlvbiBhbmQgdGhlIGFkZGl0aW9uIG9mIGBfX211c3RfY2hlY2tgLiBHb29kLiBOb3csIEkgbmVlZCB0byBjaGVjayB3aGVyZSBga3RpbWVfZ2V0X2Nsb2NrX3RzNjRgIGlzIHVzZWQgaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCBhbnl3aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t0aW1lX2dldF9jbG9ja190czY0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAyMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDExCgkJCQkJCQlvdXRwdXQ6IDkxCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB0aGF0IHRoZSBwcmltYXJ5IGFjdGlvbiBpcyB0aGUgcmVtb3ZhbCBvZiBhIGZ1bmN0aW9uIHRoYXQgaXNuJiMzOTt0IGFjdHVhbGx5IHV0aWxpemVkIGFueXdoZXJlIGluIHRoZSBjb2RlYmFzZS4gRXNzZW50aWFsbHksIGEgYml0IG9mIGRlYWQgY29kZSByZW1vdmFsLiBCZXlvbmQgdGhhdCwgaXQgYWxzbyBzcHJpbmtsZXMgaW4gc29tZSBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyBvbiBhIGZldyBvdGhlciBmdW5jdGlvbnMuCgpHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9qZWN0JiMzOTtzIGFyY2hpdGVjdHVyZSBhbmQgdGhlIHByaW5jaXBsZXMgb2YgZnV6emluZywgdGhpcyBzdHJpa2VzIG1lIGFzIGEgbm9uLWZ1bmN0aW9uYWwgY2hhbmdlLiBUaGUgZGVsZXRpb24gb2YgdW51c2VkIGNvZGUgd29uJiMzOTt0IGludHJvZHVjZSBuZXcgYXR0YWNrIHN1cmZhY2VzIG9yIHZ1bG5lcmFiaWxpdGllcyBkZXRlY3RhYmxlIHRocm91Z2ggZnV6emluZywgbm9yIHdpbGwgdGhlIGFkZGl0aW9uIG9mIGBfX211c3RfY2hlY2tgIGFzIHRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBmdW5jdGlvbiYjMzk7cyBmdW5jdGlvbmFsaXR5LCBvciB0aGUgd2F5IHRoZSBwcm9ncmFtIGJlaGF2ZXMgZHVyaW5nIG5vcm1hbCBleGVjdXRpb24uIFRoaXMgaXMgYWJvdXQgY29kZSBoeWdpZW5lIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50aW5nIGZ1dHVyZSBtaXN1c2UsIGJ1dCBpdCYjMzk7cyBub3QgYSBjaGFuZ2UgdGhhdCByZXF1aXJlcywgb3Igd291bGQgZXZlbiBiZW5lZml0IGZyb20sIGZ1enppbmcuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyB0aGUgYFdvcnRoRnV6emluZ2AgZmxhZyB0byBgZmFsc2VgLiBObyBmdXp6aW5nIGlzIHdhcnJhbnRlZCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDIyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlbW92ZXMgYW4gdW51c2VkIGZ1bmN0aW9uIGBrdGltZV9nZXRfY2xvY2tfdHM2NGAgYW5kIGFkZHMgYF9fbXVzdF9jaGVja2AgYW5ub3RhdGlvbnMgdG8gYGt0aW1lX2dldF9hdXhgIGFuZCBga3RpbWVfZ2V0X2F1eF90czY0YC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6NDA6MTEuMjI3ODcxMjczWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg4NTk3NzQxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjQwOjExLjIyNzg3NzQ0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY3MzYxMTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWEyNjI2YjZiZjBiOGVmODM4YzczNjlmYTAyM2Q3YWI1ZTM1ZTZlZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjQwOjEwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaCBiL2luY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaFxcbmluZGV4IGI0MTkxYTg3M2MzOTAuLjU2MTMxM2I1Y2I2ZDQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXFxuKysrIGIvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXFxuQEAgLTQ0LDcgKzQ0LDYgQEAgZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcXG4gZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHYpO1xcbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcXG4gZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2NvYXJzZV9yZWFsX3RzNjQoc3RydWN0IHRpbWVzcGVjNjQgKnRzKTtcXG4tZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2Nsb2NrX3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xcbiBcXG4gLyogTXVsdGlncmFpbiB0aW1lc3RhbXAgaW50ZXJmYWNlcyAqL1xcbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NF9tZyhzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xcbkBAIC0yNjgsMTEgKzI2NywxNCBAQCBleHRlcm4gdm9pZCB0aW1la2VlcGluZ19pbmplY3Rfc2xlZXB0aW1lNjQoY29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKmRlbHRhKTtcXG4gICogQXV4aWxpYXJ5IGNsb2NrIGludGVyZmFjZXNcXG4gICovXFxuICNpZmRlZiBDT05GSUdfUE9TSVhfQVVYX0NMT0NLU1xcbi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpO1xcbi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4X3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqa3QpO1xcbitleHRlcm4gYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KTtcXG4rZXh0ZXJuIGJvb2wgX19tdXN0X2NoZWNrIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdCk7XFxuICNlbHNlXFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpIHsgcmV0dXJuIGZhbHNlOyB9XFxuLXN0YXRpYyBpbmxpbmUgYm9vbCBrdGltZV9nZXRfYXV4X3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqa3QpIHsgcmV0dXJuIGZhbHNlOyB9XFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KSB7IHJldHVybiBmYWxzZTsgfVxcbitzdGF0aWMgaW5saW5lIGJvb2wgX19tdXN0X2NoZWNrIGt0aW1lX2dldF9hdXhfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICprdClcXG4re1xcbitcXHRyZXR1cm4gZmFsc2U7XFxuK31cXG4gI2VuZGlmXFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNcXG5pbmRleCA5N2RiMmU5MzkzZjlkLi4yOWIyYTM4YjI3YjRlIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNcXG4rKysgYi9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXFxuQEAgLTE5MzcsNDAgKzE5MzcsNiBAQCB2b2lkIGt0aW1lX2dldF9yYXdfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXFxuIH1cXG4gRVhQT1JUX1NZTUJPTChrdGltZV9nZXRfcmF3X3RzNjQpO1xcbiBcXG4tLyoqXFxuLSAqIGt0aW1lX2dldF9jbG9ja190czY0IC0gUmV0dXJucyB0aW1lIG9mIGEgY2xvY2sgaW4gYSB0aW1lc3BlY1xcbi0gKiBAaWQ6XFx0XFx0UE9TSVggY2xvY2sgSUQgb2YgdGhlIGNsb2NrIHRvIHJlYWRcXG4tICogQHRzOlxcdFxcdFBvaW50ZXIgdG8gdGhlIHRpbWVzcGVjNjQgdG8gYmUgc2V0XFxuLSAqXFxuLSAqIFRoZSB0aW1lc3RhbXAgaXMgaW52YWxpZGF0ZWQgKEB0cy1cXHUwMDNlc2VjIGlzIHNldCB0byAtMSkgaWYgdGhlXFxuLSAqIGNsb2NrIEBpZCBpcyBub3QgYXZhaWxhYmxlLlxcbi0gKi9cXG4tdm9pZCBrdGltZV9nZXRfY2xvY2tfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcXG4te1xcbi1cXHQvKiBJbnZhbGlkYXRlIHRpbWUgc3RhbXAgKi9cXG4tXFx0dHMtXFx1MDAzZXR2X3NlYyA9IC0xO1xcbi1cXHR0cy1cXHUwMDNldHZfbnNlYyA9IDA7XFxuLVxcbi1cXHRzd2l0Y2ggKGlkKSB7XFxuLVxcdGNhc2UgQ0xPQ0tfUkVBTFRJTUU6XFxuLVxcdFxcdGt0aW1lX2dldF9yZWFsX3RzNjQodHMpO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdGNhc2UgQ0xPQ0tfTU9OT1RPTklDOlxcbi1cXHRcXHRrdGltZV9nZXRfdHM2NCh0cyk7XFxuLVxcdFxcdHJldHVybjtcXG4tXFx0Y2FzZSBDTE9DS19NT05PVE9OSUNfUkFXOlxcbi1cXHRcXHRrdGltZV9nZXRfcmF3X3RzNjQodHMpO1xcbi1cXHRcXHRyZXR1cm47XFxuLVxcdGNhc2UgQ0xPQ0tfQVVYIC4uLiBDTE9DS19BVVhfTEFTVDpcXG4tXFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1BPU0lYX0FVWF9DTE9DS1MpKVxcbi1cXHRcXHRcXHRrdGltZV9nZXRfYXV4X3RzNjQoaWQsIHRzKTtcXG4tXFx0XFx0cmV0dXJuO1xcbi1cXHRkZWZhdWx0Olxcbi1cXHRcXHRXQVJOX09OX09OQ0UoMSk7XFxuLVxcdH1cXG4tfVxcbi1FWFBPUlRfU1lNQk9MX0dQTChrdGltZV9nZXRfY2xvY2tfdHM2NCk7XFxuLVxcbiAvKipcXG4gICogdGltZWtlZXBpbmdfdmFsaWRfZm9yX2hyZXMgLSBDaGVjayBpZiB0aW1la2VlcGluZyBpcyBzdWl0YWJsZSBmb3IgaHJlc1xcbiAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6NDA6MTEuNjk2MDQ3NzQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTQxNzc5NTQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGVhMjYyNmI2YmYwYjhlZjgzOGM3MzY5ZmEwMjNkN2FiNWUzNWU2ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDIyOjQwOjEwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oIGIvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXG5pbmRleCBiNDE5MWE4NzNjMzkwLi41NjEzMTNiNWNiNmQ0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3RpbWVrZWVwaW5nLmhcbkBAIC00NCw3ICs0NCw2IEBAIGV4dGVybiB2b2lkIGt0aW1lX2dldF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7XG4gZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X3JlYWxfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHYpO1xuIGV4dGVybiB2b2lkIGt0aW1lX2dldF9jb2Fyc2VfdHM2NChzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuIGV4dGVybiB2b2lkIGt0aW1lX2dldF9jb2Fyc2VfcmVhbF90czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cyk7XG4tZXh0ZXJuIHZvaWQga3RpbWVfZ2V0X2Nsb2NrX3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuIFxuIC8qIE11bHRpZ3JhaW4gdGltZXN0YW1wIGludGVyZmFjZXMgKi9cbiBleHRlcm4gdm9pZCBrdGltZV9nZXRfY29hcnNlX3JlYWxfdHM2NF9tZyhzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpO1xuQEAgLTI2OCwxMSArMjY3LDE0IEBAIGV4dGVybiB2b2lkIHRpbWVrZWVwaW5nX2luamVjdF9zbGVlcHRpbWU2NChjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqZGVsdGEpO1xuICAqIEF1eGlsaWFyeSBjbG9jayBpbnRlcmZhY2VzXG4gICovXG4gI2lmZGVmIENPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTXG4tZXh0ZXJuIGJvb2wga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KTtcbi1leHRlcm4gYm9vbCBrdGltZV9nZXRfYXV4X3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqa3QpO1xuK2V4dGVybiBib29sIF9fbXVzdF9jaGVjayBrdGltZV9nZXRfYXV4KGNsb2NraWRfdCBpZCwga3RpbWVfdCAqa3QpO1xuK2V4dGVybiBib29sIF9fbXVzdF9jaGVjayBrdGltZV9nZXRfYXV4X3RzNjQoY2xvY2tpZF90IGlkLCBzdHJ1Y3QgdGltZXNwZWM2NCAqa3QpO1xuICNlbHNlXG4tc3RhdGljIGlubGluZSBib29sIGt0aW1lX2dldF9hdXgoY2xvY2tpZF90IGlkLCBrdGltZV90ICprdCkgeyByZXR1cm4gZmFsc2U7IH1cbi1zdGF0aWMgaW5saW5lIGJvb2wga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KSB7IHJldHVybiBmYWxzZTsgfVxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eChjbG9ja2lkX3QgaWQsIGt0aW1lX3QgKmt0KSB7IHJldHVybiBmYWxzZTsgfVxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX211c3RfY2hlY2sga3RpbWVfZ2V0X2F1eF90czY0KGNsb2NraWRfdCBpZCwgc3RydWN0IHRpbWVzcGVjNjQgKmt0KVxuK3tcbitcdHJldHVybiBmYWxzZTtcbit9XG4gI2VuZGlmXG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvdGltZWtlZXBpbmcuYyBiL2tlcm5lbC90aW1lL3RpbWVrZWVwaW5nLmNcbmluZGV4IDk3ZGIyZTkzOTNmOWQuLjI5YjJhMzhiMjdiNGUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXG4rKysgYi9rZXJuZWwvdGltZS90aW1la2VlcGluZy5jXG5AQCAtMTkzNyw0MCArMTkzNyw2IEBAIHZvaWQga3RpbWVfZ2V0X3Jhd190czY0KHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbiB9XG4gRVhQT1JUX1NZTUJPTChrdGltZV9nZXRfcmF3X3RzNjQpO1xuIFxuLS8qKlxuLSAqIGt0aW1lX2dldF9jbG9ja190czY0IC0gUmV0dXJucyB0aW1lIG9mIGEgY2xvY2sgaW4gYSB0aW1lc3BlY1xuLSAqIEBpZDpcdFx0UE9TSVggY2xvY2sgSUQgb2YgdGhlIGNsb2NrIHRvIHJlYWRcbi0gKiBAdHM6XHRcdFBvaW50ZXIgdG8gdGhlIHRpbWVzcGVjNjQgdG8gYmUgc2V0XG4tICpcbi0gKiBUaGUgdGltZXN0YW1wIGlzIGludmFsaWRhdGVkIChAdHMtXHUwMDNlc2VjIGlzIHNldCB0byAtMSkgaWYgdGhlXG4tICogY2xvY2sgQGlkIGlzIG5vdCBhdmFpbGFibGUuXG4tICovXG4tdm9pZCBrdGltZV9nZXRfY2xvY2tfdHM2NChjbG9ja2lkX3QgaWQsIHN0cnVjdCB0aW1lc3BlYzY0ICp0cylcbi17XG4tXHQvKiBJbnZhbGlkYXRlIHRpbWUgc3RhbXAgKi9cbi1cdHRzLVx1MDAzZXR2X3NlYyA9IC0xO1xuLVx0dHMtXHUwMDNldHZfbnNlYyA9IDA7XG4tXG4tXHRzd2l0Y2ggKGlkKSB7XG4tXHRjYXNlIENMT0NLX1JFQUxUSU1FOlxuLVx0XHRrdGltZV9nZXRfcmVhbF90czY0KHRzKTtcbi1cdFx0cmV0dXJuO1xuLVx0Y2FzZSBDTE9DS19NT05PVE9OSUM6XG4tXHRcdGt0aW1lX2dldF90czY0KHRzKTtcbi1cdFx0cmV0dXJuO1xuLVx0Y2FzZSBDTE9DS19NT05PVE9OSUNfUkFXOlxuLVx0XHRrdGltZV9nZXRfcmF3X3RzNjQodHMpO1xuLVx0XHRyZXR1cm47XG4tXHRjYXNlIENMT0NLX0FVWCAuLi4gQ0xPQ0tfQVVYX0xBU1Q6XG4tXHRcdGlmIChJU19FTkFCTEVEKENPTkZJR19QT1NJWF9BVVhfQ0xPQ0tTKSlcbi1cdFx0XHRrdGltZV9nZXRfYXV4X3RzNjQoaWQsIHRzKTtcbi1cdFx0cmV0dXJuO1xuLVx0ZGVmYXVsdDpcbi1cdFx0V0FSTl9PTl9PTkNFKDEpO1xuLVx0fVxuLX1cbi1FWFBPUlRfU1lNQk9MX0dQTChrdGltZV9nZXRfY2xvY2tfdHM2NCk7XG4tXG4gLyoqXG4gICogdGltZWtlZXBpbmdfdmFsaWRfZm9yX2hyZXMgLSBDaGVjayBpZiB0aW1la2VlcGluZyBpcyBzdWl0YWJsZSBmb3IgaHJlc1xuICAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6NDA6MTEuNjk2MDQ5NDA0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzOTQ3MjA2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUaW1la2VlcGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgcHVsbGluZyBga3RpbWVfZ2V0X2Nsb2NrX3RzNjRgIGZyb20gYGluY2x1ZGUvbGludXgvdGltZWtlZXBpbmcuaGAgYW5kIGBrZXJuZWwvdGltZS90aW1la2VlcGluZy5jYC4gIEkgc2VlIHRoZSByZW1vdmFsLCBhbmQgYWxzbyB0aGUgYWRkaXRpb24gb2YgYF9fbXVzdF9jaGVja2AgdG8gYGt0aW1lX2dldF9hdXhgIGFuZCBga3RpbWVfZ2V0X2F1eF90czY0YC4gVGhhdCdzIGludGVyZXN0aW5nLCBidXQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSByZW1vdmFsIG9mIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uIEhtbSwgYGt0aW1lX2dldF9jbG9ja190czY0YC4uLiBpcyB0aGF0IGFjdHVhbGx5IHVzZWQgYW55d2hlcmU/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBiZWZvcmUgSSBzcGVuZCBhbnkgbW9yZSB0aW1lLiBJZiBpdCdzIGp1c3QgZGVhZCBjb2RlLCB0aGlzIGlzbid0IGdvaW5nIHRvIGJlIHdvcnRoIGEgZGVlcCBkaXZlIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gTGV0J3MgbWFrZSBzdXJlIHRoZXJlIGFyZSAqbm8qIG90aGVyIGNoYW5nZXMgaW4gdGhlIGRpZmYuIEFscmlnaHQsIHNvIHRoZSBkaWZmICpvbmx5KiBzaG93cyByZW1vdmFsIG9mIHRoZSBmdW5jdGlvbiBhbmQgdGhlIGFkZGl0aW9uIG9mIGBfX211c3RfY2hlY2tgLiBHb29kLiBOb3csIEkgbmVlZCB0byBjaGVjayB3aGVyZSBga3RpbWVfZ2V0X2Nsb2NrX3RzNjRgIGlzIHVzZWQgaW4gdGhlIGtlcm5lbC4gTGV0J3Mgc2VlIGlmIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgY2FsbGVkIGFueXdoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTUzLCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMjI6NDA6MTUuNjM1NTI0NDc5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDc0NTUwMzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt0aW1lX2dldF9jbG9ja190czY0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQyMjo0MDoxNy40NDI5ODg1NTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjcwODI1OTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgdGhlIHByaW1hcnkgYWN0aW9uIGlzIHRoZSByZW1vdmFsIG9mIGEgZnVuY3Rpb24gdGhhdCBpc24ndCBhY3R1YWxseSB1dGlsaXplZCBhbnl3aGVyZSBpbiB0aGUgY29kZWJhc2UuIEVzc2VudGlhbGx5LCBhIGJpdCBvZiBkZWFkIGNvZGUgcmVtb3ZhbC4gQmV5b25kIHRoYXQsIGl0IGFsc28gc3ByaW5rbGVzIGluIHNvbWUgYF9fbXVzdF9jaGVja2AgYW5ub3RhdGlvbnMgb24gYSBmZXcgb3RoZXIgZnVuY3Rpb25zLlxuXG5HaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9qZWN0J3MgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgcHJpbmNpcGxlcyBvZiBmdXp6aW5nLCB0aGlzIHN0cmlrZXMgbWUgYXMgYSBub24tZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZSBkZWxldGlvbiBvZiB1bnVzZWQgY29kZSB3b24ndCBpbnRyb2R1Y2UgbmV3IGF0dGFjayBzdXJmYWNlcyBvciB2dWxuZXJhYmlsaXRpZXMgZGV0ZWN0YWJsZSB0aHJvdWdoIGZ1enppbmcsIG5vciB3aWxsIHRoZSBhZGRpdGlvbiBvZiBgX19tdXN0X2NoZWNrYCBhcyB0aGlzIGRvZXMgbm90IGNoYW5nZSB0aGUgZnVuY3Rpb24ncyBmdW5jdGlvbmFsaXR5LCBvciB0aGUgd2F5IHRoZSBwcm9ncmFtIGJlaGF2ZXMgZHVyaW5nIG5vcm1hbCBleGVjdXRpb24uIFRoaXMgaXMgYWJvdXQgY29kZSBoeWdpZW5lIGFuZCBwb3RlbnRpYWxseSBwcmV2ZW50aW5nIGZ1dHVyZSBtaXN1c2UsIGJ1dCBpdCdzIG5vdCBhIGNoYW5nZSB0aGF0IHJlcXVpcmVzLCBvciB3b3VsZCBldmVuIGJlbmVmaXQgZnJvbSwgZnV6emluZy4gVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgdGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgdG8gYGZhbHNlYC4gTm8gZnV6emluZyBpcyB3YXJyYW50ZWQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQxMSwiT3V0cHV0VG9rZW5zIjo5MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDIyOjQwOjIxLjExMzgxNzI2OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyBhbiB1bnVzZWQgZnVuY3Rpb24gYGt0aW1lX2dldF9jbG9ja190czY0YCBhbmQgYWRkcyBgX19tdXN0X2NoZWNrYCBhbm5vdGF0aW9ucyB0byBga3RpbWVfZ2V0X2F1eGAgYW5kIGBrdGltZV9nZXRfYXV4X3RzNjRgLiBUaGVyZSBhcmUgbm8gZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgYW4gdW51c2VkIGZ1bmN0aW9uIGBrdGltZV9nZXRfY2xvY2tfdHM2NGAgYW5kIGFkZHMgYF9fbXVzdF9jaGVja2AgYW5ub3RhdGlvbnMgdG8gYGt0aW1lX2dldF9hdXhgIGFuZCBga3RpbWVfZ2V0X2F1eF90czY0YC4gVGhlcmUgYXJlIG5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjkv2r[1] Phase: Running StartedAt: 2026-08-01 22:40:32 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjkv2r[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-01 22:40:32 +0000 UTC FinishedAt: 2026-08-01 22:40:49 +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,}