Name: series-workflow6x6nm Phase: Succeeded StartedAt: 2026-07-15 08:37:08 +0000 UTC FinishedAt: 2026-07-15 10:34:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[0] Phase: Succeeded StartedAt: 2026-07-15 08:37:08 +0000 UTC FinishedAt: 2026-07-15 08:57:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 08:37:08 +0000 UTC FinishedAt: 2026-07-15 08:57:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_restore_timer" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA4OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yZXN0b3JlX3RpbWVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gdGltZXIgcmVzdG9yYXRpb24gbG9naWMgb24gTG9vbmdBcmNoLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb25lLXNob3QgdGltZXJzIGR1cmluZyBtaWdyYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIEtWTSBjb2RlIHJlYWNoYWJsZSBkdXJpbmcgdkNQVSBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0NzEyYmFkYjgyMmY1ODRkYTUzZjdkNzkzMzVhNmYzMWRiNjg2ZjY4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDg6NTY6MzQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuY1xuaW5kZXggMzgyOWYzNWE0MDcwYjUuLjU3ZjUzZDE5YTAwYWI2IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jXG5AQCAtMTMyLDYgJiM0MzsxMzIsMTQgQEAgdm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdCAqIGR1cmluZyBpbmplY3RpbmcgaW50ciBhc3luY1xuIFx0XHQgKi9cbiBcdFx0a3ZtX3F1ZXVlX2lycSh2Y3B1LCBJTlRfVEkpO1xuJiM0MztcdH0gZWxzZSBpZiAoIWV4cGlyZSkge1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE9uZS1zaG90IHRpbWVyIG9uIHRoZSBtaWdyYXRpb24gZGVzdGluYXRpb246IHZjcHUtXHUwMDNlYXJjaC5leHBpcmVcbiYjNDM7XHRcdCAqIGlzIGhvc3QtaW50ZXJuYWwgYW5kIGlzIG5vdCBtaWdyYXRlZCwgc28gaXQgaXMgc3RpbGwgMCBoZXJlLlxuJiM0MztcdFx0ICogUmVsb2FkIHRoZSByZW1haW5pbmcgY291bnRkb3duIGZyb20gdGhlIG1pZ3JhdGVkIFRWQUwgaW5zdGVhZFxuJiM0MztcdFx0ICogb2YgZmlyaW5nIHRoZSB0aW1lciBpbW1lZGlhdGVseS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0ZGVsdGEgPSB0aWNrcztcbiBcdH1cbiBcbiBcdHdyaXRlX2djc3JfdGltZXJ0aWNrKGRlbHRhKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwODo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmVzdG9yZV90aW1lciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHRpbWVyIHJlc3RvcmF0aW9uIGxvZ2ljIG9uIExvb25nQXJjaCwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NzEyYmFkYjgyMmY1ODRkYTUzZjdkNzkzMzVhNmYzMWRiNjg2ZjY4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMDg6NTY6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jCmluZGV4IDM4MjlmMzVhNDA3MGI1Li41N2Y1M2QxOWEwMGFiNiAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMKQEAgLTEzMiw2ICYjNDM7MTMyLDE0IEBAIHZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQkgKiBkdXJpbmcgaW5qZWN0aW5nIGludHIgYXN5bmMKIAkJICovCiAJCWt2bV9xdWV1ZV9pcnEodmNwdSwgSU5UX1RJKTsKJiM0MzsJfSBlbHNlIGlmICghZXhwaXJlKSB7CiYjNDM7CQkvKgomIzQzOwkJICogT25lLXNob3QgdGltZXIgb24gdGhlIG1pZ3JhdGlvbiBkZXN0aW5hdGlvbjogdmNwdS0mZ3Q7YXJjaC5leHBpcmUKJiM0MzsJCSAqIGlzIGhvc3QtaW50ZXJuYWwgYW5kIGlzIG5vdCBtaWdyYXRlZCwgc28gaXQgaXMgc3RpbGwgMCBoZXJlLgomIzQzOwkJICogUmVsb2FkIHRoZSByZW1haW5pbmcgY291bnRkb3duIGZyb20gdGhlIG1pZ3JhdGVkIFRWQUwgaW5zdGVhZAomIzQzOwkJICogb2YgZmlyaW5nIHRoZSB0aW1lciBpbW1lZGlhdGVseS4KJiM0MzsJCSAqLwomIzQzOwkJZGVsdGEgPSB0aWNrczsKIAl9CiAKIAl3cml0ZV9nY3NyX3RpbWVydGljayhkZWx0YSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBUaW1lciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYC4gU2VlbXMgbGlrZSB0aGUgY29yZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIHRoZSBga3ZtX3Jlc3RvcmVfdGltZXJgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgYW4gYGVsc2UgaWYgKCFleHBpcmUpYCBjb25kaXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBvbiB0aGUgbWlncmF0aW9uIGRlc3RpbmF0aW9uLiYjMzQ7IFRoaXMgbWFrZXMgc2Vuc2U7IHdoZW4gbWlncmF0aW5nIGEgVk0sIHdlIG5lZWQgdG8gZW5zdXJlIHRpbWVycyBiZWhhdmUgY29ycmVjdGx5IG9uIHRoZSB0YXJnZXQgaG9zdC4gVGhlIGAhZXhwaXJlYCBjb25kaXRpb24gc2VlbXMgdG8gYmUgdGhlIGNydWNpYWwgYml0IGhlcmUsIHN1Z2dlc3RpbmcgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIGEgdGltZXIgKmhhc24mIzM5O3QqIHlldCBmaXJlZCwgbGlrZWx5IGFmdGVyIG1pZ3JhdGlvbi4gSSBzaG91bGQgY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYCB0byBzZWUgdGhlIGNvbnRleHQgYW5kIHdoYXQgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIGlzIHRyeWluZyB0byBhY2hpZXZlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgKmhvdyogdGhlIGBrdm1fcmVzdG9yZV90aW1lcmAgZnVuY3Rpb24gaXMgZGVmaW5lZCBhbmQgdXNlZCB3aXRoaW4gdGhlIGJyb2FkZXIgS1ZNIHRpbWVyIGZyYW1ld29yayBvbiBMb29uZ0FyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jlc3RvcmVfdGltZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYz00MT12b2lkIGt2bV9pbml0X3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyB0aW1lcl9oeilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy01MS0gKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjUyOnZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNTMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0LCBhbmQgYXNzdW1pbmcgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEtWTSBUaW1lciBJbXBsZW1lbnRhdGlvbiBmb3IgTG9vbmdBcmNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDUyLiBNeSBpbml0aWFsIGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBhcmVhIGxpa2VseSBkZWFscyB3aXRoIHRoZSBjb3JlIGxvZ2ljIGZvciBlaXRoZXIgc2V0dGluZyB1cCwgbWFuYWdpbmcsIG9yIGhhbmRsaW5nIGludGVycnVwdHMgcmVsYXRlZCB0byB0aGUgdmlydHVhbCBtYWNoaW5lJiMzOTtzIHRpbWVycyBvbiB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSB3aXRoaW4gdGhlIEtWTSBmcmFtZXdvcmsuIEdpdmVuIHRoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGltZXIgY29kZSwgSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB3ZSYjMzk7bGwgYmUgZGVhbGluZyB3aXRoIGVpdGhlciB0aGUgSGlnaC1SZXNvbHV0aW9uIFRpbWVyIChIUlQpIG9yIHRoZSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQgKFBNVSkgZm9yIHRpbWVyIGR1dGllcyBhbmQgaW50ZXJydXB0IGdlbmVyYXRpb24uIFdlJiMzOTtsbCBsaWtlbHkgc2VlIGludGVyYWN0aW9ucyB3aXRoIHRoZSBMb29uZ0FyY2gmIzM5O3Mgc3BlY2lmaWMgQ1NScyBhbmQgc3lzdGVtIHJlZ2lzdGVycyB0byBjb250cm9sIHRpbWVyIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWxseSB0aGUgVmlydHVhbCBNYWNoaW5lIENvbnRyb2wgU3RydWN0dXJlIChWTUNTKSBpZiB0aGVyZSYjMzk7cyBhbnkgdmlydHVhbGl6YXRpb24tc3BlY2lmaWMgc3RhdGUgbmVlZGluZyB0byBiZSBtYW5hZ2VkIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaHlwZXJ2aXNvciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdGltZXJzIGFuZCBob3cgdGhlIGd1ZXN0IGlzIGV4cG9zZWQgdG8gaXQgYW5kIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuIEl0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIGhvdyB0aGV5IGhhbmRsZSB2aXJ0dWFsIHRpbWVyIGludGVycnVwdHMgYW5kIGhvdyB0aGV5IGFyZSBpbmplY3RlZCBpbnRvIHRoZSBndWVzdC4gVGhpcyBzcGVjaWZpYyBhcmVhIGNvdWxkIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgb3ZlcmFsbCBndWVzdCBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MjpcdHZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuICA1MzpcdHtcbiAgNTQ6XHRcdHVuc2lnbmVkIGxvbmcgY2ZnLCBlc3RhdDtcbiAgNTU6XHRcdHVuc2lnbmVkIGxvbmcgdGlja3MsIGRlbHRhLCBwZXJpb2Q7XG4gIDU2Olx0XHRrdGltZV90IGV4cGlyZSwgbm93O1xuICA1NzpcdFx0c3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LVx1MDAzZWFyY2guY3NyO1xuICA1ODpcdFxuICA1OTpcdFx0LypcbiAgNjA6XHRcdCAqIFNldCBndWVzdCBzdGFibGUgdGltZXIgY2ZnIGNzclxuICA2MTpcdFx0ICogRGlzYWJsZSB0aW1lciBiZWZvcmUgcmVzdG9yZSBlc3RhdCBDU1IgcmVnaXN0ZXIsIGF2b2lkIHRvXG4gIDYyOlx0XHQgKiBnZXQgaW52YWxpZCB0aW1lciBpbnRlcnJ1cHQgZm9yIG9sZCB0aW1lciBjZmdcbiAgNjM6XHRcdCAqL1xuICA2NDpcdFx0Y2ZnID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XG4gIDY1Olx0XG4gIDY2Olx0XHR3cml0ZV9nY3NyX3RpbWVyY2ZnKDApO1xuICA2NzpcdFx0a3ZtX3Jlc3RvcmVfaHdfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpO1xuICA2ODpcdFx0a3ZtX3Jlc3RvcmVfaHdfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XG4gIDY5Olx0XHRpZiAoIShjZmcgXHUwMDI2IENTUl9UQ0ZHX0VOKSkge1xuICA3MDpcdFx0XHQvKiBHdWVzdCB0aW1lciBpcyBkaXNhYmxlZCwganVzdCByZXN0b3JlIHRpbWVyIHJlZ2lzdGVycyAqL1xuICA3MTpcdFx0XHRrdm1fcmVzdG9yZV9od19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9UVkFMKTtcbiAgNzI6XHRcdFx0cmV0dXJuO1xuICA3MzpcdFx0fVxuICA3NDpcdFxuICA3NTpcdFx0LypcbiAgNzY6XHRcdCAqIEZyZWV6ZSB0aGUgc29mdC10aW1lciBhbmQgc3luYyB0aGUgZ3Vlc3Qgc3RhYmxlIHRpbWVyIHdpdGggaXQuXG4gIDc3Olx0XHQgKi9cbiAgNzg6XHRcdGlmIChrdm1fdmNwdV9pc19ibG9ja2luZyh2Y3B1KSlcbiAgNzk6XHRcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnN3dGltZXIpO1xuICA4MDpcdFxuICA4MTpcdFx0LypcbiAgODI6XHRcdCAqIEZyb20gTG9vbmdBcmNoIFJlZmVyZW5jZSBNYW51YWwgVm9sdW1lIDEgQ2hhcHRlciA3LjYuMlxuICA4MzpcdFx0ICogSWYgb25lc2hvdCB0aW1lciBpcyBmaXJlZCwgQ1NSIFRWQUwgd2lsbCBiZSAtMSwgdGhlcmUgYXJlIHR3b1xuICA4NDpcdFx0ICogY29uZGl0aW9uczpcbiAgODU6XHRcdCAqICAxKSB0aW1lciBpcyBmaXJlZCBkdXJpbmcgZXhpdGluZyB0byBob3N0XG4gIDg2Olx0XHQgKiAgMikgdGltZXIgaXMgZmlyZWQgYW5kIHZtIGlzIGRvaW5nIHRpbWVyIGlycSwgYW5kIHRoZW4gZXhpdGluZyB0b1xuICA4NzpcdFx0ICogICAgIGhvc3QuIEhvc3Qgc2hvdWxkIG5vdCBpbmplY3QgdGltZXIgaXJxIHRvIGF2b2lkIHNwdXJpb3VzXG4gIDg4Olx0XHQgKiAgICAgdGltZXIgaW50ZXJydXB0IGFnYWluXG4gIDg5Olx0XHQgKi9cbiAgOTA6XHRcdHRpY2tzID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVFZBTCk7XG4gIDkxOlx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKTtcbiAgOTI6XHRcdGlmICghKGNmZyBcdTAwMjYgQ1NSX1RDRkdfUEVSSU9EKSBcdTAwMjZcdTAwMjYgKHRpY2tzIFx1MDAzZSBjZmcpKSB7XG4gIDkzOlx0XHRcdC8qXG4gIDk0Olx0XHRcdCAqIFdyaXRpbmcgMCB0byBMT09OR0FSQ0hfQ1NSX1RWQUwgd2lsbCBpbmplY3QgdGltZXIgaXJxXG4gIDk1Olx0XHRcdCAqIGFuZCBzZXQgQ1NSIFRWQUwgd2l0aCAtMVxuICA5NjpcdFx0XHQgKi9cbiAgOTc6XHRcdFx0d3JpdGVfZ2Nzcl90aW1lcnRpY2soMCk7XG4gIDk4Olx0XG4gIDk5Olx0XHRcdC8qXG4gMTAwOlx0XHRcdCAqIFdyaXRpbmcgQ1NSX1RJTlRDTFJfVEkgdG8gTE9PTkdBUkNIX0NTUl9USU5UQ0xSIHdpbGwgY2xlYXJcbiAxMDE6XHRcdFx0ICogdGltZXIgaW50ZXJydXB0LCBhbmQgQ1NSIFRWQUwga2VlcHMgdW5jaGFuZ2VkIHdpdGggLTEsIGl0XG4gMTAyOlx0XHRcdCAqIGF2b2lkcyBzcHVyaW91cyB0aW1lciBpbnRlcnJ1cHRcbiAxMDM6XHRcdFx0ICovXG4gMTA0Olx0XHRcdGlmICghKGVzdGF0IFx1MDAyNiBDUFVfVElNRVIpKSB7XG4gMTA1Olx0XHRcdFx0X19kZWxheSgyKTsgLyogV2FpdCBjeWNsZXMgdW50aWwgdGltZXIgaW50ZXJydXB0IGluamVjdGVkICovXG4gMTA2Olx0XG4gMTA3Olx0XHRcdFx0LyogV3JpdGUgVFZBTCB3aXRoIG1heCB2YWx1ZSBpZiBubyBUSSBzaG90ICovXG4gMTA4Olx0XHRcdFx0ZXN0YXQgPSBrdm1fcmVhZF9od19nY3NyKExPT05HQVJDSF9DU1JfRVNUQVQpO1xuIDEwOTpcdFx0XHRcdGlmICghKGVzdGF0IFx1MDAyNiBDUFVfVElNRVIpKVxuIDExMDpcdFx0XHRcdFx0d3JpdGVfZ2Nzcl90aW1lcnRpY2soQ1NSX1RDRkdfVkFMKTtcbiAxMTE6XHRcdFx0XHRnY3NyX3dyaXRlKENTUl9USU5UQ0xSX1RJLCBMT09OR0FSQ0hfQ1NSX1RJTlRDTFIpO1xuIDExMjpcdFx0XHR9XG4gMTEzOlx0XHRcdHJldHVybjtcbiAxMTQ6XHRcdH1cbiAxMTU6XHRcbiAxMTY6XHRcdC8qXG4gMTE3Olx0XHQgKiBTZXQgcmVtYWluZGVyIHRpY2sgdmFsdWUgaWYgbm90IGV4cGlyZWRcbiAxMTg6XHRcdCAqL1xuIDExOTpcdFx0ZGVsdGEgPSAwO1xuIDEyMDpcdFx0bm93ID0ga3RpbWVfZ2V0KCk7XG4gMTIxOlx0XHRleHBpcmUgPSB2Y3B1LVx1MDAzZWFyY2guZXhwaXJlO1xuIDEyMjpcdFx0aWYgKGt0aW1lX2JlZm9yZShub3csIGV4cGlyZSkpXG4gMTIzOlx0XHRcdGRlbHRhID0ga3RpbWVfdG9fdGljayh2Y3B1LCBrdGltZV9zdWIoZXhwaXJlLCBub3cpKTtcbiAxMjQ6XHRcdGVsc2UgaWYgKGNmZyBcdTAwMjYgQ1NSX1RDRkdfUEVSSU9EKSB7XG4gMTI1Olx0XHRcdHBlcmlvZCA9IGNmZyBcdTAwMjYgQ1NSX1RDRkdfVkFMO1xuIDEyNjpcdFx0XHRkZWx0YSA9IGt0aW1lX3RvX3RpY2sodmNwdSwga3RpbWVfc3ViKG5vdywgZXhwaXJlKSk7XG4gMTI3Olx0XHRcdGRlbHRhID0gcGVyaW9kIC0gKGRlbHRhICUgcGVyaW9kKTtcbiAxMjg6XHRcbiAxMjk6XHRcdFx0LypcbiAxMzA6XHRcdFx0ICogSW5qZWN0IHRpbWVyIGhlcmUgdGhvdWdoIHN3IHRpbWVyIHNob3VsZCBpbmplY3QgdGltZXJcbiAxMzE6XHRcdFx0ICogaW50ZXJydXB0IGFzeW5jIGFscmVhZHksIHNpbmNlIHN3IHRpbWVyIG1heSBiZSBjYW5jZWxsZWRcbiAxMzI6XHRcdFx0ICogZHVyaW5nIGluamVjdGluZyBpbnRyIGFzeW5jXG4gMTMzOlx0XHRcdCAqL1xuIDEzNDpcdFx0XHRrdm1fcXVldWVfaXJxKHZjcHUsIElOVF9USSk7XG4gMTM1Olx0XHR9IGVsc2UgaWYgKCFleHBpcmUpIHtcbiAxMzY6XHRcdFx0LypcbiAxMzc6XHRcdFx0ICogT25lLXNob3QgdGltZXIgb24gdGhlIG1pZ3JhdGlvbiBkZXN0aW5hdGlvbjogdmNwdS1cdTAwM2VhcmNoLmV4cGlyZVxuIDEzODpcdFx0XHQgKiBpcyBob3N0LWludGVybmFsIGFuZCBpcyBub3QgbWlncmF0ZWQsIHNvIGl0IGlzIHN0aWxsIDAgaGVyZS5cbiAxMzk6XHRcdFx0ICogUmVsb2FkIHRoZSByZW1haW5pbmcgY291bnRkb3duIGZyb20gdGhlIG1pZ3JhdGVkIFRWQUwgaW5zdGVhZFxuIDE0MDpcdFx0XHQgKiBvZiBmaXJpbmcgdGhlIHRpbWVyIGltbWVkaWF0ZWx5LlxuIDE0MTpcdFx0XHQgKi9cbiAxNDI6XHRcdFx0ZGVsdGEgPSB0aWNrcztcbiAxNDM6XHRcdH1cbiAxNDQ6XHRcbiAxNDU6XHRcdHdyaXRlX2djc3JfdGltZXJ0aWNrKGRlbHRhKTtcbiAxNDY6XHR9XG4gMTQ3Olx0XG4gMTQ4Olx0LypcbiAxNDk6XHQgKiBTYXZlIGd1ZXN0IHRpbWVyIHN0YXRlIGFuZCBzd2l0Y2ggdG8gc29mdHdhcmUgZW11bGF0aW9uIG9mIGd1ZXN0XG4gMTUwOlx0ICogdGltZXIuIFRoZSBoYXJkIHRpbWVyIG11c3QgYWxyZWFkeSBiZSBpbiB1c2UsIHNvIHByZWVtcHRpb24gc2hvdWxkIGJlXG4gMTUxOlx0ICogZGlzYWJsZWQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzNwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExvb25nQXJjaCBLVk0gVGltZXIgUmVzdG9yYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGt2bV9yZXN0b3JlX3RpbWVyYCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYC4gVGhhdCBmaWxlIGlzIHdoZXJlIHRoZSBMb29uZ0FyY2ggS1ZNIGltcGxlbWVudGF0aW9uIGtlZXBzIGl0cyB0aW1lciBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gcmVzdG9yaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLCBhIGNyaXRpY2FsIGZ1bmN0aW9uLiBJbW1lZGlhdGVseSwgdGhlIHF1ZXN0aW9uIHBvcHMgdXA6IGNhbiB3ZSBmdXp6IHRoaXM/IEl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBwb3RlbnRpYWwgYnVncywgZXNwZWNpYWxseSBpbiBhIGNvbXBsZXggYXJlYSBsaWtlIHRpbWVyIG1hbmFnZW1lbnQgZHVyaW5nIG1pZ3JhdGlvbi4KCk5vdywgdGhlIGltcG9ydGFudCBjb250ZXh0IGlzIHRoYXQgdGhpcyBpcyBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgdGhlIHF1ZXN0aW9uOiBkb2VzIHN5emthbGxlciBldmVuIHN1cHBvcnQgdGhpcz8gRm9ydHVuYXRlbHksIHllcywgSSBrbm93IHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBMb29uZ0FyY2ggbm93LiBCdXQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBLVk0gY29kZSBtZWFucyB3ZSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWZpYyBLVk0gY29uZmlndXJhdGlvbiBmb3Igc3l6a2FsbGVyIG9uIExvb25nQXJjaC4gV2UmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHN5emthbGxlciBpcyBwcm9wZXJseSBjb25maWd1cmVkIGZvciBMb29uZ0FyY2ggS1ZNIGZ1enppbmcuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZXMgdG8gY29uZmlybSB0aGUgS1ZNIHN1cHBvcnQgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyMAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBUaW1lciBSZXN0b3JhdGlvbiBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIHdvcmtpbmcgd2l0aCBpcyBgS1ZNYCwgYW5kIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBiZXR0ZXIgaXMgYGt2bV9yZXN0b3JlX3RpbWVyYC4gRmlyc3QsIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZS4gQWxyaWdodCwgSSBjb25maXJtIHRoYXQgd2UgZGVmaW5pdGVseSBuZWVkIGJvdGggYFZJUlRVQUxJWkFUSU9OYCBhbmQsIG9mIGNvdXJzZSwgYEtWTWAuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gYGt2bV9yZXN0b3JlX3RpbWVyYCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBmcm9tIHVzZXJzcGFjZT8gTXkgaW50dWl0aW9uIHN1Z2dlc3RzIGl0JiMzOTtzIHBhcnQgb2YgdGhlIEtWTSYjMzk7cyB2Q1BVIHJ1biBsb29wLCBvciBwZXJoYXBzIGludm9sdmVkIGluIHZDUFUgc3RhdGUgcmVzdG9yYXRpb24gb3BlcmF0aW9ucyBsaWtlIGBLVk1fU0VUX1JFR1NgLCBgS1ZNX1NFVF9TUkVHU2AsIG9yIHBvdGVudGlhbGx5IGBLVk1fU0VUX09ORV9SRUdgLiBUaGF0IHNlZW1zIGxpa2VseS4gVG8gYmUgY2VydGFpbiwgSSYjMzk7bGwgbmVlZCB0byBwaW5wb2ludCBwcmVjaXNlbHkgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBjb2RlLiBMZXQmIzM5O3MgdHJhY2UgdGhvc2UgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jlc3RvcmVfdGltZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jPTQxPXZvaWQga3ZtX2luaXRfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHRpbWVyX2h6KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTUxLSAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6NTI6dm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy01My17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xNTkzPXN0YXRpYyBpbnQgX2t2bV92Y3B1X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTYxNi1cdC8qIFJlc3RvcmUgdGltZXIgc3RhdGUgcmVnYXJkbGVzcyAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxNjE3Olx0a3ZtX3Jlc3RvcmVfdGltZXIodmNwdSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE2MTgtXHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfU1RFQUxfVVBEQVRFLCB2Y3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM2MwoJCQkJCQkJb3V0cHV0OiA3OQoJCQkJCQkJdGhvdWdodHM6IDIxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBJbXBvcnRhbmNlIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludGVyZXN0aW5nLiBJdCB0b3VjaGVzIGNvZGUgd2l0aGluIGBfa3ZtX3ZjcHVfbG9hZGAsIHdoaWNoIGlzIGEga2V5IGZ1bmN0aW9uIGNhbGxlZCB3aGVuZXZlciBhIHZDUFUgZ2V0cyBsb2FkZWQgb250byBhIHBoeXNpY2FsIENQVS4gVGhhdCBtZWFucyB0aGlzIGlzIGRlZmluaXRlbHkgY29kZSB0aGF0IHNlZXMgYWN0aXZlIHVzZSBkdXJpbmcgbm9ybWFsIEtWTSBleGVjdXRpb24sIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0LgoKVGhlIGRlc2NyaXB0aW9uIHNheXMgdGhlIHBhdGNoIGlzIGFjdHVhbGx5ICpmdW5jdGlvbmFsKiwgd2hpY2ggaXMgZ3JlYXQuIEl0JiMzOTtzIGZpeGluZyBhIGJ1ZyByZWxhdGVkIHRvIG9uZS1zaG90IHRpbWVycyBvbiB0aGUgbWlncmF0aW9uIGRlc3RpbmF0aW9uIGZpcmluZyBwcmVtYXR1cmVseS4gQmFzaWNhbGx5LCBpdOKAmXMgaGFuZGxpbmcgdGhlIHJlbG9hZGluZyBvZiB0aW1lciB2YWx1ZXMgYWZ0ZXIgbWlncmF0aW9uLiBUaGlzIGhhcyBkaXJlY3QgaW1wbGljYXRpb25zIG9uIHRoZSBpbnRlZ3JpdHkgb2YgbWlncmF0aW5nIGEgcnVubmluZyBWTSwgcmlnaHQ/IFNvIHllcywgdGhpcyBpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGRlZmluaXRlbHkgbG9vayB0byBmdXp6LgoKVGhlIGtleSBmdW5jdGlvbiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBpcyBga3ZtX3Jlc3RvcmVfdGltZXJgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlncy4uLiBZZXAsIGBLVk1gIGlzIGVuYWJsZWQsIGFuZCBub3RoaW5nIGVsc2Ugc2VlbXMgcmVsZXZhbnQgaW4gdGhlIExvb25nQXJjaCBLY29uZmlnIGZpbGUuCgpBbHJpZ2h0LCB0aW1lIHRvIHN5bnRoZXNpemUgbXkgZmluZGluZ3MuIFRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiBpdCBtb2RpZmllcyBLVk0gdGltZXIgcmVzdG9yYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggb25lLXNob3QgdGltZXJzIGR1cmluZyBtaWdyYXRpb24sIGFuZCBpdCB0b3VjaGVzIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi4gU28gaGVyZSYjMzk7cyB0aGUgc3VtbWFyeToKCiogICAqKldvcnRoRnV6emluZyoqOiAqdHJ1ZSoKKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbJiMzNDtrdm1fcmVzdG9yZV90aW1lciYjMzQ7XWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7S1ZNJiMzNDtdYAoqICAgKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jlc3RvcmVfdGltZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jlc3RvcmVfdGltZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA4OjU2OjM2Ljc4OTYyNjkxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MDYyNDg2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jlc3RvcmVfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHRpbWVyIHJlc3RvcmF0aW9uIGxvZ2ljIG9uIExvb25nQXJjaCwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1NjozNi43ODk2MzMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjYzMDc1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NzEyYmFkYjgyMmY1ODRkYTUzZjdkNzkzMzVhNmYzMWRiNjg2ZjY4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDA4OjU2OjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNcXG5pbmRleCAzODI5ZjM1YTQwNzBiNS4uNTdmNTNkMTlhMDBhYjYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuY1xcbkBAIC0xMzIsNiArMTMyLDE0IEBAIHZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHQgKiBkdXJpbmcgaW5qZWN0aW5nIGludHIgYXN5bmNcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGt2bV9xdWV1ZV9pcnEodmNwdSwgSU5UX1RJKTtcXG4rXFx0fSBlbHNlIGlmICghZXhwaXJlKSB7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIE9uZS1zaG90IHRpbWVyIG9uIHRoZSBtaWdyYXRpb24gZGVzdGluYXRpb246IHZjcHUtXFx1MDAzZWFyY2guZXhwaXJlXFxuK1xcdFxcdCAqIGlzIGhvc3QtaW50ZXJuYWwgYW5kIGlzIG5vdCBtaWdyYXRlZCwgc28gaXQgaXMgc3RpbGwgMCBoZXJlLlxcbitcXHRcXHQgKiBSZWxvYWQgdGhlIHJlbWFpbmluZyBjb3VudGRvd24gZnJvbSB0aGUgbWlncmF0ZWQgVFZBTCBpbnN0ZWFkXFxuK1xcdFxcdCAqIG9mIGZpcmluZyB0aGUgdGltZXIgaW1tZWRpYXRlbHkuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRkZWx0YSA9IHRpY2tzO1xcbiBcXHR9XFxuIFxcbiBcXHR3cml0ZV9nY3NyX3RpbWVydGljayhkZWx0YSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA4OjU2OjM3LjYxOTAzNjk1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NzY4MjMzNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jlc3RvcmVfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHRpbWVyIHJlc3RvcmF0aW9uIGxvZ2ljIG9uIExvb25nQXJjaCwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ3MTJiYWRiODIyZjU4NGRhNTNmN2Q3OTMzNWE2ZjMxZGI2ODZmNjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwODo1NjozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNcbmluZGV4IDM4MjlmMzVhNDA3MGI1Li41N2Y1M2QxOWEwMGFiNiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuY1xuQEAgLTEzMiw2ICsxMzIsMTQgQEAgdm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdCAqIGR1cmluZyBpbmplY3RpbmcgaW50ciBhc3luY1xuIFx0XHQgKi9cbiBcdFx0a3ZtX3F1ZXVlX2lycSh2Y3B1LCBJTlRfVEkpO1xuK1x0fSBlbHNlIGlmICghZXhwaXJlKSB7XG4rXHRcdC8qXG4rXHRcdCAqIE9uZS1zaG90IHRpbWVyIG9uIHRoZSBtaWdyYXRpb24gZGVzdGluYXRpb246IHZjcHUtXHUwMDNlYXJjaC5leHBpcmVcbitcdFx0ICogaXMgaG9zdC1pbnRlcm5hbCBhbmQgaXMgbm90IG1pZ3JhdGVkLCBzbyBpdCBpcyBzdGlsbCAwIGhlcmUuXG4rXHRcdCAqIFJlbG9hZCB0aGUgcmVtYWluaW5nIGNvdW50ZG93biBmcm9tIHRoZSBtaWdyYXRlZCBUVkFMIGluc3RlYWRcbitcdFx0ICogb2YgZmlyaW5nIHRoZSB0aW1lciBpbW1lZGlhdGVseS5cbitcdFx0ICovXG4rXHRcdGRlbHRhID0gdGlja3M7XG4gXHR9XG4gXG4gXHR3cml0ZV9nY3NyX3RpbWVydGljayhkZWx0YSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1NjozNy42MTkwMzk2ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzc4Nzc5NDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIFRpbWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYC4gU2VlbXMgbGlrZSB0aGUgY29yZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIHRoZSBga3ZtX3Jlc3RvcmVfdGltZXJgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgYW4gYGVsc2UgaWYgKCFleHBpcmUpYCBjb25kaXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBvbiB0aGUgbWlncmF0aW9uIGRlc3RpbmF0aW9uLlwiIFRoaXMgbWFrZXMgc2Vuc2U7IHdoZW4gbWlncmF0aW5nIGEgVk0sIHdlIG5lZWQgdG8gZW5zdXJlIHRpbWVycyBiZWhhdmUgY29ycmVjdGx5IG9uIHRoZSB0YXJnZXQgaG9zdC4gVGhlIGAhZXhwaXJlYCBjb25kaXRpb24gc2VlbXMgdG8gYmUgdGhlIGNydWNpYWwgYml0IGhlcmUsIHN1Z2dlc3RpbmcgaXQncyBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgYSB0aW1lciAqaGFzbid0KiB5ZXQgZmlyZWQsIGxpa2VseSBhZnRlciBtaWdyYXRpb24uIEkgc2hvdWxkIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuY2AgdG8gc2VlIHRoZSBjb250ZXh0IGFuZCB3aGF0IHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbiBpcyB0cnlpbmcgdG8gYWNoaWV2ZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gc2VlICpob3cqIHRoZSBga3ZtX3Jlc3RvcmVfdGltZXJgIGZ1bmN0aW9uIGlzIGRlZmluZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIEtWTSB0aW1lciBmcmFtZXdvcmsgb24gTG9vbmdBcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODk5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo0Mi45OTc4MjEyMzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA1MjM0NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yZXN0b3JlX3RpbWVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jPTQxPXZvaWQga3ZtX2luaXRfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHRpbWVyX2h6KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNTEtICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6NTI6dm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo0My43MDMwNjI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0NDE5MjA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHRleHQsIGFuZCBhc3N1bWluZyBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLVk0gVGltZXIgSW1wbGVtZW50YXRpb24gZm9yIExvb25nQXJjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byBgYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTIuIE15IGluaXRpYWwgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGlzIGFyZWEgbGlrZWx5IGRlYWxzIHdpdGggdGhlIGNvcmUgbG9naWMgZm9yIGVpdGhlciBzZXR0aW5nIHVwLCBtYW5hZ2luZywgb3IgaGFuZGxpbmcgaW50ZXJydXB0cyByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUncyB0aW1lcnMgb24gdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrLiBHaXZlbiB0aGF0IHdlJ3JlIGxvb2tpbmcgYXQgdGltZXIgY29kZSwgSSdtIGFudGljaXBhdGluZyB0aGF0IHdlJ2xsIGJlIGRlYWxpbmcgd2l0aCBlaXRoZXIgdGhlIEhpZ2gtUmVzb2x1dGlvbiBUaW1lciAoSFJUKSBvciB0aGUgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIGZvciB0aW1lciBkdXRpZXMgYW5kIGludGVycnVwdCBnZW5lcmF0aW9uLiBXZSdsbCBsaWtlbHkgc2VlIGludGVyYWN0aW9ucyB3aXRoIHRoZSBMb29uZ0FyY2gncyBzcGVjaWZpYyBDU1JzIGFuZCBzeXN0ZW0gcmVnaXN0ZXJzIHRvIGNvbnRyb2wgdGltZXIgYmVoYXZpb3IgYW5kIHBvdGVudGlhbGx5IHRoZSBWaXJ0dWFsIE1hY2hpbmUgQ29udHJvbCBTdHJ1Y3R1cmUgKFZNQ1MpIGlmIHRoZXJlJ3MgYW55IHZpcnR1YWxpemF0aW9uLXNwZWNpZmljIHN0YXRlIG5lZWRpbmcgdG8gYmUgbWFuYWdlZCBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGh5cGVydmlzb3IgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHRpbWVycyBhbmQgaG93IHRoZSBndWVzdCBpcyBleHBvc2VkIHRvIGl0IGFuZCB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGludGVycnVwdCBjb250cm9sbGVyLiBJdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSBob3cgdGhleSBoYW5kbGUgdmlydHVhbCB0aW1lciBpbnRlcnJ1cHRzIGFuZCBob3cgdGhleSBhcmUgaW5qZWN0ZWQgaW50byB0aGUgZ3Vlc3QuIFRoaXMgc3BlY2lmaWMgYXJlYSBjb3VsZCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kIG92ZXJhbGwgZ3Vlc3QgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM2MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA4OjU2OjQ2Ljk0NzI1NjgxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUyLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MjpcXHR2b2lkIGt2bV9yZXN0b3JlX3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gIDUzOlxcdHtcXG4gIDU0OlxcdFxcdHVuc2lnbmVkIGxvbmcgY2ZnLCBlc3RhdDtcXG4gIDU1OlxcdFxcdHVuc2lnbmVkIGxvbmcgdGlja3MsIGRlbHRhLCBwZXJpb2Q7XFxuICA1NjpcXHRcXHRrdGltZV90IGV4cGlyZSwgbm93O1xcbiAgNTc6XFx0XFx0c3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LVxcdTAwM2VhcmNoLmNzcjtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0LypcXG4gIDYwOlxcdFxcdCAqIFNldCBndWVzdCBzdGFibGUgdGltZXIgY2ZnIGNzclxcbiAgNjE6XFx0XFx0ICogRGlzYWJsZSB0aW1lciBiZWZvcmUgcmVzdG9yZSBlc3RhdCBDU1IgcmVnaXN0ZXIsIGF2b2lkIHRvXFxuICA2MjpcXHRcXHQgKiBnZXQgaW52YWxpZCB0aW1lciBpbnRlcnJ1cHQgZm9yIG9sZCB0aW1lciBjZmdcXG4gIDYzOlxcdFxcdCAqL1xcbiAgNjQ6XFx0XFx0Y2ZnID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XFxuICA2NTpcXHRcXG4gIDY2OlxcdFxcdHdyaXRlX2djc3JfdGltZXJjZmcoMCk7XFxuICA2NzpcXHRcXHRrdm1fcmVzdG9yZV9od19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCk7XFxuICA2ODpcXHRcXHRrdm1fcmVzdG9yZV9od19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9UQ0ZHKTtcXG4gIDY5OlxcdFxcdGlmICghKGNmZyBcXHUwMDI2IENTUl9UQ0ZHX0VOKSkge1xcbiAgNzA6XFx0XFx0XFx0LyogR3Vlc3QgdGltZXIgaXMgZGlzYWJsZWQsIGp1c3QgcmVzdG9yZSB0aW1lciByZWdpc3RlcnMgKi9cXG4gIDcxOlxcdFxcdFxcdGt2bV9yZXN0b3JlX2h3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xcbiAgNzI6XFx0XFx0XFx0cmV0dXJuO1xcbiAgNzM6XFx0XFx0fVxcbiAgNzQ6XFx0XFxuICA3NTpcXHRcXHQvKlxcbiAgNzY6XFx0XFx0ICogRnJlZXplIHRoZSBzb2Z0LXRpbWVyIGFuZCBzeW5jIHRoZSBndWVzdCBzdGFibGUgdGltZXIgd2l0aCBpdC5cXG4gIDc3OlxcdFxcdCAqL1xcbiAgNzg6XFx0XFx0aWYgKGt2bV92Y3B1X2lzX2Jsb2NraW5nKHZjcHUpKVxcbiAgNzk6XFx0XFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2guc3d0aW1lcik7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdC8qXFxuICA4MjpcXHRcXHQgKiBGcm9tIExvb25nQXJjaCBSZWZlcmVuY2UgTWFudWFsIFZvbHVtZSAxIENoYXB0ZXIgNy42LjJcXG4gIDgzOlxcdFxcdCAqIElmIG9uZXNob3QgdGltZXIgaXMgZmlyZWQsIENTUiBUVkFMIHdpbGwgYmUgLTEsIHRoZXJlIGFyZSB0d29cXG4gIDg0OlxcdFxcdCAqIGNvbmRpdGlvbnM6XFxuICA4NTpcXHRcXHQgKiAgMSkgdGltZXIgaXMgZmlyZWQgZHVyaW5nIGV4aXRpbmcgdG8gaG9zdFxcbiAgODY6XFx0XFx0ICogIDIpIHRpbWVyIGlzIGZpcmVkIGFuZCB2bSBpcyBkb2luZyB0aW1lciBpcnEsIGFuZCB0aGVuIGV4aXRpbmcgdG9cXG4gIDg3OlxcdFxcdCAqICAgICBob3N0LiBIb3N0IHNob3VsZCBub3QgaW5qZWN0IHRpbWVyIGlycSB0byBhdm9pZCBzcHVyaW91c1xcbiAgODg6XFx0XFx0ICogICAgIHRpbWVyIGludGVycnVwdCBhZ2FpblxcbiAgODk6XFx0XFx0ICovXFxuICA5MDpcXHRcXHR0aWNrcyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xcbiAgOTE6XFx0XFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCk7XFxuICA5MjpcXHRcXHRpZiAoIShjZmcgXFx1MDAyNiBDU1JfVENGR19QRVJJT0QpIFxcdTAwMjZcXHUwMDI2ICh0aWNrcyBcXHUwMDNlIGNmZykpIHtcXG4gIDkzOlxcdFxcdFxcdC8qXFxuICA5NDpcXHRcXHRcXHQgKiBXcml0aW5nIDAgdG8gTE9PTkdBUkNIX0NTUl9UVkFMIHdpbGwgaW5qZWN0IHRpbWVyIGlycVxcbiAgOTU6XFx0XFx0XFx0ICogYW5kIHNldCBDU1IgVFZBTCB3aXRoIC0xXFxuICA5NjpcXHRcXHRcXHQgKi9cXG4gIDk3OlxcdFxcdFxcdHdyaXRlX2djc3JfdGltZXJ0aWNrKDApO1xcbiAgOTg6XFx0XFxuICA5OTpcXHRcXHRcXHQvKlxcbiAxMDA6XFx0XFx0XFx0ICogV3JpdGluZyBDU1JfVElOVENMUl9USSB0byBMT09OR0FSQ0hfQ1NSX1RJTlRDTFIgd2lsbCBjbGVhclxcbiAxMDE6XFx0XFx0XFx0ICogdGltZXIgaW50ZXJydXB0LCBhbmQgQ1NSIFRWQUwga2VlcHMgdW5jaGFuZ2VkIHdpdGggLTEsIGl0XFxuIDEwMjpcXHRcXHRcXHQgKiBhdm9pZHMgc3B1cmlvdXMgdGltZXIgaW50ZXJydXB0XFxuIDEwMzpcXHRcXHRcXHQgKi9cXG4gMTA0OlxcdFxcdFxcdGlmICghKGVzdGF0IFxcdTAwMjYgQ1BVX1RJTUVSKSkge1xcbiAxMDU6XFx0XFx0XFx0XFx0X19kZWxheSgyKTsgLyogV2FpdCBjeWNsZXMgdW50aWwgdGltZXIgaW50ZXJydXB0IGluamVjdGVkICovXFxuIDEwNjpcXHRcXG4gMTA3OlxcdFxcdFxcdFxcdC8qIFdyaXRlIFRWQUwgd2l0aCBtYXggdmFsdWUgaWYgbm8gVEkgc2hvdCAqL1xcbiAxMDg6XFx0XFx0XFx0XFx0ZXN0YXQgPSBrdm1fcmVhZF9od19nY3NyKExPT05HQVJDSF9DU1JfRVNUQVQpO1xcbiAxMDk6XFx0XFx0XFx0XFx0aWYgKCEoZXN0YXQgXFx1MDAyNiBDUFVfVElNRVIpKVxcbiAxMTA6XFx0XFx0XFx0XFx0XFx0d3JpdGVfZ2Nzcl90aW1lcnRpY2soQ1NSX1RDRkdfVkFMKTtcXG4gMTExOlxcdFxcdFxcdFxcdGdjc3Jfd3JpdGUoQ1NSX1RJTlRDTFJfVEksIExPT05HQVJDSF9DU1JfVElOVENMUik7XFxuIDExMjpcXHRcXHRcXHR9XFxuIDExMzpcXHRcXHRcXHRyZXR1cm47XFxuIDExNDpcXHRcXHR9XFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdC8qXFxuIDExNzpcXHRcXHQgKiBTZXQgcmVtYWluZGVyIHRpY2sgdmFsdWUgaWYgbm90IGV4cGlyZWRcXG4gMTE4OlxcdFxcdCAqL1xcbiAxMTk6XFx0XFx0ZGVsdGEgPSAwO1xcbiAxMjA6XFx0XFx0bm93ID0ga3RpbWVfZ2V0KCk7XFxuIDEyMTpcXHRcXHRleHBpcmUgPSB2Y3B1LVxcdTAwM2VhcmNoLmV4cGlyZTtcXG4gMTIyOlxcdFxcdGlmIChrdGltZV9iZWZvcmUobm93LCBleHBpcmUpKVxcbiAxMjM6XFx0XFx0XFx0ZGVsdGEgPSBrdGltZV90b190aWNrKHZjcHUsIGt0aW1lX3N1YihleHBpcmUsIG5vdykpO1xcbiAxMjQ6XFx0XFx0ZWxzZSBpZiAoY2ZnIFxcdTAwMjYgQ1NSX1RDRkdfUEVSSU9EKSB7XFxuIDEyNTpcXHRcXHRcXHRwZXJpb2QgPSBjZmcgXFx1MDAyNiBDU1JfVENGR19WQUw7XFxuIDEyNjpcXHRcXHRcXHRkZWx0YSA9IGt0aW1lX3RvX3RpY2sodmNwdSwga3RpbWVfc3ViKG5vdywgZXhwaXJlKSk7XFxuIDEyNzpcXHRcXHRcXHRkZWx0YSA9IHBlcmlvZCAtIChkZWx0YSAlIHBlcmlvZCk7XFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdFxcdC8qXFxuIDEzMDpcXHRcXHRcXHQgKiBJbmplY3QgdGltZXIgaGVyZSB0aG91Z2ggc3cgdGltZXIgc2hvdWxkIGluamVjdCB0aW1lclxcbiAxMzE6XFx0XFx0XFx0ICogaW50ZXJydXB0IGFzeW5jIGFscmVhZHksIHNpbmNlIHN3IHRpbWVyIG1heSBiZSBjYW5jZWxsZWRcXG4gMTMyOlxcdFxcdFxcdCAqIGR1cmluZyBpbmplY3RpbmcgaW50ciBhc3luY1xcbiAxMzM6XFx0XFx0XFx0ICovXFxuIDEzNDpcXHRcXHRcXHRrdm1fcXVldWVfaXJxKHZjcHUsIElOVF9USSk7XFxuIDEzNTpcXHRcXHR9IGVsc2UgaWYgKCFleHBpcmUpIHtcXG4gMTM2OlxcdFxcdFxcdC8qXFxuIDEzNzpcXHRcXHRcXHQgKiBPbmUtc2hvdCB0aW1lciBvbiB0aGUgbWlncmF0aW9uIGRlc3RpbmF0aW9uOiB2Y3B1LVxcdTAwM2VhcmNoLmV4cGlyZVxcbiAxMzg6XFx0XFx0XFx0ICogaXMgaG9zdC1pbnRlcm5hbCBhbmQgaXMgbm90IG1pZ3JhdGVkLCBzbyBpdCBpcyBzdGlsbCAwIGhlcmUuXFxuIDEzOTpcXHRcXHRcXHQgKiBSZWxvYWQgdGhlIHJlbWFpbmluZyBjb3VudGRvd24gZnJvbSB0aGUgbWlncmF0ZWQgVFZBTCBpbnN0ZWFkXFxuIDE0MDpcXHRcXHRcXHQgKiBvZiBmaXJpbmcgdGhlIHRpbWVyIGltbWVkaWF0ZWx5LlxcbiAxNDE6XFx0XFx0XFx0ICovXFxuIDE0MjpcXHRcXHRcXHRkZWx0YSA9IHRpY2tzO1xcbiAxNDM6XFx0XFx0fVxcbiAxNDQ6XFx0XFxuIDE0NTpcXHRcXHR3cml0ZV9nY3NyX3RpbWVydGljayhkZWx0YSk7XFxuIDE0NjpcXHR9XFxuIDE0NzpcXHRcXG4gMTQ4OlxcdC8qXFxuIDE0OTpcXHQgKiBTYXZlIGd1ZXN0IHRpbWVyIHN0YXRlIGFuZCBzd2l0Y2ggdG8gc29mdHdhcmUgZW11bGF0aW9uIG9mIGd1ZXN0XFxuIDE1MDpcXHQgKiB0aW1lci4gVGhlIGhhcmQgdGltZXIgbXVzdCBhbHJlYWR5IGJlIGluIHVzZSwgc28gcHJlZW1wdGlvbiBzaG91bGQgYmVcXG4gMTUxOlxcdCAqIGRpc2FibGVkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo0Ni45NDczODQ1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTYxNDYxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMb29uZ0FyY2ggS1ZNIFRpbWVyIFJlc3RvcmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGt2bV9yZXN0b3JlX3RpbWVyYCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYC4gVGhhdCBmaWxlIGlzIHdoZXJlIHRoZSBMb29uZ0FyY2ggS1ZNIGltcGxlbWVudGF0aW9uIGtlZXBzIGl0cyB0aW1lciBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gcmVzdG9yaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLCBhIGNyaXRpY2FsIGZ1bmN0aW9uLiBJbW1lZGlhdGVseSwgdGhlIHF1ZXN0aW9uIHBvcHMgdXA6IGNhbiB3ZSBmdXp6IHRoaXM/IEl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIHBvdGVudGlhbCBidWdzLCBlc3BlY2lhbGx5IGluIGEgY29tcGxleCBhcmVhIGxpa2UgdGltZXIgbWFuYWdlbWVudCBkdXJpbmcgbWlncmF0aW9uLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgY29udGV4dCBpcyB0aGF0IHRoaXMgaXMgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIHRoZSBxdWVzdGlvbjogZG9lcyBzeXprYWxsZXIgZXZlbiBzdXBwb3J0IHRoaXM/IEZvcnR1bmF0ZWx5LCB5ZXMsIEkga25vdyBzeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgTG9vbmdBcmNoIG5vdy4gQnV0IHRoZSBmYWN0IHRoYXQgaXQncyBLVk0gY29kZSBtZWFucyB3ZSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWZpYyBLVk0gY29uZmlndXJhdGlvbiBmb3Igc3l6a2FsbGVyIG9uIExvb25nQXJjaC4gV2UnbGwgbmVlZCB0byBjb25maXJtIHRoYXQgc3l6a2FsbGVyIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQgZm9yIExvb25nQXJjaCBLVk0gZnV6emluZy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gY29uc3VsdCB0aGUgS2NvbmZpZyBmaWxlcyB0byBjb25maXJtIHRoZSBLVk0gc3VwcG9ydCBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDg6NTY6NTEuMzQzNTMzMjY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDk0NTE4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo1MS41ODg0ODQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1MzM4MjMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBUaW1lciBSZXN0b3JhdGlvbiBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSB3b3JraW5nIHdpdGggaXMgYEtWTWAsIGFuZCB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYmV0dGVyIGlzIGBrdm1fcmVzdG9yZV90aW1lcmAuIEZpcnN0LCBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZS4gQWxyaWdodCwgSSBjb25maXJtIHRoYXQgd2UgZGVmaW5pdGVseSBuZWVkIGJvdGggYFZJUlRVQUxJWkFUSU9OYCBhbmQsIG9mIGNvdXJzZSwgYEtWTWAuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiBga3ZtX3Jlc3RvcmVfdGltZXJgIGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGZyb20gdXNlcnNwYWNlPyBNeSBpbnR1aXRpb24gc3VnZ2VzdHMgaXQncyBwYXJ0IG9mIHRoZSBLVk0ncyB2Q1BVIHJ1biBsb29wLCBvciBwZXJoYXBzIGludm9sdmVkIGluIHZDUFUgc3RhdGUgcmVzdG9yYXRpb24gb3BlcmF0aW9ucyBsaWtlIGBLVk1fU0VUX1JFR1NgLCBgS1ZNX1NFVF9TUkVHU2AsIG9yIHBvdGVudGlhbGx5IGBLVk1fU0VUX09ORV9SRUdgLiBUaGF0IHNlZW1zIGxpa2VseS4gVG8gYmUgY2VydGFpbiwgSSdsbCBuZWVkIHRvIHBpbnBvaW50IHByZWNpc2VseSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGUuIExldCdzIHRyYWNlIHRob3NlIGNhbGwgc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDg6NTY6NTguNDQxODY5NjcyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzcwNTA5OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jlc3RvcmVfdGltZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYz00MT12b2lkIGt2bV9pbml0X3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyB0aW1lcl9oeilcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTUxLSAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjUyOnZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTUzLXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTU5Mz1zdGF0aWMgaW50IF9rdm1fdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTYxNi1cXHQvKiBSZXN0b3JlIHRpbWVyIHN0YXRlIHJlZ2FyZGxlc3MgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE2MTc6XFx0a3ZtX3Jlc3RvcmVfdGltZXIodmNwdSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xNjE4LVxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9TVEVBTF9VUERBVEUsIHZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo1OS4wNzg5MjgzNjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNTk5MjgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEltcG9ydGFuY2UgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gSXQgdG91Y2hlcyBjb2RlIHdpdGhpbiBgX2t2bV92Y3B1X2xvYWRgLCB3aGljaCBpcyBhIGtleSBmdW5jdGlvbiBjYWxsZWQgd2hlbmV2ZXIgYSB2Q1BVIGdldHMgbG9hZGVkIG9udG8gYSBwaHlzaWNhbCBDUFUuIFRoYXQgbWVhbnMgdGhpcyBpcyBkZWZpbml0ZWx5IGNvZGUgdGhhdCBzZWVzIGFjdGl2ZSB1c2UgZHVyaW5nIG5vcm1hbCBLVk0gZXhlY3V0aW9uLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0LlxuXG5UaGUgZGVzY3JpcHRpb24gc2F5cyB0aGUgcGF0Y2ggaXMgYWN0dWFsbHkgKmZ1bmN0aW9uYWwqLCB3aGljaCBpcyBncmVhdC4gSXQncyBmaXhpbmcgYSBidWcgcmVsYXRlZCB0byBvbmUtc2hvdCB0aW1lcnMgb24gdGhlIG1pZ3JhdGlvbiBkZXN0aW5hdGlvbiBmaXJpbmcgcHJlbWF0dXJlbHkuIEJhc2ljYWxseSwgaXTigJlzIGhhbmRsaW5nIHRoZSByZWxvYWRpbmcgb2YgdGltZXIgdmFsdWVzIGFmdGVyIG1pZ3JhdGlvbi4gVGhpcyBoYXMgZGlyZWN0IGltcGxpY2F0aW9ucyBvbiB0aGUgaW50ZWdyaXR5IG9mIG1pZ3JhdGluZyBhIHJ1bm5pbmcgVk0sIHJpZ2h0PyBTbyB5ZXMsIHRoaXMgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBkZWZpbml0ZWx5IGxvb2sgdG8gZnV6ei5cblxuVGhlIGtleSBmdW5jdGlvbiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBpcyBga3ZtX3Jlc3RvcmVfdGltZXJgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlncy4uLiBZZXAsIGBLVk1gIGlzIGVuYWJsZWQsIGFuZCBub3RoaW5nIGVsc2Ugc2VlbXMgcmVsZXZhbnQgaW4gdGhlIExvb25nQXJjaCBLY29uZmlnIGZpbGUuXG5cbkFscmlnaHQsIHRpbWUgdG8gc3ludGhlc2l6ZSBteSBmaW5kaW5ncy4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSByZWFzb25pbmcgaXMgc29saWQ6IGl0IG1vZGlmaWVzIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbiwgYW5kIGl0IHRvdWNoZXMgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLiBTbyBoZXJlJ3MgdGhlIHN1bW1hcnk6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiAqdHJ1ZSpcbiogICAqKkZvY3VzU3ltYm9scyoqOiBgW1wia3ZtX3Jlc3RvcmVfdGltZXJcIl1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJLVk1cIl1gXG4qICAgKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYzLCJPdXRwdXRUb2tlbnMiOjc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA4OjU3OjA1LjE4NDkzMTA3NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDkxODkxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jlc3RvcmVfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHRpbWVyIHJlc3RvcmF0aW9uIGxvZ2ljIG9uIExvb25nQXJjaCwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yZXN0b3JlX3RpbWVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 08:37:08 +0000 UTC FinishedAt: 2026-07-15 08:57:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_restore_timer" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA4OjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9yZXN0b3JlX3RpbWVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBLVk0gdGltZXIgcmVzdG9yYXRpb24gbG9naWMgb24gTG9vbmdBcmNoLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgb25lLXNob3QgdGltZXJzIGR1cmluZyBtaWdyYXRpb24uIFRoaXMgaXMgZnVuY3Rpb25hbCBjb3JlIEtWTSBjb2RlIHJlYWNoYWJsZSBkdXJpbmcgdkNQVSBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0NzEyYmFkYjgyMmY1ODRkYTUzZjdkNzkzMzVhNmYzMWRiNjg2ZjY4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMTUgMDg6NTY6MzQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMgYi9hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuY1xuaW5kZXggMzgyOWYzNWE0MDcwYjUuLjU3ZjUzZDE5YTAwYWI2IDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jXG5AQCAtMTMyLDYgJiM0MzsxMzIsMTQgQEAgdm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdCAqIGR1cmluZyBpbmplY3RpbmcgaW50ciBhc3luY1xuIFx0XHQgKi9cbiBcdFx0a3ZtX3F1ZXVlX2lycSh2Y3B1LCBJTlRfVEkpO1xuJiM0MztcdH0gZWxzZSBpZiAoIWV4cGlyZSkge1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIE9uZS1zaG90IHRpbWVyIG9uIHRoZSBtaWdyYXRpb24gZGVzdGluYXRpb246IHZjcHUtXHUwMDNlYXJjaC5leHBpcmVcbiYjNDM7XHRcdCAqIGlzIGhvc3QtaW50ZXJuYWwgYW5kIGlzIG5vdCBtaWdyYXRlZCwgc28gaXQgaXMgc3RpbGwgMCBoZXJlLlxuJiM0MztcdFx0ICogUmVsb2FkIHRoZSByZW1haW5pbmcgY291bnRkb3duIGZyb20gdGhlIG1pZ3JhdGVkIFRWQUwgaW5zdGVhZFxuJiM0MztcdFx0ICogb2YgZmlyaW5nIHRoZSB0aW1lciBpbW1lZGlhdGVseS5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0ZGVsdGEgPSB0aWNrcztcbiBcdH1cbiBcbiBcdHdyaXRlX2djc3JfdGltZXJ0aWNrKGRlbHRhKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwODo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fcmVzdG9yZV90aW1lciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHRpbWVyIHJlc3RvcmF0aW9uIGxvZ2ljIG9uIExvb25nQXJjaCwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0NzEyYmFkYjgyMmY1ODRkYTUzZjdkNzkzMzVhNmYzMWRiNjg2ZjY4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMTUgMDg6NTY6MzQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYyBiL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jCmluZGV4IDM4MjlmMzVhNDA3MGI1Li41N2Y1M2QxOWEwMGFiNiAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMKQEAgLTEzMiw2ICYjNDM7MTMyLDE0IEBAIHZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQkgKiBkdXJpbmcgaW5qZWN0aW5nIGludHIgYXN5bmMKIAkJICovCiAJCWt2bV9xdWV1ZV9pcnEodmNwdSwgSU5UX1RJKTsKJiM0MzsJfSBlbHNlIGlmICghZXhwaXJlKSB7CiYjNDM7CQkvKgomIzQzOwkJICogT25lLXNob3QgdGltZXIgb24gdGhlIG1pZ3JhdGlvbiBkZXN0aW5hdGlvbjogdmNwdS0mZ3Q7YXJjaC5leHBpcmUKJiM0MzsJCSAqIGlzIGhvc3QtaW50ZXJuYWwgYW5kIGlzIG5vdCBtaWdyYXRlZCwgc28gaXQgaXMgc3RpbGwgMCBoZXJlLgomIzQzOwkJICogUmVsb2FkIHRoZSByZW1haW5pbmcgY291bnRkb3duIGZyb20gdGhlIG1pZ3JhdGVkIFRWQUwgaW5zdGVhZAomIzQzOwkJICogb2YgZmlyaW5nIHRoZSB0aW1lciBpbW1lZGlhdGVseS4KJiM0MzsJCSAqLwomIzQzOwkJZGVsdGEgPSB0aWNrczsKIAl9CiAKIAl3cml0ZV9nY3NyX3RpbWVydGljayhkZWx0YSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBUaW1lciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYC4gU2VlbXMgbGlrZSB0aGUgY29yZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIHRoZSBga3ZtX3Jlc3RvcmVfdGltZXJgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgYW4gYGVsc2UgaWYgKCFleHBpcmUpYCBjb25kaXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O0FoLCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBvbiB0aGUgbWlncmF0aW9uIGRlc3RpbmF0aW9uLiYjMzQ7IFRoaXMgbWFrZXMgc2Vuc2U7IHdoZW4gbWlncmF0aW5nIGEgVk0sIHdlIG5lZWQgdG8gZW5zdXJlIHRpbWVycyBiZWhhdmUgY29ycmVjdGx5IG9uIHRoZSB0YXJnZXQgaG9zdC4gVGhlIGAhZXhwaXJlYCBjb25kaXRpb24gc2VlbXMgdG8gYmUgdGhlIGNydWNpYWwgYml0IGhlcmUsIHN1Z2dlc3RpbmcgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIGEgdGltZXIgKmhhc24mIzM5O3QqIHlldCBmaXJlZCwgbGlrZWx5IGFmdGVyIG1pZ3JhdGlvbi4gSSBzaG91bGQgY2hlY2sgYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYCB0byBzZWUgdGhlIGNvbnRleHQgYW5kIHdoYXQgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIGlzIHRyeWluZyB0byBhY2hpZXZlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgKmhvdyogdGhlIGBrdm1fcmVzdG9yZV90aW1lcmAgZnVuY3Rpb24gaXMgZGVmaW5lZCBhbmQgdXNlZCB3aXRoaW4gdGhlIGJyb2FkZXIgS1ZNIHRpbWVyIGZyYW1ld29yayBvbiBMb29uZ0FyY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jlc3RvcmVfdGltZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYz00MT12b2lkIGt2bV9pbml0X3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyB0aW1lcl9oeilcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy01MS0gKi9cbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjUyOnZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNTMte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA4OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoZSBwcm92aWRlZCB0ZXh0LCBhbmQgYXNzdW1pbmcgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEtWTSBUaW1lciBJbXBsZW1lbnRhdGlvbiBmb3IgTG9vbmdBcmNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDUyLiBNeSBpbml0aWFsIGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhpcyBhcmVhIGxpa2VseSBkZWFscyB3aXRoIHRoZSBjb3JlIGxvZ2ljIGZvciBlaXRoZXIgc2V0dGluZyB1cCwgbWFuYWdpbmcsIG9yIGhhbmRsaW5nIGludGVycnVwdHMgcmVsYXRlZCB0byB0aGUgdmlydHVhbCBtYWNoaW5lJiMzOTtzIHRpbWVycyBvbiB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSB3aXRoaW4gdGhlIEtWTSBmcmFtZXdvcmsuIEdpdmVuIHRoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGltZXIgY29kZSwgSSYjMzk7bSBhbnRpY2lwYXRpbmcgdGhhdCB3ZSYjMzk7bGwgYmUgZGVhbGluZyB3aXRoIGVpdGhlciB0aGUgSGlnaC1SZXNvbHV0aW9uIFRpbWVyIChIUlQpIG9yIHRoZSBQZXJmb3JtYW5jZSBNb25pdG9yaW5nIFVuaXQgKFBNVSkgZm9yIHRpbWVyIGR1dGllcyBhbmQgaW50ZXJydXB0IGdlbmVyYXRpb24uIFdlJiMzOTtsbCBsaWtlbHkgc2VlIGludGVyYWN0aW9ucyB3aXRoIHRoZSBMb29uZ0FyY2gmIzM5O3Mgc3BlY2lmaWMgQ1NScyBhbmQgc3lzdGVtIHJlZ2lzdGVycyB0byBjb250cm9sIHRpbWVyIGJlaGF2aW9yIGFuZCBwb3RlbnRpYWxseSB0aGUgVmlydHVhbCBNYWNoaW5lIENvbnRyb2wgU3RydWN0dXJlIChWTUNTKSBpZiB0aGVyZSYjMzk7cyBhbnkgdmlydHVhbGl6YXRpb24tc3BlY2lmaWMgc3RhdGUgbmVlZGluZyB0byBiZSBtYW5hZ2VkIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaHlwZXJ2aXNvciBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUgdGltZXJzIGFuZCBob3cgdGhlIGd1ZXN0IGlzIGV4cG9zZWQgdG8gaXQgYW5kIHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIuIEl0IHdpbGwgYmUgaW50ZXJlc3RpbmcgdG8gc2VlIGhvdyB0aGV5IGhhbmRsZSB2aXJ0dWFsIHRpbWVyIGludGVycnVwdHMgYW5kIGhvdyB0aGV5IGFyZSBpbmplY3RlZCBpbnRvIHRoZSBndWVzdC4gVGhpcyBzcGVjaWZpYyBhcmVhIGNvdWxkIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgb3ZlcmFsbCBndWVzdCBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDA4OjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA1MjpcdHZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuICA1MzpcdHtcbiAgNTQ6XHRcdHVuc2lnbmVkIGxvbmcgY2ZnLCBlc3RhdDtcbiAgNTU6XHRcdHVuc2lnbmVkIGxvbmcgdGlja3MsIGRlbHRhLCBwZXJpb2Q7XG4gIDU2Olx0XHRrdGltZV90IGV4cGlyZSwgbm93O1xuICA1NzpcdFx0c3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LVx1MDAzZWFyY2guY3NyO1xuICA1ODpcdFxuICA1OTpcdFx0LypcbiAgNjA6XHRcdCAqIFNldCBndWVzdCBzdGFibGUgdGltZXIgY2ZnIGNzclxuICA2MTpcdFx0ICogRGlzYWJsZSB0aW1lciBiZWZvcmUgcmVzdG9yZSBlc3RhdCBDU1IgcmVnaXN0ZXIsIGF2b2lkIHRvXG4gIDYyOlx0XHQgKiBnZXQgaW52YWxpZCB0aW1lciBpbnRlcnJ1cHQgZm9yIG9sZCB0aW1lciBjZmdcbiAgNjM6XHRcdCAqL1xuICA2NDpcdFx0Y2ZnID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XG4gIDY1Olx0XG4gIDY2Olx0XHR3cml0ZV9nY3NyX3RpbWVyY2ZnKDApO1xuICA2NzpcdFx0a3ZtX3Jlc3RvcmVfaHdfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfRVNUQVQpO1xuICA2ODpcdFx0a3ZtX3Jlc3RvcmVfaHdfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XG4gIDY5Olx0XHRpZiAoIShjZmcgXHUwMDI2IENTUl9UQ0ZHX0VOKSkge1xuICA3MDpcdFx0XHQvKiBHdWVzdCB0aW1lciBpcyBkaXNhYmxlZCwganVzdCByZXN0b3JlIHRpbWVyIHJlZ2lzdGVycyAqL1xuICA3MTpcdFx0XHRrdm1fcmVzdG9yZV9od19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9UVkFMKTtcbiAgNzI6XHRcdFx0cmV0dXJuO1xuICA3MzpcdFx0fVxuICA3NDpcdFxuICA3NTpcdFx0LypcbiAgNzY6XHRcdCAqIEZyZWV6ZSB0aGUgc29mdC10aW1lciBhbmQgc3luYyB0aGUgZ3Vlc3Qgc3RhYmxlIHRpbWVyIHdpdGggaXQuXG4gIDc3Olx0XHQgKi9cbiAgNzg6XHRcdGlmIChrdm1fdmNwdV9pc19ibG9ja2luZyh2Y3B1KSlcbiAgNzk6XHRcdFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnN3dGltZXIpO1xuICA4MDpcdFxuICA4MTpcdFx0LypcbiAgODI6XHRcdCAqIEZyb20gTG9vbmdBcmNoIFJlZmVyZW5jZSBNYW51YWwgVm9sdW1lIDEgQ2hhcHRlciA3LjYuMlxuICA4MzpcdFx0ICogSWYgb25lc2hvdCB0aW1lciBpcyBmaXJlZCwgQ1NSIFRWQUwgd2lsbCBiZSAtMSwgdGhlcmUgYXJlIHR3b1xuICA4NDpcdFx0ICogY29uZGl0aW9uczpcbiAgODU6XHRcdCAqICAxKSB0aW1lciBpcyBmaXJlZCBkdXJpbmcgZXhpdGluZyB0byBob3N0XG4gIDg2Olx0XHQgKiAgMikgdGltZXIgaXMgZmlyZWQgYW5kIHZtIGlzIGRvaW5nIHRpbWVyIGlycSwgYW5kIHRoZW4gZXhpdGluZyB0b1xuICA4NzpcdFx0ICogICAgIGhvc3QuIEhvc3Qgc2hvdWxkIG5vdCBpbmplY3QgdGltZXIgaXJxIHRvIGF2b2lkIHNwdXJpb3VzXG4gIDg4Olx0XHQgKiAgICAgdGltZXIgaW50ZXJydXB0IGFnYWluXG4gIDg5Olx0XHQgKi9cbiAgOTA6XHRcdHRpY2tzID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVFZBTCk7XG4gIDkxOlx0XHRlc3RhdCA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX0VTVEFUKTtcbiAgOTI6XHRcdGlmICghKGNmZyBcdTAwMjYgQ1NSX1RDRkdfUEVSSU9EKSBcdTAwMjZcdTAwMjYgKHRpY2tzIFx1MDAzZSBjZmcpKSB7XG4gIDkzOlx0XHRcdC8qXG4gIDk0Olx0XHRcdCAqIFdyaXRpbmcgMCB0byBMT09OR0FSQ0hfQ1NSX1RWQUwgd2lsbCBpbmplY3QgdGltZXIgaXJxXG4gIDk1Olx0XHRcdCAqIGFuZCBzZXQgQ1NSIFRWQUwgd2l0aCAtMVxuICA5NjpcdFx0XHQgKi9cbiAgOTc6XHRcdFx0d3JpdGVfZ2Nzcl90aW1lcnRpY2soMCk7XG4gIDk4Olx0XG4gIDk5Olx0XHRcdC8qXG4gMTAwOlx0XHRcdCAqIFdyaXRpbmcgQ1NSX1RJTlRDTFJfVEkgdG8gTE9PTkdBUkNIX0NTUl9USU5UQ0xSIHdpbGwgY2xlYXJcbiAxMDE6XHRcdFx0ICogdGltZXIgaW50ZXJydXB0LCBhbmQgQ1NSIFRWQUwga2VlcHMgdW5jaGFuZ2VkIHdpdGggLTEsIGl0XG4gMTAyOlx0XHRcdCAqIGF2b2lkcyBzcHVyaW91cyB0aW1lciBpbnRlcnJ1cHRcbiAxMDM6XHRcdFx0ICovXG4gMTA0Olx0XHRcdGlmICghKGVzdGF0IFx1MDAyNiBDUFVfVElNRVIpKSB7XG4gMTA1Olx0XHRcdFx0X19kZWxheSgyKTsgLyogV2FpdCBjeWNsZXMgdW50aWwgdGltZXIgaW50ZXJydXB0IGluamVjdGVkICovXG4gMTA2Olx0XG4gMTA3Olx0XHRcdFx0LyogV3JpdGUgVFZBTCB3aXRoIG1heCB2YWx1ZSBpZiBubyBUSSBzaG90ICovXG4gMTA4Olx0XHRcdFx0ZXN0YXQgPSBrdm1fcmVhZF9od19nY3NyKExPT05HQVJDSF9DU1JfRVNUQVQpO1xuIDEwOTpcdFx0XHRcdGlmICghKGVzdGF0IFx1MDAyNiBDUFVfVElNRVIpKVxuIDExMDpcdFx0XHRcdFx0d3JpdGVfZ2Nzcl90aW1lcnRpY2soQ1NSX1RDRkdfVkFMKTtcbiAxMTE6XHRcdFx0XHRnY3NyX3dyaXRlKENTUl9USU5UQ0xSX1RJLCBMT09OR0FSQ0hfQ1NSX1RJTlRDTFIpO1xuIDExMjpcdFx0XHR9XG4gMTEzOlx0XHRcdHJldHVybjtcbiAxMTQ6XHRcdH1cbiAxMTU6XHRcbiAxMTY6XHRcdC8qXG4gMTE3Olx0XHQgKiBTZXQgcmVtYWluZGVyIHRpY2sgdmFsdWUgaWYgbm90IGV4cGlyZWRcbiAxMTg6XHRcdCAqL1xuIDExOTpcdFx0ZGVsdGEgPSAwO1xuIDEyMDpcdFx0bm93ID0ga3RpbWVfZ2V0KCk7XG4gMTIxOlx0XHRleHBpcmUgPSB2Y3B1LVx1MDAzZWFyY2guZXhwaXJlO1xuIDEyMjpcdFx0aWYgKGt0aW1lX2JlZm9yZShub3csIGV4cGlyZSkpXG4gMTIzOlx0XHRcdGRlbHRhID0ga3RpbWVfdG9fdGljayh2Y3B1LCBrdGltZV9zdWIoZXhwaXJlLCBub3cpKTtcbiAxMjQ6XHRcdGVsc2UgaWYgKGNmZyBcdTAwMjYgQ1NSX1RDRkdfUEVSSU9EKSB7XG4gMTI1Olx0XHRcdHBlcmlvZCA9IGNmZyBcdTAwMjYgQ1NSX1RDRkdfVkFMO1xuIDEyNjpcdFx0XHRkZWx0YSA9IGt0aW1lX3RvX3RpY2sodmNwdSwga3RpbWVfc3ViKG5vdywgZXhwaXJlKSk7XG4gMTI3Olx0XHRcdGRlbHRhID0gcGVyaW9kIC0gKGRlbHRhICUgcGVyaW9kKTtcbiAxMjg6XHRcbiAxMjk6XHRcdFx0LypcbiAxMzA6XHRcdFx0ICogSW5qZWN0IHRpbWVyIGhlcmUgdGhvdWdoIHN3IHRpbWVyIHNob3VsZCBpbmplY3QgdGltZXJcbiAxMzE6XHRcdFx0ICogaW50ZXJydXB0IGFzeW5jIGFscmVhZHksIHNpbmNlIHN3IHRpbWVyIG1heSBiZSBjYW5jZWxsZWRcbiAxMzI6XHRcdFx0ICogZHVyaW5nIGluamVjdGluZyBpbnRyIGFzeW5jXG4gMTMzOlx0XHRcdCAqL1xuIDEzNDpcdFx0XHRrdm1fcXVldWVfaXJxKHZjcHUsIElOVF9USSk7XG4gMTM1Olx0XHR9IGVsc2UgaWYgKCFleHBpcmUpIHtcbiAxMzY6XHRcdFx0LypcbiAxMzc6XHRcdFx0ICogT25lLXNob3QgdGltZXIgb24gdGhlIG1pZ3JhdGlvbiBkZXN0aW5hdGlvbjogdmNwdS1cdTAwM2VhcmNoLmV4cGlyZVxuIDEzODpcdFx0XHQgKiBpcyBob3N0LWludGVybmFsIGFuZCBpcyBub3QgbWlncmF0ZWQsIHNvIGl0IGlzIHN0aWxsIDAgaGVyZS5cbiAxMzk6XHRcdFx0ICogUmVsb2FkIHRoZSByZW1haW5pbmcgY291bnRkb3duIGZyb20gdGhlIG1pZ3JhdGVkIFRWQUwgaW5zdGVhZFxuIDE0MDpcdFx0XHQgKiBvZiBmaXJpbmcgdGhlIHRpbWVyIGltbWVkaWF0ZWx5LlxuIDE0MTpcdFx0XHQgKi9cbiAxNDI6XHRcdFx0ZGVsdGEgPSB0aWNrcztcbiAxNDM6XHRcdH1cbiAxNDQ6XHRcbiAxNDU6XHRcdHdyaXRlX2djc3JfdGltZXJ0aWNrKGRlbHRhKTtcbiAxNDY6XHR9XG4gMTQ3Olx0XG4gMTQ4Olx0LypcbiAxNDk6XHQgKiBTYXZlIGd1ZXN0IHRpbWVyIHN0YXRlIGFuZCBzd2l0Y2ggdG8gc29mdHdhcmUgZW11bGF0aW9uIG9mIGd1ZXN0XG4gMTUwOlx0ICogdGltZXIuIFRoZSBoYXJkIHRpbWVyIG11c3QgYWxyZWFkeSBiZSBpbiB1c2UsIHNvIHByZWVtcHRpb24gc2hvdWxkIGJlXG4gMTUxOlx0ICogZGlzYWJsZWQuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzNwoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDEyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIExvb25nQXJjaCBLVk0gVGltZXIgUmVzdG9yYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGt2bV9yZXN0b3JlX3RpbWVyYCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYC4gVGhhdCBmaWxlIGlzIHdoZXJlIHRoZSBMb29uZ0FyY2ggS1ZNIGltcGxlbWVudGF0aW9uIGtlZXBzIGl0cyB0aW1lciBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gcmVzdG9yaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLCBhIGNyaXRpY2FsIGZ1bmN0aW9uLiBJbW1lZGlhdGVseSwgdGhlIHF1ZXN0aW9uIHBvcHMgdXA6IGNhbiB3ZSBmdXp6IHRoaXM/IEl0JiMzOTtzIGEgcHJpbWUgdGFyZ2V0IGZvciBwb3RlbnRpYWwgYnVncywgZXNwZWNpYWxseSBpbiBhIGNvbXBsZXggYXJlYSBsaWtlIHRpbWVyIG1hbmFnZW1lbnQgZHVyaW5nIG1pZ3JhdGlvbi4KCk5vdywgdGhlIGltcG9ydGFudCBjb250ZXh0IGlzIHRoYXQgdGhpcyBpcyBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgdGhlIHF1ZXN0aW9uOiBkb2VzIHN5emthbGxlciBldmVuIHN1cHBvcnQgdGhpcz8gRm9ydHVuYXRlbHksIHllcywgSSBrbm93IHN5emthbGxlciAqZG9lcyogc3VwcG9ydCBMb29uZ0FyY2ggbm93LiBCdXQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBLVk0gY29kZSBtZWFucyB3ZSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWZpYyBLVk0gY29uZmlndXJhdGlvbiBmb3Igc3l6a2FsbGVyIG9uIExvb25nQXJjaC4gV2UmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHN5emthbGxlciBpcyBwcm9wZXJseSBjb25maWd1cmVkIGZvciBMb29uZ0FyY2ggS1ZNIGZ1enppbmcuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGNvbnN1bHQgdGhlIEtjb25maWcgZmlsZXMgdG8gY29uZmlybSB0aGUgS1ZNIHN1cHBvcnQgaXMgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwODo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0xOS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyMAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBUaW1lciBSZXN0b3JhdGlvbiBGdW5jdGlvbioqCgpPa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTttIHdvcmtpbmcgd2l0aCBpcyBgS1ZNYCwgYW5kIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBiZXR0ZXIgaXMgYGt2bV9yZXN0b3JlX3RpbWVyYC4gRmlyc3QsIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZS4gQWxyaWdodCwgSSBjb25maXJtIHRoYXQgd2UgZGVmaW5pdGVseSBuZWVkIGJvdGggYFZJUlRVQUxJWkFUSU9OYCBhbmQsIG9mIGNvdXJzZSwgYEtWTWAuCgpOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gYGt2bV9yZXN0b3JlX3RpbWVyYCBiZSBkaXJlY3RseSBhY2Nlc3NlZCBmcm9tIHVzZXJzcGFjZT8gTXkgaW50dWl0aW9uIHN1Z2dlc3RzIGl0JiMzOTtzIHBhcnQgb2YgdGhlIEtWTSYjMzk7cyB2Q1BVIHJ1biBsb29wLCBvciBwZXJoYXBzIGludm9sdmVkIGluIHZDUFUgc3RhdGUgcmVzdG9yYXRpb24gb3BlcmF0aW9ucyBsaWtlIGBLVk1fU0VUX1JFR1NgLCBgS1ZNX1NFVF9TUkVHU2AsIG9yIHBvdGVudGlhbGx5IGBLVk1fU0VUX09ORV9SRUdgLiBUaGF0IHNlZW1zIGxpa2VseS4gVG8gYmUgY2VydGFpbiwgSSYjMzk7bGwgbmVlZCB0byBwaW5wb2ludCBwcmVjaXNlbHkgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBjb2RlLiBMZXQmIzM5O3MgdHJhY2UgdGhvc2UgY2FsbCBzaXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7a3ZtX3Jlc3RvcmVfdGltZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9rdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jPTQxPXZvaWQga3ZtX2luaXRfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHRpbWVyX2h6KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTUxLSAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6NTI6dm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYy01My17XG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYz0xNTkzPXN0YXRpYyBpbnQgX2t2bV92Y3B1X2xvYWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBpbnQgY3B1KVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTYxNi1cdC8qIFJlc3RvcmUgdGltZXIgc3RhdGUgcmVnYXJkbGVzcyAqL1xuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYzoxNjE3Olx0a3ZtX3Jlc3RvcmVfdGltZXIodmNwdSk7XG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jLTE2MTgtXHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfU1RFQUxfVVBEQVRFLCB2Y3B1KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMDg6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM2MwoJCQkJCQkJb3V0cHV0OiA3OQoJCQkJCQkJdGhvdWdodHM6IDIxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBJbXBvcnRhbmNlIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludGVyZXN0aW5nLiBJdCB0b3VjaGVzIGNvZGUgd2l0aGluIGBfa3ZtX3ZjcHVfbG9hZGAsIHdoaWNoIGlzIGEga2V5IGZ1bmN0aW9uIGNhbGxlZCB3aGVuZXZlciBhIHZDUFUgZ2V0cyBsb2FkZWQgb250byBhIHBoeXNpY2FsIENQVS4gVGhhdCBtZWFucyB0aGlzIGlzIGRlZmluaXRlbHkgY29kZSB0aGF0IHNlZXMgYWN0aXZlIHVzZSBkdXJpbmcgbm9ybWFsIEtWTSBleGVjdXRpb24sIHNvIHRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0LgoKVGhlIGRlc2NyaXB0aW9uIHNheXMgdGhlIHBhdGNoIGlzIGFjdHVhbGx5ICpmdW5jdGlvbmFsKiwgd2hpY2ggaXMgZ3JlYXQuIEl0JiMzOTtzIGZpeGluZyBhIGJ1ZyByZWxhdGVkIHRvIG9uZS1zaG90IHRpbWVycyBvbiB0aGUgbWlncmF0aW9uIGRlc3RpbmF0aW9uIGZpcmluZyBwcmVtYXR1cmVseS4gQmFzaWNhbGx5LCBpdOKAmXMgaGFuZGxpbmcgdGhlIHJlbG9hZGluZyBvZiB0aW1lciB2YWx1ZXMgYWZ0ZXIgbWlncmF0aW9uLiBUaGlzIGhhcyBkaXJlY3QgaW1wbGljYXRpb25zIG9uIHRoZSBpbnRlZ3JpdHkgb2YgbWlncmF0aW5nIGEgcnVubmluZyBWTSwgcmlnaHQ/IFNvIHllcywgdGhpcyBpcyBzb21ldGhpbmcgd2Ugc2hvdWxkIGRlZmluaXRlbHkgbG9vayB0byBmdXp6LgoKVGhlIGtleSBmdW5jdGlvbiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBpcyBga3ZtX3Jlc3RvcmVfdGltZXJgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlncy4uLiBZZXAsIGBLVk1gIGlzIGVuYWJsZWQsIGFuZCBub3RoaW5nIGVsc2Ugc2VlbXMgcmVsZXZhbnQgaW4gdGhlIExvb25nQXJjaCBLY29uZmlnIGZpbGUuCgpBbHJpZ2h0LCB0aW1lIHRvIHN5bnRoZXNpemUgbXkgZmluZGluZ3MuIFRoaXMgcGF0Y2ggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiBpdCBtb2RpZmllcyBLVk0gdGltZXIgcmVzdG9yYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggb25lLXNob3QgdGltZXJzIGR1cmluZyBtaWdyYXRpb24sIGFuZCBpdCB0b3VjaGVzIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi4gU28gaGVyZSYjMzk7cyB0aGUgc3VtbWFyeToKCiogICAqKldvcnRoRnV6emluZyoqOiAqdHJ1ZSoKKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbJiMzNDtrdm1fcmVzdG9yZV90aW1lciYjMzQ7XWAKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7S1ZNJiMzNDtdYAoqICAgKipSZWFzb25pbmcqKjogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAwODo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jlc3RvcmVfdGltZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX3Jlc3RvcmVfdGltZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA4OjU2OjM2Ljc4OTYyNjkxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg2MDYyNDg2MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jlc3RvcmVfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHRpbWVyIHJlc3RvcmF0aW9uIGxvZ2ljIG9uIExvb25nQXJjaCwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1NjozNi43ODk2MzMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjYzMDc1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NzEyYmFkYjgyMmY1ODRkYTUzZjdkNzkzMzVhNmYzMWRiNjg2ZjY4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDE1IDA4OjU2OjM0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNcXG5pbmRleCAzODI5ZjM1YTQwNzBiNS4uNTdmNTNkMTlhMDBhYjYgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuY1xcbkBAIC0xMzIsNiArMTMyLDE0IEBAIHZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHQgKiBkdXJpbmcgaW5qZWN0aW5nIGludHIgYXN5bmNcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGt2bV9xdWV1ZV9pcnEodmNwdSwgSU5UX1RJKTtcXG4rXFx0fSBlbHNlIGlmICghZXhwaXJlKSB7XFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIE9uZS1zaG90IHRpbWVyIG9uIHRoZSBtaWdyYXRpb24gZGVzdGluYXRpb246IHZjcHUtXFx1MDAzZWFyY2guZXhwaXJlXFxuK1xcdFxcdCAqIGlzIGhvc3QtaW50ZXJuYWwgYW5kIGlzIG5vdCBtaWdyYXRlZCwgc28gaXQgaXMgc3RpbGwgMCBoZXJlLlxcbitcXHRcXHQgKiBSZWxvYWQgdGhlIHJlbWFpbmluZyBjb3VudGRvd24gZnJvbSB0aGUgbWlncmF0ZWQgVFZBTCBpbnN0ZWFkXFxuK1xcdFxcdCAqIG9mIGZpcmluZyB0aGUgdGltZXIgaW1tZWRpYXRlbHkuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRkZWx0YSA9IHRpY2tzO1xcbiBcXHR9XFxuIFxcbiBcXHR3cml0ZV9nY3NyX3RpbWVydGljayhkZWx0YSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA4OjU2OjM3LjYxOTAzNjk1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3NzY4MjMzNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jlc3RvcmVfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHRpbWVyIHJlc3RvcmF0aW9uIGxvZ2ljIG9uIExvb25nQXJjaCwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ3MTJiYWRiODIyZjU4NGRhNTNmN2Q3OTMzNWE2ZjMxZGI2ODZmNjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAwODo1NjozNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jIGIvYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNcbmluZGV4IDM4MjlmMzVhNDA3MGI1Li41N2Y1M2QxOWEwMGFiNiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jXG4rKysgYi9hcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuY1xuQEAgLTEzMiw2ICsxMzIsMTQgQEAgdm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdCAqIGR1cmluZyBpbmplY3RpbmcgaW50ciBhc3luY1xuIFx0XHQgKi9cbiBcdFx0a3ZtX3F1ZXVlX2lycSh2Y3B1LCBJTlRfVEkpO1xuK1x0fSBlbHNlIGlmICghZXhwaXJlKSB7XG4rXHRcdC8qXG4rXHRcdCAqIE9uZS1zaG90IHRpbWVyIG9uIHRoZSBtaWdyYXRpb24gZGVzdGluYXRpb246IHZjcHUtXHUwMDNlYXJjaC5leHBpcmVcbitcdFx0ICogaXMgaG9zdC1pbnRlcm5hbCBhbmQgaXMgbm90IG1pZ3JhdGVkLCBzbyBpdCBpcyBzdGlsbCAwIGhlcmUuXG4rXHRcdCAqIFJlbG9hZCB0aGUgcmVtYWluaW5nIGNvdW50ZG93biBmcm9tIHRoZSBtaWdyYXRlZCBUVkFMIGluc3RlYWRcbitcdFx0ICogb2YgZmlyaW5nIHRoZSB0aW1lciBpbW1lZGlhdGVseS5cbitcdFx0ICovXG4rXHRcdGRlbHRhID0gdGlja3M7XG4gXHR9XG4gXG4gXHR3cml0ZV9nY3NyX3RpbWVydGljayhkZWx0YSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1NjozNy42MTkwMzk2ODJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzc4Nzc5NDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS1ZNIFRpbWVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0YXJnZXRpbmcgYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYC4gU2VlbXMgbGlrZSB0aGUgY29yZSBtb2RpZmljYXRpb24gaXMgd2l0aGluIHRoZSBga3ZtX3Jlc3RvcmVfdGltZXJgIGZ1bmN0aW9uLiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgYWRkaXRpb24gb2YgYW4gYGVsc2UgaWYgKCFleHBpcmUpYCBjb25kaXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCB0aGlzIGlzIGxpa2VseSByZWxhdGVkIHRvIGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBvbiB0aGUgbWlncmF0aW9uIGRlc3RpbmF0aW9uLlwiIFRoaXMgbWFrZXMgc2Vuc2U7IHdoZW4gbWlncmF0aW5nIGEgVk0sIHdlIG5lZWQgdG8gZW5zdXJlIHRpbWVycyBiZWhhdmUgY29ycmVjdGx5IG9uIHRoZSB0YXJnZXQgaG9zdC4gVGhlIGAhZXhwaXJlYCBjb25kaXRpb24gc2VlbXMgdG8gYmUgdGhlIGNydWNpYWwgYml0IGhlcmUsIHN1Z2dlc3RpbmcgaXQncyBkZWFsaW5nIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgYSB0aW1lciAqaGFzbid0KiB5ZXQgZmlyZWQsIGxpa2VseSBhZnRlciBtaWdyYXRpb24uIEkgc2hvdWxkIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuY2AgdG8gc2VlIHRoZSBjb250ZXh0IGFuZCB3aGF0IHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbiBpcyB0cnlpbmcgdG8gYWNoaWV2ZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gc2VlICpob3cqIHRoZSBga3ZtX3Jlc3RvcmVfdGltZXJgIGZ1bmN0aW9uIGlzIGRlZmluZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIEtWTSB0aW1lciBmcmFtZXdvcmsgb24gTG9vbmdBcmNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODk5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo0Mi45OTc4MjEyMzZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA1MjM0NzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9yZXN0b3JlX3RpbWVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jPTQxPXZvaWQga3ZtX2luaXRfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBsb25nIHRpbWVyX2h6KVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNTEtICovXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmM6NTI6dm9pZCBrdm1fcmVzdG9yZV90aW1lcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmMtNTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo0My43MDMwNjI1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI0NDE5MjA5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIHRleHQsIGFuZCBhc3N1bWluZyBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBLVk0gVGltZXIgSW1wbGVtZW50YXRpb24gZm9yIExvb25nQXJjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byBgYXJjaC9sb29uZ2FyY2gva3ZtL3RpbWVyLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNTIuIE15IGluaXRpYWwgZXhwZWN0YXRpb24gaXMgdGhhdCB0aGlzIGFyZWEgbGlrZWx5IGRlYWxzIHdpdGggdGhlIGNvcmUgbG9naWMgZm9yIGVpdGhlciBzZXR0aW5nIHVwLCBtYW5hZ2luZywgb3IgaGFuZGxpbmcgaW50ZXJydXB0cyByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUncyB0aW1lcnMgb24gdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgd2l0aGluIHRoZSBLVk0gZnJhbWV3b3JrLiBHaXZlbiB0aGF0IHdlJ3JlIGxvb2tpbmcgYXQgdGltZXIgY29kZSwgSSdtIGFudGljaXBhdGluZyB0aGF0IHdlJ2xsIGJlIGRlYWxpbmcgd2l0aCBlaXRoZXIgdGhlIEhpZ2gtUmVzb2x1dGlvbiBUaW1lciAoSFJUKSBvciB0aGUgUGVyZm9ybWFuY2UgTW9uaXRvcmluZyBVbml0IChQTVUpIGZvciB0aW1lciBkdXRpZXMgYW5kIGludGVycnVwdCBnZW5lcmF0aW9uLiBXZSdsbCBsaWtlbHkgc2VlIGludGVyYWN0aW9ucyB3aXRoIHRoZSBMb29uZ0FyY2gncyBzcGVjaWZpYyBDU1JzIGFuZCBzeXN0ZW0gcmVnaXN0ZXJzIHRvIGNvbnRyb2wgdGltZXIgYmVoYXZpb3IgYW5kIHBvdGVudGlhbGx5IHRoZSBWaXJ0dWFsIE1hY2hpbmUgQ29udHJvbCBTdHJ1Y3R1cmUgKFZNQ1MpIGlmIHRoZXJlJ3MgYW55IHZpcnR1YWxpemF0aW9uLXNwZWNpZmljIHN0YXRlIG5lZWRpbmcgdG8gYmUgbWFuYWdlZCBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGh5cGVydmlzb3IgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlIHRpbWVycyBhbmQgaG93IHRoZSBndWVzdCBpcyBleHBvc2VkIHRvIGl0IGFuZCB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhlIGludGVycnVwdCBjb250cm9sbGVyLiBJdCB3aWxsIGJlIGludGVyZXN0aW5nIHRvIHNlZSBob3cgdGhleSBoYW5kbGUgdmlydHVhbCB0aW1lciBpbnRlcnJ1cHRzIGFuZCBob3cgdGhleSBhcmUgaW5qZWN0ZWQgaW50byB0aGUgZ3Vlc3QuIFRoaXMgc3BlY2lmaWMgYXJlYSBjb3VsZCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kIG92ZXJhbGwgZ3Vlc3QgcGVyZm9ybWFuY2UgYW5kIHN0YWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM2MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA4OjU2OjQ2Ljk0NzI1NjgxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUyLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MjpcXHR2b2lkIGt2bV9yZXN0b3JlX3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4gIDUzOlxcdHtcXG4gIDU0OlxcdFxcdHVuc2lnbmVkIGxvbmcgY2ZnLCBlc3RhdDtcXG4gIDU1OlxcdFxcdHVuc2lnbmVkIGxvbmcgdGlja3MsIGRlbHRhLCBwZXJpb2Q7XFxuICA1NjpcXHRcXHRrdGltZV90IGV4cGlyZSwgbm93O1xcbiAgNTc6XFx0XFx0c3RydWN0IGxvb25nYXJjaF9jc3JzICpjc3IgPSB2Y3B1LVxcdTAwM2VhcmNoLmNzcjtcXG4gIDU4OlxcdFxcbiAgNTk6XFx0XFx0LypcXG4gIDYwOlxcdFxcdCAqIFNldCBndWVzdCBzdGFibGUgdGltZXIgY2ZnIGNzclxcbiAgNjE6XFx0XFx0ICogRGlzYWJsZSB0aW1lciBiZWZvcmUgcmVzdG9yZSBlc3RhdCBDU1IgcmVnaXN0ZXIsIGF2b2lkIHRvXFxuICA2MjpcXHRcXHQgKiBnZXQgaW52YWxpZCB0aW1lciBpbnRlcnJ1cHQgZm9yIG9sZCB0aW1lciBjZmdcXG4gIDYzOlxcdFxcdCAqL1xcbiAgNjQ6XFx0XFx0Y2ZnID0ga3ZtX3JlYWRfc3dfZ2Nzcihjc3IsIExPT05HQVJDSF9DU1JfVENGRyk7XFxuICA2NTpcXHRcXG4gIDY2OlxcdFxcdHdyaXRlX2djc3JfdGltZXJjZmcoMCk7XFxuICA2NzpcXHRcXHRrdm1fcmVzdG9yZV9od19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCk7XFxuICA2ODpcXHRcXHRrdm1fcmVzdG9yZV9od19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9UQ0ZHKTtcXG4gIDY5OlxcdFxcdGlmICghKGNmZyBcXHUwMDI2IENTUl9UQ0ZHX0VOKSkge1xcbiAgNzA6XFx0XFx0XFx0LyogR3Vlc3QgdGltZXIgaXMgZGlzYWJsZWQsIGp1c3QgcmVzdG9yZSB0aW1lciByZWdpc3RlcnMgKi9cXG4gIDcxOlxcdFxcdFxcdGt2bV9yZXN0b3JlX2h3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xcbiAgNzI6XFx0XFx0XFx0cmV0dXJuO1xcbiAgNzM6XFx0XFx0fVxcbiAgNzQ6XFx0XFxuICA3NTpcXHRcXHQvKlxcbiAgNzY6XFx0XFx0ICogRnJlZXplIHRoZSBzb2Z0LXRpbWVyIGFuZCBzeW5jIHRoZSBndWVzdCBzdGFibGUgdGltZXIgd2l0aCBpdC5cXG4gIDc3OlxcdFxcdCAqL1xcbiAgNzg6XFx0XFx0aWYgKGt2bV92Y3B1X2lzX2Jsb2NraW5nKHZjcHUpKVxcbiAgNzk6XFx0XFx0XFx0aHJ0aW1lcl9jYW5jZWwoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2guc3d0aW1lcik7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdC8qXFxuICA4MjpcXHRcXHQgKiBGcm9tIExvb25nQXJjaCBSZWZlcmVuY2UgTWFudWFsIFZvbHVtZSAxIENoYXB0ZXIgNy42LjJcXG4gIDgzOlxcdFxcdCAqIElmIG9uZXNob3QgdGltZXIgaXMgZmlyZWQsIENTUiBUVkFMIHdpbGwgYmUgLTEsIHRoZXJlIGFyZSB0d29cXG4gIDg0OlxcdFxcdCAqIGNvbmRpdGlvbnM6XFxuICA4NTpcXHRcXHQgKiAgMSkgdGltZXIgaXMgZmlyZWQgZHVyaW5nIGV4aXRpbmcgdG8gaG9zdFxcbiAgODY6XFx0XFx0ICogIDIpIHRpbWVyIGlzIGZpcmVkIGFuZCB2bSBpcyBkb2luZyB0aW1lciBpcnEsIGFuZCB0aGVuIGV4aXRpbmcgdG9cXG4gIDg3OlxcdFxcdCAqICAgICBob3N0LiBIb3N0IHNob3VsZCBub3QgaW5qZWN0IHRpbWVyIGlycSB0byBhdm9pZCBzcHVyaW91c1xcbiAgODg6XFx0XFx0ICogICAgIHRpbWVyIGludGVycnVwdCBhZ2FpblxcbiAgODk6XFx0XFx0ICovXFxuICA5MDpcXHRcXHR0aWNrcyA9IGt2bV9yZWFkX3N3X2djc3IoY3NyLCBMT09OR0FSQ0hfQ1NSX1RWQUwpO1xcbiAgOTE6XFx0XFx0ZXN0YXQgPSBrdm1fcmVhZF9zd19nY3NyKGNzciwgTE9PTkdBUkNIX0NTUl9FU1RBVCk7XFxuICA5MjpcXHRcXHRpZiAoIShjZmcgXFx1MDAyNiBDU1JfVENGR19QRVJJT0QpIFxcdTAwMjZcXHUwMDI2ICh0aWNrcyBcXHUwMDNlIGNmZykpIHtcXG4gIDkzOlxcdFxcdFxcdC8qXFxuICA5NDpcXHRcXHRcXHQgKiBXcml0aW5nIDAgdG8gTE9PTkdBUkNIX0NTUl9UVkFMIHdpbGwgaW5qZWN0IHRpbWVyIGlycVxcbiAgOTU6XFx0XFx0XFx0ICogYW5kIHNldCBDU1IgVFZBTCB3aXRoIC0xXFxuICA5NjpcXHRcXHRcXHQgKi9cXG4gIDk3OlxcdFxcdFxcdHdyaXRlX2djc3JfdGltZXJ0aWNrKDApO1xcbiAgOTg6XFx0XFxuICA5OTpcXHRcXHRcXHQvKlxcbiAxMDA6XFx0XFx0XFx0ICogV3JpdGluZyBDU1JfVElOVENMUl9USSB0byBMT09OR0FSQ0hfQ1NSX1RJTlRDTFIgd2lsbCBjbGVhclxcbiAxMDE6XFx0XFx0XFx0ICogdGltZXIgaW50ZXJydXB0LCBhbmQgQ1NSIFRWQUwga2VlcHMgdW5jaGFuZ2VkIHdpdGggLTEsIGl0XFxuIDEwMjpcXHRcXHRcXHQgKiBhdm9pZHMgc3B1cmlvdXMgdGltZXIgaW50ZXJydXB0XFxuIDEwMzpcXHRcXHRcXHQgKi9cXG4gMTA0OlxcdFxcdFxcdGlmICghKGVzdGF0IFxcdTAwMjYgQ1BVX1RJTUVSKSkge1xcbiAxMDU6XFx0XFx0XFx0XFx0X19kZWxheSgyKTsgLyogV2FpdCBjeWNsZXMgdW50aWwgdGltZXIgaW50ZXJydXB0IGluamVjdGVkICovXFxuIDEwNjpcXHRcXG4gMTA3OlxcdFxcdFxcdFxcdC8qIFdyaXRlIFRWQUwgd2l0aCBtYXggdmFsdWUgaWYgbm8gVEkgc2hvdCAqL1xcbiAxMDg6XFx0XFx0XFx0XFx0ZXN0YXQgPSBrdm1fcmVhZF9od19nY3NyKExPT05HQVJDSF9DU1JfRVNUQVQpO1xcbiAxMDk6XFx0XFx0XFx0XFx0aWYgKCEoZXN0YXQgXFx1MDAyNiBDUFVfVElNRVIpKVxcbiAxMTA6XFx0XFx0XFx0XFx0XFx0d3JpdGVfZ2Nzcl90aW1lcnRpY2soQ1NSX1RDRkdfVkFMKTtcXG4gMTExOlxcdFxcdFxcdFxcdGdjc3Jfd3JpdGUoQ1NSX1RJTlRDTFJfVEksIExPT05HQVJDSF9DU1JfVElOVENMUik7XFxuIDExMjpcXHRcXHRcXHR9XFxuIDExMzpcXHRcXHRcXHRyZXR1cm47XFxuIDExNDpcXHRcXHR9XFxuIDExNTpcXHRcXG4gMTE2OlxcdFxcdC8qXFxuIDExNzpcXHRcXHQgKiBTZXQgcmVtYWluZGVyIHRpY2sgdmFsdWUgaWYgbm90IGV4cGlyZWRcXG4gMTE4OlxcdFxcdCAqL1xcbiAxMTk6XFx0XFx0ZGVsdGEgPSAwO1xcbiAxMjA6XFx0XFx0bm93ID0ga3RpbWVfZ2V0KCk7XFxuIDEyMTpcXHRcXHRleHBpcmUgPSB2Y3B1LVxcdTAwM2VhcmNoLmV4cGlyZTtcXG4gMTIyOlxcdFxcdGlmIChrdGltZV9iZWZvcmUobm93LCBleHBpcmUpKVxcbiAxMjM6XFx0XFx0XFx0ZGVsdGEgPSBrdGltZV90b190aWNrKHZjcHUsIGt0aW1lX3N1YihleHBpcmUsIG5vdykpO1xcbiAxMjQ6XFx0XFx0ZWxzZSBpZiAoY2ZnIFxcdTAwMjYgQ1NSX1RDRkdfUEVSSU9EKSB7XFxuIDEyNTpcXHRcXHRcXHRwZXJpb2QgPSBjZmcgXFx1MDAyNiBDU1JfVENGR19WQUw7XFxuIDEyNjpcXHRcXHRcXHRkZWx0YSA9IGt0aW1lX3RvX3RpY2sodmNwdSwga3RpbWVfc3ViKG5vdywgZXhwaXJlKSk7XFxuIDEyNzpcXHRcXHRcXHRkZWx0YSA9IHBlcmlvZCAtIChkZWx0YSAlIHBlcmlvZCk7XFxuIDEyODpcXHRcXG4gMTI5OlxcdFxcdFxcdC8qXFxuIDEzMDpcXHRcXHRcXHQgKiBJbmplY3QgdGltZXIgaGVyZSB0aG91Z2ggc3cgdGltZXIgc2hvdWxkIGluamVjdCB0aW1lclxcbiAxMzE6XFx0XFx0XFx0ICogaW50ZXJydXB0IGFzeW5jIGFscmVhZHksIHNpbmNlIHN3IHRpbWVyIG1heSBiZSBjYW5jZWxsZWRcXG4gMTMyOlxcdFxcdFxcdCAqIGR1cmluZyBpbmplY3RpbmcgaW50ciBhc3luY1xcbiAxMzM6XFx0XFx0XFx0ICovXFxuIDEzNDpcXHRcXHRcXHRrdm1fcXVldWVfaXJxKHZjcHUsIElOVF9USSk7XFxuIDEzNTpcXHRcXHR9IGVsc2UgaWYgKCFleHBpcmUpIHtcXG4gMTM2OlxcdFxcdFxcdC8qXFxuIDEzNzpcXHRcXHRcXHQgKiBPbmUtc2hvdCB0aW1lciBvbiB0aGUgbWlncmF0aW9uIGRlc3RpbmF0aW9uOiB2Y3B1LVxcdTAwM2VhcmNoLmV4cGlyZVxcbiAxMzg6XFx0XFx0XFx0ICogaXMgaG9zdC1pbnRlcm5hbCBhbmQgaXMgbm90IG1pZ3JhdGVkLCBzbyBpdCBpcyBzdGlsbCAwIGhlcmUuXFxuIDEzOTpcXHRcXHRcXHQgKiBSZWxvYWQgdGhlIHJlbWFpbmluZyBjb3VudGRvd24gZnJvbSB0aGUgbWlncmF0ZWQgVFZBTCBpbnN0ZWFkXFxuIDE0MDpcXHRcXHRcXHQgKiBvZiBmaXJpbmcgdGhlIHRpbWVyIGltbWVkaWF0ZWx5LlxcbiAxNDE6XFx0XFx0XFx0ICovXFxuIDE0MjpcXHRcXHRcXHRkZWx0YSA9IHRpY2tzO1xcbiAxNDM6XFx0XFx0fVxcbiAxNDQ6XFx0XFxuIDE0NTpcXHRcXHR3cml0ZV9nY3NyX3RpbWVydGljayhkZWx0YSk7XFxuIDE0NjpcXHR9XFxuIDE0NzpcXHRcXG4gMTQ4OlxcdC8qXFxuIDE0OTpcXHQgKiBTYXZlIGd1ZXN0IHRpbWVyIHN0YXRlIGFuZCBzd2l0Y2ggdG8gc29mdHdhcmUgZW11bGF0aW9uIG9mIGd1ZXN0XFxuIDE1MDpcXHQgKiB0aW1lci4gVGhlIGhhcmQgdGltZXIgbXVzdCBhbHJlYWR5IGJlIGluIHVzZSwgc28gcHJlZW1wdGlvbiBzaG91bGQgYmVcXG4gMTUxOlxcdCAqIGRpc2FibGVkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo0Ni45NDczODQ1M1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTYxNDYxODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBMb29uZ0FyY2ggS1ZNIFRpbWVyIFJlc3RvcmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYGt2bV9yZXN0b3JlX3RpbWVyYCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jYC4gVGhhdCBmaWxlIGlzIHdoZXJlIHRoZSBMb29uZ0FyY2ggS1ZNIGltcGxlbWVudGF0aW9uIGtlZXBzIGl0cyB0aW1lciBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gcmVzdG9yaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLCBhIGNyaXRpY2FsIGZ1bmN0aW9uLiBJbW1lZGlhdGVseSwgdGhlIHF1ZXN0aW9uIHBvcHMgdXA6IGNhbiB3ZSBmdXp6IHRoaXM/IEl0J3MgYSBwcmltZSB0YXJnZXQgZm9yIHBvdGVudGlhbCBidWdzLCBlc3BlY2lhbGx5IGluIGEgY29tcGxleCBhcmVhIGxpa2UgdGltZXIgbWFuYWdlbWVudCBkdXJpbmcgbWlncmF0aW9uLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgY29udGV4dCBpcyB0aGF0IHRoaXMgaXMgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIHRoZSBxdWVzdGlvbjogZG9lcyBzeXprYWxsZXIgZXZlbiBzdXBwb3J0IHRoaXM/IEZvcnR1bmF0ZWx5LCB5ZXMsIEkga25vdyBzeXprYWxsZXIgKmRvZXMqIHN1cHBvcnQgTG9vbmdBcmNoIG5vdy4gQnV0IHRoZSBmYWN0IHRoYXQgaXQncyBLVk0gY29kZSBtZWFucyB3ZSBuZWVkIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWZpYyBLVk0gY29uZmlndXJhdGlvbiBmb3Igc3l6a2FsbGVyIG9uIExvb25nQXJjaC4gV2UnbGwgbmVlZCB0byBjb25maXJtIHRoYXQgc3l6a2FsbGVyIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQgZm9yIExvb25nQXJjaCBLVk0gZnV6emluZy4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gY29uc3VsdCB0aGUgS2NvbmZpZyBmaWxlcyB0byBjb25maXJtIHRoZSBLVk0gc3VwcG9ydCBpcyBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM3LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDg6NTY6NTEuMzQzNTMzMjY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NDk0NTE4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo1MS41ODg0ODQ2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg1MzM4MjMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBUaW1lciBSZXN0b3JhdGlvbiBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIEknbSB3b3JraW5nIHdpdGggaXMgYEtWTWAsIGFuZCB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgYmV0dGVyIGlzIGBrdm1fcmVzdG9yZV90aW1lcmAuIEZpcnN0LCBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zIGFyZSBpbiBwbGFjZS4gQWxyaWdodCwgSSBjb25maXJtIHRoYXQgd2UgZGVmaW5pdGVseSBuZWVkIGJvdGggYFZJUlRVQUxJWkFUSU9OYCBhbmQsIG9mIGNvdXJzZSwgYEtWTWAuXG5cbk5vdywgdGhlIGNydWNpYWwgcXVlc3Rpb246IGNhbiBga3ZtX3Jlc3RvcmVfdGltZXJgIGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGZyb20gdXNlcnNwYWNlPyBNeSBpbnR1aXRpb24gc3VnZ2VzdHMgaXQncyBwYXJ0IG9mIHRoZSBLVk0ncyB2Q1BVIHJ1biBsb29wLCBvciBwZXJoYXBzIGludm9sdmVkIGluIHZDUFUgc3RhdGUgcmVzdG9yYXRpb24gb3BlcmF0aW9ucyBsaWtlIGBLVk1fU0VUX1JFR1NgLCBgS1ZNX1NFVF9TUkVHU2AsIG9yIHBvdGVudGlhbGx5IGBLVk1fU0VUX09ORV9SRUdgLiBUaGF0IHNlZW1zIGxpa2VseS4gVG8gYmUgY2VydGFpbiwgSSdsbCBuZWVkIHRvIHBpbnBvaW50IHByZWNpc2VseSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGNvZGUuIExldCdzIHRyYWNlIHRob3NlIGNhbGwgc2l0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjAsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMDg6NTY6NTguNDQxODY5NjcyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzcwNTA5OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3Jlc3RvcmVfdGltZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9rdm0vdGltZXIuYz00MT12b2lkIGt2bV9pbml0X3RpbWVyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQgbG9uZyB0aW1lcl9oeilcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTUxLSAqL1xcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jOjUyOnZvaWQga3ZtX3Jlc3RvcmVfdGltZXIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gvbG9vbmdhcmNoL2t2bS90aW1lci5jLTUzLXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmM9MTU5Mz1zdGF0aWMgaW50IF9rdm1fdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS92Y3B1LmMtMTYxNi1cXHQvKiBSZXN0b3JlIHRpbWVyIHN0YXRlIHJlZ2FyZGxlc3MgKi9cXG5hcmNoL2xvb25nYXJjaC9rdm0vdmNwdS5jOjE2MTc6XFx0a3ZtX3Jlc3RvcmVfdGltZXIodmNwdSk7XFxuYXJjaC9sb29uZ2FyY2gva3ZtL3ZjcHUuYy0xNjE4LVxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9TVEVBTF9VUERBVEUsIHZjcHUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQwODo1Njo1OS4wNzg5MjgzNjhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNTk5MjgxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEltcG9ydGFuY2UgYW5kIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZy4gSXQgdG91Y2hlcyBjb2RlIHdpdGhpbiBgX2t2bV92Y3B1X2xvYWRgLCB3aGljaCBpcyBhIGtleSBmdW5jdGlvbiBjYWxsZWQgd2hlbmV2ZXIgYSB2Q1BVIGdldHMgbG9hZGVkIG9udG8gYSBwaHlzaWNhbCBDUFUuIFRoYXQgbWVhbnMgdGhpcyBpcyBkZWZpbml0ZWx5IGNvZGUgdGhhdCBzZWVzIGFjdGl2ZSB1c2UgZHVyaW5nIG5vcm1hbCBLVk0gZXhlY3V0aW9uLCBzbyB0aGF0J3MgYSBnb29kIHN0YXJ0LlxuXG5UaGUgZGVzY3JpcHRpb24gc2F5cyB0aGUgcGF0Y2ggaXMgYWN0dWFsbHkgKmZ1bmN0aW9uYWwqLCB3aGljaCBpcyBncmVhdC4gSXQncyBmaXhpbmcgYSBidWcgcmVsYXRlZCB0byBvbmUtc2hvdCB0aW1lcnMgb24gdGhlIG1pZ3JhdGlvbiBkZXN0aW5hdGlvbiBmaXJpbmcgcHJlbWF0dXJlbHkuIEJhc2ljYWxseSwgaXTigJlzIGhhbmRsaW5nIHRoZSByZWxvYWRpbmcgb2YgdGltZXIgdmFsdWVzIGFmdGVyIG1pZ3JhdGlvbi4gVGhpcyBoYXMgZGlyZWN0IGltcGxpY2F0aW9ucyBvbiB0aGUgaW50ZWdyaXR5IG9mIG1pZ3JhdGluZyBhIHJ1bm5pbmcgVk0sIHJpZ2h0PyBTbyB5ZXMsIHRoaXMgaXMgc29tZXRoaW5nIHdlIHNob3VsZCBkZWZpbml0ZWx5IGxvb2sgdG8gZnV6ei5cblxuVGhlIGtleSBmdW5jdGlvbiB0aGlzIHBhdGNoIGFkZHJlc3NlcyBpcyBga3ZtX3Jlc3RvcmVfdGltZXJgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlncy4uLiBZZXAsIGBLVk1gIGlzIGVuYWJsZWQsIGFuZCBub3RoaW5nIGVsc2Ugc2VlbXMgcmVsZXZhbnQgaW4gdGhlIExvb25nQXJjaCBLY29uZmlnIGZpbGUuXG5cbkFscmlnaHQsIHRpbWUgdG8gc3ludGhlc2l6ZSBteSBmaW5kaW5ncy4gVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSByZWFzb25pbmcgaXMgc29saWQ6IGl0IG1vZGlmaWVzIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbiwgYW5kIGl0IHRvdWNoZXMgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLiBTbyBoZXJlJ3MgdGhlIHN1bW1hcnk6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiAqdHJ1ZSpcbiogICAqKkZvY3VzU3ltYm9scyoqOiBgW1wia3ZtX3Jlc3RvcmVfdGltZXJcIl1gXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJLVk1cIl1gXG4qICAgKipSZWFzb25pbmcqKjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzYzLCJPdXRwdXRUb2tlbnMiOjc5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDA4OjU3OjA1LjE4NDkzMTA3NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDkxODkxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3Jlc3RvcmVfdGltZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgS1ZNIHRpbWVyIHJlc3RvcmF0aW9uIGxvZ2ljIG9uIExvb25nQXJjaCwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIG9uZS1zaG90IHRpbWVycyBkdXJpbmcgbWlncmF0aW9uLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29yZSBLVk0gY29kZSByZWFjaGFibGUgZHVyaW5nIHZDUFUgZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9yZXN0b3JlX3RpbWVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEtWTSB0aW1lciByZXN0b3JhdGlvbiBsb2dpYyBvbiBMb29uZ0FyY2gsIHNwZWNpZmljYWxseSBoYW5kbGluZyBvbmUtc2hvdCB0aW1lcnMgZHVyaW5nIG1pZ3JhdGlvbi4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvcmUgS1ZNIGNvZGUgcmVhY2hhYmxlIGR1cmluZyB2Q1BVIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[1] Phase: Succeeded StartedAt: 2026-07-15 08:57:17 +0000 UTC FinishedAt: 2026-07-15 08:57:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 08:57:17 +0000 UTC FinishedAt: 2026-07-15 08:57:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2] Phase: Succeeded StartedAt: 2026-07-15 08:57:17 +0000 UTC FinishedAt: 2026-07-15 10:34:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 08:57:18 +0000 UTC FinishedAt: 2026-07-15 10:34:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 08:57:18 +0000 UTC FinishedAt: 2026-07-15 08:58:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 08:57:18 +0000 UTC FinishedAt: 2026-07-15 08:57:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-convert-artifact-1263248823/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 08:58:04 +0000 UTC FinishedAt: 2026-07-15 09:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 08:58:04 +0000 UTC FinishedAt: 2026-07-15 09:44:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4d3650aa-ea95-4cce-a448-ae43ef283ae0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-convert-artifact-1263248823/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7d1a5e20-a3c3-4f21-afcc-bb834f7696c1", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-1953563917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 08:58:04 +0000 UTC FinishedAt: 2026-07-15 09:44:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4d3650aa-ea95-4cce-a448-ae43ef283ae0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-convert-artifact-1263248823/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7d1a5e20-a3c3-4f21-afcc-bb834f7696c1", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-1953563917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 09:44:41 +0000 UTC FinishedAt: 2026-07-15 09:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 09:44:41 +0000 UTC FinishedAt: 2026-07-15 09:44:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 09:44:41 +0000 UTC FinishedAt: 2026-07-15 09:44:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 09:44:41 +0000 UTC FinishedAt: 2026-07-15 09:44:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-convert-artifact-3994538726/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 09:44:53 +0000 UTC FinishedAt: 2026-07-15 09:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 09:44:53 +0000 UTC FinishedAt: 2026-07-15 09:46:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7d1a5e20-a3c3-4f21-afcc-bb834f7696c1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-1953563917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 09:46:57 +0000 UTC FinishedAt: 2026-07-15 09:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 09:46:57 +0000 UTC FinishedAt: 2026-07-15 09:46:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 09:46:57 +0000 UTC FinishedAt: 2026-07-15 10:29:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 09:46:57 +0000 UTC FinishedAt: 2026-07-15 10:29:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4d3650aa-ea95-4cce-a448-ae43ef283ae0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-convert-artifact-3994538726/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "500e1d51-0b4c-4f27-b867-f2ad6c17b2ab", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-3740305578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 09:46:57 +0000 UTC FinishedAt: 2026-07-15 10:29:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*4d3650aa-ea95-4cce-a448-ae43ef283ae0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-convert-artifact-3994538726/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "500e1d51-0b4c-4f27-b867-f2ad6c17b2ab", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-3740305578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 10:29:10 +0000 UTC FinishedAt: 2026-07-15 10:29:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 10:29:10 +0000 UTC FinishedAt: 2026-07-15 10:29:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 10:29:10 +0000 UTC FinishedAt: 2026-07-15 10:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 10:29:10 +0000 UTC FinishedAt: 2026-07-15 10:31:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*500e1d51-0b4c-4f27-b867-f2ad6c17b2ab,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-3740305578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 10:31:18 +0000 UTC FinishedAt: 2026-07-15 10:34:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 10:31:18 +0000 UTC FinishedAt: 2026-07-15 10:34:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*7d1a5e20-a3c3-4f21-afcc-bb834f7696c1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*500e1d51-0b4c-4f27-b867-f2ad6c17b2ab,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-1953563917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-3740305578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 10:31:18 +0000 UTC FinishedAt: 2026-07-15 10:31:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 10:31:18 +0000 UTC FinishedAt: 2026-07-15 10:31:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-convert-artifact-1244847659/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 10:31:18 +0000 UTC FinishedAt: 2026-07-15 10:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 10:31:18 +0000 UTC FinishedAt: 2026-07-15 10:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 10:31:18 +0000 UTC FinishedAt: 2026-07-15 10:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 10:31:28 +0000 UTC FinishedAt: 2026-07-15 10:34:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6x6nm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_restore_timer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"9b77f05a-d3e3-49fe-ba4c-ca0e0b7afe28","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 10:31:28 +0000 UTC FinishedAt: 2026-07-15 10:33:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7d1a5e20-a3c3-4f21-afcc-bb834f7696c1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*500e1d51-0b4c-4f27-b867-f2ad6c17b2ab,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-1953563917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-build-action-3740305578/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6x6nm/series-workflow6x6nm-convert-artifact-1244847659/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}