Name: series-workflowxbpmr Phase: Succeeded StartedAt: 2026-08-09 02:13:22 +0000 UTC FinishedAt: 2026-08-09 06:36:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[0] Phase: Succeeded StartedAt: 2026-08-09 02:13:22 +0000 UTC FinishedAt: 2026-08-09 02:55:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[0].run-triage Phase: Succeeded StartedAt: 2026-08-09 02:13:22 +0000 UTC FinishedAt: 2026-08-09 02:55:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e0ffd277b09a7c9f1a436e5f75be37ac490bc59f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "POSIX_TIMERS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e0ffd277b09a7c9f1a436e5f75be37ac490bc59f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "POSIX_TIMERS" ], "series_id": "b65bb201-b16f-47ed-ab44-c55a41a83d80" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "begin_new_exec", "posix_cpu_timers_exit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JlZ2luX25ld19leGVjJiMzNDssCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gUE9TSVggQ1BVIHRpbWVycyBkdXJpbmcgdGhyZWFkIGdyb3VwIGxlYWRlcnNoaXAgY2hhbmdlcyAoZGVfdGhyZWFkKS4gSXQgZGVxdWV1ZXMgdGhlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBiZWZvcmUgdGhlIHRocmVhZCYjMzk7cyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLiBUaGlzIHByZXZlbnRzIGlzc3VlcyB3aGVyZSB0aGUgdGltZXIgc3Vic3lzdGVtIG1pZ2h0IGZhaWwgdG8gbG9vayB1cCB0aGUgUElEIG9yIGFjY2VzcyBmcmVlZC9pbnZhbGlkIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIGludm9sdmUgbG9ja2luZyBhbmQgdGltZXIgbWFuYWdlbWVudCwgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvZ2ljIGJ1Z3MuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgZGVfdGhyZWFkYCB3aGVyZSBQT1NJWCBDUFUgdGltZXJzIGFyZSBub3QgcHJvcGVybHkgZGVxdWV1ZWQgYmVmb3JlIGBleGNoYW5nZV90aWRzKClgIGhhbmRzIHRoZSB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBjYW4gY2F1c2UgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYC4gVGhlIGZpeCBhZGRzIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwgKGV4ZWN2ZSBwYXRoKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc3N2VjMGJkYWMzNmE0NDUxMmEwMGM2NGZmNDkxYTZkOWZhOWMzNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDAyOjU0OjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xuaW5kZXggYzdiOGYyZDYzNjZjNC4uZjgwZjcwZTFjMjZkZSAxMDA2NDRcbi0tLSBhL2ZzL2V4ZWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jXG5AQCAtMTAwMCw2ICYjNDM7MTAwMCwxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbiBcdFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxuIFx0XHQgKi9cbiBcbiYjNDM7I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLFxuJiM0MztcdFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxuJiM0MztcdFx0ICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFVcbiYjNDM7XHRcdCAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0c3Bpbl9sb2NrKGxvY2spO1xuJiM0MztcdFx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhsb2NrKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIFx0XHQvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJiMzOTtzIHBpZC5cbiBcdFx0ICogVGhlIG9sZCBsZWFkZXIgYmVjb21lcyBhIHRocmVhZCBvZiB0aGUgdGhpcyB0aHJlYWQgZ3JvdXAuXG4gXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQT1NJWF9USU1FUlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7LAogICAgJiMzNDtwb3NpeF9jcHVfdGltZXJzX2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYGRlX3RocmVhZGAgd2hlcmUgUE9TSVggQ1BVIHRpbWVycyBhcmUgbm90IHByb3Blcmx5IGRlcXVldWVkIGJlZm9yZSBgZXhjaGFuZ2VfdGlkcygpYCBoYW5kcyB0aGUgdGhyZWFkJiMzOTtzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggY2FuIGNhdXNlIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggYWRkcyBhIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBpbiBgZGVfdGhyZWFkKClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsIChleGVjdmUgcGF0aCkgYW5kIGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3NzdlYzBiZGFjMzZhNDQ1MTJhMDBjNjRmZjQ5MWE2ZDlmYTljMzQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAwMjo1NDoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuYwppbmRleCBjN2I4ZjJkNjM2NmM0Li5mODBmNzBlMWMyNmRlIDEwMDY0NAotLS0gYS9mcy9leGVjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jCkBAIC0xMDAwLDYgJiM0MzsxMDAwLDE4IEBAIHN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQogCQkgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6CiAJCSAqLwogCiYjNDM7I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlMKJiM0MzsJCS8qCiYjNDM7CQkgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLAomIzQzOwkJICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpbgomIzQzOwkJICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFUKJiM0MzsJCSAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC4KJiM0MzsJCSAqLwomIzQzOwkJc3Bpbl9sb2NrKGxvY2spOwomIzQzOwkJcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7CiYjNDM7CQlzcGluX3VubG9jayhsb2NrKTsKJiM0MzsjZW5kaWYKJiM0MzsKIAkJLyogQmVjb21lIGEgcHJvY2VzcyBncm91cCBsZWFkZXIgd2l0aCB0aGUgb2xkIGxlYWRlciYjMzk7cyBwaWQuCiAJCSAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLgogCQkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEZvY3VzIG9uIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggaW4gYGZzL2V4ZWMuY2AgdGhhdOKAmXMgYWx0ZXJpbmcgYGRlX3RocmVhZCgpYC4gRnJvbSB3aGF0IEkgc2VlLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgY2FsbCAqd2l0aGluKiBgZGVfdGhyZWFkKClgIOKAkyBidXQgb25seSBpZiBgQ09ORklHX1BPU0lYX1RJTUVSU2AgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGlzIGlzIHRvdWNoaW5nIHRoZSBjb3JlIGtlcm5lbCBleGVjdXRpb24gcGF0aCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBub24tbGVhZGVyIHRocmVhZCBpcyBjYWxsaW5nIGBleGVjdmVgIGFuZCBkZXRhY2hpbmcgZnJvbSB0aGUgdGhyZWFkIGdyb3VwLiBGdW5jdGlvbmFsbHksIGl0JiMzOTtzIG1ha2luZyBhIGNoYW5nZSByaWdodCB0aGVyZSwgc28gbXkgaW5pdGlhbCBpbnN0aW5jdCBpczogKipkZWZpbml0ZWx5Kiogd29ydGggZnV6emluZy4gVGhlIGludGVycGxheSBvZiBQT1NJWCB0aW1lcnMgd2l0aCB0aGUgYGV4ZWN2ZWAgcGF0aCBjb3VsZCBiZSBhIHJpY2ggc291cmNlIG9mIGludGVyZXN0aW5nIGJlaGF2aW9yLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBhIGJpdC4gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBMZXQgbWUgY2hlY2sgYGZzL2V4ZWMuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCAmIzM0O2xvY2smIzM0OyBpcy4gQWgsIGdvb2QuIEl0JiMzOTtzIHVzaW5nIGBzcGluX2xvY2sobG9jayk7YCBhbmQgYHNwaW5fdW5sb2NrKGxvY2spO2AsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHNwaW5sb2Nrcy4gSSBzaG91bGQgY2hlY2sgbGluZSAxMDAwIGluIGBmcy9leGVjLmNgIGFuZCB0aGUgbGluZXMgYXJvdW5kIGl0IGp1c3QgdG8gZ2V0IGEgZnVsbGVyIHBpY3R1cmUgb2YgdGhlIGxvY2smIzM5O3Mgc2NvcGUgYW5kIHRoZSBwcm90ZWN0ZWQgZGF0YSBzdHJ1Y3R1cmVzLiBTcGlubG9ja3Mgd2l0aGluIGBkZV90aHJlYWRgLi4uIHRoaXMgY291bGQgaW50cm9kdWNlIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgb3IgcmFjZSBjb25kaXRpb25zIHRoYXQgZnV6emluZyBtaWdodCBleHBvc2UuIEdvdHRhIGxvb2sgYXQgdGhlIGJpZ2dlciBwaWN0dXJlIGFuZCBob3cgYWxsIHRoZXNlIHB1enpsZSBwaWVjZXMgZml0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvZXhlYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5OTA6XHRcdFx0ICogYWxzbyB0YWtlIGl0cyBiaXJ0aGRhdGUgKGFsd2F5cyBlYXJsaWVyIHRoYW4gb3VyIG93bikuXG4gOTkxOlx0XHRcdCAqL1xuIDk5MjpcdFx0XHR0c2stXHUwMDNlc3RhcnRfdGltZSA9IGxlYWRlci1cdTAwM2VzdGFydF90aW1lO1xuIDk5MzpcdFx0XHR0c2stXHUwMDNlc3RhcnRfYm9vdHRpbWUgPSBsZWFkZXItXHUwMDNlc3RhcnRfYm9vdHRpbWU7XG4gOTk0Olx0XG4gOTk1Olx0XHRcdEJVR19PTighc2FtZV90aHJlYWRfZ3JvdXAobGVhZGVyLCB0c2spKTtcbiA5OTY6XHRcdFx0LypcbiA5OTc6XHRcdFx0ICogQW4gZXhlYygpIHN0YXJ0cyBhIG5ldyB0aHJlYWQgZ3JvdXAgd2l0aCB0aGVcbiA5OTg6XHRcdFx0ICogVEdJRCBvZiB0aGUgcHJldmlvdXMgdGhyZWFkIGdyb3VwLiBSZWhhc2ggdGhlXG4gOTk5Olx0XHRcdCAqIHR3byB0aHJlYWRzIHdpdGggYSBzd2l0Y2hlZCBQSUQsIGFuZCByZWxlYXNlXG4xMDAwOlx0XHRcdCAqIHRoZSBmb3JtZXIgdGhyZWFkIGdyb3VwIGxlYWRlcjpcbjEwMDE6XHRcdFx0ICovXG4xMDAyOlx0XG4xMDAzOlx0I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcbjEwMDQ6XHRcdFx0LypcbjEwMDU6XHRcdFx0ICogZXhjaGFuZ2VfdGlkcygpIGhhbmRzIHRoaXMgdGhyZWFkJiMzOTtzIFBJRCB0byB0aGUgb2xkIGxlYWRlcixcbjEwMDY6XHRcdFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxuMTAwNzpcdFx0XHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxuMTAwODpcdFx0XHQgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuXG4xMDA5Olx0XHRcdCAqL1xuMTAxMDpcdFx0XHRzcGluX2xvY2sobG9jayk7XG4xMDExOlx0XHRcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xuMTAxMjpcdFx0XHRzcGluX3VubG9jayhsb2NrKTtcbjEwMTM6XHQjZW5kaWZcbjEwMTQ6XHRcbjEwMTU6XHRcdFx0LyogQmVjb21lIGEgcHJvY2VzcyBncm91cCBsZWFkZXIgd2l0aCB0aGUgb2xkIGxlYWRlciYjMzk7cyBwaWQuXG4xMDE2Olx0XHRcdCAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLlxuMTAxNzpcdFx0XHQgKi9cbjEwMTg6XHRcdFx0ZXhjaGFuZ2VfdGlkcyh0c2ssIGxlYWRlcik7XG4xMDE5Olx0XHRcdHRyYW5zZmVyX3BpZChsZWFkZXIsIHRzaywgUElEVFlQRV9UR0lEKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDM2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEZWNvbnN0cnVjdGluZyBgZGVfdGhyZWFkYCoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYGRlX3RocmVhZGAsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBsb2NraW5nIG1lY2hhbmlzbS4gQmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGlzIGNvZGViYXNlLCB0aGF0IGBsb2NrYCB2YXJpYWJsZSBpcyBhbG1vc3QgY2VydGFpbmx5IGEgc3BpbmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzaWduYWwgaGFuZGxpbmcgc3RydWN0dXJlLiBQcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgJmFtcDtzaWdoYW5kLSZndDtzaWdsb2NrYCwgbWF5YmUgYSBuZXN0ZWQgbWVtYmVyIHdpdGhpbiBhIGxhcmdlciBzdHJ1Y3R1cmUuIEdvdHRhIGJlIGNhcmVmdWwgd2l0aCB0aGlzLCB0aG91Z2g7IHNpZ25hbCBoYW5kbGluZyBpcyBhIG1pbmVmaWVsZC4gSSYjMzk7bGwgcXVpY2tseSBjb25maXJtIGV4YWN0bHkgd2hpY2ggbG9jayBpdCBpcy4gR290dGEgZW5zdXJlIHdlJiMzOTtyZSB1c2luZyB0aGUgY29ycmVjdCBvbmUsIGFuZCBub3QgYWNjaWRlbnRhbGx5IGdyYWJiaW5nIHRoZSB3cm9uZyBsb2NrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvZXhlYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5NzA6XHRcdFx0XHQgKi9cbiA5NzE6XHRcdFx0XHRzaWctXHUwMDNlbm90aWZ5X2NvdW50ID0gLTE7XG4gOTcyOlx0XHRcdFx0aWYgKGxpa2VseShsZWFkZXItXHUwMDNlZXhpdF9zdGF0ZSkpXG4gOTczOlx0XHRcdFx0XHRicmVhaztcbiA5NzQ6XHRcdFx0XHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfS0lMTEFCTEUpO1xuIDk3NTpcdFx0XHRcdHdyaXRlX3VubG9ja19pcnEoXHUwMDI2dGFza2xpc3RfbG9jayk7XG4gOTc2Olx0XHRcdFx0Y2dyb3VwX3RocmVhZGdyb3VwX2NoYW5nZV9lbmQodHNrKTtcbiA5Nzc6XHRcdFx0XHRzY2hlZHVsZSgpO1xuIDk3ODpcdFx0XHRcdGlmIChfX2ZhdGFsX3NpZ25hbF9wZW5kaW5nKHRzaykpXG4gOTc5Olx0XHRcdFx0XHRnb3RvIGtpbGxlZDtcbiA5ODA6XHRcdFx0fVxuIDk4MTpcdFxuIDk4MjpcdFx0XHQvKlxuIDk4MzpcdFx0XHQgKiBUaGUgb25seSByZWNvcmQgd2UgaGF2ZSBvZiB0aGUgcmVhbC10aW1lIGFnZSBvZiBhXG4gOTg0Olx0XHRcdCAqIHByb2Nlc3MsIHJlZ2FyZGxlc3Mgb2YgZXhlY3MgaXQmIzM5O3MgZG9uZSwgaXMgc3RhcnRfdGltZS5cbiA5ODU6XHRcdFx0ICogQWxsIHRoZSBwYXN0IENQVSB0aW1lIGlzIGFjY3VtdWxhdGVkIGluIHNpZ25hbF9zdHJ1Y3RcbiA5ODY6XHRcdFx0ICogZnJvbSBzaXN0ZXIgdGhyZWFkcyBub3cgZGVhZC4gIEJ1dCBpbiB0aGlzIG5vbi1sZWFkZXJcbiA5ODc6XHRcdFx0ICogZXhlYywgbm90aGluZyBzdXJ2aXZlcyBmcm9tIHRoZSBvcmlnaW5hbCBsZWFkZXIgdGhyZWFkLFxuIDk4ODpcdFx0XHQgKiB3aG9zZSBiaXJ0aCBtYXJrcyB0aGUgdHJ1ZSBhZ2Ugb2YgdGhpcyBwcm9jZXNzIG5vdy5cbiA5ODk6XHRcdFx0ICogV2hlbiB3ZSB0YWtlIG9uIGl0cyBpZGVudGl0eSBieSBzd2l0Y2hpbmcgdG8gaXRzIFBJRCwgd2VcbiA5OTA6XHRcdFx0ICogYWxzbyB0YWtlIGl0cyBiaXJ0aGRhdGUgKGFsd2F5cyBlYXJsaWVyIHRoYW4gb3VyIG93bikuXG4gOTkxOlx0XHRcdCAqL1xuIDk5MjpcdFx0XHR0c2stXHUwMDNlc3RhcnRfdGltZSA9IGxlYWRlci1cdTAwM2VzdGFydF90aW1lO1xuIDk5MzpcdFx0XHR0c2stXHUwMDNlc3RhcnRfYm9vdHRpbWUgPSBsZWFkZXItXHUwMDNlc3RhcnRfYm9vdHRpbWU7XG4gOTk0Olx0XG4gOTk1Olx0XHRcdEJVR19PTighc2FtZV90aHJlYWRfZ3JvdXAobGVhZGVyLCB0c2spKTtcbiA5OTY6XHRcdFx0LypcbiA5OTc6XHRcdFx0ICogQW4gZXhlYygpIHN0YXJ0cyBhIG5ldyB0aHJlYWQgZ3JvdXAgd2l0aCB0aGVcbiA5OTg6XHRcdFx0ICogVEdJRCBvZiB0aGUgcHJldmlvdXMgdGhyZWFkIGdyb3VwLiBSZWhhc2ggdGhlXG4gOTk5Olx0XHRcdCAqIHR3byB0aHJlYWRzIHdpdGggYSBzd2l0Y2hlZCBQSUQsIGFuZCByZWxlYXNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc0MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlYnVnZ2luZyBhIE1pc3NpbmcgRGVmaW5pdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBoaXR0aW5nIGEgc25hZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiAmIzM0O1dhaXQsIHdoZXJlICppcyogYGxvY2tgIGRlZmluZWQ/JiMzNDsgSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhhdCBzb21ldGhpbmcgY3J1Y2lhbCBpcyBtaXNzaW5nIOKAkyB0aGUgY29udGV4dCwgdGhlIGRlY2xhcmF0aW9uLCBvciB0aGUgc2NvcGUgd2l0aGluIHdoaWNoIGBsb2NrYCBpcyBzdXBwb3NlZCB0byBleGlzdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYGxvY2tgIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIHdvcmtpbmcsIGFuZCByaWdodCBub3csIGl0JiMzOTtzIGEgYmxhY2sgYm94LiBUaGlzIGlzIGEgZnVuZGFtZW50YWwgZmlyc3Qgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBwcm9ibGVtLCBpZGVudGlmeWluZyB3aGV0aGVyIGl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIG1pc3NpbmcgaW1wb3J0LCBhIG1vcmUgY29tcGxleCBzY29wZSBpc3N1ZSwgb3IgcGVyaGFwcyBhbiBlcnJvciBpbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsaWJyYXJ5IGJlaW5nIHVzZWQuIFRpbWUgdG8gdHJhY2UgdGhpcyBgbG9ja2AgdG8gaXRzIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4ZWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTQwOlx0XG4gOTQxOlx0XHRzaWctXHUwMDNlZ3JvdXBfZXhlY190YXNrID0gdHNrO1xuIDk0MjpcdFx0c2lnLVx1MDAzZW5vdGlmeV9jb3VudCA9IHphcF9vdGhlcl90aHJlYWRzKHRzayk7XG4gOTQzOlx0XHRpZiAoIXRocmVhZF9ncm91cF9sZWFkZXIodHNrKSlcbiA5NDQ6XHRcdFx0c2lnLVx1MDAzZW5vdGlmeV9jb3VudC0tO1xuIDk0NTpcdFxuIDk0NjpcdFx0d2hpbGUgKHNpZy1cdTAwM2Vub3RpZnlfY291bnQpIHtcbiA5NDc6XHRcdFx0X19zZXRfY3VycmVudF9zdGF0ZShUQVNLX0tJTExBQkxFKTtcbiA5NDg6XHRcdFx0c3Bpbl91bmxvY2tfaXJxKGxvY2spO1xuIDk0OTpcdFx0XHRzY2hlZHVsZSgpO1xuIDk1MDpcdFx0XHRpZiAoX19mYXRhbF9zaWduYWxfcGVuZGluZyh0c2spKVxuIDk1MTpcdFx0XHRcdGdvdG8ga2lsbGVkO1xuIDk1MjpcdFx0XHRzcGluX2xvY2tfaXJxKGxvY2spO1xuIDk1MzpcdFx0fVxuIDk1NDpcdFx0c3Bpbl91bmxvY2tfaXJxKGxvY2spO1xuIDk1NTpcdFxuIDk1NjpcdFx0LypcbiA5NTc6XHRcdCAqIEF0IHRoaXMgcG9pbnQgYWxsIG90aGVyIHRocmVhZHMgaGF2ZSBleGl0ZWQsIGFsbCB3ZSBoYXZlIHRvXG4gOTU4Olx0XHQgKiBkbyBpcyB0byB3YWl0IGZvciB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciB0byBiZWNvbWUgaW5hY3RpdmUsXG4gOTU5Olx0XHQgKiBhbmQgdG8gYXNzdW1lIGl0cyBQSUQ6XG4gOTYwOlx0XHQgKi9cbiA5NjE6XHRcdGlmICghdGhyZWFkX2dyb3VwX2xlYWRlcih0c2spKSB7XG4gOTYyOlx0XHRcdHN0cnVjdCB0YXNrX3N0cnVjdCAqbGVhZGVyID0gdHNrLVx1MDAzZWdyb3VwX2xlYWRlcjtcbiA5NjM6XHRcbiA5NjQ6XHRcdFx0Zm9yICg7Oykge1xuIDk2NTpcdFx0XHRcdGNncm91cF90aHJlYWRncm91cF9jaGFuZ2VfYmVnaW4odHNrKTtcbiA5NjY6XHRcdFx0XHR3cml0ZV9sb2NrX2lycShcdTAwMjZ0YXNrbGlzdF9sb2NrKTtcbiA5Njc6XHRcdFx0XHQvKlxuIDk2ODpcdFx0XHRcdCAqIERvIHRoaXMgdW5kZXIgdGFza2xpc3RfbG9jayB0byBlbnN1cmUgdGhhdFxuIDk2OTpcdFx0XHRcdCAqIGV4aXRfbm90aWZ5KCkgY2FuJiMzOTt0IG1pc3MgLVx1MDAzZWdyb3VwX2V4ZWNfdGFza1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgdGhlIGNvZGUgcmVmZXJzIHRvIHNvbWV0aGluZyBjYWxsZWQgYGxvY2tgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgZm9yIGl0cyBkZWZpbml0aW9uLiBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHNjb3BlIGlzc3VlcywgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQsIGFuZCB3aGF0IHR5cGUgaXQgaXMuIElzIGl0IGEgbXV0ZXg/IEEgc2VtYXBob3JlPyBBIHJlYWRlci13cml0ZXIgbG9jaz8gVW5kZXJzdGFuZGluZyBgbG9ja2AmIzM5O3MgbmF0dXJlIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHJlYWxseSBncmFzcCB3aGF0JiMzOTtzIGhhcHBlbmluZyBpbiB0aGlzIHNlY3Rpb24gb2YgY29kZSBhbmQgYXNzZXNzIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGNvbmN1cnJlbmN5LCByZXNvdXJjZSBtYW5hZ2VtZW50LCBhbmQgcG90ZW50aWFsIGRlYWRsb2Nrcy4gSSYjMzk7bSBlc3NlbnRpYWxseSBzdGFydGluZyB3aXRoIGEgYm90dG9tLXVwIGFwcHJvYWNoIGhlcmUsIGJ1aWxkaW5nIG15IHVuZGVyc3RhbmRpbmcgZnJvbSB0aGUgZm91bmRhdGlvbmFsIGVsZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvZXhlYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5MDA6XHRcdGlmIChvbGRfbW0pIHtcbiA5MDE6XHRcdFx0bW1hcF9yZWFkX3VubG9jayhvbGRfbW0pO1xuIDkwMjpcdFx0XHRCVUdfT04oYWN0aXZlX21tICE9IG9sZF9tbSk7XG4gOTAzOlx0XHRcdC8qIERlZmVyIHRlYXJkb3duIHRvIHNldHVwX25ld19leGVjKCksIG91dHNpZGUgdGhlIGV4ZWMgbG9ja3MuICovXG4gOTA0Olx0XHRcdGJwcm0tXHUwMDNlb2xkX21tID0gb2xkX21tO1xuIDkwNTpcdFx0XHRyZXR1cm4gMDtcbiA5MDY6XHRcdH1cbiA5MDc6XHRcdG1tZHJvcF9sYXp5X3RsYihhY3RpdmVfbW0pO1xuIDkwODpcdFx0cmV0dXJuIDA7XG4gOTA5Olx0fVxuIDkxMDpcdFxuIDkxMTpcdC8qIFJlbGVhc2UgdGhlIGFkZHJlc3Mgc3BhY2UgcmVwbGFjZWQgYnkgZXhlYywgb3V0c2lkZSB0aGUgZXhlYyBsb2Nrcy4gKi9cbiA5MTI6XHRzdGF0aWMgdm9pZCBleGVjX21tX3B1dF9vbGQoc3RydWN0IG1tX3N0cnVjdCAqb2xkX21tKVxuIDkxMzpcdHtcbiA5MTQ6XHRcdHNldG1heF9tbV9oaXdhdGVyX3JzcyhcdTAwMjZjdXJyZW50LVx1MDAzZXNpZ25hbC1cdTAwM2VtYXhyc3MsIG9sZF9tbSk7XG4gOTE1Olx0XHRtbV91cGRhdGVfbmV4dF9vd25lcihvbGRfbW0pO1xuIDkxNjpcdFx0bW1wdXQob2xkX21tKTtcbiA5MTc6XHR9XG4gOTE4Olx0XG4gOTE5Olx0c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4gOTIwOlx0e1xuIDkyMTpcdFx0c3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZyA9IHRzay1cdTAwM2VzaWduYWw7XG4gOTIyOlx0XHRzdHJ1Y3Qgc2lnaGFuZF9zdHJ1Y3QgKm9sZHNpZ2hhbmQgPSB0c2stXHUwMDNlc2lnaGFuZDtcbiA5MjM6XHRcdHNwaW5sb2NrX3QgKmxvY2sgPSBcdTAwMjZvbGRzaWdoYW5kLVx1MDAzZXNpZ2xvY2s7XG4gOTI0Olx0XG4gOTI1Olx0XHRpZiAodGhyZWFkX2dyb3VwX2VtcHR5KHRzaykpXG4gOTI2Olx0XHRcdGdvdG8gbm9fdGhyZWFkX2dyb3VwO1xuIDkyNzpcdFxuIDkyODpcdFx0LypcbiA5Mjk6XHRcdCAqIEtpbGwgYWxsIG90aGVyIHRocmVhZHMgaW4gdGhlIHRocmVhZCBncm91cC5cbiA5MzA6XHRcdCAqL1xuIDkzMTpcdFx0c3Bpbl9sb2NrX2lycShsb2NrKTtcbiA5MzI6XHRcdGlmICgoc2lnLVx1MDAzZWZsYWdzIFx1MDAyNiBTSUdOQUxfR1JPVVBfRVhJVCkgfHwgc2lnLVx1MDAzZWdyb3VwX2V4ZWNfdGFzaykge1xuIDkzMzpcdFx0XHQvKlxuIDkzNDpcdFx0XHQgKiBBbm90aGVyIGdyb3VwIGFjdGlvbiBpbiBwcm9ncmVzcywganVzdFxuIDkzNTpcdFx0XHQgKiByZXR1cm4gc28gdGhhdCB0aGUgc2lnbmFsIGlzIHByb2Nlc3NlZC5cbiA5MzY6XHRcdFx0ICovXG4gOTM3Olx0XHRcdHNwaW5fdW5sb2NrX2lycShsb2NrKTtcbiA5Mzg6XHRcdFx0cmV0dXJuIC1FQUdBSU47XG4gOTM5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxODgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYGxvY2tgIGlzIGRlZmluZWQgYXMgYCZhbXA7b2xkc2lnaGFuZC0mZ3Q7c2lnbG9ja2AuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBCdXQgdGhlbiBJIHNlZSB0aGUgcGF0Y2ggdXNlcyBgc3Bpbl9sb2NrKGxvY2spO2AgYW5kIGxhdGVyIGBzcGluX3VubG9jayhsb2NrKTtgLCBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSBjbGlja2luZy4gYGxvY2tgIGlzIGEgcG9pbnRlciB0byBhIGBzcGlubG9ja190YCwgd2hpY2ggaXMgY29ycmVjdC4gSSBwYXVzZWQgZm9yIGEgbW9tZW50LCB0aGlua2luZyBJIHdhcyBtaXNzaW5nIHNvbWV0aGluZy4gTm8sIGBzcGluX2xvY2sobG9jaylgIGlzIHBlcmZlY3RseSB2YWxpZC4gTXkgYnJhaW4gY2F1Z2h0IHVwLCBhbmQgcmVtaW5kZWQgaXRzZWxmIGBzcGluX2xvY2tfaXJxKGxvY2spYCBpcyB1c2VkIGVhcmxpZXIgaW4gdGhlIHNhbWUgZnVuY3Rpb24uIEJ1dCB0aGF0IHN0aWxsIGRvZXNuJiMzOTt0IHNhdGlzZnkgbWUuIElzIGBzcGluX2xvY2sobG9jaylgIHNhZmUgaW4gKnRoaXMqIHNwZWNpZmljIHNwb3Q/IFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZS4KClRoZSBnb29kIG5ld3MgaXMgdGhlIHBhdGNoIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCwgc28gYXQgbGVhc3QgaXQgY29tcGlsZXMgd2l0aG91dCBhbnkgcmVwb3J0ZWQgaXNzdWVzLiBMZXQmIzM5O3Mgc2VlLi4uIHRoaXMgaXMgdGhlIGBkZV90aHJlYWRgIGZ1bmN0aW9uIGluIGBmcy9leGVjLmNgLiBEZWZpbml0ZWx5IHdvcnRoIGFkZGluZyB0byBteSBmdXp6aW5nIGxpc3QuIEkgbmVlZCB0byBmb2N1cyBvbiB0aGlzIGBkZV90aHJlYWRgIGZ1bmN0aW9uLiBUaGUgcHJvYmxlbSBpcywgaXQmIzM5O3MgZGVjbGFyZWQgYHN0YXRpY2AuIE9rYXksIEkga25vdyBteSB3YXkgYXJvdW5kIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gdG8gZ2FpbiBjb250cm9sLiBBaGEhIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBiZWdpbl9uZXdfZXhlY2AuIFRpbWUgdG8gZXhhbWluZSB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hlcmUgdGhpcyByYWJiaXQgaG9sZSBsZWFkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwNTA6XHRub190aHJlYWRfZ3JvdXA6XG4xMDUxOlx0XHQvKiB3ZSBoYXZlIGNoYW5nZWQgZXhlY3V0aW9uIGRvbWFpbiAqL1xuMTA1MjpcdFx0dHNrLVx1MDAzZWV4aXRfc2lnbmFsID0gU0lHQ0hMRDtcbjEwNTM6XHRcbjEwNTQ6XHRcdEJVR19PTighdGhyZWFkX2dyb3VwX2xlYWRlcih0c2spKTtcbjEwNTU6XHRcdHJldHVybiAwO1xuMTA1NjpcdFxuMTA1NzpcdGtpbGxlZDpcbjEwNTg6XHRcdC8qIHByb3RlY3RzIGFnYWluc3QgZXhpdF9ub3RpZnkoKSBhbmQgX19leGl0X3NpZ25hbCgpICovXG4xMDU5Olx0XHRyZWFkX2xvY2soXHUwMDI2dGFza2xpc3RfbG9jayk7XG4xMDYwOlx0XHRzaWctXHUwMDNlZ3JvdXBfZXhlY190YXNrID0gTlVMTDtcbjEwNjE6XHRcdHNpZy1cdTAwM2Vub3RpZnlfY291bnQgPSAwO1xuMTA2MjpcdFx0cmVhZF91bmxvY2soXHUwMDI2dGFza2xpc3RfbG9jayk7XG4xMDYzOlx0XHRyZXR1cm4gLUVBR0FJTjtcbjEwNjQ6XHR9XG4xMDY1Olx0XG4xMDY2Olx0XG4xMDY3Olx0LypcbjEwNjg6XHQgKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhlIGN1cnJlbnQgcHJvY2VzcyBoYXMgaXRzIG93biBzaWduYWwgdGFibGUsXG4xMDY5Olx0ICogc28gdGhhdCBmbHVzaF9zaWduYWxfaGFuZGxlcnMgY2FuIGxhdGVyIHJlc2V0IHRoZSBoYW5kbGVycyB3aXRob3V0XG4xMDcwOlx0ICogZGlzdHVyYmluZyBvdGhlciBwcm9jZXNzZXMuICAoT3RoZXIgcHJvY2Vzc2VzIG1pZ2h0IHNoYXJlIHRoZSBzaWduYWxcbjEwNzE6XHQgKiB0YWJsZSB2aWEgdGhlIENMT05FX1NJR0hBTkQgb3B0aW9uIHRvIGNsb25lKCkuKVxuMTA3MjpcdCAqL1xuMTA3MzpcdHN0YXRpYyBpbnQgdW5zaGFyZV9zaWdoYW5kKHN0cnVjdCB0YXNrX3N0cnVjdCAqbWUpXG4xMDc0Olx0e1xuMTA3NTpcdFx0c3RydWN0IHNpZ2hhbmRfc3RydWN0ICpvbGRzaWdoYW5kID0gbWUtXHUwMDNlc2lnaGFuZDtcbjEwNzY6XHRcbjEwNzc6XHRcdGlmIChyZWZjb3VudF9yZWFkKFx1MDAyNm9sZHNpZ2hhbmQtXHUwMDNlY291bnQpICE9IDEpIHtcbjEwNzg6XHRcdFx0c3RydWN0IHNpZ2hhbmRfc3RydWN0ICpuZXdzaWdoYW5kO1xuMTA3OTpcdFx0XHQvKlxuMTA4MDpcdFx0XHQgKiBUaGlzIC1cdTAwM2VzaWdoYW5kIGlzIHNoYXJlZCB3aXRoIHRoZSBDTE9ORV9TSUdIQU5EXG4xMDgxOlx0XHRcdCAqIGJ1dCBub3QgQ0xPTkVfVEhSRUFEIHRhc2ssIHN3aXRjaCB0byB0aGUgbmV3IG9uZS5cbjEwODI6XHRcdFx0ICovXG4xMDgzOlx0XHRcdG5ld3NpZ2hhbmQgPSBrbWVtX2NhY2hlX2FsbG9jKHNpZ2hhbmRfY2FjaGVwLCBHRlBfS0VSTkVMKTtcbjEwODQ6XHRcdFx0aWYgKCFuZXdzaWdoYW5kKVxuMTA4NTpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTA4NjpcdFxuMTA4NzpcdFx0XHRyZWZjb3VudF9zZXQoXHUwMDI2bmV3c2lnaGFuZC1cdTAwM2Vjb3VudCwgMSk7XG4xMDg4Olx0XG4xMDg5Olx0XHRcdHdyaXRlX2xvY2tfaXJxKFx1MDAyNnRhc2tsaXN0X2xvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzA5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlRyYWNpbmcgdGhlIFNvdXJjZTogRGVjb25zdHJ1Y3RpbmcgdGhlIGBkZV90aHJlYWRgIENhbGwqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgb2JqZWN0aXZlIGlzIGNsZWFyOiBwaW5wb2ludCB0aGUgb3JpZ2luIG9mIHRoZSBgZGVfdGhyZWFkYCBmdW5jdGlvbiBjYWxsLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY2FzdWFsIGN1cmlvc2l0eTsgaWRlbnRpZnlpbmcgdGhlIGNhbGxlciBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgdGhyZWFkIGlzIGJlaW5nIHNwYXduZWQsIHdoYXQgdHJpZ2dlcnMgaXRzIGV4ZWN1dGlvbiwgYW5kIHdoYXQgaW5mb3JtYXRpb24gaXMgYmVpbmcgcGFzc2VkIHRvIGl0LgoKTXkgaW1tZWRpYXRlIGFwcHJvYWNoIHdpbGwgZGVwZW5kIGhlYXZpbHkgb24gdGhlIHRvb2xzIGFuZCBlbnZpcm9ubWVudCBJIGhhdmUgYXZhaWxhYmxlLiBJZiBJIGhhdmUgYSBkZWJ1Z2dlciBoYW5keSwgSSYjMzk7bGwgc2V0IGEgYnJlYWtwb2ludCBhdCB0aGUgZW50cnkgcG9pbnQgb2YgYGRlX3RocmVhZGAgYW5kIHN0ZXAgYmFja3dhcmRzIHRocm91Z2ggdGhlIGNhbGwgc3RhY2suIFRoaXMgd2lsbCBnaXZlIG1lIGFuIGltbWVkaWF0ZSB2aXN1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGV4ZWN1dGlvbiBwYXRoIGxlYWRpbmcgdXAgdG8gaXQuCgpJZiBJJiMzOTttIHdvcmtpbmcgd2l0aCBzb3VyY2UgY29kZSwgSSYjMzk7bGwgc3RhcnQgd2l0aCBhIHN0cmFpZ2h0Zm9yd2FyZCB0ZXh0IHNlYXJjaCB3aXRoaW4gdGhlIGNvZGViYXNlLiBHcmVwcGluZyBmb3IgJiMzNDtkZV90aHJlYWQoJiMzNDsgb3IgJiMzNDtkZV90aHJlYWQoJiMzNDsgKGRlcGVuZGluZyBvbiB0aGUgY29kZSYjMzk7cyBzeW50YXgpIHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCB0aGUgZGlyZWN0IGNhbGwgc2l0ZXMuIEnigJlsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IOKAkyBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgdmFyaWFibGUgYXNzaWdubWVudHMsIG9yIGZ1bmN0aW9uIGNhbGxzIGluIHRoZSB2aWNpbml0eSB0aGF0IG1pZ2h0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIHB1cnBvc2UgYW5kIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYGRlX3RocmVhZGAgaXMgaW52b2tlZC4KCkJleW9uZCB0aGF0LCBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIG1vcmUgc29waGlzdGljYXRlZCB0ZWNobmlxdWVzLiBJcyB0aGVyZSBhbnkgY3Jvc3MtcmVmZXJlbmNpbmcgZnVuY3Rpb25hbGl0eSBpbiBteSBJREUgb3IgY29kZSBhbmFseXNpcyB0b29scz8gVGhlc2UgY2FuIG9mdGVuIGdlbmVyYXRlIGEgY2FsbCBncmFwaCwgd2hpY2ggd2lsbCB2aXN1YWxseSBtYXAgb3V0IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50IGZ1bmN0aW9ucyBhbmQgbWFrZSBpdCBlYXNpZXIgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBpbmRpcmVjdCBjYWxscyBhcyB3ZWxsLCBtYXliZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYGRlX3RocmVhZGAgYXMgYW4gYXJndW1lbnQgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi4KCkkgYWxzbyBoYXZlIHRvIGNvbnNpZGVyIGV4dGVybmFsIGZhY3RvcnMsIGxpa2UgdGhyZWFkaW5nIG1vZGVscyBvciB0aGUgdGFyZ2V0IG9wZXJhdGluZyBzeXN0ZW0uIERvZXMgdGhpcyBzeXN0ZW0gaGF2ZSBhIHNwZWNpZmljIHRocmVhZCBtYW5hZ2VtZW50IGZyYW1ld29yaz8gQXJlIHRoZXJlIGFueSBzaWduYWxzLCBldmVudHMsIG9yIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBtZWNoYW5pc21zIHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQ/IFRoZXNlIGNhbiBvYmZ1c2NhdGUgZGlyZWN0IGNhbGxzLgoKRmluYWxseSwgdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUgaGludHMgYXQgYSBwb3RlbnRpYWwgJiMzNDtkZS0mIzM0OyBvciAmIzM0O2RlbGV0ZSYjMzQ7IG9wZXJhdGlvbi4gQ291bGQgaXQgYmUgaW52b2x2ZWQgaW4gdGhyZWFkIHRlcm1pbmF0aW9uLCBjbGVhbnVwLCBvciByZXNvdXJjZSBkZWFsbG9jYXRpb24/IFRoaXMgd2lsbCBpbmZsdWVuY2UgdGhlIHR5cGVzIG9mIGNhbGxzaXRlcyBJIGV4cGVjdCB0byBzZWUuIFRoaXMgaW5mb3JtYXRpb24gd291bGQgZ3VpZGUgbXkgc2VhcmNoLiBNeSBnb2FsIGlzIGEgZnVsbCB1bmRlcnN0YW5kaW5nIG9mIGBkZV90aHJlYWRgJiMzOTtzIHJhaXNvbiBkJiMzOTtldHJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZV90aHJlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTkxMj1zdGF0aWMgdm9pZCBleGVjX21tX3B1dF9vbGQoc3RydWN0IG1tX3N0cnVjdCAqb2xkX21tKVxuLS1cbmZzL2V4ZWMuYy05MTgtXG5mcy9leGVjLmM6OTE5OnN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuZnMvZXhlYy5jLTkyMC17XG4tLVxuZnMvZXhlYy5jPTExMDY9dm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmJ1ZiwgYm9vbCBleGVjKVxuLS1cbmZzL2V4ZWMuYy0xMTE4LSAqIHNlZW4gYnkgdXNlcnNwYWNlIHNpbmNlIGVpdGhlciB0aGUgcHJvY2VzcyBpcyBhbHJlYWR5IHRha2luZyBhIGZhdGFsXG5mcy9leGVjLmM6MTExOTogKiBzaWduYWwgKHZpYSBkZV90aHJlYWQoKSBvciBjb3JlZHVtcCksIG9yIHdpbGwgaGF2ZSBTRUdWIHJhaXNlZFxuZnMvZXhlYy5jLTExMjAtICogKGFmdGVyIGV4ZWNfbW1hcCgpKSBieSBzZWFyY2hfYmluYXJ5X2hhbmRsZXIgKHNlZSBiZWxvdykuXG4tLVxuZnMvZXhlYy5jPTExMjI9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMTQ1LVx0LyogTWFrZSB0aGlzIHRoZSBvbmx5IHRocmVhZCBpbiB0aGUgdGhyZWFkIGdyb3VwICovXG5mcy9leGVjLmM6MTE0NjpcdHJldHZhbCA9IGRlX3RocmVhZChtZSk7XG5mcy9leGVjLmMtMTE0Ny1cdGlmIChyZXR2YWwpXG4tLVxuZnMvZXhlYy5jPTE0MDk9c3RhdGljIHZvaWQgZnJlZV9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE0MTgtXHRpZiAoYnBybS1cdTAwM2VjcmVkKSB7XG5mcy9leGVjLmM6MTQxOTpcdFx0LyogaW4gY2FzZSBleGVjIGZhaWxzIGJlZm9yZSBkZV90aHJlYWQoKSBzdWNjZWVkcyAqL1xuZnMvZXhlYy5jLTE0MjAtXHRcdGN1cnJlbnQtXHUwMDNlZnMtXHUwMDNlaW5fZXhlYyA9IDA7XG4tLVxuZnMvZXhlYy5jPTE1Mjg9c3RhdGljIHZvaWQgY2hlY2tfdW5zYWZlX2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTU0OS1cdCAqIE90aGVyd2lzZSB3ZSBzZXQgZnMtXHUwMDNlaW5fZXhlYyA9IDEgdG8gZGVueSBjbG9uZShDTE9ORV9GUylcbmZzL2V4ZWMuYzoxNTUwOlx0ICogZnJvbSBhbm90aGVyIHN1Yi10aHJlYWQgdW50aWwgZGVfdGhyZWFkKCkgc3VjY2VlZHMsIHRoaXNcbmZzL2V4ZWMuYy0xNTUxLVx0ICogc3RhdGUgaXMgcHJvdGVjdGVkIGJ5IGNyZWRfZ3VhcmRfbXV0ZXggd2UgaG9sZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCoqCgpPa2F5LCBzbyBgYmVnaW5fbmV3X2V4ZWNgIGlzIHRoZSBvbmUgaW5pdGlhdGluZyB0aGlzIHdob2xlIHNlcXVlbmNlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uIG9yIHByb2Nlc3MgaXMgY2FsbGluZyAqaXQqLiBUaGUga2V5IGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgb3JpZ2luLCB0aGUgY29udGV4dCBpbiB3aGljaCBgYmVnaW5fbmV3X2V4ZWNgIGlzIGJlaW5nIGludm9rZWQuIEtub3dpbmcgdGhlIGNhbGxlciBmdW5jdGlvbiBpcyBjcml0aWNhbCBmb3IgZGVidWdnaW5nLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3Igc2ltcGx5IHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgY29udHJvbCBmbG93LiBXZSBuZWVkIHRvIHRyYWNlIGJhY2t3YXJkcyB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWF0aW5nIGFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmVnaW5fbmV3X2V4ZWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTI1Nz1zdGF0aWMgaW50IGJwcm1fbW1faW5pdChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0yNjYtXG5mcy9leGVjLmM6MjY3Olx0LyogU3RhZ2VkIGZvciB3b3VsZF9kdW1wKCkgbmFycm93aW5nOyBjb25zdW1lZCBieSBiZWdpbl9uZXdfZXhlYygpLiAqL1xuZnMvZXhlYy5jLTI2OC1cdGJwcm0tXHUwMDNldXNlcl9ucyA9IGdldF91c2VyX25zKGN1cnJlbnRfdXNlcl9ucygpKTtcbi0tXG5mcy9leGVjLmM9MTEwNj12b2lkIF9fc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY29uc3QgY2hhciAqYnVmLCBib29sIGV4ZWMpXG4tLVxuZnMvZXhlYy5jLTExMjEtICovXG5mcy9leGVjLmM6MTEyMjppbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pXG5mcy9leGVjLmMtMTEyMy17XG4tLVxuZnMvZXhlYy5jLTEzMjEtfVxuZnMvZXhlYy5jOjEzMjI6RVhQT1JUX1NZTUJPTChiZWdpbl9uZXdfZXhlYyk7XG5mcy9leGVjLmMtMTMyMy1cbi0tXG5mcy9leGVjLmM9MTY4Nz1zdGF0aWMgaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0xNzE5LVxuZnMvZXhlYy5jOjE3MjA6LyogYmluZm10IGhhbmRsZXJzIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSBvbiBzdWNjZXNzLiAqL1xuZnMvZXhlYy5jLTE3MjEtc3RhdGljIGludCBleGVjX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYz0xNzY2PXN0YXRpYyBpbnQgYnBybV9leGVjdmUoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTc3NS1cdCAqIENoZWNrIGZvciB1bnNhZmUgZXhlY3V0aW9uIHN0YXRlcyBiZWZvcmUgZXhlY19iaW5wcm0oKSwgd2hpY2hcbmZzL2V4ZWMuYzoxNzc2Olx0ICogd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpLCBpbnRvIGJwcm1fY3JlZHNfZnJvbV9maWxlKCksXG5mcy9leGVjLmMtMTc3Ny1cdCAqIHdoZXJlIHNldHVpZC1uZXNzIGlzIGV2YWx1YXRlZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxNQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKlRyYWNpbmcgdGhlIEV4ZWN1dGlvbiBFbnRyeSBQb2ludCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgb3VyIGV4ZWN1dGFibGUgbG9hZGluZyB3b3Jrcy4gVGhlIHN5c3RlbSBzdGFydHMgd2l0aCBgYmVnaW5fbmV3X2V4ZWNgLCB3aGljaCBJIGtub3cgaXMgY2FsbGVkIGJ5IHRoZSBiaW5mbXQgaGFuZGxlcnMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGBiZWdpbl9uZXdfZXhlY2AgaXMgYWN0dWFsbHkgZXhwb3J0ZWQ/IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHVzdWFsbHkgZnVuY3Rpb25zIHRoaXMgbG93LWxldmVsIGFyZW4mIzM5O3QuIFRoaXMgY2hhbmdlcyB0aGluZ3MgYSBiaXQuIFNvIEkgbmVlZCB0byBzaGlmdCBnZWFycyBhbmQgZmluZCBvdXQgZXhhY3RseSB3aGVyZSB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmcm9tLCBnaXZlbiB0aGF0IGl0IGlzIGV4cG9ydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzLiBMZXQmIzM5O3Mgc2VlIGhvdyB3aWRlc3ByZWFkIHRoZSBkZXBlbmRlbmNpZXMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9iaW5mbXRfZWxmLmM9ODMyPXN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvYmluZm10X2VsZi5jLTEwMDktXHQvKiBGbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXG5mcy9iaW5mbXRfZWxmLmM6MTAxMDpcdHJldHZhbCA9IGJlZ2luX25ld19leGVjKGJwcm0pO1xuZnMvYmluZm10X2VsZi5jLTEwMTEtXHRpZiAocmV0dmFsKVxuLS1cbmZzL2JpbmZtdF9lbGZfZmRwaWMuYz0xODI9c3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9iaW5mbXRfZWxmX2ZkcGljLmMtMzQ0LVx0LyogZmx1c2ggYWxsIHRyYWNlcyBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgZXhlY3V0YWJsZSAqL1xuZnMvYmluZm10X2VsZl9mZHBpYy5jOjM0NTpcdHJldHZhbCA9IGJlZ2luX25ld19leGVjKGJwcm0pO1xuZnMvYmluZm10X2VsZl9mZHBpYy5jLTM0Ni1cdGlmIChyZXR2YWwpXG4tLVxuZnMvYmluZm10X2ZsYXQuYz00MDY9c3RhdGljIGludCBsb2FkX2ZsYXRfZmlsZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLFxuLS1cbmZzL2JpbmZtdF9mbGF0LmMtNTA4LVx0LyogRmx1c2ggYWxsIHRyYWNlcyBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgZXhlY3V0YWJsZSAqL1xuZnMvYmluZm10X2ZsYXQuYzo1MDk6XHRyZXQgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcbmZzL2JpbmZtdF9mbGF0LmMtNTEwLVx0aWYgKHJldClcbi0tXG5mcy9leGVjLmM9MjU3PXN0YXRpYyBpbnQgYnBybV9tbV9pbml0KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTI2Ni1cbmZzL2V4ZWMuYzoyNjc6XHQvKiBTdGFnZWQgZm9yIHdvdWxkX2R1bXAoKSBuYXJyb3dpbmc7IGNvbnN1bWVkIGJ5IGJlZ2luX25ld19leGVjKCkuICovXG5mcy9leGVjLmMtMjY4LVx0YnBybS1cdTAwM2V1c2VyX25zID0gZ2V0X3VzZXJfbnMoY3VycmVudF91c2VyX25zKCkpO1xuLS1cbmZzL2V4ZWMuYz0xMTA2PXZvaWQgX19zZXRfdGFza19jb21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBjb25zdCBjaGFyICpidWYsIGJvb2wgZXhlYylcbi0tXG5mcy9leGVjLmMtMTEyMS0gKi9cbmZzL2V4ZWMuYzoxMTIyOmludCBiZWdpbl9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSlcbmZzL2V4ZWMuYy0xMTIzLXtcbi0tXG5mcy9leGVjLmMtMTMyMS19XG5mcy9leGVjLmM6MTMyMjpFWFBPUlRfU1lNQk9MKGJlZ2luX25ld19leGVjKTtcbmZzL2V4ZWMuYy0xMzIzLVxuLS1cbmZzL2V4ZWMuYz0xNjg3PXN0YXRpYyBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE3MTktXG5mcy9leGVjLmM6MTcyMDovKiBiaW5mbXQgaGFuZGxlcnMgd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpIG9uIHN1Y2Nlc3MuICovXG5mcy9leGVjLmMtMTcyMS1zdGF0aWMgaW50IGV4ZWNfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jPTE3NjY9c3RhdGljIGludCBicHJtX2V4ZWN2ZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0xNzc1LVx0ICogQ2hlY2sgZm9yIHVuc2FmZSBleGVjdXRpb24gc3RhdGVzIGJlZm9yZSBleGVjX2JpbnBybSgpLCB3aGljaFxuZnMvZXhlYy5jOjE3NzY6XHQgKiB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCksIGludG8gYnBybV9jcmVkc19mcm9tX2ZpbGUoKSxcbmZzL2V4ZWMuYy0xNzc3LVx0ICogd2hlcmUgc2V0dWlkLW5lc3MgaXMgZXZhbHVhdGVkLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDM2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGEgUGF0Y2ggb24gRXhlY3ZlIFBlcmZvcm1hbmNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIGl0cyBpbXBhY3QuIEkgc2VlIHRoYXQgYGJlZ2luX25ld19leGVjYCBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgaGVyZSwgdHJpZ2dlcmVkIGJ5IGBsb2FkX2VsZl9iaW5hcnlgLCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCwgYW5kIGBsb2FkX2ZsYXRfZmlsZWAuIFJpZ2h0LCBhbGwgdGhvc2UgYXJlIGhvdCBwYXRocyByZWxhdGVkIHRvIHRoZSBgZXhlY3ZlYCBzeXN0ZW0gY2FsbCwgbWFraW5nIHRoaXMgYXJlYSBhIHByaW1lIHRhcmdldCBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yLCBpbiB0aGlzIGNhc2UsIHBvdGVudGlhbCByZWdyZXNzaW9uLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRlX3RocmVhZGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IHRoYXQgY3J1Y2lhbCBgYmVnaW5fbmV3X2V4ZWNgIGZ1bmN0aW9uLiBXYWl0IGEgc2Vjb25kLCB0aGUga2V5IGNoYW5nZSBpcyB0aGF0IGl0JiMzOTtzIGludHJvZHVjaW5nIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIHdpdGhpbiBgZGVfdGhyZWFkYC4KClRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBmdW5jdGlvbiBpcyB0aGUgcmlnaHQgZm9jdXMgb2YgbXkgYXR0ZW50aW9uLiBJcyB0aGlzIGZ1bmN0aW9uIGFuIGFwcHJvcHJpYXRlIGluZGljYXRvciBvZiBwZXJmb3JtYW5jZSBjaGFuZ2VzLCBnb29kIG9yIGJhZCwgcmVsYXRlZCB0byB0aGlzIHBhdGNoPyBJdCYjMzk7cyB3b3J0aCBhIGRlZXBlciBkaXZlIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGlzIGNvZGUgcGF0aC4gTGV0IG1lIGdvIGNoZWNrIGl0IG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cG9zaXhfY3B1X3RpbWVyc19leGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4ZWMuYz05MTk9c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxuZnMvZXhlYy5jLTEwMTAtXHRcdHNwaW5fbG9jayhsb2NrKTtcbmZzL2V4ZWMuYzoxMDExOlx0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcbmZzL2V4ZWMuYy0xMDEyLVx0XHRzcGluX3VubG9jayhsb2NrKTtcbi0tXG5mcy9leGVjLmM9MTEyMj1pbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pXG4tLVxuZnMvZXhlYy5jLTExOTAtXHRzcGluX2xvY2tfaXJxKFx1MDAyNm1lLVx1MDAzZXNpZ2hhbmQtXHUwMDNlc2lnbG9jayk7XG5mcy9leGVjLmM6MTE5MTpcdHBvc2l4X2NwdV90aW1lcnNfZXhpdChtZSk7XG5mcy9leGVjLmMtMTE5Mi1cdHNwaW5fdW5sb2NrX2lycShcdTAwMjZtZS1cdTAwM2VzaWdoYW5kLVx1MDAzZXNpZ2xvY2spO1xuLS1cbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg9MjI1PXZvaWQgcnVuX3Bvc2l4X2NwdV90aW1lcnModm9pZCk7XG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oOjIyNjp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjc6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgtMjI4LXZvaWQgc2V0X3Byb2Nlc3NfY3B1X3RpbWVyKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdW5zaWduZWQgaW50IGNsb2NrX2lkeCxcbi0tXG5rZXJuZWwvZXhpdC5jPTE1OT1zdGF0aWMgdm9pZCBfX2V4aXRfc2lnbmFsKHN0cnVjdCByZWxlYXNlX3Rhc2tfcG9zdCAqcG9zdCwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxua2VybmVsL2V4aXQuYy0xNzEtI2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcbmtlcm5lbC9leGl0LmM6MTcyOlx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG5rZXJuZWwvZXhpdC5jLTE3My1cdGlmIChncm91cF9kZWFkKVxua2VybmVsL2V4aXQuYzoxNzQ6XHRcdHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCh0c2spO1xua2VybmVsL2V4aXQuYy0xNzUtI2VuZGlmXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTQ1MT1zdGF0aWMgdm9pZCBkaXNhcm1fdGltZXIoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00ODEtICpcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo0ODI6ICogX19leGl0X3NpZ25hbCgpIGludm9rZXMgcG9zaXhfY3B1X3RpbWVyc19leGl0KCkgYW5kIGlmIHRoZSB0aHJlYWQgZ3JvdXAgaXNcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00ODMtICogZGVhZCBpdCBhbHNvIGludm9rZXMgcG9zaXhfY3B1X3RpbWVyc19ncm91cF9leGl0KCkuIFRoZXNlIGZ1bmN0aW9ucyBkZWxldGVcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDg5LSAqIHRocmVhZCBncm91cCBpcyBub3QgZGVhZCB0aGV5IG9ubHkgY2xlYW4gdXAgdGhlIHBlciB0YXNrIHRpbWVycyB2aWFcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo0OTA6ICogcG9zaXhfY3B1X3RpbWVyc19leGl0KCkuXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDkxLSAqXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTYyND1zdGF0aWMgdm9pZCBjbGVhbnVwX3RpbWVycyhzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzICpwY3QpXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzMy0gKiBpcyBiZWluZyByZWFwZWQuICBXaGVuIHRoZSBmaW5hbCAobGVhZGVyKSB0aHJlYWQgaW4gdGhlIGdyb3VwIGlzIHJlYXBlZCxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo2MzQ6ICogcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHBvc2l4X2NwdV90aW1lcnNfZXhpdC5cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzUtICovXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM2OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzNy17XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzOS19XG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjQwOnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTY0MS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDAwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBUaHJlYWQgRXhpdCBSb3V0aW5lKioKCk9rYXksIHNvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIGlzIGEga2V5IGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSBtdWx0aXBsZSBwbGFjZXM6IGBfX2V4aXRfc2lnbmFsYCwgYGJlZ2luX25ld19leGVjYCwgYW5kIG5vdywgaW1wb3J0YW50bHksIGBkZV90aHJlYWRgLiBJdCBzZWVtcyBsaWtlIGEgZGVjZW50IHBvaW50IG9mIGZvY3VzIGZvciB0aGlzIHByb2JsZW0sIGJ1dCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIHRyaWdnZXJlZCBvbiAqZXZlcnkqIHRocmVhZCBleGl0IGlzIGEgYml0IGNvbmNlcm5pbmcgZm9yIGl0cyBzcGVjaWZpY2l0eS4gSXMgdGhlcmUgYSBtb3JlIHJlZmluZWQgcG9pbnQgb2YgaW50ZXJlc3Qgd2l0aGluIHRoaXMgY29kZSBwYXRoPwoKSG1tLCB0aGUgYnVnJiMzOTtzIGNvbm5lY3Rpb24gdG8gYGV4Y2hhbmdlX3RpZHMoKWAgYW5kIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgaXMgbWFraW5nIG1lIHRoaW5rIGFib3V0IHdoZXJlIHRoZSBhY3R1YWwgaXNzdWUgbWlnaHQgbGllLiBHaXZlbiB0aGF0IGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIHNlZW1zIHdpZGVzcHJlYWQsIG1heWJlIHRoZSBwcm9ibGVtIGlzIGluIGEgZnVuY3Rpb24gaXQmIzM5O3MgY2FsbGluZywgbGlrZSBgdGltZXJfbG9ja19zaWdoYW5kYC4gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZyB3aXRoIHRpbWVycyBhbmQgc2lnbmFsIGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aW1lcl9sb2NrX3NpZ2hhbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTkxOT1zdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5mcy9leGVjLmMtMTAwNi1cdFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxuZnMvZXhlYy5jOjEwMDc6XHRcdCAqIHRpbWVyX2xvY2tfc2lnaGFuZCgpIHRoZW4gZmFpbHMgd2hpbGUgdGhlIHBlciB0aHJlYWQgQ1BVXG5mcy9leGVjLmMtMTAwOC1cdFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNTIyLSAqL1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjUyMzpzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICp0aW1lcl9sb2NrX3NpZ2hhbmQoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgdW5zaWduZWQgbG9uZyAqZmxhZ3MpXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNTI0LXtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9NTc0PXN0YXRpYyBpbnQgcG9zaXhfY3B1X3RpbWVyX2RlbChzdHJ1Y3Qga19pdGltZXIgKnRpbWVyKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy01NzktXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NTgwOlx0cCA9IHRpbWVyX2xvY2tfc2lnaGFuZCh0aW1lciwgXHUwMDI2ZmxhZ3MpO1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTU4MS1cbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9NzA2PXN0YXRpYyBpbnQgcG9zaXhfY3B1X3RpbWVyX3NldChzdHJ1Y3Qga19pdGltZXIgKnRpbWVyLCBpbnQgdGltZXJfZmxhZ3MsXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTcxNi1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo3MTc6XHRwID0gdGltZXJfbG9ja19zaWdoYW5kKHRpbWVyLCBcdTAwMjZmbGFncyk7XG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNzE4LVx0Lypcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9MTA4Mj1zdGF0aWMgYm9vbCBwb3NpeF9jcHVfdGltZXJfcmVhcm0oc3RydWN0IGtfaXRpbWVyICp0aW1lcilcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTA4OC1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzoxMDg5Olx0cCA9IHRpbWVyX2xvY2tfc2lnaGFuZCh0aW1lciwgXHUwMDI2ZmxhZ3MpO1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTEwOTAtXHRpZiAodW5saWtlbHkoIXApKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTMxMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgYSBUaW1lci1SZWxhdGVkIFRocmVhZCBQSUQgSXNzdWUqKgoKT2theSwgc28gaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLiBJdCBsb29rcyBsaWtlIGBleGNoYW5nZV90aWRzKClgIGlzIHBhc3NpbmcgYSB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCBhbmQgdGhhdCBsZWFkZXIgaXMgaW1tZWRpYXRlbHkgcmVhcGVkLiBUaGUgcHJvYmxlbSBhcmlzZXMgYmVjYXVzZSBsYXRlciwgd2hlbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIHRyaWVzIHRvIGxvb2sgdXAgdGhlIFBJRCwgaXQgZmFpbHMgd2hpbGUgdGhlIENQVSB0aW1lcnMgZm9yIHRoYXQgc3BlY2lmaWMgdGhyZWFkIGFyZSBzdGlsbCBxdWV1ZWQuIFdlIG5lZWQgdG8gZGVxdWV1ZSB0aG9zZSB0aW1lcnMgYmVmb3JlIHRoaXMgbG9va3VwIGhhcHBlbnMuCgpUaGlzIHNlZW1zIHRvIHNwZWNpZmljYWxseSBvY2N1ciB3aGVuIGEgbm9uLWxlYWRlciB0aHJlYWQgZXhlY3V0ZXMgYW4gYGV4ZWN2ZWAgY2FsbCBhbmQgaGFzIFBPU0lYIENQVSB0aW1lcnMgcnVubmluZy4gVG8gcmVwcm9kdWNlIHRoaXMsIEkgbmVlZCB0byBjcmVhdGUgYSB0aHJlYWQgZ3JvdXAgd2l0aCBhdCBsZWFzdCB0d28gdGhyZWFkcy4gVGhlbiwgdGhlIG5vbi1sZWFkZXIgdGhyZWFkIGhhcyB0byBhcm0gYSBQT1NJWCBDUFUgdGltZXIgdXNpbmcgc29tZXRoaW5nIGxpa2UgYHRpbWVyX2NyZWF0ZWAgd2l0aCBgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSURgLiBGaW5hbGx5LCB0aGF0IG5vbi1sZWFkZXIgdGhyZWFkIG5lZWRzIHRvIGV4ZWN1dGUgYGV4ZWN2ZWAuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNoZWNrIHN5bWJvbHMgbGlrZSBgcG9zaXhfY3B1X3RpbWVyX3NldGAsIGBwb3NpeF9jcHVfdGltZXJfZGVsYCwgYW5kIGBkZV90aHJlYWRg4oCUYWx0aG91Z2ggYGRlX3RocmVhZGAgaXMgc3RhdGljLCBzbyBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGJlZ2luX25ld19leGVjYCBpbnN0ZWFkLgoKQnV0IHdhaXQsIGBwb3NpeF9jcHVfdGltZXJfc2V0YCBpcyBhbHNvIHN0YXRpYyEgT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNhbGxzIHRvIGBwb3NpeF9jcHVfdGltZXJfc2V0YCBpdHNlbGYuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqY2FsbGluZyogdGhhdCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwb3NpeF9jcHVfdGltZXJfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNTEzLSAqXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NTE0OiAqICAtIHBvc2l4X2NwdV90aW1lcl9zZXQoKTogSW5kZXBlbmRlbnQgb2YgdGhlIGVucXVldWVkIHN0YXRlIHRoYXQgcmVzdWx0cyBpbiBhXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNTE1LSAqICAgIHRyYW5zaWVudCBmYWlsdXJlIHdoaWNoIGlzIHVzZXIgc3BhY2UgdmlzaWJsZSAoLUVTUkNIKSBmb3IgcmVndWxhciBwb3NpeFxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02OTg9c3RhdGljIHZvaWQgX19wb3NpeF9jcHVfdGltZXJfZ2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCBpdGltZXJzcGVjNjQgKml0cCwgdTY0IG5vdyk7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTcwNS0gKi9cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo3MDY6c3RhdGljIGludCBwb3NpeF9jcHVfdGltZXJfc2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIGludCB0aW1lcl9mbGFncyxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MDctXHRcdFx0ICAgICAgIHN0cnVjdCBpdGltZXJzcGVjNjQgKm5ldywgc3RydWN0IGl0aW1lcnNwZWM2NCAqb2xkKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz0xNTM3PXN0YXRpYyBpbnQgZG9fY3B1X25hbm9zbGVlcChjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIGludCBmbGFncyxcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTU2My1cdFx0c3Bpbl9sb2NrX2lycShcdTAwMjZ0aW1lci5pdF9sb2NrKTtcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzoxNTY0Olx0XHRlcnJvciA9IHBvc2l4X2NwdV90aW1lcl9zZXQoXHUwMDI2dGltZXIsIGZsYWdzLCBcdTAwMjZpdCwgTlVMTCk7XG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTU2NS1cdFx0aWYgKGVycm9yKSB7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTE1OTQtXHRcdGV4cGlyZXMgPSBjcHVfdGltZXJfZ2V0ZXhwaXJlcyhcdTAwMjZ0aW1lci5pdC5jcHUpO1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjE1OTU6XHRcdGVycm9yID0gcG9zaXhfY3B1X3RpbWVyX3NldChcdTAwMjZ0aW1lciwgMCwgXHUwMDI2emVyb19pdCwgXHUwMDI2aXQpO1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTE1OTYtXHRcdGlmICghZXJyb3IpIHtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9MTcwNj1jb25zdCBzdHJ1Y3Qga19jbG9jayBjbG9ja19wb3NpeF9jcHUgPSB7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTE3MTEtXHQubnNsZWVwXHRcdFx0PSBwb3NpeF9jcHVfbnNsZWVwLFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjE3MTI6XHQudGltZXJfc2V0XHRcdD0gcG9zaXhfY3B1X3RpbWVyX3NldCxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNzEzLVx0LnRpbWVyX2RlbFx0XHQ9IHBvc2l4X2NwdV90aW1lcl9kZWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjEzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHN5c3RlbXMgcHJvZ3JhbW1pbmcgYW5kIGtlcm5lbCBpbnRlcm5hbHM6CgoqKkRpdmluZyBpbnRvIFRpbWVyIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBgdGltZXJfc2V0dGltZWAuIE15IG1lbnRhbCBtYXAgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGZhY3QgdGhhdCB0aGlzIGlzIGNvbm5lY3RlZCB0byBgY2xvY2tfcG9zaXhfY3B1YCwgbGlrZWx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgYHRpbWVyX3NldHRpbWVgIHN5c2NhbGwgaXRzZWxmLCBgc3lzX3RpbWVyX3NldHRpbWVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZy4gVGhlIGFyY2hpdGVjdHVyZSB3b3VsZCBkaWN0YXRlIG15IG5leHQgc3RlcCwgd2hpY2ggd2lsbCBiZSB0byBjaGVjayBgdGltZXJfc2V0dGltZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25hbGl0eSB0aGlzIGNvZGUgaXMgc2VydmluZywgc28gbGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgcm91dGluZS4gTGV0JiMzOTtzIHNlZSBob3cgaXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpbWVyX3NldHRpbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0PTExMTE9UnVubmluZyBwdHJhY2Ugb24gdGhpcyB0aHJlYWQgdXN1YWxseSByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgcGljdHVyZTo6XG4tLVxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0LTExMjgtICAgcHRyYWNlKFBUUkFDRV9HRVRTSUdJTkZPLCAxNjk2NywgTlVMTCwge3NpX3NpZ25vPVNJR1RSQVAsIHNpX2NvZGU9MHg4NSwgc2lfcGlkPTE2OTY3LCBzaV91aWQ9MH0pID0gMFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0OjExMjk6ICAgdGltZXJfc2V0dGltZSgwLCAwLCB7aXRfaW50ZXJ2YWw9e3R2X3NlYz0wLCB0dl9uc2VjPTB9LCBpdF92YWx1ZT17dHZfc2VjPTAsIHR2X25zZWM9MjgzMDkxMn19LCBOVUxMKSA9IDBcbkRvY3VtZW50YXRpb24vdmlydC91bWwvdXNlcl9tb2RlX2xpbnV4X2hvd3RvX3YyLnJzdC0xMTMwLSAgIGdldHBpZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE2NTY2XG4tLVxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0PTExMzU9VGhpcyBpcyBhIHR5cGljYWwgcGljdHVyZSBmcm9tIGEgbW9zdGx5IGlkbGUgVU1MIGluc3RhbmNlLlxuLS1cbkRvY3VtZW50YXRpb24vdmlydC91bWwvdXNlcl9tb2RlX2xpbnV4X2hvd3RvX3YyLnJzdC0xMTQzLSAgVU1MIHVzZXJzcGFjZS5cbkRvY3VtZW50YXRpb24vdmlydC91bWwvdXNlcl9tb2RlX2xpbnV4X2hvd3RvX3YyLnJzdDoxMTQ0OiogYGB0aW1lcl9zZXR0aW1lYGAgaXMgcGFydCBvZiB0aGUgVU1MIGhpZ2ggcmVzIHRpbWVyIHN1YnN5c3RlbSBtYXBwaW5nXG5Eb2N1bWVudGF0aW9uL3ZpcnQvdW1sL3VzZXJfbW9kZV9saW51eF9ob3d0b192Mi5yc3QtMTE0NS0gIHRpbWVyIHJlcXVlc3RzIGZyb20gaW5zaWRlIFVNTCBvbnRvIHRoZSBob3N0IGhpZ2ggcmVzb2x1dGlvbiB0aW1lcnMuXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ1LTQxNFx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNDY6NDE1XHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ3LTQxNlx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC0yNzUtMjU3XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRzeXNfdGltZXJfY3JlYXRlXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDoyNzY6MjU4XHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtMjc3LTI1OVx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00MjYtNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDo0Mjc6NDA5XHRjb21tb25cdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00MjgtNDEwXHRjb21tb25cdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTI3Mi0yNTdcdGNvbW1vblx0dGltZXJfY3JlYXRlXHRcdHN5c190aW1lcl9jcmVhdGVcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjI3MzoyNThcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcdGNvbW1vblx0dGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00MjMtNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjQyNDo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDI1LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNjQtMjU0XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjY1OjI1NVx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNjYtMjU2XHRjb21tb25cdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTEtNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxMjo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEzLTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNjktMjU5XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjcwOjI2MFx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzEtMjYxXHRjb21tb25cdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxODo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDE5LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMjMxLTIyMFx0bjMyXHR0aW1lcl9jcmVhdGVcdFx0XHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MjMyOjIyMVx0bjMyXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMjMzLTIyMlx0bjMyXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWUzMlxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTM1MC00MDhcdG4zMlx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjM1MTo0MDlcdG4zMlx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTM1Mi00MTBcdG4zMlx0dGltZXJmZF9nZXR0aW1lNjRcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTIyNy0yMTZcdG42NFx0dGltZXJfY3JlYXRlXHRcdFx0c3lzX3RpbWVyX2NyZWF0ZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MjI4OjIxN1x0bjY0XHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTIyOS0yMThcdG42NFx0dGltZXJfZ2V0dGltZVx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMjcxLTI1N1x0bzMyXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXHRcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDoyNzI6MjU4XHRvMzJcdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0yNzMtMjU5XHRvMzJcdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMzk5LTQwOFx0bzMyXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6NDAwOjQwOVx0bzMyXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtNDAxLTQxMFx0bzMyXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjc5LTI1MFx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0c3lzX3RpbWVyX2NyZWF0ZVx0XHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI4MDoyNTFcdDMyXHR0aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDoyODE6MjUxXHQ2NFx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI4Mi0yNTJcdDMyXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEwLTQwOFx0MzJcdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDExOjQwOVx0MzJcdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEyLTQxMFx0MzJcdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzA2LTI0MFx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXHRcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwNzoyNDFcdDMyXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozMDg6MjQxXHQ2NFx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwOToyNDFcdHNwdVx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTMxMC0yNDJcdDMyXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWUzMlxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTAyLTQwOFx0MzJcdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjUwMzo0MDlcdDMyXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDQtNDEwXHQzMlx0dGltZXJmZF9nZXR0aW1lNjRcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yMTAtMjU0XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjExOjI1NVx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEyLTI1Nlx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNjktMjU5XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI3MDoyNjBcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3MS0yNjFcdGNvbW1vblx0dGltZXJfZ2V0dGltZVx0XHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTUtNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTY6NDA5XHRjb21tb25cdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDEwXHRjb21tb25cdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zMTgtMjYxXHRjb21tb25cdHNjaGVkX3NldGFmZmluaXR5XHRzeXNfc2NoZWRfc2V0YWZmaW5pdHlcdFx0Y29tcGF0X3N5c19zY2hlZF9zZXRhZmZpbml0eVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzE5OjI2Mlx0MzJcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzIwOjI2Mlx0NjRcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTMyMS0yNjNcdDMyXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTctNDA4XHQzMlx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcdFx0c3lzX3RpbWVyX2dldHRpbWVcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1ODo0MDlcdDMyXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU5LTQxMFx0MzJcdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxuLS1cbmFyY2gvdW0vb3MtTGludXgvdGltZS5jPTYxPWludCBvc190aW1lcl9zZXRfaW50ZXJ2YWwoaW50IGNwdSwgdW5zaWduZWQgbG9uZyBsb25nIG5zZWNzKVxuLS1cbmFyY2gvdW0vb3MtTGludXgvdGltZS5jLTcwLVxuYXJjaC91bS9vcy1MaW51eC90aW1lLmM6NzE6XHRpZiAodGltZXJfc2V0dGltZShldmVudF9oaWdoX3Jlc190aW1lcltjcHVdLCAwLCBcdTAwMjZpdHMsIE5VTEwpID09IC0xKVxuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtNzItXHRcdHJldHVybiAtZXJybm87XG4tLVxuYXJjaC91bS9vcy1MaW51eC90aW1lLmM9Nzc9aW50IG9zX3RpbWVyX29uZV9zaG90KGludCBjcHUsIHVuc2lnbmVkIGxvbmcgbG9uZyBuc2Vjcylcbi0tXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYy04Ni1cbmFyY2gvdW0vb3MtTGludXgvdGltZS5jOjg3Olx0dGltZXJfc2V0dGltZShldmVudF9oaWdoX3Jlc190aW1lcltjcHVdLCAwLCBcdTAwMjZpdHMsIE5VTEwpO1xuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtODgtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYz05NT12b2lkIG9zX3RpbWVyX2Rpc2FibGUoaW50IGNwdSlcbi0tXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYy05OS1cdG1lbXNldChcdTAwMjZpdHMsIDAsIHNpemVvZihzdHJ1Y3QgaXRpbWVyc3BlYykpO1xuYXJjaC91bS9vcy1MaW51eC90aW1lLmM6MTAwOlx0dGltZXJfc2V0dGltZShldmVudF9oaWdoX3Jlc190aW1lcltjcHVdLCAwLCBcdTAwMjZpdHMsIE5VTEwpO1xuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtMTAxLX1cbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzQtMjU5XHRpMzg2XHR0aW1lcl9jcmVhdGVcdFx0c3lzX3RpbWVyX2NyZWF0ZVx0XHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6Mjc1OjI2MFx0aTM4Nlx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzYtMjYxXHRpMzg2XHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTctNDA4XHRpMzg2XHR0aW1lcl9nZXR0aW1lNjRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQxODo0MDlcdGkzODZcdHRpbWVyX3NldHRpbWU2NFx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDE5LTQxMFx0aTM4Nlx0dGltZXJmZF9nZXR0aW1lNjRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0yMzQtMjIyXHQ2NFx0dGltZXJfY3JlYXRlXHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjIzNToyMjNcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMjM2LTIyNFx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3MC0yNDlcdGNvbW1vblx0dGltZXJfZGVsZXRlXHRcdFx0c3lzX3RpbWVyX2RlbGV0ZVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI3MToyNTBcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzItMjUxXHRjb21tb25cdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM4Mi00MDhcdGNvbW1vblx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozODM6NDA5XHRjb21tb25cdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzg0LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuZHJpdmVycy9wdHAvcHRwX25ldGMuYz02OTU9c3RhdGljIGludCBuZXRjX3RpbWVyX2dldHRpbWV4NjQoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03MTUtXG5kcml2ZXJzL3B0cC9wdHBfbmV0Yy5jOjcxNjpzdGF0aWMgaW50IG5ldGNfdGltZXJfc2V0dGltZTY0KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03MTctXHRcdFx0XHRjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4tLVxuZHJpdmVycy9wdHAvcHRwX25ldGMuYz03MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBuZXRjX3RpbWVyX3B0cF9jYXBzID0ge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9uZXRjLmMtNzQ5LVx0LmdldHRpbWV4NjRcdD0gbmV0Y190aW1lcl9nZXR0aW1leDY0LFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYzo3NTA6XHQuc2V0dGltZTY0XHQ9IG5ldGNfdGltZXJfc2V0dGltZTY0LFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03NTEtXHQuZW5hYmxlXHRcdD0gbmV0Y190aW1lcl9lbmFibGUsXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oPTYxOD1hc21saW5rYWdlIGxvbmcgc3lzX3RpbWVyX2dldG92ZXJydW4odGltZXJfdCB0aW1lcl9pZCk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6NjE5OmFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyX2lkLCBpbnQgZmxhZ3MsXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNjIwLVx0XHRcdFx0Y29uc3Qgc3RydWN0IF9fa2VybmVsX2l0aW1lcnNwZWMgX191c2VyICpuZXdfc2V0dGluZyxcbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9NjMyPWFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfZ2V0dGltZTMyKHRpbWVyX3QgdGltZXJfaWQsXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNjMzLVx0XHRcdFx0IHN0cnVjdCBvbGRfaXRpbWVyc3BlYzMyIF9fdXNlciAqc2V0dGluZyk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6NjM0OmFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfc2V0dGltZTMyKHRpbWVyX3QgdGltZXJfaWQsIGludCBmbGFncyxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC02MzUtXHRcdFx0XHRcdCBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMzMiBfX3VzZXIgKm5ldyxcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9MzA1PV9fU1lTQ0FMTChfX05SX3RpbWVyX2dldG92ZXJydW4sIHN5c190aW1lcl9nZXRvdmVycnVuKVxuLS1cbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC0zMDctI2lmIGRlZmluZWQoX19BUkNIX1dBTlRfVElNRTMyX1NZU0NBTExTKSB8fCBfX0JJVFNfUEVSX0xPTkcgIT0gMzJcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDozMDg6I2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWUgMTEwXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6MzA5Ol9fU0NfMzI2NChfX05SX3RpbWVyX3NldHRpbWUsIHN5c190aW1lcl9zZXR0aW1lMzIsIHN5c190aW1lcl9zZXR0aW1lKVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTMxMC0jZW5kaWZcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9NzI2PV9fU1lTQ0FMTChfX05SX3RpbWVyX2dldHRpbWU2NCwgc3lzX3RpbWVyX2dldHRpbWUpXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzI3OiNkZWZpbmUgX19OUl90aW1lcl9zZXR0aW1lNjQgNDA5XG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzI4Ol9fU1lTQ0FMTChfX05SX3RpbWVyX3NldHRpbWU2NCwgc3lzX3RpbWVyX3NldHRpbWUpXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNzI5LSNkZWZpbmUgX19OUl90aW1lcmZkX2dldHRpbWU2NCA0MTBcbi0tXG5pbml0L0tjb25maWc9MTc2MT1jb25maWcgUE9TSVhfVElNRVJTXG4tLVxuaW5pdC9LY29uZmlnLTE3NzAtXHQgIGF2YWlsYWJsZTogdGltZXJfY3JlYXRlLCB0aW1lcl9nZXR0aW1lOiB0aW1lcl9nZXRvdmVycnVuLFxuaW5pdC9LY29uZmlnOjE3NzE6XHQgIHRpbWVyX3NldHRpbWUsIHRpbWVyX2RlbGV0ZSwgY2xvY2tfYWRqdGltZSwgZ2V0aXRpbWVyLFxuaW5pdC9LY29uZmlnLTE3NzItXHQgIHNldGl0aW1lciwgYWxhcm0uIEZ1cnRoZXJtb3JlLCB0aGUgY2xvY2tfc2V0dGltZSwgY2xvY2tfZ2V0dGltZSxcbi0tXG5rZXJuZWwvc3lzX25pLmM9MjA5PUNPTkRfU1lTQ0FMTCh0aW1lcl9nZXRvdmVycnVuKTtcbmtlcm5lbC9zeXNfbmkuYzoyMTA6Q09ORF9TWVNDQUxMKHRpbWVyX3NldHRpbWUpO1xua2VybmVsL3N5c19uaS5jLTIxMS1DT05EX1NZU0NBTEwodGltZXJfZGVsZXRlKTtcbi0tXG5rZXJuZWwvc3lzX25pLmM9MzM5PUNPTkRfU1lTQ0FMTF9DT01QQVQocnRfc2lndGltZWR3YWl0X3RpbWUzMik7XG5rZXJuZWwvc3lzX25pLmM6MzQwOkNPTkRfU1lTQ0FMTCh0aW1lcl9zZXR0aW1lMzIpO1xua2VybmVsL3N5c19uaS5jLTM0MS1DT05EX1NZU0NBTEwodGltZXJfZ2V0dGltZTMyKTtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9Njk4PXN0YXRpYyB2b2lkIF9fcG9zaXhfY3B1X3RpbWVyX2dldChzdHJ1Y3Qga19pdGltZXIgKnRpbWVyLCBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICppdHAsIHU2NCBub3cpO1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MDAtLypcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo3MDE6ICogR3V0cyBvZiBzeXNfdGltZXJfc2V0dGltZSBmb3IgQ1BVIHRpbWVycy5cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MDItICogVGhpcyBpcyBjYWxsZWQgd2l0aCB0aGUgdGltZXIgbG9ja2VkIGFuZCBpbnRlcnJ1cHRzIGRpc2FibGVkLlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jPTg4Nz1pbnQgY29tbW9uX3RpbWVyX3NldChzdHJ1Y3Qga19pdGltZXIgKnRpbXIsIGludCBmbGFncyxcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05MjYtXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5Mjc6c3RhdGljIGludCBkb190aW1lcl9zZXR0aW1lKHRpbWVyX3QgdGltZXJfaWQsIGludCB0bXJfZmxhZ3MsIHN0cnVjdCBpdGltZXJzcGVjNjQgKm5ld19zcGVjNjQsXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05MjgtXHRcdFx0ICAgIHN0cnVjdCBpdGltZXJzcGVjNjQgKm9sZF9zcGVjNjQpXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTYxLS8qIFNldCBhIFBPU0lYLjFiIGludGVydmFsIHRpbWVyICovXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5NjI6U1lTQ0FMTF9ERUZJTkU0KHRpbWVyX3NldHRpbWUsIHRpbWVyX3QsIHRpbWVyX2lkLCBpbnQsIGZsYWdzLFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTYzLVx0XHRjb25zdCBzdHJ1Y3QgX19rZXJuZWxfaXRpbWVyc3BlYyBfX3VzZXIgKiwgbmV3X3NldHRpbmcsXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTc1LVx0cnRuID0gb2xkX3NldHRpbmcgPyBcdTAwMjZvbGRfc3BlYyA6IE5VTEw7XG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5NzY6XHRlcnJvciA9IGRvX3RpbWVyX3NldHRpbWUodGltZXJfaWQsIGZsYWdzLCBcdTAwMjZuZXdfc3BlYywgcnRuKTtcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk3Ny1cdGlmICghZXJyb3IgXHUwMDI2XHUwMDI2IG9sZF9zZXR0aW5nKSB7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTg0LSNpZmRlZiBDT05GSUdfQ09NUEFUXzMyQklUX1RJTUVcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjk4NTpTWVNDQUxMX0RFRklORTQodGltZXJfc2V0dGltZTMyLCB0aW1lcl90LCB0aW1lcl9pZCwgaW50LCBmbGFncyxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk4Ni1cdFx0c3RydWN0IG9sZF9pdGltZXJzcGVjMzIgX191c2VyICosIG5ldyxcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05OTctXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5OTg6XHRlcnJvciA9IGRvX3RpbWVyX3NldHRpbWUodGltZXJfaWQsIGZsYWdzLCBcdTAwMjZuZXdfc3BlYywgcnRuKTtcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk5OS1cdGlmICghZXJyb3IgXHUwMDI2XHUwMDI2IG9sZCkge1xuLS1cbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaD0xOD1jYXQgXHUwMDNjXHUwMDNjIEVPRlxuLS1cbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMDAtI2RlZmluZSBfX0lHTk9SRV90aW1lcl9nZXR0aW1lNjRcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaDoxMDE6I2RlZmluZSBfX0lHTk9SRV90aW1lcl9zZXR0aW1lNjRcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMDItI2RlZmluZSBfX0lHTk9SRV90aW1lcmZkX2dldHRpbWU2NFxuLS1cbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMzMtI2RlZmluZSBfX0lHTk9SRV90aW1lcl9nZXR0aW1lXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g6MTM0OiNkZWZpbmUgX19JR05PUkVfdGltZXJfc2V0dGltZVxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTEzNS0jZGVmaW5lIF9fSUdOT1JFX3RpbWVyZmRfZ2V0dGltZVxuLS1cbnNjcmlwdHMvc3lzY2FsbC50YmwtMTM5LTEwOVx0Y29tbW9uXHR0aW1lcl9nZXRvdmVycnVuXHRcdHN5c190aW1lcl9nZXRvdmVycnVuXG5zY3JpcHRzL3N5c2NhbGwudGJsOjE0MDoxMTBcdHRpbWUzMlx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbnNjcmlwdHMvc3lzY2FsbC50Ymw6MTQxOjExMFx0NjRcdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxuc2NyaXB0cy9zeXNjYWxsLnRibC0xNDItMTExXHRjb21tb25cdHRpbWVyX2RlbGV0ZVx0XHRcdHN5c190aW1lcl9kZWxldGVcbi0tXG5zY3JpcHRzL3N5c2NhbGwudGJsLTM1Mi00MDhcdDMyXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVxuc2NyaXB0cy9zeXNjYWxsLnRibDozNTM6NDA5XHQzMlx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzU0LTQxMFx0MzJcdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg9MTI0PXRpbWVfdCB0aW1lKHRpbWVfdCAqdHB0cilcbi0tXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMTM5LSAqIGludCB0aW1lcl9nZXR0aW1lKHRpbWVyX3QgdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKmN1cnJfdmFsdWUpO1xudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE0MDogKiBpbnQgdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyaWQsIGludCBmbGFncywgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKm5ld192YWx1ZSwgc3RydWN0IGl0aW1lcnNwZWMgKm9sZF92YWx1ZSk7XG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMTQxLSAqL1xuLS1cbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaD0xODU9c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MTg2OmludCBfc3lzX3RpbWVyX3NldHRpbWUodGltZXJfdCB0aW1lcmlkLCBpbnQgZmxhZ3MsXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMTg3LVx0XHQgICAgICAgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKm5ld192YWx1ZSwgc3RydWN0IGl0aW1lcnNwZWMgKm9sZF92YWx1ZSlcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xODgte1xudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE4OTojaWYgZGVmaW5lZChfX05SX3RpbWVyX3NldHRpbWU2NClcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xOTAtXHRfX25vbGliY19hc3NlcnRfdGltZTY0X3R5cGUobmV3X3ZhbHVlLVx1MDAzZWl0X3ZhbHVlLnR2X3NlYyk7XG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MTkxOlx0cmV0dXJuIF9fbm9saWJjX3N5c2NhbGw0KF9fTlJfdGltZXJfc2V0dGltZTY0LCB0aW1lcmlkLCBmbGFncywgbmV3X3ZhbHVlLCBvbGRfdmFsdWUpO1xudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE5Mi0jZWxzZVxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE5My1cdF9fbm9saWJjX2Fzc2VydF9uYXRpdmVfdGltZTY0KCk7XG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MTk0Olx0cmV0dXJuIF9fbm9saWJjX3N5c2NhbGw0KF9fTlJfdGltZXJfc2V0dGltZSwgdGltZXJpZCwgZmxhZ3MsIG5ld192YWx1ZSwgb2xkX3ZhbHVlKTtcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xOTUtI2VuZGlmXG4tLVxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oPTE5OD1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSlcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaDoxOTk6aW50IHRpbWVyX3NldHRpbWUodGltZXJfdCB0aW1lcmlkLCBpbnQgZmxhZ3MsXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMjAwLVx0XHQgIGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpuZXdfdmFsdWUsIHN0cnVjdCBpdGltZXJzcGVjICpvbGRfdmFsdWUpXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMjAxLXtcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaDoyMDI6XHRyZXR1cm4gX19zeXNyZXQoX3N5c190aW1lcl9zZXR0aW1lKHRpbWVyaWQsIGZsYWdzLCBuZXdfdmFsdWUsIG9sZF92YWx1ZSkpO1xudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTIwMy19XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTMwNT1fX1NZU0NBTEwoX19OUl90aW1lcl9nZXRvdmVycnVuLCBzeXNfdGltZXJfZ2V0b3ZlcnJ1bilcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtMzA3LSNpZiBkZWZpbmVkKF9fQVJDSF9XQU5UX1RJTUUzMl9TWVNDQUxMUykgfHwgX19CSVRTX1BFUl9MT05HICE9IDMyXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6MzA4OiNkZWZpbmUgX19OUl90aW1lcl9zZXR0aW1lIDExMFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjMwOTpfX1NDXzMyNjQoX19OUl90aW1lcl9zZXR0aW1lLCBzeXNfdGltZXJfc2V0dGltZTMyLCBzeXNfdGltZXJfc2V0dGltZSlcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC0zMTAtI2VuZGlmXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTcyNj1fX1NZU0NBTEwoX19OUl90aW1lcl9nZXR0aW1lNjQsIHN5c190aW1lcl9nZXR0aW1lKVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyNzojZGVmaW5lIF9fTlJfdGltZXJfc2V0dGltZTY0IDQwOVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyODpfX1NZU0NBTEwoX19OUl90aW1lcl9zZXR0aW1lNjQsIHN5c190aW1lcl9zZXR0aW1lKVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTcyOS0jZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lNjQgNDEwXG4tLVxudG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM0NS00MTRcdGNvbW1vblx0dGltZXJfY3JlYXRlXHRcdFx0c3lzX3RpbWVyX2NyZWF0ZVxudG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM0Njo0MTVcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ3LTQxNlx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3NS0yNTdcdGNvbW1vblx0dGltZXJfY3JlYXRlXHRcdHN5c190aW1lcl9jcmVhdGVcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mjc2OjI1OFx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjc3LTI1OVx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNi00MDhcdGNvbW1vblx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDI3OjQwOVx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MjgtNDEwXHRjb21tb25cdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtMjcyLTI1N1x0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0c3lzX3RpbWVyX2NyZWF0ZVx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDoyNzM6MjU4XHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcdGNvbW1vblx0dGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQyMy00MDhcdGNvbW1vblx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MjQ6NDA5XHRjb21tb25cdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDI1LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTIyNy0yMTZcdG42NFx0dGltZXJfY3JlYXRlXHRcdFx0c3lzX3RpbWVyX2NyZWF0ZVxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsOjIyODoyMTdcdG42NFx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMjI5LTIxOFx0bjY0XHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3OS0yNTBcdGNvbW1vblx0dGltZXJfY3JlYXRlXHRcdHN5c190aW1lcl9jcmVhdGVcdFx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjgwOjI1MVx0MzJcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyODE6MjUxXHQ2NFx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yODItMjUyXHQzMlx0dGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTAtNDA4XHQzMlx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcdFx0c3lzX3RpbWVyX2dldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDExOjQwOVx0MzJcdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMi00MTBcdDMyXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMDYtMjQwXHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcdFx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwNzoyNDFcdDMyXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzA4OjI0MVx0NjRcdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzA5OjI0MVx0c3B1XHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTMxMC0yNDJcdDMyXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWUzMlxuLS1cbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMi00MDhcdDMyXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTAzOjQwOVx0MzJcdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MDQtNDEwXHQzMlx0dGltZXJmZF9nZXR0aW1lNjRcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEwLTI1NFx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyMTE6MjU1XHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEyLTI1Nlx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjY5LTI1OVx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjcwOjI2MFx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3MS0yNjFcdGNvbW1vblx0dGltZXJfZ2V0dGltZVx0XHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDE1LTQwOFx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxNjo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDEwXHRjb21tb25cdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzE4LTI2MVx0Y29tbW9uXHRzY2hlZF9zZXRhZmZpbml0eVx0c3lzX3NjaGVkX3NldGFmZmluaXR5XHRcdGNvbXBhdF9zeXNfc2NoZWRfc2V0YWZmaW5pdHlcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozMTk6MjYyXHQzMlx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzIwOjI2Mlx0NjRcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMjEtMjYzXHQzMlx0dGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Ny00MDhcdDMyXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1ODo0MDlcdDMyXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1OS00MTBcdDMyXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcdGkzODZcdHRpbWVyX2NyZWF0ZVx0XHRzeXNfdGltZXJfY3JlYXRlXHRcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjI3NToyNjBcdGkzODZcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzYtMjYxXHRpMzg2XHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxNy00MDhcdGkzODZcdHRpbWVyX2dldHRpbWU2NFx0XHRzeXNfdGltZXJfZ2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MTg6NDA5XHRpMzg2XHR0aW1lcl9zZXR0aW1lNjRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDE5LTQxMFx0aTM4Nlx0dGltZXJmZF9nZXR0aW1lNjRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTIzNC0yMjJcdDY0XHR0aW1lcl9jcmVhdGVcdFx0c3lzX3RpbWVyX2NyZWF0ZVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDoyMzU6MjIzXHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMjM2LTIyNFx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lXG4tLVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzAtMjQ5XHRjb21tb25cdHRpbWVyX2RlbGV0ZVx0XHRcdHN5c190aW1lcl9kZWxldGVcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjcxOjI1MFx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzItMjUxXHRjb21tb25cdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODItNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4Mzo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzg0LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxudG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYz02Nzc5PXZvaWQgbXNyX3N1bV9yZWNvcmQodm9pZClcbi0tXG50b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jLTY4MTItXG50b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jOjY4MTM6XHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcdTAwMjZpdHMsIE5VTEwpID09IC0xKSB7XG50b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jLTY4MTQtXHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7Q2FuIG5vdCBzZXQgdGltZXIuXFxuXCYjMzQ7KTtcbi0tXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTEzOS0xMDlcdGNvbW1vblx0dGltZXJfZ2V0b3ZlcnJ1blx0XHRzeXNfdGltZXJfZ2V0b3ZlcnJ1blxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDoxNDA6MTEwXHR0aW1lMzJcdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjE0MToxMTBcdDY0XHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMTQyLTExMVx0Y29tbW9uXHR0aW1lcl9kZWxldGVcdFx0XHRzeXNfdGltZXJfZGVsZXRlXG4tLVxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0zNTItNDA4XHQzMlx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6MzUzOjQwOVx0MzJcdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTM1NC00MTBcdDMyXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYz0xOTQ9c3RhdGljIHZvaWQgd2F0Y2hkb2dfdGltZXJfZnVuYyh1bmlvbiBzaWd2YWwgc2lndmFsKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjEyLVx0XHRlbnYud2F0Y2hkb2dfc3RhdGUgPSBXRF9LSUxMO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYzoyMTM6XHRcdGVyciA9IHRpbWVyX3NldHRpbWUoZW52LndhdGNoZG9nLCAwLCBcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjE0LVx0XHRpZiAoZXJyKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmM9MjI2PXN0YXRpYyB2b2lkIHdhdGNoZG9nX3N0YXJ0KHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYy0yMzktXHR9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jOjI0MDpcdGVyciA9IHRpbWVyX3NldHRpbWUoZW52LndhdGNoZG9nLCAwLCBcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjQxLVx0aWYgKGVycilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jPTI0NT1zdGF0aWMgdm9pZCB3YXRjaGRvZ19zdG9wKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYy0yNTAtXHRlbnYud2F0Y2hkb2dfc3RhdGUgPSBXRF9OT1RJRlk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jOjI1MTpcdGVyciA9IHRpbWVyX3NldHRpbWUoZW52LndhdGNoZG9nLCAwLCBcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjUyLVx0aWYgKGVycilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9ub2xpYmMvbm9saWJjLXRlc3QuYz0xMDkzPWludCB0ZXN0X3RpbWVyKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbm9saWJjL25vbGliYy10ZXN0LmMtMTEwOC1cdH07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9ub2xpYmMvbm9saWJjLXRlc3QuYzoxMTA5Olx0cmV0ID0gdGltZXJfc2V0dGltZSh0aW1lciwgMCwgXHUwMDI2dGltZXJzcGVjLCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25vbGliYy9ub2xpYmMtdGVzdC5jLTExMTAtXHRpZiAocmV0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy90aW1lci5jPTE4PXN0YXRpYyBpbnQgcnVuX3Rlc3QoaW50IGNsb2NraWQsIHN0cnVjdCB0aW1lc3BlYyBub3cpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZW5zL3RpbWVyLmMtNTEtXHRcdFx0ZmxhZ3MgfD0gVElNRVJfQUJTVElNRTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy90aW1lci5jOjUyOlx0XHRpZiAodGltZXJfc2V0dGltZShmZCwgZmxhZ3MsIFx1MDAyNm5ld192YWx1ZSwgTlVMTCkgPT0gLTEpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lbnMvdGltZXIuYy01My1cdFx0XHRyZXR1cm4gcHJfcGVycm9yKFwmIzM0O3RpbWVyZmRfc2V0dGltZVwmIzM0Oyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2FsYXJtdGltZXItc3VzcGVuZC5jPTEwNT1pbnQgbWFpbih2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYy0xNDQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvYWxhcm10aW1lci1zdXNwZW5kLmM6MTQ1Olx0XHR0aW1lcl9zZXR0aW1lKHRtMSwgVElNRVJfQUJTVElNRSwgXHUwMDI2aXRzMSwgXHUwMDI2aXRzMik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvYWxhcm10aW1lci1zdXNwZW5kLmMtMTQ2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9sZWFwLWEtZGF5LmM9MTc1PWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbGVhcC1hLWRheS5jLTMwMy1cdFx0aXRzMS5pdF9pbnRlcnZhbC50dl9uc2VjID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9sZWFwLWEtZGF5LmM6MzA0Olx0XHR0aW1lcl9zZXR0aW1lKHRtMSwgVElNRVJfQUJTVElNRSwgXHUwMDI2aXRzMSwgTlVMTCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbGVhcC1hLWRheS5jLTMwNS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbmFub3NsZWVwLmM9MTI0PXN0YXRpYyBpbnQgbmFub3NsZWVwX3Rlc3RfcmVtYWluaW5nKGludCBjbG9ja2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYy0xNDEtXHRpdGltZXIuaXRfdmFsdWUudHZfbnNlYyA9IE5TRUNfUEVSX1NFQyAvIDQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbmFub3NsZWVwLmM6MTQyOlx0cmV0ID0gdGltZXJfc2V0dGltZSh0aW1lciwgMCwgXHUwMDI2aXRpbWVyLCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYy0xNDMtXHRpZiAocmV0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz0xNDQ9c3RhdGljIHZvaWQgY2hlY2tfdGltZXJfY3JlYXRlKGludCB3aGljaCwgY29uc3QgY2hhciAqbmFtZSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMTYzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjE2NDpcdGlmICh0aW1lcl9zZXR0aW1lKGlkLCAwLCBcdTAwMjZ2YWwsIE5VTEwpIFx1MDAzYyAwKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjE2NTpcdFx0ZmF0YWxfZXJyb3IobmFtZSwgXCYjMzQ7dGltZXJfc2V0dGltZSgpXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0xNjYtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jPTE4Nj1zdGF0aWMgdm9pZCAqY3RkX3RocmVhZF9mdW5jKHZvaWQgKmFyZylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMjAxLVx0XHRmYXRhbF9lcnJvcihOVUxMLCBcJiMzNDt0aW1lcl9jcmVhdGUoKVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6MjAyOlx0aWYgKHRpbWVyX3NldHRpbWUoaWQsIDAsIFx1MDAyNnZhbCwgTlVMTCkpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6MjAzOlx0XHRmYXRhbF9lcnJvcihOVUxMLCBcJiMzNDt0aW1lcl9zZXR0aW1lKClcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTIwNC1cdHdoaWxlIChjdGRfY291bnQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2ICFjdGRfZmFpbGVkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz0yNjg9c3RhdGljIHZvaWQgY2hlY2tfc2lnX2lnbihpbnQgdGhyZWFkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zMTMtXHRpdHMuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IDEwMDAwMDAwMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozMTQ6XHR0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFx1MDAyNml0cywgTlVMTCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzE1LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz0zNTQ9c3RhdGljIHZvaWQgY2hlY2tfcmVhcm0odm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzg2LVx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAxMDAwMDAwMDA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6Mzg3Olx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXHUwMDI2aXRzLCBOVUxMKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozODg6XHRcdGZhdGFsX2Vycm9yKE5VTEwsIFwmIzM0O3RpbWVyX3NldHRpbWUoKVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzg5LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zOTYtXHRpdHMuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IDA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6Mzk3Olx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXHUwMDI2aXRzLCBOVUxMKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozOTg6XHRcdGZhdGFsX2Vycm9yKE5VTEwsIFwmIzM0O3RpbWVyX3NldHRpbWUoKVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzk5LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz00MTA9c3RhdGljIHZvaWQgY2hlY2tfZGVsZXRlKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTQ0Mi1cdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjQ0MzpcdGlmICh0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFx1MDAyNml0cywgTlVMTCkpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6NDQ0Olx0XHRmYXRhbF9lcnJvcihOVUxMLCBcJiMzNDt0aW1lcl9zZXR0aW1lKClcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTQ0NS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM9NDU4PXN0YXRpYyB2b2lkIGNoZWNrX3NpZ2V2X25vbmUoaW50IHdoaWNoLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy00NzUtXHRpdHMuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IDEwMDAwMDAwMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzo0NzY6XHR0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFx1MDAyNml0cywgTlVMTCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNDc3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz00OTY9c3RhdGljIHZvaWQgY2hlY2tfZ2V0dGltZShpbnQgd2hpY2gsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTUyMi1cdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjUyMzpcdGlmICh0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFx1MDAyNml0cywgTlVMTCkpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6NTI0Olx0XHRmYXRhbF9lcnJvcihuYW1lLCBcJiMzNDt0aW1lcl9zZXR0aW1lKClcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTUyNS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM9NTQ5PXN0YXRpYyB2b2lkIGNoZWNrX292ZXJydW4oaW50IHdoaWNoLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy01ODItXHRpdHMuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IDEwMDAwMDAwMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzo1ODM6XHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcdTAwMjZpdHMsIE5VTEwpKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjU4NDpcdFx0ZmF0YWxfZXJyb3IobmFtZSwgXCYjMzQ7dGltZXJfc2V0dGltZSgpXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy01ODUtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYz0xMTE9aW50IHNldHVwX3RpbWVyKGludCBjbG9ja19pZCwgaW50IGZsYWdzLCBpbnQgaW50ZXJ2YWwsIHRpbWVyX3QgKnRtMSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvc2V0LXRpbWVyLWxhdC5jLTE1MS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmM6MTUyOlx0ZXJyID0gdGltZXJfc2V0dGltZSgqdG0xLCBmbGFncywgXHUwMDI2aXRzMSwgXHUwMDI2aXRzMik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvc2V0LXRpbWVyLWxhdC5jLTE1My1cdGlmIChlcnIpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmM6MTU0Olx0XHRwcmludGYoXCYjMzQ7JXMgLSB0aW1lcl9zZXR0aW1lKCkgZmFpbGVkXFxuXCYjMzQ7LCBjbG9ja3N0cmluZyhjbG9ja19pZCkpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYy0xNTUtXHRcdHJldHVybiAtMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0NTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCdWcmIzM5O3MgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMgYnVnLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYHN5c190aW1lcl9zZXR0aW1lYCBsb29rZWQgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGEgcG90ZW50aWFsIGZvY3VzIHN5bWJvbCwgYnV0IHRoZW4gSSByZW1lbWJlcmVkIFN5emthbGxlciBpcyBhbHJlYWR5IGhpdHRpbmcgc3lzY2FsbHMuIFNvLCBzY3JhdGNoIHRoYXQuIEJ1dCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWRgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGZyb20gYGJlZ2luX25ld19leGVjYC4gQW5kLCB0aGUgYnVnIGlzIGFib3V0IFBPU0lYIENQVSB0aW1lcnMgYW5kIGBleGVjdmVgLiBBaGEhIGBiZWdpbl9uZXdfZXhlY2AgaXMgbG9va2luZyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBob25lIGluIG9uLgoKV2FpdCBhIHNlY29uZCwgYGJlZ2luX25ld19leGVjYCBhY3R1YWxseSBjYWxscyBpbnRvIGBleGVjX2JpbnBybWAgd2hpY2ggaW4gdHVybiBjYWxscyBpbnRvIGBicHJtX2V4ZWN2ZWAuIElzIGBiZWdpbl9uZXdfZXhlY2AgKnN0aWxsKiBhIGdvb2QgZm9jdXM/IFllcywgaXQgaXMsIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGhlYXJ0IG9mIGBleGVjdmVgLCB0aGUgdHJhbnNpdGlvbi4gQW5kIG5vdywgSSB0aGluayBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBpcyBhbm90aGVyIGNydWNpYWwgc3BvdC4gSXQmIzM5O3MgY2FsbGVkIGluc2lkZSBgZGVfdGhyZWFkYCwgYWZ0ZXIgYWxsLiBBcmUgdGhlcmUgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIEkmIzM5O20gbWlzc2luZz8gVGhlcmUgYXJlIHR3bywgYGV4Y2hhbmdlX3RpZHNgIGFuZCBgdGltZXJfbG9ja19zaWdoYW5kYCwgYnV0IHRoZXkgYXJlIHN0YXRpYywgc28gbWF5YmUgbm90LgoKSSBzaG91bGQgY2hlY2sgdGhlIGBDT05GSUdfUE9TSVhfVElNRVJTYCBvcHRpb24sIHRvIGNvbmZpcm0gdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFjdGl2ZS4gTGV0JiMzOTtzIHNlZSBpZiBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCBJJiMzOTtsbCBsb29rIHRoYXQgdXAgaW4gYGluaXQvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzYwOlx0XG4xNzYxOlx0Y29uZmlnIFBPU0lYX1RJTUVSU1xuMTc2MjpcdFx0Ym9vbCBcJiMzNDtQb3NpeCBDbG9ja3MgXHUwMDI2IHRpbWVyc1wmIzM0OyBpZiBFWFBFUlRcbjE3NjM6XHRcdGRlZmF1bHQgeVxuMTc2NDpcdFx0aGVscFxuMTc2NTpcdFx0ICBUaGlzIGluY2x1ZGVzIG5hdGl2ZSBzdXBwb3J0IGZvciBQT1NJWCB0aW1lcnMgdG8gdGhlIGtlcm5lbC5cbjE3NjY6XHRcdCAgU29tZSBlbWJlZGRlZCBzeXN0ZW1zIGhhdmUgbm8gdXNlIGZvciB0aGVtIGFuZCB0aGVyZWZvcmUgdGhleVxuMTc2NzpcdFx0ICBjYW4gYmUgY29uZmlndXJlZCBvdXQgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBrZXJuZWwgaW1hZ2UuXG4xNzY4Olx0XG4xNzY5Olx0XHQgIFdoZW4gdGhpcyBvcHRpb24gaXMgZGlzYWJsZWQsIHRoZSBmb2xsb3dpbmcgc3lzY2FsbHMgd29uJiMzOTt0IGJlXG4xNzcwOlx0XHQgIGF2YWlsYWJsZTogdGltZXJfY3JlYXRlLCB0aW1lcl9nZXR0aW1lOiB0aW1lcl9nZXRvdmVycnVuLFxuMTc3MTpcdFx0ICB0aW1lcl9zZXR0aW1lLCB0aW1lcl9kZWxldGUsIGNsb2NrX2FkanRpbWUsIGdldGl0aW1lcixcbjE3NzI6XHRcdCAgc2V0aXRpbWVyLCBhbGFybS4gRnVydGhlcm1vcmUsIHRoZSBjbG9ja19zZXR0aW1lLCBjbG9ja19nZXR0aW1lLFxuMTc3MzpcdFx0ICBjbG9ja19nZXRyZXMgYW5kIGNsb2NrX25hbm9zbGVlcCBzeXNjYWxscyB3aWxsIGJlIGxpbWl0ZWQgdG9cbjE3NzQ6XHRcdCAgQ0xPQ0tfUkVBTFRJTUUsIENMT0NLX01PTk9UT05JQyBhbmQgQ0xPQ0tfQk9PVFRJTUUgb25seS5cbjE3NzU6XHRcbjE3NzY6XHRcdCAgSWYgdW5zdXJlIHNheSB5LlxuMTc3NzpcdFxuMTc3ODpcdGNvbmZpZyBQUklOVEtcbjE3Nzk6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM5MAoJCQkJCQkJb3V0cHV0OiAxNTYKCQkJCQkJCXRob3VnaHRzOiAzMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBPU0lYIFRpbWVycyBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgYENPTkZJR19QT1NJWF9USU1FUlNgIG9wdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgZW5vdWdoIHRoYXQgd2UgbmVlZCB0byBleHBsaWNpdGx5IGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgLiBMZXQmIzM5O3MgZ2V0IHRoaXMgb3JnYW5pemVkOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHksIHRoaXMgcGF0Y2ggaXMgYSBnb29kIGNhbmRpZGF0ZS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBiZWdpbl9uZXdfZXhlY2AgYW5kIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLgoqICAgKipFbmFibGVDb25maWdzOioqIEp1c3QgYFBPU0lYX1RJTUVSU2AuIE5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuCgpUaGUgY29yZSBvZiBpdCBpcyB0aGlzOiBUaGUgcGF0Y2ggY29ycmVjdHMgYSBmbGF3IGluIGBkZV90aHJlYWRgLiAgU3BlY2lmaWNhbGx5LCBQT1NJWCBDUFUgdGltZXJzIHdlcmUgZ2V0dGluZyBtaXNzZWQgZHVyaW5nIHRoZSBQSUQgaGFuZG9mZiB3aXRoaW4gYGV4Y2hhbmdlX3RpZHMoKWAgd2hpY2ggd291bGQgbGVhZCB0byBhIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggc2ltcGx5IGFkZHMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2l0aGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgaGFwcGVuaW5nIGR1cmluZyB0aGUgYGV4ZWN2ZWAgcGF0aCwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBiZWNhdXNlIGFueSBpc3N1ZSBpbiB0aGUgYGV4ZWN2ZWAgcGF0aCBoYXMgd2lkZXNwcmVhZCBpbXBhY3QuCgpJIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhhdCBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCB3YXMgYWN0dWFsbHkgZXhwb3J0ZWQsIGFuZCBpdCBpcywgaXQmIzM5O3MgZ2xvYmFsIHdpdGhpbiBga2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jYC4gU2ltaWxhcmx5LCBgYmVnaW5fbmV3X2V4ZWNgIGlzIGdsb2JhbCBpbiBgZnMvZXhlYy5jYC4KCkkgZG91YmxlIGNoZWNrZWQgdGhhdCBgUE9TSVhfVElNRVJTYCB3YXMgdGhlIG9ubHkgcmVxdWlyZWQgY29uZmlnIOKAkyBjb25maXJtZWQgaXQmIzM5O3MgdXNlZCBpbiBhbiBgI2lmZGVmYCBhbmQgbm90aGluZyBlbHNlIGlzIG5lZWRlZC4gSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQT1NJWF9USU1FUlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7LAogICAgJiMzNDtwb3NpeF9jcHVfdGltZXJzX2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYGRlX3RocmVhZGAgd2hlcmUgUE9TSVggQ1BVIHRpbWVycyBhcmUgbm90IHByb3Blcmx5IGRlcXVldWVkIGJlZm9yZSBgZXhjaGFuZ2VfdGlkcygpYCBoYW5kcyB0aGUgdGhyZWFkJiMzOTtzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggY2FuIGNhdXNlIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggYWRkcyBhIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBpbiBgZGVfdGhyZWFkKClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsIChleGVjdmUgcGF0aCkgYW5kIGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JlZ2luX25ld19leGVjJiMzNDssCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgZGVfdGhyZWFkYCB3aGVyZSBQT1NJWCBDUFUgdGltZXJzIGFyZSBub3QgcHJvcGVybHkgZGVxdWV1ZWQgYmVmb3JlIGBleGNoYW5nZV90aWRzKClgIGhhbmRzIHRoZSB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBjYW4gY2F1c2UgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYC4gVGhlIGZpeCBhZGRzIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwgKGV4ZWN2ZSBwYXRoKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgZHVyaW5nIHRocmVhZCBncm91cCBsZWFkZXJzaGlwIGNoYW5nZXMgKGRlX3RocmVhZCkuIEl0IGRlcXVldWVzIHRoZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYmVmb3JlIHRoZSB0aHJlYWQmIzM5O3MgUElEIGlzIGhhbmRlZCB0byB0aGUgb2xkIGxlYWRlci4gVGhpcyBwcmV2ZW50cyBpc3N1ZXMgd2hlcmUgdGhlIHRpbWVyIHN1YnN5c3RlbSBtaWdodCBmYWlsIHRvIGxvb2sgdXAgdGhlIFBJRCBvciBhY2Nlc3MgZnJlZWQvaW52YWxpZCBzdHJ1Y3R1cmVzLiBUaGUgY2hhbmdlcyBpbnZvbHZlIGxvY2tpbmcgYW5kIHRpbWVyIG1hbmFnZW1lbnQsIHdoaWNoIGFyZSByZWxhdGVkIHRvIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBsb2dpYyBidWdzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzc3ZWMwYmRhYzM2YTQ0NTEyYTAwYzY0ZmY0OTFhNmQ5ZmE5YzM0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDkgMDI6NTQ6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmMKaW5kZXggYzdiOGYyZDYzNjZjNC4uZjgwZjcwZTFjMjZkZSAxMDA2NDQKLS0tIGEvZnMvZXhlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4ZWMuYwpAQCAtMTAwMCw2ICYjNDM7MTAwMCwxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIAkJICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOgogCQkgKi8KIAomIzQzOyNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTCiYjNDM7CQkvKgomIzQzOwkJICogZXhjaGFuZ2VfdGlkcygpIGhhbmRzIHRoaXMgdGhyZWFkJiMzOTtzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwKJiM0MzsJCSAqIHdoaWNoIGlzIHJlYXBlZCByaWdodCBhZnRlci4gVGhlIFBJRCBsb29rdXAgaW4KJiM0MzsJCSAqIHRpbWVyX2xvY2tfc2lnaGFuZCgpIHRoZW4gZmFpbHMgd2hpbGUgdGhlIHBlciB0aHJlYWQgQ1BVCiYjNDM7CQkgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuCiYjNDM7CQkgKi8KJiM0MzsJCXNwaW5fbG9jayhsb2NrKTsKJiM0MzsJCXBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spOwomIzQzOwkJc3Bpbl91bmxvY2sobG9jayk7CiYjNDM7I2VuZGlmCiYjNDM7CiAJCS8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXImIzM5O3MgcGlkLgogCQkgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC4KIAkJICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUyCgkJCQkJCQlvdXRwdXQ6IDE2NQoJCQkJCQkJdGhvdWdodHM6IDI5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBPU0lYIFRpbWVyIEZpeCBpbiBgZnMvZXhlYy5jYCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmcy9leGVjLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkZV90aHJlYWRgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgY29uZGl0aW9uYWwgb24gYENPTkZJR19QT1NJWF9USU1FUlNgIGJlaW5nIGVuYWJsZWQuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCYjMzk7cyBkZWFsaW5nIHdpdGggUE9TSVggdGltZXJzLCB3aGljaCBpcyBhIGtleSBpbmRpY2F0b3Igb2Ygd2hlcmUgdGhpcyBwYXRjaCYjMzk7cyBmb2N1cyBsaWVzLgoKVGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jay1wcm90ZWN0ZWQgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgLiBUaGUgY29tbWVudCBpcyB0aGUgY3J1Y2lhbCBwaWVjZSBoZXJlOiBpdCBoaWdobGlnaHRzIHRoZSBwcm9ibGVtIGJlaW5nIGFkZHJlc3NlZC4gSXQgc2VlbXMgYGV4Y2hhbmdlX3RpZHMoKWAgaXMgdHJhbnNmZXJyaW5nIHRoZSB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBpcyBzdWJzZXF1ZW50bHkgcmVhcGVkLiBUaGUgY3JpdGljYWwgdGltaW5nIGlzc3VlIGlzIHRoYXQgdGhlIFBJRCBsb29rdXAgd2l0aGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgKndoaWxlKiB0aGUgdGhyZWFkJiMzOTtzIENQVSB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCwgbWVhbmluZyB0aGVyZSYjMzk7cyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGEgdGltZXIgbWlnaHQgZmlyZSBhZnRlciB0aGUgdGhyZWFkJiMzOTtzIGRhdGEgaXMgYWxyZWFkeSBmcmVlZC4gVGhhdCBwb2ludHMgdG8gdGhpcyBiZWluZyByZWxhdGVkIHRvIGEgbGlrZWx5IHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYSBsb2NraW5nIGlzc3VlIHJlbGF0ZWQgdG8gdGltaW5nLCBvciBhIHRpbWVyIGZpcmluZyBhZnRlciB0aGUgdGhyZWFkIGhhcyBleGl0ZWQuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdGhyZWFkIHJlYXBpbmcgYW5kIHRpbWVyIGV4ZWN1dGlvbiwgYW5kIHRoZSBwYXRjaCBpcyBhdHRlbXB0aW5nIHRvIGVuc3VyZSB0aGF0IHRoZSB0aW1lcnMgYXJlIGRlcXVldWVkIGJlZm9yZSB0aGUgdGhyZWFkJiMzOTtzIFBJRCBpcyByZWFzc2lnbmVkIGFuZCBpdHMgcmVzb3VyY2VzIGNhbiBiZSBmcmVlZC4gVGhlIGxpa2VseSBzY2VuYXJpbyBpcyB0aGUgdGltZXIgdHJpZXMgdG8gZGVyZWZlcmVuY2UgbWVtb3J5IGFmdGVyIHRoZSB0aHJlYWQgaGFzIGV4aXRlZCwgbGlrZWx5IGNhdXNpbmcgYSBrZXJuZWwgcGFuaWMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhpcyBwYXRjaCBpcyBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHdoaWNoIGlzIGdvb2QuIEtBU0FOLCBLQ1NBTiwgb3IgbG9ja2RlcCB3b3VsZCBoYXZlIHByb2JhYmx5IGNhdWdodCBhbnkgcHJvYmxlbXMsIG9yIGl0IGNvdWxkIGJlIGEgbG9naWMgYnVnIGFuZCBhIHRvb2wgd2FzbiYjMzk7dCBuZWVkZWQgdG8gZml4IGl0LiBXZSBkb24mIzM5O3Qgc2VlIGFueSBuZXcgbWVtb3J5IGJlaW5nIGV4cG9zZWQuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCB0byB2ZXJpZnkgaXQmIzM5O3MganVzdCBkZXF1ZXVpbmcgdGltZXJzLiBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2Ugb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS4KClNvLCBJIHdpbGwgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgYSBsb2dpYyBidWcgd2l0aCB0aW1pbmcgYW5kIGxvY2tpbmcsIG5vdCBhIG1lbW9yeSBzYWZldHkgaXNzdWUgdGhhdCBLTVNBTiB3b3VsZCB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gUE9TSVggQ1BVIHRpbWVycyBkdXJpbmcgdGhyZWFkIGdyb3VwIGxlYWRlcnNoaXAgY2hhbmdlcyAoZGVfdGhyZWFkKS4gSXQgZGVxdWV1ZXMgdGhlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBiZWZvcmUgdGhlIHRocmVhZCYjMzk7cyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLiBUaGlzIHByZXZlbnRzIGlzc3VlcyB3aGVyZSB0aGUgdGltZXIgc3Vic3lzdGVtIG1pZ2h0IGZhaWwgdG8gbG9vayB1cCB0aGUgUElEIG9yIGFjY2VzcyBmcmVlZC9pbnZhbGlkIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIGludm9sdmUgbG9ja2luZyBhbmQgdGltZXIgbWFuYWdlbWVudCwgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvZ2ljIGJ1Z3MuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgcmVsYXRlZCB0byBQT1NJWCBDUFUgdGltZXJzIGR1cmluZyB0aHJlYWQgZ3JvdXAgbGVhZGVyc2hpcCBjaGFuZ2VzIChkZV90aHJlYWQpLiBJdCBkZXF1ZXVlcyB0aGUgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJlZm9yZSB0aGUgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIuIFRoaXMgcHJldmVudHMgaXNzdWVzIHdoZXJlIHRoZSB0aW1lciBzdWJzeXN0ZW0gbWlnaHQgZmFpbCB0byBsb29rIHVwIHRoZSBQSUQgb3IgYWNjZXNzIGZyZWVkL2ludmFsaWQgc3RydWN0dXJlcy4gVGhlIGNoYW5nZXMgaW52b2x2ZSBsb2NraW5nIGFuZCB0aW1lciBtYW5hZ2VtZW50LCB3aGljaCBhcmUgcmVsYXRlZCB0byB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9naWMgYnVncy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU0OjE2LjU5MzI2MDA1NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTE2ODQ0NDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBPU0lYX1RJTUVSU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJlZ2luX25ld19leGVjXCIsXG4gICAgXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gUE9TSVggQ1BVIHRpbWVycyBkdXJpbmcgdGhyZWFkIGdyb3VwIGxlYWRlcnNoaXAgY2hhbmdlcyAoZGVfdGhyZWFkKS4gSXQgZGVxdWV1ZXMgdGhlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBiZWZvcmUgdGhlIHRocmVhZCdzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIuIFRoaXMgcHJldmVudHMgaXNzdWVzIHdoZXJlIHRoZSB0aW1lciBzdWJzeXN0ZW0gbWlnaHQgZmFpbCB0byBsb29rIHVwIHRoZSBQSUQgb3IgYWNjZXNzIGZyZWVkL2ludmFsaWQgc3RydWN0dXJlcy4gVGhlIGNoYW5nZXMgaW52b2x2ZSBsb2NraW5nIGFuZCB0aW1lciBtYW5hZ2VtZW50LCB3aGljaCBhcmUgcmVsYXRlZCB0byB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9naWMgYnVncy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYGRlX3RocmVhZGAgd2hlcmUgUE9TSVggQ1BVIHRpbWVycyBhcmUgbm90IHByb3Blcmx5IGRlcXVldWVkIGJlZm9yZSBgZXhjaGFuZ2VfdGlkcygpYCBoYW5kcyB0aGUgdGhyZWFkJ3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBjYW4gY2F1c2UgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYC4gVGhlIGZpeCBhZGRzIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwgKGV4ZWN2ZSBwYXRoKSBhbmQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MTYuNTkzMjY0MDc0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcxMzQwODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzc3ZWMwYmRhYzM2YTQ0NTEyYTAwYzY0ZmY0OTFhNmQ5ZmE5YzM0MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyA5IDAyOjU0OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xcbmluZGV4IGM3YjhmMmQ2MzY2YzQuLmY4MGY3MGUxYzI2ZGUgMTAwNjQ0XFxuLS0tIGEvZnMvZXhlYy5jXFxuKysrIGIvZnMvZXhlYy5jXFxuQEAgLTEwMDAsNiArMTAwMCwxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4gXFx0XFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxcbiBcXHRcXHQgKi9cXG4gXFxuKyNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlcixcXG4rXFx0XFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxcbitcXHRcXHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxcbitcXHRcXHQgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRzcGluX2xvY2sobG9jayk7XFxuK1xcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbitcXHRcXHRzcGluX3VubG9jayhsb2NrKTtcXG4rI2VuZGlmXFxuK1xcbiBcXHRcXHQvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJ3MgcGlkLlxcbiBcXHRcXHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cXG4gXFx0XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU0OjE3Ljk2NTIxMTUzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc1NjI2NzY5MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBPU0lYX1RJTUVSU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJlZ2luX25ld19leGVjXCIsXG4gICAgXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgZGVfdGhyZWFkYCB3aGVyZSBQT1NJWCBDUFUgdGltZXJzIGFyZSBub3QgcHJvcGVybHkgZGVxdWV1ZWQgYmVmb3JlIGBleGNoYW5nZV90aWRzKClgIGhhbmRzIHRoZSB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGNhbiBjYXVzZSBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgLiBUaGUgZml4IGFkZHMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgaW4gYGRlX3RocmVhZCgpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCAoZXhlY3ZlIHBhdGgpIGFuZCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NzdlYzBiZGFjMzZhNDQ1MTJhMDBjNjRmZjQ5MWE2ZDlmYTljMzQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgOSAwMjo1NDoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xuaW5kZXggYzdiOGYyZDYzNjZjNC4uZjgwZjcwZTFjMjZkZSAxMDA2NDRcbi0tLSBhL2ZzL2V4ZWMuY1xuKysrIGIvZnMvZXhlYy5jXG5AQCAtMTAwMCw2ICsxMDAwLDE4IEBAIHN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuIFx0XHQgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6XG4gXHRcdCAqL1xuIFxuKyNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXG4rXHRcdC8qXG4rXHRcdCAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlcixcbitcdFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxuK1x0XHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxuK1x0XHQgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuXG4rXHRcdCAqL1xuK1x0XHRzcGluX2xvY2sobG9jayk7XG4rXHRcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xuK1x0XHRzcGluX3VubG9jayhsb2NrKTtcbisjZW5kaWZcbitcbiBcdFx0LyogQmVjb21lIGEgcHJvY2VzcyBncm91cCBsZWFkZXIgd2l0aCB0aGUgb2xkIGxlYWRlcidzIHBpZC5cbiBcdFx0ICogVGhlIG9sZCBsZWFkZXIgYmVjb21lcyBhIHRocmVhZCBvZiB0aGUgdGhpcyB0aHJlYWQgZ3JvdXAuXG4gXHRcdCAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MTcuOTY1MjEyNDY5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzMzQ2NTgxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEZvY3VzIG9uIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGluIGBmcy9leGVjLmNgIHRoYXTigJlzIGFsdGVyaW5nIGBkZV90aHJlYWQoKWAuIEZyb20gd2hhdCBJIHNlZSwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGNhbGwgKndpdGhpbiogYGRlX3RocmVhZCgpYCDigJMgYnV0IG9ubHkgaWYgYENPTkZJR19QT1NJWF9USU1FUlNgIGlzIGVuYWJsZWQuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGlzIGlzIHRvdWNoaW5nIHRoZSBjb3JlIGtlcm5lbCBleGVjdXRpb24gcGF0aCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBub24tbGVhZGVyIHRocmVhZCBpcyBjYWxsaW5nIGBleGVjdmVgIGFuZCBkZXRhY2hpbmcgZnJvbSB0aGUgdGhyZWFkIGdyb3VwLiBGdW5jdGlvbmFsbHksIGl0J3MgbWFraW5nIGEgY2hhbmdlIHJpZ2h0IHRoZXJlLCBzbyBteSBpbml0aWFsIGluc3RpbmN0IGlzOiAqKmRlZmluaXRlbHkqKiB3b3J0aCBmdXp6aW5nLiBUaGUgaW50ZXJwbGF5IG9mIFBPU0lYIHRpbWVycyB3aXRoIHRoZSBgZXhlY3ZlYCBwYXRoIGNvdWxkIGJlIGEgcmljaCBzb3VyY2Ugb2YgaW50ZXJlc3RpbmcgYmVoYXZpb3IuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBhIGJpdC4gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IExldCBtZSBjaGVjayBgZnMvZXhlYy5jYCBhbmQgZmlndXJlIG91dCB3aGF0IFwibG9ja1wiIGlzLiBBaCwgZ29vZC4gSXQncyB1c2luZyBgc3Bpbl9sb2NrKGxvY2spO2AgYW5kIGBzcGluX3VubG9jayhsb2NrKTtgLCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IHNwaW5sb2Nrcy4gSSBzaG91bGQgY2hlY2sgbGluZSAxMDAwIGluIGBmcy9leGVjLmNgIGFuZCB0aGUgbGluZXMgYXJvdW5kIGl0IGp1c3QgdG8gZ2V0IGEgZnVsbGVyIHBpY3R1cmUgb2YgdGhlIGxvY2sncyBzY29wZSBhbmQgdGhlIHByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZXMuIFNwaW5sb2NrcyB3aXRoaW4gYGRlX3RocmVhZGAuLi4gdGhpcyBjb3VsZCBpbnRyb2R1Y2Ugc3luY2hyb25pemF0aW9uIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBmdXp6aW5nIG1pZ2h0IGV4cG9zZS4gR290dGEgbG9vayBhdCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIGhvdyBhbGwgdGhlc2UgcHV6emxlIHBpZWNlcyBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDoyMi41OTg2Nzk5NDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leGVjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTkwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTkwOlxcdFxcdFxcdCAqIGFsc28gdGFrZSBpdHMgYmlydGhkYXRlIChhbHdheXMgZWFybGllciB0aGFuIG91ciBvd24pLlxcbiA5OTE6XFx0XFx0XFx0ICovXFxuIDk5MjpcXHRcXHRcXHR0c2stXFx1MDAzZXN0YXJ0X3RpbWUgPSBsZWFkZXItXFx1MDAzZXN0YXJ0X3RpbWU7XFxuIDk5MzpcXHRcXHRcXHR0c2stXFx1MDAzZXN0YXJ0X2Jvb3R0aW1lID0gbGVhZGVyLVxcdTAwM2VzdGFydF9ib290dGltZTtcXG4gOTk0OlxcdFxcbiA5OTU6XFx0XFx0XFx0QlVHX09OKCFzYW1lX3RocmVhZF9ncm91cChsZWFkZXIsIHRzaykpO1xcbiA5OTY6XFx0XFx0XFx0LypcXG4gOTk3OlxcdFxcdFxcdCAqIEFuIGV4ZWMoKSBzdGFydHMgYSBuZXcgdGhyZWFkIGdyb3VwIHdpdGggdGhlXFxuIDk5ODpcXHRcXHRcXHQgKiBUR0lEIG9mIHRoZSBwcmV2aW91cyB0aHJlYWQgZ3JvdXAuIFJlaGFzaCB0aGVcXG4gOTk5OlxcdFxcdFxcdCAqIHR3byB0aHJlYWRzIHdpdGggYSBzd2l0Y2hlZCBQSUQsIGFuZCByZWxlYXNlXFxuMTAwMDpcXHRcXHRcXHQgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6XFxuMTAwMTpcXHRcXHRcXHQgKi9cXG4xMDAyOlxcdFxcbjEwMDM6XFx0I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcXG4xMDA0OlxcdFxcdFxcdC8qXFxuMTAwNTpcXHRcXHRcXHQgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsXFxuMTAwNjpcXHRcXHRcXHQgKiB3aGljaCBpcyByZWFwZWQgcmlnaHQgYWZ0ZXIuIFRoZSBQSUQgbG9va3VwIGluXFxuMTAwNzpcXHRcXHRcXHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxcbjEwMDg6XFx0XFx0XFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxcbjEwMDk6XFx0XFx0XFx0ICovXFxuMTAxMDpcXHRcXHRcXHRzcGluX2xvY2sobG9jayk7XFxuMTAxMTpcXHRcXHRcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcXG4xMDEyOlxcdFxcdFxcdHNwaW5fdW5sb2NrKGxvY2spO1xcbjEwMTM6XFx0I2VuZGlmXFxuMTAxNDpcXHRcXG4xMDE1OlxcdFxcdFxcdC8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXIncyBwaWQuXFxuMTAxNjpcXHRcXHRcXHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cXG4xMDE3OlxcdFxcdFxcdCAqL1xcbjEwMTg6XFx0XFx0XFx0ZXhjaGFuZ2VfdGlkcyh0c2ssIGxlYWRlcik7XFxuMTAxOTpcXHRcXHRcXHR0cmFuc2Zlcl9waWQobGVhZGVyLCB0c2ssIFBJRFRZUEVfVEdJRCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU0OjIyLjU5ODc3MzIwNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzYyNDY4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEZWNvbnN0cnVjdGluZyBgZGVfdGhyZWFkYCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBkZV90aHJlYWRgLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgbG9ja2luZyBtZWNoYW5pc20uIEJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbnMgaW4gdGhpcyBjb2RlYmFzZSwgdGhhdCBgbG9ja2AgdmFyaWFibGUgaXMgYWxtb3N0IGNlcnRhaW5seSBhIHNwaW5sb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmFsIGhhbmRsaW5nIHN0cnVjdHVyZS4gUHJvYmFibHkgc29tZXRoaW5nIGxpa2UgYFx1MDAyNnNpZ2hhbmQtXHUwMDNlc2lnbG9ja2AsIG1heWJlIGEgbmVzdGVkIG1lbWJlciB3aXRoaW4gYSBsYXJnZXIgc3RydWN0dXJlLiBHb3R0YSBiZSBjYXJlZnVsIHdpdGggdGhpcywgdGhvdWdoOyBzaWduYWwgaGFuZGxpbmcgaXMgYSBtaW5lZmllbGQuIEknbGwgcXVpY2tseSBjb25maXJtIGV4YWN0bHkgd2hpY2ggbG9jayBpdCBpcy4gR290dGEgZW5zdXJlIHdlJ3JlIHVzaW5nIHRoZSBjb3JyZWN0IG9uZSwgYW5kIG5vdCBhY2NpZGVudGFsbHkgZ3JhYmJpbmcgdGhlIHdyb25nIGxvY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU0OjI2LjEzNTAyMjAzNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4ZWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5NzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5NzA6XFx0XFx0XFx0XFx0ICovXFxuIDk3MTpcXHRcXHRcXHRcXHRzaWctXFx1MDAzZW5vdGlmeV9jb3VudCA9IC0xO1xcbiA5NzI6XFx0XFx0XFx0XFx0aWYgKGxpa2VseShsZWFkZXItXFx1MDAzZWV4aXRfc3RhdGUpKVxcbiA5NzM6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDk3NDpcXHRcXHRcXHRcXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfS0lMTEFCTEUpO1xcbiA5NzU6XFx0XFx0XFx0XFx0d3JpdGVfdW5sb2NrX2lycShcXHUwMDI2dGFza2xpc3RfbG9jayk7XFxuIDk3NjpcXHRcXHRcXHRcXHRjZ3JvdXBfdGhyZWFkZ3JvdXBfY2hhbmdlX2VuZCh0c2spO1xcbiA5Nzc6XFx0XFx0XFx0XFx0c2NoZWR1bGUoKTtcXG4gOTc4OlxcdFxcdFxcdFxcdGlmIChfX2ZhdGFsX3NpZ25hbF9wZW5kaW5nKHRzaykpXFxuIDk3OTpcXHRcXHRcXHRcXHRcXHRnb3RvIGtpbGxlZDtcXG4gOTgwOlxcdFxcdFxcdH1cXG4gOTgxOlxcdFxcbiA5ODI6XFx0XFx0XFx0LypcXG4gOTgzOlxcdFxcdFxcdCAqIFRoZSBvbmx5IHJlY29yZCB3ZSBoYXZlIG9mIHRoZSByZWFsLXRpbWUgYWdlIG9mIGFcXG4gOTg0OlxcdFxcdFxcdCAqIHByb2Nlc3MsIHJlZ2FyZGxlc3Mgb2YgZXhlY3MgaXQncyBkb25lLCBpcyBzdGFydF90aW1lLlxcbiA5ODU6XFx0XFx0XFx0ICogQWxsIHRoZSBwYXN0IENQVSB0aW1lIGlzIGFjY3VtdWxhdGVkIGluIHNpZ25hbF9zdHJ1Y3RcXG4gOTg2OlxcdFxcdFxcdCAqIGZyb20gc2lzdGVyIHRocmVhZHMgbm93IGRlYWQuICBCdXQgaW4gdGhpcyBub24tbGVhZGVyXFxuIDk4NzpcXHRcXHRcXHQgKiBleGVjLCBub3RoaW5nIHN1cnZpdmVzIGZyb20gdGhlIG9yaWdpbmFsIGxlYWRlciB0aHJlYWQsXFxuIDk4ODpcXHRcXHRcXHQgKiB3aG9zZSBiaXJ0aCBtYXJrcyB0aGUgdHJ1ZSBhZ2Ugb2YgdGhpcyBwcm9jZXNzIG5vdy5cXG4gOTg5OlxcdFxcdFxcdCAqIFdoZW4gd2UgdGFrZSBvbiBpdHMgaWRlbnRpdHkgYnkgc3dpdGNoaW5nIHRvIGl0cyBQSUQsIHdlXFxuIDk5MDpcXHRcXHRcXHQgKiBhbHNvIHRha2UgaXRzIGJpcnRoZGF0ZSAoYWx3YXlzIGVhcmxpZXIgdGhhbiBvdXIgb3duKS5cXG4gOTkxOlxcdFxcdFxcdCAqL1xcbiA5OTI6XFx0XFx0XFx0dHNrLVxcdTAwM2VzdGFydF90aW1lID0gbGVhZGVyLVxcdTAwM2VzdGFydF90aW1lO1xcbiA5OTM6XFx0XFx0XFx0dHNrLVxcdTAwM2VzdGFydF9ib290dGltZSA9IGxlYWRlci1cXHUwMDNlc3RhcnRfYm9vdHRpbWU7XFxuIDk5NDpcXHRcXG4gOTk1OlxcdFxcdFxcdEJVR19PTighc2FtZV90aHJlYWRfZ3JvdXAobGVhZGVyLCB0c2spKTtcXG4gOTk2OlxcdFxcdFxcdC8qXFxuIDk5NzpcXHRcXHRcXHQgKiBBbiBleGVjKCkgc3RhcnRzIGEgbmV3IHRocmVhZCBncm91cCB3aXRoIHRoZVxcbiA5OTg6XFx0XFx0XFx0ICogVEdJRCBvZiB0aGUgcHJldmlvdXMgdGhyZWFkIGdyb3VwLiBSZWhhc2ggdGhlXFxuIDk5OTpcXHRcXHRcXHQgKiB0d28gdGhyZWFkcyB3aXRoIGEgc3dpdGNoZWQgUElELCBhbmQgcmVsZWFzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDoyNi4xMzUxMTgzMjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTY0NjA2NjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIGEgTWlzc2luZyBEZWZpbml0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBoaXR0aW5nIGEgc25hZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBcIldhaXQsIHdoZXJlICppcyogYGxvY2tgIGRlZmluZWQ/XCIgSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhhdCBzb21ldGhpbmcgY3J1Y2lhbCBpcyBtaXNzaW5nIOKAkyB0aGUgY29udGV4dCwgdGhlIGRlY2xhcmF0aW9uLCBvciB0aGUgc2NvcGUgd2l0aGluIHdoaWNoIGBsb2NrYCBpcyBzdXBwb3NlZCB0byBleGlzdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYGxvY2tgIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIHdvcmtpbmcsIGFuZCByaWdodCBub3csIGl0J3MgYSBibGFjayBib3guIFRoaXMgaXMgYSBmdW5kYW1lbnRhbCBmaXJzdCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgdGhlIHByb2JsZW0sIGlkZW50aWZ5aW5nIHdoZXRoZXIgaXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBtaXNzaW5nIGltcG9ydCwgYSBtb3JlIGNvbXBsZXggc2NvcGUgaXNzdWUsIG9yIHBlcmhhcHMgYW4gZXJyb3IgaW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgbGlicmFyeSBiZWluZyB1c2VkLiBUaW1lIHRvIHRyYWNlIHRoaXMgYGxvY2tgIHRvIGl0cyBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MzIuMDk5NzI2NzI3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXhlYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk0MDpcXHRcXG4gOTQxOlxcdFxcdHNpZy1cXHUwMDNlZ3JvdXBfZXhlY190YXNrID0gdHNrO1xcbiA5NDI6XFx0XFx0c2lnLVxcdTAwM2Vub3RpZnlfY291bnQgPSB6YXBfb3RoZXJfdGhyZWFkcyh0c2spO1xcbiA5NDM6XFx0XFx0aWYgKCF0aHJlYWRfZ3JvdXBfbGVhZGVyKHRzaykpXFxuIDk0NDpcXHRcXHRcXHRzaWctXFx1MDAzZW5vdGlmeV9jb3VudC0tO1xcbiA5NDU6XFx0XFxuIDk0NjpcXHRcXHR3aGlsZSAoc2lnLVxcdTAwM2Vub3RpZnlfY291bnQpIHtcXG4gOTQ3OlxcdFxcdFxcdF9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19LSUxMQUJMRSk7XFxuIDk0ODpcXHRcXHRcXHRzcGluX3VubG9ja19pcnEobG9jayk7XFxuIDk0OTpcXHRcXHRcXHRzY2hlZHVsZSgpO1xcbiA5NTA6XFx0XFx0XFx0aWYgKF9fZmF0YWxfc2lnbmFsX3BlbmRpbmcodHNrKSlcXG4gOTUxOlxcdFxcdFxcdFxcdGdvdG8ga2lsbGVkO1xcbiA5NTI6XFx0XFx0XFx0c3Bpbl9sb2NrX2lycShsb2NrKTtcXG4gOTUzOlxcdFxcdH1cXG4gOTU0OlxcdFxcdHNwaW5fdW5sb2NrX2lycShsb2NrKTtcXG4gOTU1OlxcdFxcbiA5NTY6XFx0XFx0LypcXG4gOTU3OlxcdFxcdCAqIEF0IHRoaXMgcG9pbnQgYWxsIG90aGVyIHRocmVhZHMgaGF2ZSBleGl0ZWQsIGFsbCB3ZSBoYXZlIHRvXFxuIDk1ODpcXHRcXHQgKiBkbyBpcyB0byB3YWl0IGZvciB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciB0byBiZWNvbWUgaW5hY3RpdmUsXFxuIDk1OTpcXHRcXHQgKiBhbmQgdG8gYXNzdW1lIGl0cyBQSUQ6XFxuIDk2MDpcXHRcXHQgKi9cXG4gOTYxOlxcdFxcdGlmICghdGhyZWFkX2dyb3VwX2xlYWRlcih0c2spKSB7XFxuIDk2MjpcXHRcXHRcXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKmxlYWRlciA9IHRzay1cXHUwMDNlZ3JvdXBfbGVhZGVyO1xcbiA5NjM6XFx0XFxuIDk2NDpcXHRcXHRcXHRmb3IgKDs7KSB7XFxuIDk2NTpcXHRcXHRcXHRcXHRjZ3JvdXBfdGhyZWFkZ3JvdXBfY2hhbmdlX2JlZ2luKHRzayk7XFxuIDk2NjpcXHRcXHRcXHRcXHR3cml0ZV9sb2NrX2lycShcXHUwMDI2dGFza2xpc3RfbG9jayk7XFxuIDk2NzpcXHRcXHRcXHRcXHQvKlxcbiA5Njg6XFx0XFx0XFx0XFx0ICogRG8gdGhpcyB1bmRlciB0YXNrbGlzdF9sb2NrIHRvIGVuc3VyZSB0aGF0XFxuIDk2OTpcXHRcXHRcXHRcXHQgKiBleGl0X25vdGlmeSgpIGNhbid0IG1pc3MgLVxcdTAwM2Vncm91cF9leGVjX3Rhc2tcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MzIuMDk5ODI0NTE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzMjc4NzQ1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGhlIGNvZGUgcmVmZXJzIHRvIHNvbWV0aGluZyBjYWxsZWQgYGxvY2tgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgZm9yIGl0cyBkZWZpbml0aW9uLiBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgc2NvcGUgaXNzdWVzLCBob3cgaXQncyBiZWluZyB1c2VkLCBhbmQgd2hhdCB0eXBlIGl0IGlzLiBJcyBpdCBhIG11dGV4PyBBIHNlbWFwaG9yZT8gQSByZWFkZXItd3JpdGVyIGxvY2s/IFVuZGVyc3RhbmRpbmcgYGxvY2tgJ3MgbmF0dXJlIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHJlYWxseSBncmFzcCB3aGF0J3MgaGFwcGVuaW5nIGluIHRoaXMgc2VjdGlvbiBvZiBjb2RlIGFuZCBhc3Nlc3MgaXRzIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVuY3ksIHJlc291cmNlIG1hbmFnZW1lbnQsIGFuZCBwb3RlbnRpYWwgZGVhZGxvY2tzLiBJJ20gZXNzZW50aWFsbHkgc3RhcnRpbmcgd2l0aCBhIGJvdHRvbS11cCBhcHByb2FjaCBoZXJlLCBidWlsZGluZyBteSB1bmRlcnN0YW5kaW5nIGZyb20gdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDozNS4yMzI2MTUwMjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4ZWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5MDA6XFx0XFx0aWYgKG9sZF9tbSkge1xcbiA5MDE6XFx0XFx0XFx0bW1hcF9yZWFkX3VubG9jayhvbGRfbW0pO1xcbiA5MDI6XFx0XFx0XFx0QlVHX09OKGFjdGl2ZV9tbSAhPSBvbGRfbW0pO1xcbiA5MDM6XFx0XFx0XFx0LyogRGVmZXIgdGVhcmRvd24gdG8gc2V0dXBfbmV3X2V4ZWMoKSwgb3V0c2lkZSB0aGUgZXhlYyBsb2Nrcy4gKi9cXG4gOTA0OlxcdFxcdFxcdGJwcm0tXFx1MDAzZW9sZF9tbSA9IG9sZF9tbTtcXG4gOTA1OlxcdFxcdFxcdHJldHVybiAwO1xcbiA5MDY6XFx0XFx0fVxcbiA5MDc6XFx0XFx0bW1kcm9wX2xhenlfdGxiKGFjdGl2ZV9tbSk7XFxuIDkwODpcXHRcXHRyZXR1cm4gMDtcXG4gOTA5OlxcdH1cXG4gOTEwOlxcdFxcbiA5MTE6XFx0LyogUmVsZWFzZSB0aGUgYWRkcmVzcyBzcGFjZSByZXBsYWNlZCBieSBleGVjLCBvdXRzaWRlIHRoZSBleGVjIGxvY2tzLiAqL1xcbiA5MTI6XFx0c3RhdGljIHZvaWQgZXhlY19tbV9wdXRfb2xkKHN0cnVjdCBtbV9zdHJ1Y3QgKm9sZF9tbSlcXG4gOTEzOlxcdHtcXG4gOTE0OlxcdFxcdHNldG1heF9tbV9oaXdhdGVyX3JzcyhcXHUwMDI2Y3VycmVudC1cXHUwMDNlc2lnbmFsLVxcdTAwM2VtYXhyc3MsIG9sZF9tbSk7XFxuIDkxNTpcXHRcXHRtbV91cGRhdGVfbmV4dF9vd25lcihvbGRfbW0pO1xcbiA5MTY6XFx0XFx0bW1wdXQob2xkX21tKTtcXG4gOTE3OlxcdH1cXG4gOTE4OlxcdFxcbiA5MTk6XFx0c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuIDkyMDpcXHR7XFxuIDkyMTpcXHRcXHRzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnID0gdHNrLVxcdTAwM2VzaWduYWw7XFxuIDkyMjpcXHRcXHRzdHJ1Y3Qgc2lnaGFuZF9zdHJ1Y3QgKm9sZHNpZ2hhbmQgPSB0c2stXFx1MDAzZXNpZ2hhbmQ7XFxuIDkyMzpcXHRcXHRzcGlubG9ja190ICpsb2NrID0gXFx1MDAyNm9sZHNpZ2hhbmQtXFx1MDAzZXNpZ2xvY2s7XFxuIDkyNDpcXHRcXG4gOTI1OlxcdFxcdGlmICh0aHJlYWRfZ3JvdXBfZW1wdHkodHNrKSlcXG4gOTI2OlxcdFxcdFxcdGdvdG8gbm9fdGhyZWFkX2dyb3VwO1xcbiA5Mjc6XFx0XFxuIDkyODpcXHRcXHQvKlxcbiA5Mjk6XFx0XFx0ICogS2lsbCBhbGwgb3RoZXIgdGhyZWFkcyBpbiB0aGUgdGhyZWFkIGdyb3VwLlxcbiA5MzA6XFx0XFx0ICovXFxuIDkzMTpcXHRcXHRzcGluX2xvY2tfaXJxKGxvY2spO1xcbiA5MzI6XFx0XFx0aWYgKChzaWctXFx1MDAzZWZsYWdzIFxcdTAwMjYgU0lHTkFMX0dST1VQX0VYSVQpIHx8IHNpZy1cXHUwMDNlZ3JvdXBfZXhlY190YXNrKSB7XFxuIDkzMzpcXHRcXHRcXHQvKlxcbiA5MzQ6XFx0XFx0XFx0ICogQW5vdGhlciBncm91cCBhY3Rpb24gaW4gcHJvZ3Jlc3MsIGp1c3RcXG4gOTM1OlxcdFxcdFxcdCAqIHJldHVybiBzbyB0aGF0IHRoZSBzaWduYWwgaXMgcHJvY2Vzc2VkLlxcbiA5MzY6XFx0XFx0XFx0ICovXFxuIDkzNzpcXHRcXHRcXHRzcGluX3VubG9ja19pcnEobG9jayk7XFxuIDkzODpcXHRcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gOTM5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MzUuMjMyNzIxNjUxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMDg3NjQxNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBsb2NrYCBpcyBkZWZpbmVkIGFzIGBcdTAwMjZvbGRzaWdoYW5kLVx1MDAzZXNpZ2xvY2tgLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IHRoZW4gSSBzZWUgdGhlIHBhdGNoIHVzZXMgYHNwaW5fbG9jayhsb2NrKTtgIGFuZCBsYXRlciBgc3Bpbl91bmxvY2sobG9jayk7YCwgYW5kIHNvbWV0aGluZydzIG5vdCBxdWl0ZSBjbGlja2luZy4gYGxvY2tgIGlzIGEgcG9pbnRlciB0byBhIGBzcGlubG9ja190YCwgd2hpY2ggaXMgY29ycmVjdC4gSSBwYXVzZWQgZm9yIGEgbW9tZW50LCB0aGlua2luZyBJIHdhcyBtaXNzaW5nIHNvbWV0aGluZy4gTm8sIGBzcGluX2xvY2sobG9jaylgIGlzIHBlcmZlY3RseSB2YWxpZC4gTXkgYnJhaW4gY2F1Z2h0IHVwLCBhbmQgcmVtaW5kZWQgaXRzZWxmIGBzcGluX2xvY2tfaXJxKGxvY2spYCBpcyB1c2VkIGVhcmxpZXIgaW4gdGhlIHNhbWUgZnVuY3Rpb24uIEJ1dCB0aGF0IHN0aWxsIGRvZXNuJ3Qgc2F0aXNmeSBtZS4gSXMgYHNwaW5fbG9jayhsb2NrKWAgc2FmZSBpbiAqdGhpcyogc3BlY2lmaWMgc3BvdD8gVGhhdCdzIHRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUuXG5cblRoZSBnb29kIG5ld3MgaXMgdGhlIHBhdGNoIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCwgc28gYXQgbGVhc3QgaXQgY29tcGlsZXMgd2l0aG91dCBhbnkgcmVwb3J0ZWQgaXNzdWVzLiBMZXQncyBzZWUuLi4gdGhpcyBpcyB0aGUgYGRlX3RocmVhZGAgZnVuY3Rpb24gaW4gYGZzL2V4ZWMuY2AuIERlZmluaXRlbHkgd29ydGggYWRkaW5nIHRvIG15IGZ1enppbmcgbGlzdC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoaXMgYGRlX3RocmVhZGAgZnVuY3Rpb24uIFRoZSBwcm9ibGVtIGlzLCBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBPa2F5LCBJIGtub3cgbXkgd2F5IGFyb3VuZCBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gdG8gZ2FpbiBjb250cm9sLiBBaGEhIEl0J3MgY2FsbGVkIGZyb20gYGJlZ2luX25ld19leGVjYC4gVGltZSB0byBleGFtaW5lIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGVyZSB0aGlzIHJhYmJpdCBob2xlIGxlYWRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NDAuNDQxNDk1ODE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leGVjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA1MDpcXHRub190aHJlYWRfZ3JvdXA6XFxuMTA1MTpcXHRcXHQvKiB3ZSBoYXZlIGNoYW5nZWQgZXhlY3V0aW9uIGRvbWFpbiAqL1xcbjEwNTI6XFx0XFx0dHNrLVxcdTAwM2VleGl0X3NpZ25hbCA9IFNJR0NITEQ7XFxuMTA1MzpcXHRcXG4xMDU0OlxcdFxcdEJVR19PTighdGhyZWFkX2dyb3VwX2xlYWRlcih0c2spKTtcXG4xMDU1OlxcdFxcdHJldHVybiAwO1xcbjEwNTY6XFx0XFxuMTA1NzpcXHRraWxsZWQ6XFxuMTA1ODpcXHRcXHQvKiBwcm90ZWN0cyBhZ2FpbnN0IGV4aXRfbm90aWZ5KCkgYW5kIF9fZXhpdF9zaWduYWwoKSAqL1xcbjEwNTk6XFx0XFx0cmVhZF9sb2NrKFxcdTAwMjZ0YXNrbGlzdF9sb2NrKTtcXG4xMDYwOlxcdFxcdHNpZy1cXHUwMDNlZ3JvdXBfZXhlY190YXNrID0gTlVMTDtcXG4xMDYxOlxcdFxcdHNpZy1cXHUwMDNlbm90aWZ5X2NvdW50ID0gMDtcXG4xMDYyOlxcdFxcdHJlYWRfdW5sb2NrKFxcdTAwMjZ0YXNrbGlzdF9sb2NrKTtcXG4xMDYzOlxcdFxcdHJldHVybiAtRUFHQUlOO1xcbjEwNjQ6XFx0fVxcbjEwNjU6XFx0XFxuMTA2NjpcXHRcXG4xMDY3OlxcdC8qXFxuMTA2ODpcXHQgKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhlIGN1cnJlbnQgcHJvY2VzcyBoYXMgaXRzIG93biBzaWduYWwgdGFibGUsXFxuMTA2OTpcXHQgKiBzbyB0aGF0IGZsdXNoX3NpZ25hbF9oYW5kbGVycyBjYW4gbGF0ZXIgcmVzZXQgdGhlIGhhbmRsZXJzIHdpdGhvdXRcXG4xMDcwOlxcdCAqIGRpc3R1cmJpbmcgb3RoZXIgcHJvY2Vzc2VzLiAgKE90aGVyIHByb2Nlc3NlcyBtaWdodCBzaGFyZSB0aGUgc2lnbmFsXFxuMTA3MTpcXHQgKiB0YWJsZSB2aWEgdGhlIENMT05FX1NJR0hBTkQgb3B0aW9uIHRvIGNsb25lKCkuKVxcbjEwNzI6XFx0ICovXFxuMTA3MzpcXHRzdGF0aWMgaW50IHVuc2hhcmVfc2lnaGFuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm1lKVxcbjEwNzQ6XFx0e1xcbjEwNzU6XFx0XFx0c3RydWN0IHNpZ2hhbmRfc3RydWN0ICpvbGRzaWdoYW5kID0gbWUtXFx1MDAzZXNpZ2hhbmQ7XFxuMTA3NjpcXHRcXG4xMDc3OlxcdFxcdGlmIChyZWZjb3VudF9yZWFkKFxcdTAwMjZvbGRzaWdoYW5kLVxcdTAwM2Vjb3VudCkgIT0gMSkge1xcbjEwNzg6XFx0XFx0XFx0c3RydWN0IHNpZ2hhbmRfc3RydWN0ICpuZXdzaWdoYW5kO1xcbjEwNzk6XFx0XFx0XFx0LypcXG4xMDgwOlxcdFxcdFxcdCAqIFRoaXMgLVxcdTAwM2VzaWdoYW5kIGlzIHNoYXJlZCB3aXRoIHRoZSBDTE9ORV9TSUdIQU5EXFxuMTA4MTpcXHRcXHRcXHQgKiBidXQgbm90IENMT05FX1RIUkVBRCB0YXNrLCBzd2l0Y2ggdG8gdGhlIG5ldyBvbmUuXFxuMTA4MjpcXHRcXHRcXHQgKi9cXG4xMDgzOlxcdFxcdFxcdG5ld3NpZ2hhbmQgPSBrbWVtX2NhY2hlX2FsbG9jKHNpZ2hhbmRfY2FjaGVwLCBHRlBfS0VSTkVMKTtcXG4xMDg0OlxcdFxcdFxcdGlmICghbmV3c2lnaGFuZClcXG4xMDg1OlxcdFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjEwODY6XFx0XFxuMTA4NzpcXHRcXHRcXHRyZWZjb3VudF9zZXQoXFx1MDAyNm5ld3NpZ2hhbmQtXFx1MDAzZWNvdW50LCAxKTtcXG4xMDg4OlxcdFxcbjEwODk6XFx0XFx0XFx0d3JpdGVfbG9ja19pcnEoXFx1MDAyNnRhc2tsaXN0X2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDo0MC40NDE3ODUyNjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3NjM1NzIxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqVHJhY2luZyB0aGUgU291cmNlOiBEZWNvbnN0cnVjdGluZyB0aGUgYGRlX3RocmVhZGAgQ2FsbCoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIG9iamVjdGl2ZSBpcyBjbGVhcjogcGlucG9pbnQgdGhlIG9yaWdpbiBvZiB0aGUgYGRlX3RocmVhZGAgZnVuY3Rpb24gY2FsbC4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGN1cmlvc2l0eTsgaWRlbnRpZnlpbmcgdGhlIGNhbGxlciBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgdGhyZWFkIGlzIGJlaW5nIHNwYXduZWQsIHdoYXQgdHJpZ2dlcnMgaXRzIGV4ZWN1dGlvbiwgYW5kIHdoYXQgaW5mb3JtYXRpb24gaXMgYmVpbmcgcGFzc2VkIHRvIGl0LlxuXG5NeSBpbW1lZGlhdGUgYXBwcm9hY2ggd2lsbCBkZXBlbmQgaGVhdmlseSBvbiB0aGUgdG9vbHMgYW5kIGVudmlyb25tZW50IEkgaGF2ZSBhdmFpbGFibGUuIElmIEkgaGF2ZSBhIGRlYnVnZ2VyIGhhbmR5LCBJJ2xsIHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlIGVudHJ5IHBvaW50IG9mIGBkZV90aHJlYWRgIGFuZCBzdGVwIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhbiBpbW1lZGlhdGUgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBleGVjdXRpb24gcGF0aCBsZWFkaW5nIHVwIHRvIGl0LlxuXG5JZiBJJ20gd29ya2luZyB3aXRoIHNvdXJjZSBjb2RlLCBJJ2xsIHN0YXJ0IHdpdGggYSBzdHJhaWdodGZvcndhcmQgdGV4dCBzZWFyY2ggd2l0aGluIHRoZSBjb2RlYmFzZS4gR3JlcHBpbmcgZm9yIFwiZGVfdGhyZWFkKFwiIG9yIFwiZGVfdGhyZWFkKFwiIChkZXBlbmRpbmcgb24gdGhlIGNvZGUncyBzeW50YXgpIHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCB0aGUgZGlyZWN0IGNhbGwgc2l0ZXMuIEnigJlsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IOKAkyBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgdmFyaWFibGUgYXNzaWdubWVudHMsIG9yIGZ1bmN0aW9uIGNhbGxzIGluIHRoZSB2aWNpbml0eSB0aGF0IG1pZ2h0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIHB1cnBvc2UgYW5kIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYGRlX3RocmVhZGAgaXMgaW52b2tlZC5cblxuQmV5b25kIHRoYXQsIEknbGwgbmVlZCB0byBjb25zaWRlciBtb3JlIHNvcGhpc3RpY2F0ZWQgdGVjaG5pcXVlcy4gSXMgdGhlcmUgYW55IGNyb3NzLXJlZmVyZW5jaW5nIGZ1bmN0aW9uYWxpdHkgaW4gbXkgSURFIG9yIGNvZGUgYW5hbHlzaXMgdG9vbHM/IFRoZXNlIGNhbiBvZnRlbiBnZW5lcmF0ZSBhIGNhbGwgZ3JhcGgsIHdoaWNoIHdpbGwgdmlzdWFsbHkgbWFwIG91dCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBmdW5jdGlvbnMgYW5kIG1ha2UgaXQgZWFzaWVyIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdy4gSSdsbCBiZSBsb29raW5nIGZvciBpbmRpcmVjdCBjYWxscyBhcyB3ZWxsLCBtYXliZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYGRlX3RocmVhZGAgYXMgYW4gYXJndW1lbnQgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi5cblxuSSBhbHNvIGhhdmUgdG8gY29uc2lkZXIgZXh0ZXJuYWwgZmFjdG9ycywgbGlrZSB0aHJlYWRpbmcgbW9kZWxzIG9yIHRoZSB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbS4gRG9lcyB0aGlzIHN5c3RlbSBoYXZlIGEgc3BlY2lmaWMgdGhyZWFkIG1hbmFnZW1lbnQgZnJhbWV3b3JrPyBBcmUgdGhlcmUgYW55IHNpZ25hbHMsIGV2ZW50cywgb3IgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbXMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZD8gVGhlc2UgY2FuIG9iZnVzY2F0ZSBkaXJlY3QgY2FsbHMuXG5cbkZpbmFsbHksIHRoZSBmdW5jdGlvbidzIG5hbWUgaGludHMgYXQgYSBwb3RlbnRpYWwgXCJkZS1cIiBvciBcImRlbGV0ZVwiIG9wZXJhdGlvbi4gQ291bGQgaXQgYmUgaW52b2x2ZWQgaW4gdGhyZWFkIHRlcm1pbmF0aW9uLCBjbGVhbnVwLCBvciByZXNvdXJjZSBkZWFsbG9jYXRpb24/IFRoaXMgd2lsbCBpbmZsdWVuY2UgdGhlIHR5cGVzIG9mIGNhbGxzaXRlcyBJIGV4cGVjdCB0byBzZWUuIFRoaXMgaW5mb3JtYXRpb24gd291bGQgZ3VpZGUgbXkgc2VhcmNoLiBNeSBnb2FsIGlzIGEgZnVsbCB1bmRlcnN0YW5kaW5nIG9mIGBkZV90aHJlYWRgJ3MgcmFpc29uIGQnZXRyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMwOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NDUuODE4MTQ1ODYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjkwMTQ0MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVfdGhyZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4ZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9OTEyPXN0YXRpYyB2b2lkIGV4ZWNfbW1fcHV0X29sZChzdHJ1Y3QgbW1fc3RydWN0ICpvbGRfbW0pXFxuLS1cXG5mcy9leGVjLmMtOTE4LVxcbmZzL2V4ZWMuYzo5MTk6c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuZnMvZXhlYy5jLTkyMC17XFxuLS1cXG5mcy9leGVjLmM9MTEwNj12b2lkIF9fc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY29uc3QgY2hhciAqYnVmLCBib29sIGV4ZWMpXFxuLS1cXG5mcy9leGVjLmMtMTExOC0gKiBzZWVuIGJ5IHVzZXJzcGFjZSBzaW5jZSBlaXRoZXIgdGhlIHByb2Nlc3MgaXMgYWxyZWFkeSB0YWtpbmcgYSBmYXRhbFxcbmZzL2V4ZWMuYzoxMTE5OiAqIHNpZ25hbCAodmlhIGRlX3RocmVhZCgpIG9yIGNvcmVkdW1wKSwgb3Igd2lsbCBoYXZlIFNFR1YgcmFpc2VkXFxuZnMvZXhlYy5jLTExMjAtICogKGFmdGVyIGV4ZWNfbW1hcCgpKSBieSBzZWFyY2hfYmluYXJ5X2hhbmRsZXIgKHNlZSBiZWxvdykuXFxuLS1cXG5mcy9leGVjLmM9MTEyMj1pbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTE0NS1cXHQvKiBNYWtlIHRoaXMgdGhlIG9ubHkgdGhyZWFkIGluIHRoZSB0aHJlYWQgZ3JvdXAgKi9cXG5mcy9leGVjLmM6MTE0NjpcXHRyZXR2YWwgPSBkZV90aHJlYWQobWUpO1xcbmZzL2V4ZWMuYy0xMTQ3LVxcdGlmIChyZXR2YWwpXFxuLS1cXG5mcy9leGVjLmM9MTQwOT1zdGF0aWMgdm9pZCBmcmVlX2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xNDE4LVxcdGlmIChicHJtLVxcdTAwM2VjcmVkKSB7XFxuZnMvZXhlYy5jOjE0MTk6XFx0XFx0LyogaW4gY2FzZSBleGVjIGZhaWxzIGJlZm9yZSBkZV90aHJlYWQoKSBzdWNjZWVkcyAqL1xcbmZzL2V4ZWMuYy0xNDIwLVxcdFxcdGN1cnJlbnQtXFx1MDAzZWZzLVxcdTAwM2Vpbl9leGVjID0gMDtcXG4tLVxcbmZzL2V4ZWMuYz0xNTI4PXN0YXRpYyB2b2lkIGNoZWNrX3Vuc2FmZV9leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTU0OS1cXHQgKiBPdGhlcndpc2Ugd2Ugc2V0IGZzLVxcdTAwM2Vpbl9leGVjID0gMSB0byBkZW55IGNsb25lKENMT05FX0ZTKVxcbmZzL2V4ZWMuYzoxNTUwOlxcdCAqIGZyb20gYW5vdGhlciBzdWItdGhyZWFkIHVudGlsIGRlX3RocmVhZCgpIHN1Y2NlZWRzLCB0aGlzXFxuZnMvZXhlYy5jLTE1NTEtXFx0ICogc3RhdGUgaXMgcHJvdGVjdGVkIGJ5IGNyZWRfZ3VhcmRfbXV0ZXggd2UgaG9sZC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NDYuMzQ3MTY0NDA3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzkxMDM4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCoqXG5cbk9rYXksIHNvIGBiZWdpbl9uZXdfZXhlY2AgaXMgdGhlIG9uZSBpbml0aWF0aW5nIHRoaXMgd2hvbGUgc2VxdWVuY2UuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb24gb3IgcHJvY2VzcyBpcyBjYWxsaW5nICppdCouIFRoZSBrZXkgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBvcmlnaW4sIHRoZSBjb250ZXh0IGluIHdoaWNoIGBiZWdpbl9uZXdfZXhlY2AgaXMgYmVpbmcgaW52b2tlZC4gS25vd2luZyB0aGUgY2FsbGVyIGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBvciBzaW1wbHkgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cuIFdlIG5lZWQgdG8gdHJhY2UgYmFja3dhcmRzIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYXRpbmcgYWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzY4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NTAuMTg2MjcwNjU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc5MDM4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiZWdpbl9uZXdfZXhlY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leGVjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhlYy5jPTI1Nz1zdGF0aWMgaW50IGJwcm1fbW1faW5pdChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTI2Ni1cXG5mcy9leGVjLmM6MjY3OlxcdC8qIFN0YWdlZCBmb3Igd291bGRfZHVtcCgpIG5hcnJvd2luZzsgY29uc3VtZWQgYnkgYmVnaW5fbmV3X2V4ZWMoKS4gKi9cXG5mcy9leGVjLmMtMjY4LVxcdGJwcm0tXFx1MDAzZXVzZXJfbnMgPSBnZXRfdXNlcl9ucyhjdXJyZW50X3VzZXJfbnMoKSk7XFxuLS1cXG5mcy9leGVjLmM9MTEwNj12b2lkIF9fc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY29uc3QgY2hhciAqYnVmLCBib29sIGV4ZWMpXFxuLS1cXG5mcy9leGVjLmMtMTEyMS0gKi9cXG5mcy9leGVjLmM6MTEyMjppbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pXFxuZnMvZXhlYy5jLTExMjMte1xcbi0tXFxuZnMvZXhlYy5jLTEzMjEtfVxcbmZzL2V4ZWMuYzoxMzIyOkVYUE9SVF9TWU1CT0woYmVnaW5fbmV3X2V4ZWMpO1xcbmZzL2V4ZWMuYy0xMzIzLVxcbi0tXFxuZnMvZXhlYy5jPTE2ODc9c3RhdGljIGludCBzZWFyY2hfYmluYXJ5X2hhbmRsZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xNzE5LVxcbmZzL2V4ZWMuYzoxNzIwOi8qIGJpbmZtdCBoYW5kbGVycyB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCkgb24gc3VjY2Vzcy4gKi9cXG5mcy9leGVjLmMtMTcyMS1zdGF0aWMgaW50IGV4ZWNfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmM9MTc2Nj1zdGF0aWMgaW50IGJwcm1fZXhlY3ZlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTc3NS1cXHQgKiBDaGVjayBmb3IgdW5zYWZlIGV4ZWN1dGlvbiBzdGF0ZXMgYmVmb3JlIGV4ZWNfYmlucHJtKCksIHdoaWNoXFxuZnMvZXhlYy5jOjE3NzY6XFx0ICogd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpLCBpbnRvIGJwcm1fY3JlZHNfZnJvbV9maWxlKCksXFxuZnMvZXhlYy5jLTE3NzctXFx0ICogd2hlcmUgc2V0dWlkLW5lc3MgaXMgZXZhbHVhdGVkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDo1MC4yNDIwNjU1NjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwNzk1OTExNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIEVudHJ5IFBvaW50KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgb3VyIGV4ZWN1dGFibGUgbG9hZGluZyB3b3Jrcy4gVGhlIHN5c3RlbSBzdGFydHMgd2l0aCBgYmVnaW5fbmV3X2V4ZWNgLCB3aGljaCBJIGtub3cgaXMgY2FsbGVkIGJ5IHRoZSBiaW5mbXQgaGFuZGxlcnMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGBiZWdpbl9uZXdfZXhlY2AgaXMgYWN0dWFsbHkgZXhwb3J0ZWQ/IFRoYXQncyBpbnRlcmVzdGluZywgdXN1YWxseSBmdW5jdGlvbnMgdGhpcyBsb3ctbGV2ZWwgYXJlbid0LiBUaGlzIGNoYW5nZXMgdGhpbmdzIGEgYml0LiBTbyBJIG5lZWQgdG8gc2hpZnQgZ2VhcnMgYW5kIGZpbmQgb3V0IGV4YWN0bHkgd2hlcmUgdGhpcyBpcyBiZWluZyBjYWxsZWQgZnJvbSwgZ2l2ZW4gdGhhdCBpdCBpcyBleHBvcnRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cy4gTGV0J3Mgc2VlIGhvdyB3aWRlc3ByZWFkIHRoZSBkZXBlbmRlbmNpZXMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDE1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NTMuNDUwMDI3NTY4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjg4NTc4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmVnaW5fbmV3X2V4ZWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2JpbmZtdF9lbGYuYz04MzI9c3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2JpbmZtdF9lbGYuYy0xMDA5LVxcdC8qIEZsdXNoIGFsbCB0cmFjZXMgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIGV4ZWN1dGFibGUgKi9cXG5mcy9iaW5mbXRfZWxmLmM6MTAxMDpcXHRyZXR2YWwgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcXG5mcy9iaW5mbXRfZWxmLmMtMTAxMS1cXHRpZiAocmV0dmFsKVxcbi0tXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jPTE4Mj1zdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jLTM0NC1cXHQvKiBmbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jOjM0NTpcXHRyZXR2YWwgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcXG5mcy9iaW5mbXRfZWxmX2ZkcGljLmMtMzQ2LVxcdGlmIChyZXR2YWwpXFxuLS1cXG5mcy9iaW5mbXRfZmxhdC5jPTQwNj1zdGF0aWMgaW50IGxvYWRfZmxhdF9maWxlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sXFxuLS1cXG5mcy9iaW5mbXRfZmxhdC5jLTUwOC1cXHQvKiBGbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXFxuZnMvYmluZm10X2ZsYXQuYzo1MDk6XFx0cmV0ID0gYmVnaW5fbmV3X2V4ZWMoYnBybSk7XFxuZnMvYmluZm10X2ZsYXQuYy01MTAtXFx0aWYgKHJldClcXG4tLVxcbmZzL2V4ZWMuYz0yNTc9c3RhdGljIGludCBicHJtX21tX2luaXQoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0yNjYtXFxuZnMvZXhlYy5jOjI2NzpcXHQvKiBTdGFnZWQgZm9yIHdvdWxkX2R1bXAoKSBuYXJyb3dpbmc7IGNvbnN1bWVkIGJ5IGJlZ2luX25ld19leGVjKCkuICovXFxuZnMvZXhlYy5jLTI2OC1cXHRicHJtLVxcdTAwM2V1c2VyX25zID0gZ2V0X3VzZXJfbnMoY3VycmVudF91c2VyX25zKCkpO1xcbi0tXFxuZnMvZXhlYy5jPTExMDY9dm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmJ1ZiwgYm9vbCBleGVjKVxcbi0tXFxuZnMvZXhlYy5jLTExMjEtICovXFxuZnMvZXhlYy5jOjExMjI6aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxcbmZzL2V4ZWMuYy0xMTIzLXtcXG4tLVxcbmZzL2V4ZWMuYy0xMzIxLX1cXG5mcy9leGVjLmM6MTMyMjpFWFBPUlRfU1lNQk9MKGJlZ2luX25ld19leGVjKTtcXG5mcy9leGVjLmMtMTMyMy1cXG4tLVxcbmZzL2V4ZWMuYz0xNjg3PXN0YXRpYyBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTcxOS1cXG5mcy9leGVjLmM6MTcyMDovKiBiaW5mbXQgaGFuZGxlcnMgd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpIG9uIHN1Y2Nlc3MuICovXFxuZnMvZXhlYy5jLTE3MjEtc3RhdGljIGludCBleGVjX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jPTE3NjY9c3RhdGljIGludCBicHJtX2V4ZWN2ZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTE3NzUtXFx0ICogQ2hlY2sgZm9yIHVuc2FmZSBleGVjdXRpb24gc3RhdGVzIGJlZm9yZSBleGVjX2JpbnBybSgpLCB3aGljaFxcbmZzL2V4ZWMuYzoxNzc2OlxcdCAqIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSwgaW50byBicHJtX2NyZWRzX2Zyb21fZmlsZSgpLFxcbmZzL2V4ZWMuYy0xNzc3LVxcdCAqIHdoZXJlIHNldHVpZC1uZXNzIGlzIGV2YWx1YXRlZC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NTQuMTc4ODkwNjM3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjIwNTQwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBQYXRjaCBvbiBFeGVjdmUgUGVyZm9ybWFuY2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIGl0cyBpbXBhY3QuIEkgc2VlIHRoYXQgYGJlZ2luX25ld19leGVjYCBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgaGVyZSwgdHJpZ2dlcmVkIGJ5IGBsb2FkX2VsZl9iaW5hcnlgLCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCwgYW5kIGBsb2FkX2ZsYXRfZmlsZWAuIFJpZ2h0LCBhbGwgdGhvc2UgYXJlIGhvdCBwYXRocyByZWxhdGVkIHRvIHRoZSBgZXhlY3ZlYCBzeXN0ZW0gY2FsbCwgbWFraW5nIHRoaXMgYXJlYSBhIHByaW1lIHRhcmdldCBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yLCBpbiB0aGlzIGNhc2UsIHBvdGVudGlhbCByZWdyZXNzaW9uLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRlX3RocmVhZGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IHRoYXQgY3J1Y2lhbCBgYmVnaW5fbmV3X2V4ZWNgIGZ1bmN0aW9uLiBXYWl0IGEgc2Vjb25kLCB0aGUga2V5IGNoYW5nZSBpcyB0aGF0IGl0J3MgaW50cm9kdWNpbmcgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2l0aGluIGBkZV90aHJlYWRgLlxuXG5UaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgZnVuY3Rpb24gaXMgdGhlIHJpZ2h0IGZvY3VzIG9mIG15IGF0dGVudGlvbi4gSXMgdGhpcyBmdW5jdGlvbiBhbiBhcHByb3ByaWF0ZSBpbmRpY2F0b3Igb2YgcGVyZm9ybWFuY2UgY2hhbmdlcywgZ29vZCBvciBiYWQsIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaD8gSXQncyB3b3J0aCBhIGRlZXBlciBkaXZlIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGlzIGNvZGUgcGF0aC4gTGV0IG1lIGdvIGNoZWNrIGl0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDo1OC41NDA5NDY3MzJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ3OTc3NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9zaXhfY3B1X3RpbWVyc19leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9OTE5PXN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxuZnMvZXhlYy5jLTEwMTAtXFx0XFx0c3Bpbl9sb2NrKGxvY2spO1xcbmZzL2V4ZWMuYzoxMDExOlxcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbmZzL2V4ZWMuYy0xMDEyLVxcdFxcdHNwaW5fdW5sb2NrKGxvY2spO1xcbi0tXFxuZnMvZXhlYy5jPTExMjI9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTExOTAtXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bWUtXFx1MDAzZXNpZ2hhbmQtXFx1MDAzZXNpZ2xvY2spO1xcbmZzL2V4ZWMuYzoxMTkxOlxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdChtZSk7XFxuZnMvZXhlYy5jLTExOTItXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZtZS1cXHUwMDNlc2lnaGFuZC1cXHUwMDNlc2lnbG9jayk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oPTIyNT12b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI2OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XFxuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjc6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oLTIyOC12b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsXFxuLS1cXG5rZXJuZWwvZXhpdC5jPTE1OT1zdGF0aWMgdm9pZCBfX2V4aXRfc2lnbmFsKHN0cnVjdCByZWxlYXNlX3Rhc2tfcG9zdCAqcG9zdCwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZXhpdC5jLTE3MS0jaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xcbmtlcm5lbC9leGl0LmM6MTcyOlxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbmtlcm5lbC9leGl0LmMtMTczLVxcdGlmIChncm91cF9kZWFkKVxcbmtlcm5lbC9leGl0LmM6MTc0OlxcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCh0c2spO1xcbmtlcm5lbC9leGl0LmMtMTc1LSNlbmRpZlxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTQ1MT1zdGF0aWMgdm9pZCBkaXNhcm1fdGltZXIoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4MS0gKlxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo0ODI6ICogX19leGl0X3NpZ25hbCgpIGludm9rZXMgcG9zaXhfY3B1X3RpbWVyc19leGl0KCkgYW5kIGlmIHRoZSB0aHJlYWQgZ3JvdXAgaXNcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgzLSAqIGRlYWQgaXQgYWxzbyBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZ3JvdXBfZXhpdCgpLiBUaGVzZSBmdW5jdGlvbnMgZGVsZXRlXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDg5LSAqIHRocmVhZCBncm91cCBpcyBub3QgZGVhZCB0aGV5IG9ubHkgY2xlYW4gdXAgdGhlIHBlciB0YXNrIHRpbWVycyB2aWFcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDkwOiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpLlxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00OTEtICpcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02MjQ9c3RhdGljIHZvaWQgY2xlYW51cF90aW1lcnMoc3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0KVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzMy0gKiBpcyBiZWluZyByZWFwZWQuICBXaGVuIHRoZSBmaW5hbCAobGVhZGVyKSB0aHJlYWQgaW4gdGhlIGdyb3VwIGlzIHJlYXBlZCxcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM0OiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCB3aWxsIGJlIGNhbGxlZCBhZnRlciBwb3NpeF9jcHVfdGltZXJzX2V4aXQuXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzNS0gKi9cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM2OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02Mzcte1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzOS19XFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjY0MDp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjQxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MDAuMDk1NzQ5MTc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MzUzODUwNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBUaHJlYWQgRXhpdCBSb3V0aW5lKipcblxuT2theSwgc28gYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgaXMgYSBrZXkgZnVuY3Rpb24sIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlczogYF9fZXhpdF9zaWduYWxgLCBgYmVnaW5fbmV3X2V4ZWNgLCBhbmQgbm93LCBpbXBvcnRhbnRseSwgYGRlX3RocmVhZGAuIEl0IHNlZW1zIGxpa2UgYSBkZWNlbnQgcG9pbnQgb2YgZm9jdXMgZm9yIHRoaXMgcHJvYmxlbSwgYnV0IHRoZSBmYWN0IHRoYXQgaXQncyB0cmlnZ2VyZWQgb24gKmV2ZXJ5KiB0aHJlYWQgZXhpdCBpcyBhIGJpdCBjb25jZXJuaW5nIGZvciBpdHMgc3BlY2lmaWNpdHkuIElzIHRoZXJlIGEgbW9yZSByZWZpbmVkIHBvaW50IG9mIGludGVyZXN0IHdpdGhpbiB0aGlzIGNvZGUgcGF0aD9cblxuSG1tLCB0aGUgYnVnJ3MgY29ubmVjdGlvbiB0byBgZXhjaGFuZ2VfdGlkcygpYCBhbmQgYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCBpcyBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgd2hlcmUgdGhlIGFjdHVhbCBpc3N1ZSBtaWdodCBsaWUuIEdpdmVuIHRoYXQgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgc2VlbXMgd2lkZXNwcmVhZCwgbWF5YmUgdGhlIHByb2JsZW0gaXMgaW4gYSBmdW5jdGlvbiBpdCdzIGNhbGxpbmcsIGxpa2UgYHRpbWVyX2xvY2tfc2lnaGFuZGAuIExldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nIHdpdGggdGltZXJzIGFuZCBzaWduYWwgaGFuZGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDAwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MDQuOTMxMTM2NTk2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc2MjQyODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpbWVyX2xvY2tfc2lnaGFuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhlYy5jPTkxOT1zdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmZzL2V4ZWMuYy0xMDA2LVxcdFxcdCAqIHdoaWNoIGlzIHJlYXBlZCByaWdodCBhZnRlci4gVGhlIFBJRCBsb29rdXAgaW5cXG5mcy9leGVjLmM6MTAwNzpcXHRcXHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxcbmZzL2V4ZWMuYy0xMDA4LVxcdFxcdCAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC5cXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy01MjItICovXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjUyMzpzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICp0aW1lcl9sb2NrX3NpZ2hhbmQoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgdW5zaWduZWQgbG9uZyAqZmxhZ3MpXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTUyNC17XFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9NTc0PXN0YXRpYyBpbnQgcG9zaXhfY3B1X3RpbWVyX2RlbChzdHJ1Y3Qga19pdGltZXIgKnRpbWVyKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTU3OS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NTgwOlxcdHAgPSB0aW1lcl9sb2NrX3NpZ2hhbmQodGltZXIsIFxcdTAwMjZmbGFncyk7XFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTU4MS1cXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz03MDY9c3RhdGljIGludCBwb3NpeF9jcHVfdGltZXJfc2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIGludCB0aW1lcl9mbGFncyxcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MTYtXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjcxNzpcXHRwID0gdGltZXJfbG9ja19zaWdoYW5kKHRpbWVyLCBcXHUwMDI2ZmxhZ3MpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MTgtXFx0LypcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz0xMDgyPXN0YXRpYyBib29sIHBvc2l4X2NwdV90aW1lcl9yZWFybShzdHJ1Y3Qga19pdGltZXIgKnRpbWVyKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTEwODgtXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjEwODk6XFx0cCA9IHRpbWVyX2xvY2tfc2lnaGFuZCh0aW1lciwgXFx1MDAyNmZsYWdzKTtcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTA5MC1cXHRpZiAodW5saWtlbHkoIXApKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NTowNi41MDczODM1MTdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcyMjcyNzI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBUaW1lci1SZWxhdGVkIFRocmVhZCBQSUQgSXNzdWUqKlxuXG5Pa2F5LCBzbyBoZXJlJ3Mgd2hhdCBJJ20gZGVhbGluZyB3aXRoLiBJdCBsb29rcyBsaWtlIGBleGNoYW5nZV90aWRzKClgIGlzIHBhc3NpbmcgYSB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsIGFuZCB0aGF0IGxlYWRlciBpcyBpbW1lZGlhdGVseSByZWFwZWQuIFRoZSBwcm9ibGVtIGFyaXNlcyBiZWNhdXNlIGxhdGVyLCB3aGVuIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgdHJpZXMgdG8gbG9vayB1cCB0aGUgUElELCBpdCBmYWlscyB3aGlsZSB0aGUgQ1BVIHRpbWVycyBmb3IgdGhhdCBzcGVjaWZpYyB0aHJlYWQgYXJlIHN0aWxsIHF1ZXVlZC4gV2UgbmVlZCB0byBkZXF1ZXVlIHRob3NlIHRpbWVycyBiZWZvcmUgdGhpcyBsb29rdXAgaGFwcGVucy5cblxuVGhpcyBzZWVtcyB0byBzcGVjaWZpY2FsbHkgb2NjdXIgd2hlbiBhIG5vbi1sZWFkZXIgdGhyZWFkIGV4ZWN1dGVzIGFuIGBleGVjdmVgIGNhbGwgYW5kIGhhcyBQT1NJWCBDUFUgdGltZXJzIHJ1bm5pbmcuIFRvIHJlcHJvZHVjZSB0aGlzLCBJIG5lZWQgdG8gY3JlYXRlIGEgdGhyZWFkIGdyb3VwIHdpdGggYXQgbGVhc3QgdHdvIHRocmVhZHMuIFRoZW4sIHRoZSBub24tbGVhZGVyIHRocmVhZCBoYXMgdG8gYXJtIGEgUE9TSVggQ1BVIHRpbWVyIHVzaW5nIHNvbWV0aGluZyBsaWtlIGB0aW1lcl9jcmVhdGVgIHdpdGggYENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEYC4gRmluYWxseSwgdGhhdCBub24tbGVhZGVyIHRocmVhZCBuZWVkcyB0byBleGVjdXRlIGBleGVjdmVgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNoZWNrIHN5bWJvbHMgbGlrZSBgcG9zaXhfY3B1X3RpbWVyX3NldGAsIGBwb3NpeF9jcHVfdGltZXJfZGVsYCwgYW5kIGBkZV90aHJlYWRg4oCUYWx0aG91Z2ggYGRlX3RocmVhZGAgaXMgc3RhdGljLCBzbyBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgYmVnaW5fbmV3X2V4ZWNgIGluc3RlYWQuXG5cbkJ1dCB3YWl0LCBgcG9zaXhfY3B1X3RpbWVyX3NldGAgaXMgYWxzbyBzdGF0aWMhIE9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBjYWxscyB0byBgcG9zaXhfY3B1X3RpbWVyX3NldGAgaXRzZWxmLiBUaGF0J3MgdGhlIG5leHQgc3RlcCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpjYWxsaW5nKiB0aGF0IGZ1bmN0aW9uLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMTAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MTIuMjMwMTEzOTg2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI3ODE3MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBvc2l4X2NwdV90aW1lcl9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy01MTMtICpcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NTE0OiAqICAtIHBvc2l4X2NwdV90aW1lcl9zZXQoKTogSW5kZXBlbmRlbnQgb2YgdGhlIGVucXVldWVkIHN0YXRlIHRoYXQgcmVzdWx0cyBpbiBhXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTUxNS0gKiAgICB0cmFuc2llbnQgZmFpbHVyZSB3aGljaCBpcyB1c2VyIHNwYWNlIHZpc2libGUgKC1FU1JDSCkgZm9yIHJlZ3VsYXIgcG9zaXhcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02OTg9c3RhdGljIHZvaWQgX19wb3NpeF9jcHVfdGltZXJfZ2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCBpdGltZXJzcGVjNjQgKml0cCwgdTY0IG5vdyk7XFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNzA1LSAqL1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo3MDY6c3RhdGljIGludCBwb3NpeF9jcHVfdGltZXJfc2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIGludCB0aW1lcl9mbGFncyxcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNzA3LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICpuZXcsIHN0cnVjdCBpdGltZXJzcGVjNjQgKm9sZClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz0xNTM3PXN0YXRpYyBpbnQgZG9fY3B1X25hbm9zbGVlcChjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIGludCBmbGFncyxcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNTYzLVxcdFxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNnRpbWVyLml0X2xvY2spO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzoxNTY0OlxcdFxcdGVycm9yID0gcG9zaXhfY3B1X3RpbWVyX3NldChcXHUwMDI2dGltZXIsIGZsYWdzLCBcXHUwMDI2aXQsIE5VTEwpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNTY1LVxcdFxcdGlmIChlcnJvcikge1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTE1OTQtXFx0XFx0ZXhwaXJlcyA9IGNwdV90aW1lcl9nZXRleHBpcmVzKFxcdTAwMjZ0aW1lci5pdC5jcHUpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzoxNTk1OlxcdFxcdGVycm9yID0gcG9zaXhfY3B1X3RpbWVyX3NldChcXHUwMDI2dGltZXIsIDAsIFxcdTAwMjZ6ZXJvX2l0LCBcXHUwMDI2aXQpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNTk2LVxcdFxcdGlmICghZXJyb3IpIHtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz0xNzA2PWNvbnN0IHN0cnVjdCBrX2Nsb2NrIGNsb2NrX3Bvc2l4X2NwdSA9IHtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNzExLVxcdC5uc2xlZXBcXHRcXHRcXHQ9IHBvc2l4X2NwdV9uc2xlZXAsXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjE3MTI6XFx0LnRpbWVyX3NldFxcdFxcdD0gcG9zaXhfY3B1X3RpbWVyX3NldCxcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTcxMy1cXHQudGltZXJfZGVsXFx0XFx0PSBwb3NpeF9jcHVfdGltZXJfZGVsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NToxMy43NTc5MzYyOVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDQ5MDIxMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gc3lzdGVtcyBwcm9ncmFtbWluZyBhbmQga2VybmVsIGludGVybmFsczpcblxuKipEaXZpbmcgaW50byBUaW1lciBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGB0aW1lcl9zZXR0aW1lYC4gTXkgbWVudGFsIG1hcCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgY29ubmVjdGVkIHRvIGBjbG9ja19wb3NpeF9jcHVgLCBsaWtlbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBgdGltZXJfc2V0dGltZWAgc3lzY2FsbCBpdHNlbGYsIGBzeXNfdGltZXJfc2V0dGltZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcuIFRoZSBhcmNoaXRlY3R1cmUgd291bGQgZGljdGF0ZSBteSBuZXh0IHN0ZXAsIHdoaWNoIHdpbGwgYmUgdG8gY2hlY2sgYHRpbWVyX3NldHRpbWVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgdGhpcyBjb2RlIGlzIHNlcnZpbmcsIHNvIGxldCdzIGRpZyBpbnRvIHRoYXQgcm91dGluZS4gTGV0J3Mgc2VlIGhvdyBpdCB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MTMsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NToyMC4yMDY5NTk2NTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTcyNDcxNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGltZXJfc2V0dGltZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0PTExMTE9UnVubmluZyBwdHJhY2Ugb24gdGhpcyB0aHJlYWQgdXN1YWxseSByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgcGljdHVyZTo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3ZpcnQvdW1sL3VzZXJfbW9kZV9saW51eF9ob3d0b192Mi5yc3QtMTEyOC0gICBwdHJhY2UoUFRSQUNFX0dFVFNJR0lORk8sIDE2OTY3LCBOVUxMLCB7c2lfc2lnbm89U0lHVFJBUCwgc2lfY29kZT0weDg1LCBzaV9waWQ9MTY5NjcsIHNpX3VpZD0wfSkgPSAwXFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0OjExMjk6ICAgdGltZXJfc2V0dGltZSgwLCAwLCB7aXRfaW50ZXJ2YWw9e3R2X3NlYz0wLCB0dl9uc2VjPTB9LCBpdF92YWx1ZT17dHZfc2VjPTAsIHR2X25zZWM9MjgzMDkxMn19LCBOVUxMKSA9IDBcXG5Eb2N1bWVudGF0aW9uL3ZpcnQvdW1sL3VzZXJfbW9kZV9saW51eF9ob3d0b192Mi5yc3QtMTEzMC0gICBnZXRwaWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxNjU2Nlxcbi0tXFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0PTExMzU9VGhpcyBpcyBhIHR5cGljYWwgcGljdHVyZSBmcm9tIGEgbW9zdGx5IGlkbGUgVU1MIGluc3RhbmNlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0LTExNDMtICBVTUwgdXNlcnNwYWNlLlxcbkRvY3VtZW50YXRpb24vdmlydC91bWwvdXNlcl9tb2RlX2xpbnV4X2hvd3RvX3YyLnJzdDoxMTQ0OiogYGB0aW1lcl9zZXR0aW1lYGAgaXMgcGFydCBvZiB0aGUgVU1MIGhpZ2ggcmVzIHRpbWVyIHN1YnN5c3RlbSBtYXBwaW5nXFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0LTExNDUtICB0aW1lciByZXF1ZXN0cyBmcm9tIGluc2lkZSBVTUwgb250byB0aGUgaG9zdCBoaWdoIHJlc29sdXRpb24gdGltZXJzLlxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ1LTQxNFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNDY6NDE1XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ3LTQxNlxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbi0tXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtMjc1LTI1N1xcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDoyNzY6MjU4XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC0yNzctMjU5XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZVxcdFxcdHN5c190aW1lcl9nZXR0aW1lMzJcXG4tLVxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQyNi00MDhcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsOjQyNzo0MDlcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQyOC00MTBcXHRjb21tb25cXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtMjcyLTI1N1xcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdHN5c190aW1lcl9jcmVhdGVcXHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50Ymw6MjczOjI1OFxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC0yNzQtMjU5XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZVxcdFxcdHN5c190aW1lcl9nZXR0aW1lMzJcXG4tLVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDIzLTQwOFxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0MjQ6NDA5XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQyNS00MTBcXHRjb21tb25cXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjY0LTI1NFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI2NToyNTVcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWUzMlxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjY2LTI1NlxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMS00MDhcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDEyOjQwOVxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTMtNDEwXFx0Y29tbW9uXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI2OS0yNTlcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDoyNzA6MjYwXFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3MS0yNjFcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDA4XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxODo0MDlcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDE5LTQxMFxcdGNvbW1vblxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMjMxLTIyMFxcdG4zMlxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MjMyOjIyMVxcdG4zMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMjMzLTIyMlxcdG4zMlxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zNTAtNDA4XFx0bjMyXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibDozNTE6NDA5XFx0bjMyXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zNTItNDEwXFx0bjMyXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0yMjctMjE2XFx0bjY0XFx0dGltZXJfY3JlYXRlXFx0XFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsOjIyODoyMTdcXHRuNjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0yMjktMjE4XFx0bjY0XFx0dGltZXJfZ2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0yNzEtMjU3XFx0bzMyXFx0dGltZXJfY3JlYXRlXFx0XFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6MjcyOjI1OFxcdG8zMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMjczLTI1OVxcdG8zMlxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zOTktNDA4XFx0bzMyXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsOjQwMDo0MDlcXHRvMzJcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtNDAxLTQxMFxcdG8zMlxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzktMjUwXFx0Y29tbW9uXFx0dGltZXJfY3JlYXRlXFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI4MDoyNTFcXHQzMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI4MToyNTFcXHQ2NFxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yODItMjUyXFx0MzJcXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMC00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDExOjQwOVxcdDMyXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTItNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTMwNi0yNDBcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFx0XFx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwNzoyNDFcXHQzMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozMDg6MjQxXFx0NjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwOToyNDFcXHRzcHVcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTMxMC0yNDJcXHQzMlxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMi00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjUwMzo0MDlcXHQzMlxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwNC00MTBcXHQzMlxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEwLTI1NFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjIxMToyNTVcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTIxMi0yNTZcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG4tLVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI2OS0yNTlcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjcwOjI2MFxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjcxLTI2MVxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTUtNDA4XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTY6NDA5XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDEwXFx0Y29tbW9uXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zMTgtMjYxXFx0Y29tbW9uXFx0c2NoZWRfc2V0YWZmaW5pdHlcXHRzeXNfc2NoZWRfc2V0YWZmaW5pdHlcXHRcXHRjb21wYXRfc3lzX3NjaGVkX3NldGFmZmluaXR5XFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzE5OjI2MlxcdDMyXFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozMjA6MjYyXFx0NjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zMjEtMjYzXFx0MzJcXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU3LTQwOFxcdDMyXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1ODo0MDlcXHQzMlxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTktNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYz02MT1pbnQgb3NfdGltZXJfc2V0X2ludGVydmFsKGludCBjcHUsIHVuc2lnbmVkIGxvbmcgbG9uZyBuc2VjcylcXG4tLVxcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jLTcwLVxcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jOjcxOlxcdGlmICh0aW1lcl9zZXR0aW1lKGV2ZW50X2hpZ2hfcmVzX3RpbWVyW2NwdV0sIDAsIFxcdTAwMjZpdHMsIE5VTEwpID09IC0xKVxcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jLTcyLVxcdFxcdHJldHVybiAtZXJybm87XFxuLS1cXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYz03Nz1pbnQgb3NfdGltZXJfb25lX3Nob3QoaW50IGNwdSwgdW5zaWduZWQgbG9uZyBsb25nIG5zZWNzKVxcbi0tXFxuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtODYtXFxuYXJjaC91bS9vcy1MaW51eC90aW1lLmM6ODc6XFx0dGltZXJfc2V0dGltZShldmVudF9oaWdoX3Jlc190aW1lcltjcHVdLCAwLCBcXHUwMDI2aXRzLCBOVUxMKTtcXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYy04OC1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jPTk1PXZvaWQgb3NfdGltZXJfZGlzYWJsZShpbnQgY3B1KVxcbi0tXFxuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtOTktXFx0bWVtc2V0KFxcdTAwMjZpdHMsIDAsIHNpemVvZihzdHJ1Y3QgaXRpbWVyc3BlYykpO1xcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jOjEwMDpcXHR0aW1lcl9zZXR0aW1lKGV2ZW50X2hpZ2hfcmVzX3RpbWVyW2NwdV0sIDAsIFxcdTAwMjZpdHMsIE5VTEwpO1xcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jLTEwMS19XFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzQtMjU5XFx0aTM4NlxcdHRpbWVyX2NyZWF0ZVxcdFxcdHN5c190aW1lcl9jcmVhdGVcXHRcXHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjI3NToyNjBcXHRpMzg2XFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzYtMjYxXFx0aTM4NlxcdHRpbWVyX2dldHRpbWVcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTctNDA4XFx0aTM4NlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDE4OjQwOVxcdGkzODZcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxOS00MTBcXHRpMzg2XFx0dGltZXJmZF9nZXR0aW1lNjRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0yMzQtMjIyXFx0NjRcXHR0aW1lcl9jcmVhdGVcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6MjM1OjIyM1xcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTIzNi0yMjRcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG4tLVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzAtMjQ5XFx0Y29tbW9uXFx0dGltZXJfZGVsZXRlXFx0XFx0XFx0c3lzX3RpbWVyX2RlbGV0ZVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDoyNzE6MjUwXFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjcyLTI1MVxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzgyLTQwOFxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4Mzo0MDlcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODQtNDEwXFx0Y29tbW9uXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfbmV0Yy5jPTY5NT1zdGF0aWMgaW50IG5ldGNfdGltZXJfZ2V0dGltZXg2NChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9uZXRjLmMtNzE1LVxcbmRyaXZlcnMvcHRwL3B0cF9uZXRjLmM6NzE2OnN0YXRpYyBpbnQgbmV0Y190aW1lcl9zZXR0aW1lNjQoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03MTctXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYz03MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBuZXRjX3RpbWVyX3B0cF9jYXBzID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03NDktXFx0LmdldHRpbWV4NjRcXHQ9IG5ldGNfdGltZXJfZ2V0dGltZXg2NCxcXG5kcml2ZXJzL3B0cC9wdHBfbmV0Yy5jOjc1MDpcXHQuc2V0dGltZTY0XFx0PSBuZXRjX3RpbWVyX3NldHRpbWU2NCxcXG5kcml2ZXJzL3B0cC9wdHBfbmV0Yy5jLTc1MS1cXHQuZW5hYmxlXFx0XFx0PSBuZXRjX3RpbWVyX2VuYWJsZSxcXG4tLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaD02MTg9YXNtbGlua2FnZSBsb25nIHN5c190aW1lcl9nZXRvdmVycnVuKHRpbWVyX3QgdGltZXJfaWQpO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo2MTk6YXNtbGlua2FnZSBsb25nIHN5c190aW1lcl9zZXR0aW1lKHRpbWVyX3QgdGltZXJfaWQsIGludCBmbGFncyxcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNjIwLVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBfX2tlcm5lbF9pdGltZXJzcGVjIF9fdXNlciAqbmV3X3NldHRpbmcsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9NjMyPWFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfZ2V0dGltZTMyKHRpbWVyX3QgdGltZXJfaWQsXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTYzMy1cXHRcXHRcXHRcXHQgc3RydWN0IG9sZF9pdGltZXJzcGVjMzIgX191c2VyICpzZXR0aW5nKTtcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6NjM0OmFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfc2V0dGltZTMyKHRpbWVyX3QgdGltZXJfaWQsIGludCBmbGFncyxcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNjM1LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMzMiBfX3VzZXIgKm5ldyxcXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD0zMDU9X19TWVNDQUxMKF9fTlJfdGltZXJfZ2V0b3ZlcnJ1biwgc3lzX3RpbWVyX2dldG92ZXJydW4pXFxuLS1cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtMzA3LSNpZiBkZWZpbmVkKF9fQVJDSF9XQU5UX1RJTUUzMl9TWVNDQUxMUykgfHwgX19CSVRTX1BFUl9MT05HICE9IDMyXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjMwODojZGVmaW5lIF9fTlJfdGltZXJfc2V0dGltZSAxMTBcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6MzA5Ol9fU0NfMzI2NChfX05SX3RpbWVyX3NldHRpbWUsIHN5c190aW1lcl9zZXR0aW1lMzIsIHN5c190aW1lcl9zZXR0aW1lKVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC0zMTAtI2VuZGlmXFxuLS1cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9NzI2PV9fU1lTQ0FMTChfX05SX3RpbWVyX2dldHRpbWU2NCwgc3lzX3RpbWVyX2dldHRpbWUpXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyNzojZGVmaW5lIF9fTlJfdGltZXJfc2V0dGltZTY0IDQwOVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3Mjg6X19TWVNDQUxMKF9fTlJfdGltZXJfc2V0dGltZTY0LCBzeXNfdGltZXJfc2V0dGltZSlcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNzI5LSNkZWZpbmUgX19OUl90aW1lcmZkX2dldHRpbWU2NCA0MTBcXG4tLVxcbmluaXQvS2NvbmZpZz0xNzYxPWNvbmZpZyBQT1NJWF9USU1FUlNcXG4tLVxcbmluaXQvS2NvbmZpZy0xNzcwLVxcdCAgYXZhaWxhYmxlOiB0aW1lcl9jcmVhdGUsIHRpbWVyX2dldHRpbWU6IHRpbWVyX2dldG92ZXJydW4sXFxuaW5pdC9LY29uZmlnOjE3NzE6XFx0ICB0aW1lcl9zZXR0aW1lLCB0aW1lcl9kZWxldGUsIGNsb2NrX2FkanRpbWUsIGdldGl0aW1lcixcXG5pbml0L0tjb25maWctMTc3Mi1cXHQgIHNldGl0aW1lciwgYWxhcm0uIEZ1cnRoZXJtb3JlLCB0aGUgY2xvY2tfc2V0dGltZSwgY2xvY2tfZ2V0dGltZSxcXG4tLVxcbmtlcm5lbC9zeXNfbmkuYz0yMDk9Q09ORF9TWVNDQUxMKHRpbWVyX2dldG92ZXJydW4pO1xcbmtlcm5lbC9zeXNfbmkuYzoyMTA6Q09ORF9TWVNDQUxMKHRpbWVyX3NldHRpbWUpO1xcbmtlcm5lbC9zeXNfbmkuYy0yMTEtQ09ORF9TWVNDQUxMKHRpbWVyX2RlbGV0ZSk7XFxuLS1cXG5rZXJuZWwvc3lzX25pLmM9MzM5PUNPTkRfU1lTQ0FMTF9DT01QQVQocnRfc2lndGltZWR3YWl0X3RpbWUzMik7XFxua2VybmVsL3N5c19uaS5jOjM0MDpDT05EX1NZU0NBTEwodGltZXJfc2V0dGltZTMyKTtcXG5rZXJuZWwvc3lzX25pLmMtMzQxLUNPTkRfU1lTQ0FMTCh0aW1lcl9nZXR0aW1lMzIpO1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTY5OD1zdGF0aWMgdm9pZCBfX3Bvc2l4X2NwdV90aW1lcl9nZXQoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgc3RydWN0IGl0aW1lcnNwZWM2NCAqaXRwLCB1NjQgbm93KTtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MDAtLypcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NzAxOiAqIEd1dHMgb2Ygc3lzX3RpbWVyX3NldHRpbWUgZm9yIENQVSB0aW1lcnMuXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTcwMi0gKiBUaGlzIGlzIGNhbGxlZCB3aXRoIHRoZSB0aW1lciBsb2NrZWQgYW5kIGludGVycnVwdHMgZGlzYWJsZWQuXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYz04ODc9aW50IGNvbW1vbl90aW1lcl9zZXQoc3RydWN0IGtfaXRpbWVyICp0aW1yLCBpbnQgZmxhZ3MsXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05MjYtXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6OTI3OnN0YXRpYyBpbnQgZG9fdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyX2lkLCBpbnQgdG1yX2ZsYWdzLCBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICpuZXdfc3BlYzY0LFxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTkyOC1cXHRcXHRcXHQgICAgc3RydWN0IGl0aW1lcnNwZWM2NCAqb2xkX3NwZWM2NClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk2MS0vKiBTZXQgYSBQT1NJWC4xYiBpbnRlcnZhbCB0aW1lciAqL1xcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjk2MjpTWVNDQUxMX0RFRklORTQodGltZXJfc2V0dGltZSwgdGltZXJfdCwgdGltZXJfaWQsIGludCwgZmxhZ3MsXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTYzLVxcdFxcdGNvbnN0IHN0cnVjdCBfX2tlcm5lbF9pdGltZXJzcGVjIF9fdXNlciAqLCBuZXdfc2V0dGluZyxcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk3NS1cXHRydG4gPSBvbGRfc2V0dGluZyA/IFxcdTAwMjZvbGRfc3BlYyA6IE5VTEw7XFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6OTc2OlxcdGVycm9yID0gZG9fdGltZXJfc2V0dGltZSh0aW1lcl9pZCwgZmxhZ3MsIFxcdTAwMjZuZXdfc3BlYywgcnRuKTtcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05NzctXFx0aWYgKCFlcnJvciBcXHUwMDI2XFx1MDAyNiBvbGRfc2V0dGluZykge1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTg0LSNpZmRlZiBDT05GSUdfQ09NUEFUXzMyQklUX1RJTUVcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5ODU6U1lTQ0FMTF9ERUZJTkU0KHRpbWVyX3NldHRpbWUzMiwgdGltZXJfdCwgdGltZXJfaWQsIGludCwgZmxhZ3MsXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTg2LVxcdFxcdHN0cnVjdCBvbGRfaXRpbWVyc3BlYzMyIF9fdXNlciAqLCBuZXcsXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05OTctXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6OTk4OlxcdGVycm9yID0gZG9fdGltZXJfc2V0dGltZSh0aW1lcl9pZCwgZmxhZ3MsIFxcdTAwMjZuZXdfc3BlYywgcnRuKTtcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05OTktXFx0aWYgKCFlcnJvciBcXHUwMDI2XFx1MDAyNiBvbGQpIHtcXG4tLVxcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaD0xOD1jYXQgXFx1MDAzY1xcdTAwM2MgRU9GXFxuLS1cXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2gtMTAwLSNkZWZpbmUgX19JR05PUkVfdGltZXJfZ2V0dGltZTY0XFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoOjEwMTojZGVmaW5lIF9fSUdOT1JFX3RpbWVyX3NldHRpbWU2NFxcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMDItI2RlZmluZSBfX0lHTk9SRV90aW1lcmZkX2dldHRpbWU2NFxcbi0tXFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTEzMy0jZGVmaW5lIF9fSUdOT1JFX3RpbWVyX2dldHRpbWVcXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g6MTM0OiNkZWZpbmUgX19JR05PUkVfdGltZXJfc2V0dGltZVxcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMzUtI2RlZmluZSBfX0lHTk9SRV90aW1lcmZkX2dldHRpbWVcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMTM5LTEwOVxcdGNvbW1vblxcdHRpbWVyX2dldG92ZXJydW5cXHRcXHRzeXNfdGltZXJfZ2V0b3ZlcnJ1blxcbnNjcmlwdHMvc3lzY2FsbC50Ymw6MTQwOjExMFxcdHRpbWUzMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuc2NyaXB0cy9zeXNjYWxsLnRibDoxNDE6MTEwXFx0NjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5zY3JpcHRzL3N5c2NhbGwudGJsLTE0Mi0xMTFcXHRjb21tb25cXHR0aW1lcl9kZWxldGVcXHRcXHRcXHRzeXNfdGltZXJfZGVsZXRlXFxuLS1cXG5zY3JpcHRzL3N5c2NhbGwudGJsLTM1Mi00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuc2NyaXB0cy9zeXNjYWxsLnRibDozNTM6NDA5XFx0MzJcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzU0LTQxMFxcdDMyXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg9MTI0PXRpbWVfdCB0aW1lKHRpbWVfdCAqdHB0cilcXG4tLVxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xMzktICogaW50IHRpbWVyX2dldHRpbWUodGltZXJfdCB0aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqY3Vycl92YWx1ZSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE0MDogKiBpbnQgdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyaWQsIGludCBmbGFncywgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKm5ld192YWx1ZSwgc3RydWN0IGl0aW1lcnNwZWMgKm9sZF92YWx1ZSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE0MS0gKi9cXG4tLVxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaD0xODU9c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpXFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE4NjppbnQgX3N5c190aW1lcl9zZXR0aW1lKHRpbWVyX3QgdGltZXJpZCwgaW50IGZsYWdzLFxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xODctXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpuZXdfdmFsdWUsIHN0cnVjdCBpdGltZXJzcGVjICpvbGRfdmFsdWUpXFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE4OC17XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE4OTojaWYgZGVmaW5lZChfX05SX3RpbWVyX3NldHRpbWU2NClcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMTkwLVxcdF9fbm9saWJjX2Fzc2VydF90aW1lNjRfdHlwZShuZXdfdmFsdWUtXFx1MDAzZWl0X3ZhbHVlLnR2X3NlYyk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE5MTpcXHRyZXR1cm4gX19ub2xpYmNfc3lzY2FsbDQoX19OUl90aW1lcl9zZXR0aW1lNjQsIHRpbWVyaWQsIGZsYWdzLCBuZXdfdmFsdWUsIG9sZF92YWx1ZSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE5Mi0jZWxzZVxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xOTMtXFx0X19ub2xpYmNfYXNzZXJ0X25hdGl2ZV90aW1lNjQoKTtcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MTk0OlxcdHJldHVybiBfX25vbGliY19zeXNjYWxsNChfX05SX3RpbWVyX3NldHRpbWUsIHRpbWVyaWQsIGZsYWdzLCBuZXdfdmFsdWUsIG9sZF92YWx1ZSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE5NS0jZW5kaWZcXG4tLVxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaD0xOTg9c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpXFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE5OTppbnQgdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyaWQsIGludCBmbGFncyxcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMjAwLVxcdFxcdCAgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKm5ld192YWx1ZSwgc3RydWN0IGl0aW1lcnNwZWMgKm9sZF92YWx1ZSlcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMjAxLXtcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MjAyOlxcdHJldHVybiBfX3N5c3JldChfc3lzX3RpbWVyX3NldHRpbWUodGltZXJpZCwgZmxhZ3MsIG5ld192YWx1ZSwgb2xkX3ZhbHVlKSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTIwMy19XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9MzA1PV9fU1lTQ0FMTChfX05SX3RpbWVyX2dldG92ZXJydW4sIHN5c190aW1lcl9nZXRvdmVycnVuKVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTMwNy0jaWYgZGVmaW5lZChfX0FSQ0hfV0FOVF9USU1FMzJfU1lTQ0FMTFMpIHx8IF9fQklUU19QRVJfTE9ORyAhPSAzMlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDozMDg6I2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWUgMTEwXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjMwOTpfX1NDXzMyNjQoX19OUl90aW1lcl9zZXR0aW1lLCBzeXNfdGltZXJfc2V0dGltZTMyLCBzeXNfdGltZXJfc2V0dGltZSlcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtMzEwLSNlbmRpZlxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTcyNj1fX1NZU0NBTEwoX19OUl90aW1lcl9nZXR0aW1lNjQsIHN5c190aW1lcl9nZXR0aW1lKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3Mjc6I2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWU2NCA0MDlcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzI4Ol9fU1lTQ0FMTChfX05SX3RpbWVyX3NldHRpbWU2NCwgc3lzX3RpbWVyX3NldHRpbWUpXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTcyOS0jZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lNjQgNDEwXFxuLS1cXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ1LTQxNFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzQ2OjQxNVxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNDctNDE2XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuLS1cXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3NS0yNTdcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyNzY6MjU4XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3Ny0yNTlcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MjYtNDA4XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQyNzo0MDlcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDI4LTQxMFxcdGNvbW1vblxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3Mi0yNTdcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6MjczOjI1OFxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQyMy00MDhcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MjQ6NDA5XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDI1LTQxMFxcdGNvbW1vblxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTIyNy0yMTZcXHRuNjRcXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsOjIyODoyMTdcXHRuNjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMjI5LTIxOFxcdG42NFxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzktMjUwXFx0Y29tbW9uXFx0dGltZXJfY3JlYXRlXFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyODA6MjUxXFx0MzJcXHR0aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjgxOjI1MVxcdDY0XFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yODItMjUyXFx0MzJcXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTAtNDA4XFx0MzJcXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTE6NDA5XFx0MzJcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTItNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMDYtMjQwXFx0Y29tbW9uXFx0dGltZXJfY3JlYXRlXFx0XFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzA3OjI0MVxcdDMyXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozMDg6MjQxXFx0NjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozMDk6MjQxXFx0c3B1XFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzEwLTI0MlxcdDMyXFx0dGltZXJfZ2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lMzJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMi00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo1MDM6NDA5XFx0MzJcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTA0LTQxMFxcdDMyXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEwLTI1NFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyMTE6MjU1XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEyLTI1NlxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI2OS0yNTlcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjI3MDoyNjBcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzEtMjYxXFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lMzJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTUtNDA4XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDE2OjQwOVxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxNy00MTBcXHRjb21tb25cXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMTgtMjYxXFx0Y29tbW9uXFx0c2NoZWRfc2V0YWZmaW5pdHlcXHRzeXNfc2NoZWRfc2V0YWZmaW5pdHlcXHRcXHRjb21wYXRfc3lzX3NjaGVkX3NldGFmZmluaXR5XFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjMxOToyNjJcXHQzMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjMyMDoyNjJcXHQ2NFxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMjEtMjYzXFx0MzJcXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Ny00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU4OjQwOVxcdDMyXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTktNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcXHRpMzg2XFx0dGltZXJfY3JlYXRlXFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDoyNzU6MjYwXFx0aTM4NlxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzYtMjYxXFx0aTM4NlxcdHRpbWVyX2dldHRpbWVcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxNy00MDhcXHRpMzg2XFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQxODo0MDlcXHRpMzg2XFx0dGltZXJfc2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxOS00MTBcXHRpMzg2XFx0dGltZXJmZF9nZXR0aW1lNjRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTIzNC0yMjJcXHQ2NFxcdHRpbWVyX2NyZWF0ZVxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjIzNToyMjNcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTIzNi0yMjRcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjcwLTI0OVxcdGNvbW1vblxcdHRpbWVyX2RlbGV0ZVxcdFxcdFxcdHN5c190aW1lcl9kZWxldGVcXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjI3MToyNTBcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjcyLTI1MVxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM4Mi00MDhcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzgzOjQwOVxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODQtNDEwXFx0Y29tbW9uXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jPTY3Nzk9dm9pZCBtc3Jfc3VtX3JlY29yZCh2b2lkKVxcbi0tXFxudG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYy02ODEyLVxcbnRvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmM6NjgxMzpcXHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcXHUwMDI2aXRzLCBOVUxMKSA9PSAtMSkge1xcbnRvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmMtNjgxNC1cXHRcXHRmcHJpbnRmKG91dGYsIFxcXCJDYW4gbm90IHNldCB0aW1lci5cXFxcblxcXCIpO1xcbi0tXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0xMzktMTA5XFx0Y29tbW9uXFx0dGltZXJfZ2V0b3ZlcnJ1blxcdFxcdHN5c190aW1lcl9nZXRvdmVycnVuXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDoxNDA6MTEwXFx0dGltZTMyXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjE0MToxMTBcXHQ2NFxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMTQyLTExMVxcdGNvbW1vblxcdHRpbWVyX2RlbGV0ZVxcdFxcdFxcdHN5c190aW1lcl9kZWxldGVcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzUyLTQwOFxcdDMyXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjM1Mzo0MDlcXHQzMlxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0zNTQtNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmM9MTk0PXN0YXRpYyB2b2lkIHdhdGNoZG9nX3RpbWVyX2Z1bmModW5pb24gc2lndmFsIHNpZ3ZhbClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjEyLVxcdFxcdGVudi53YXRjaGRvZ19zdGF0ZSA9IFdEX0tJTEw7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYzoyMTM6XFx0XFx0ZXJyID0gdGltZXJfc2V0dGltZShlbnYud2F0Y2hkb2csIDAsIFxcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jLTIxNC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYz0yMjY9c3RhdGljIHZvaWQgd2F0Y2hkb2dfc3RhcnQodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjM5LVxcdH1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jOjI0MDpcXHRlcnIgPSB0aW1lcl9zZXR0aW1lKGVudi53YXRjaGRvZywgMCwgXFx1MDAyNnRpbWVvdXQsIE5VTEwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjQxLVxcdGlmIChlcnIpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jPTI0NT1zdGF0aWMgdm9pZCB3YXRjaGRvZ19zdG9wKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jLTI1MC1cXHRlbnYud2F0Y2hkb2dfc3RhdGUgPSBXRF9OT1RJRlk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYzoyNTE6XFx0ZXJyID0gdGltZXJfc2V0dGltZShlbnYud2F0Y2hkb2csIDAsIFxcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jLTI1Mi1cXHRpZiAoZXJyKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbm9saWJjL25vbGliYy10ZXN0LmM9MTA5Mz1pbnQgdGVzdF90aW1lcih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbm9saWJjL25vbGliYy10ZXN0LmMtMTEwOC1cXHR9O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25vbGliYy9ub2xpYmMtdGVzdC5jOjExMDk6XFx0cmV0ID0gdGltZXJfc2V0dGltZSh0aW1lciwgMCwgXFx1MDAyNnRpbWVyc3BlYywgTlVMTCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbm9saWJjL25vbGliYy10ZXN0LmMtMTExMC1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZW5zL3RpbWVyLmM9MTg9c3RhdGljIGludCBydW5fdGVzdChpbnQgY2xvY2tpZCwgc3RydWN0IHRpbWVzcGVjIG5vdylcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy90aW1lci5jLTUxLVxcdFxcdFxcdGZsYWdzIHw9IFRJTUVSX0FCU1RJTUU7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZW5zL3RpbWVyLmM6NTI6XFx0XFx0aWYgKHRpbWVyX3NldHRpbWUoZmQsIGZsYWdzLCBcXHUwMDI2bmV3X3ZhbHVlLCBOVUxMKSA9PSAtMSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lbnMvdGltZXIuYy01My1cXHRcXHRcXHRyZXR1cm4gcHJfcGVycm9yKFxcXCJ0aW1lcmZkX3NldHRpbWVcXFwiKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYz0xMDU9aW50IG1haW4odm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYy0xNDQtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2FsYXJtdGltZXItc3VzcGVuZC5jOjE0NTpcXHRcXHR0aW1lcl9zZXR0aW1lKHRtMSwgVElNRVJfQUJTVElNRSwgXFx1MDAyNml0czEsIFxcdTAwMjZpdHMyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvYWxhcm10aW1lci1zdXNwZW5kLmMtMTQ2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2xlYXAtYS1kYXkuYz0xNzU9aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2xlYXAtYS1kYXkuYy0zMDMtXFx0XFx0aXRzMS5pdF9pbnRlcnZhbC50dl9uc2VjID0gMDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbGVhcC1hLWRheS5jOjMwNDpcXHRcXHR0aW1lcl9zZXR0aW1lKHRtMSwgVElNRVJfQUJTVElNRSwgXFx1MDAyNml0czEsIE5VTEwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9sZWFwLWEtZGF5LmMtMzA1LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL25hbm9zbGVlcC5jPTEyND1zdGF0aWMgaW50IG5hbm9zbGVlcF90ZXN0X3JlbWFpbmluZyhpbnQgY2xvY2tpZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYy0xNDEtXFx0aXRpbWVyLml0X3ZhbHVlLnR2X25zZWMgPSBOU0VDX1BFUl9TRUMgLyA0O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYzoxNDI6XFx0cmV0ID0gdGltZXJfc2V0dGltZSh0aW1lciwgMCwgXFx1MDAyNml0aW1lciwgTlVMTCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL25hbm9zbGVlcC5jLTE0My1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jPTE0ND1zdGF0aWMgdm9pZCBjaGVja190aW1lcl9jcmVhdGUoaW50IHdoaWNoLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTE2My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6MTY0OlxcdGlmICh0aW1lcl9zZXR0aW1lKGlkLCAwLCBcXHUwMDI2dmFsLCBOVUxMKSBcXHUwMDNjIDApXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjE2NTpcXHRcXHRmYXRhbF9lcnJvcihuYW1lLCBcXFwidGltZXJfc2V0dGltZSgpXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTE2Ni1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz0xODY9c3RhdGljIHZvaWQgKmN0ZF90aHJlYWRfZnVuYyh2b2lkICphcmcpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMjAxLVxcdFxcdGZhdGFsX2Vycm9yKE5VTEwsIFxcXCJ0aW1lcl9jcmVhdGUoKVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzoyMDI6XFx0aWYgKHRpbWVyX3NldHRpbWUoaWQsIDAsIFxcdTAwMjZ2YWwsIE5VTEwpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzoyMDM6XFx0XFx0ZmF0YWxfZXJyb3IoTlVMTCwgXFxcInRpbWVyX3NldHRpbWUoKVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0yMDQtXFx0d2hpbGUgKGN0ZF9jb3VudCBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgIWN0ZF9mYWlsZWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM9MjY4PXN0YXRpYyB2b2lkIGNoZWNrX3NpZ19pZ24oaW50IHRocmVhZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zMTMtXFx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAxMDAwMDAwMDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjMxNDpcXHR0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFxcdTAwMjZpdHMsIE5VTEwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zMTUtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM9MzU0PXN0YXRpYyB2b2lkIGNoZWNrX3JlYXJtKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzg2LVxcdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozODc6XFx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXFx1MDAyNml0cywgTlVMTCkpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjM4ODpcXHRcXHRmYXRhbF9lcnJvcihOVUxMLCBcXFwidGltZXJfc2V0dGltZSgpXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTM4OS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zOTYtXFx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozOTc6XFx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXFx1MDAyNml0cywgTlVMTCkpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjM5ODpcXHRcXHRmYXRhbF9lcnJvcihOVUxMLCBcXFwidGltZXJfc2V0dGltZSgpXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTM5OS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz00MTA9c3RhdGljIHZvaWQgY2hlY2tfZGVsZXRlKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNDQyLVxcdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzo0NDM6XFx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXFx1MDAyNml0cywgTlVMTCkpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjQ0NDpcXHRcXHRmYXRhbF9lcnJvcihOVUxMLCBcXFwidGltZXJfc2V0dGltZSgpXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTQ0NS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz00NTg9c3RhdGljIHZvaWQgY2hlY2tfc2lnZXZfbm9uZShpbnQgd2hpY2gsIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNDc1LVxcdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzo0NzY6XFx0dGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcXHUwMDI2aXRzLCBOVUxMKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNDc3LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jPTQ5Nj1zdGF0aWMgdm9pZCBjaGVja19nZXR0aW1lKGludCB3aGljaCwgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy01MjItXFx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAxMDAwMDAwMDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjUyMzpcXHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcXHUwMDI2aXRzLCBOVUxMKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6NTI0OlxcdFxcdGZhdGFsX2Vycm9yKG5hbWUsIFxcXCJ0aW1lcl9zZXR0aW1lKClcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNTI1LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jPTU0OT1zdGF0aWMgdm9pZCBjaGVja19vdmVycnVuKGludCB3aGljaCwgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy01ODItXFx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAxMDAwMDAwMDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjU4MzpcXHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcXHUwMDI2aXRzLCBOVUxMKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6NTg0OlxcdFxcdGZhdGFsX2Vycm9yKG5hbWUsIFxcXCJ0aW1lcl9zZXR0aW1lKClcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNTg1LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYz0xMTE9aW50IHNldHVwX3RpbWVyKGludCBjbG9ja19pZCwgaW50IGZsYWdzLCBpbnQgaW50ZXJ2YWwsIHRpbWVyX3QgKnRtMSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmMtMTUxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmM6MTUyOlxcdGVyciA9IHRpbWVyX3NldHRpbWUoKnRtMSwgZmxhZ3MsIFxcdTAwMjZpdHMxLCBcXHUwMDI2aXRzMik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYy0xNTMtXFx0aWYgKGVycikge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmM6MTU0OlxcdFxcdHByaW50ZihcXFwiJXMgLSB0aW1lcl9zZXR0aW1lKCkgZmFpbGVkXFxcXG5cXFwiLCBjbG9ja3N0cmluZyhjbG9ja19pZCkpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmMtMTU1LVxcdFxcdHJldHVybiAtMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MjEuNzA0MjExMTM0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTc3OTg5OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcncyBDb250ZXh0KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMgYnVnLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYHN5c190aW1lcl9zZXR0aW1lYCBsb29rZWQgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGEgcG90ZW50aWFsIGZvY3VzIHN5bWJvbCwgYnV0IHRoZW4gSSByZW1lbWJlcmVkIFN5emthbGxlciBpcyBhbHJlYWR5IGhpdHRpbmcgc3lzY2FsbHMuIFNvLCBzY3JhdGNoIHRoYXQuIEJ1dCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWRgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGZyb20gYGJlZ2luX25ld19leGVjYC4gQW5kLCB0aGUgYnVnIGlzIGFib3V0IFBPU0lYIENQVSB0aW1lcnMgYW5kIGBleGVjdmVgLiBBaGEhIGBiZWdpbl9uZXdfZXhlY2AgaXMgbG9va2luZyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBob25lIGluIG9uLlxuXG5XYWl0IGEgc2Vjb25kLCBgYmVnaW5fbmV3X2V4ZWNgIGFjdHVhbGx5IGNhbGxzIGludG8gYGV4ZWNfYmlucHJtYCB3aGljaCBpbiB0dXJuIGNhbGxzIGludG8gYGJwcm1fZXhlY3ZlYC4gSXMgYGJlZ2luX25ld19leGVjYCAqc3RpbGwqIGEgZ29vZCBmb2N1cz8gWWVzLCBpdCBpcywgYmVjYXVzZSBpdCdzIHRoZSBoZWFydCBvZiBgZXhlY3ZlYCwgdGhlIHRyYW5zaXRpb24uIEFuZCBub3csIEkgdGhpbmsgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgaXMgYW5vdGhlciBjcnVjaWFsIHNwb3QuIEl0J3MgY2FsbGVkIGluc2lkZSBgZGVfdGhyZWFkYCwgYWZ0ZXIgYWxsLiBBcmUgdGhlcmUgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIEknbSBtaXNzaW5nPyBUaGVyZSBhcmUgdHdvLCBgZXhjaGFuZ2VfdGlkc2AgYW5kIGB0aW1lcl9sb2NrX3NpZ2hhbmRgLCBidXQgdGhleSBhcmUgc3RhdGljLCBzbyBtYXliZSBub3QuXG5cbkkgc2hvdWxkIGNoZWNrIHRoZSBgQ09ORklHX1BPU0lYX1RJTUVSU2Agb3B0aW9uLCB0byBjb25maXJtIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhY3RpdmUuIExldCdzIHNlZSBpZiBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIEknbGwgbG9vayB0aGF0IHVwIGluIGBpbml0L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQ1MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NToyNy42MDIwMTM1ODlaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluaXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzYwOlxcdFxcbjE3NjE6XFx0Y29uZmlnIFBPU0lYX1RJTUVSU1xcbjE3NjI6XFx0XFx0Ym9vbCBcXFwiUG9zaXggQ2xvY2tzIFxcdTAwMjYgdGltZXJzXFxcIiBpZiBFWFBFUlRcXG4xNzYzOlxcdFxcdGRlZmF1bHQgeVxcbjE3NjQ6XFx0XFx0aGVscFxcbjE3NjU6XFx0XFx0ICBUaGlzIGluY2x1ZGVzIG5hdGl2ZSBzdXBwb3J0IGZvciBQT1NJWCB0aW1lcnMgdG8gdGhlIGtlcm5lbC5cXG4xNzY2OlxcdFxcdCAgU29tZSBlbWJlZGRlZCBzeXN0ZW1zIGhhdmUgbm8gdXNlIGZvciB0aGVtIGFuZCB0aGVyZWZvcmUgdGhleVxcbjE3Njc6XFx0XFx0ICBjYW4gYmUgY29uZmlndXJlZCBvdXQgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBrZXJuZWwgaW1hZ2UuXFxuMTc2ODpcXHRcXG4xNzY5OlxcdFxcdCAgV2hlbiB0aGlzIG9wdGlvbiBpcyBkaXNhYmxlZCwgdGhlIGZvbGxvd2luZyBzeXNjYWxscyB3b24ndCBiZVxcbjE3NzA6XFx0XFx0ICBhdmFpbGFibGU6IHRpbWVyX2NyZWF0ZSwgdGltZXJfZ2V0dGltZTogdGltZXJfZ2V0b3ZlcnJ1bixcXG4xNzcxOlxcdFxcdCAgdGltZXJfc2V0dGltZSwgdGltZXJfZGVsZXRlLCBjbG9ja19hZGp0aW1lLCBnZXRpdGltZXIsXFxuMTc3MjpcXHRcXHQgIHNldGl0aW1lciwgYWxhcm0uIEZ1cnRoZXJtb3JlLCB0aGUgY2xvY2tfc2V0dGltZSwgY2xvY2tfZ2V0dGltZSxcXG4xNzczOlxcdFxcdCAgY2xvY2tfZ2V0cmVzIGFuZCBjbG9ja19uYW5vc2xlZXAgc3lzY2FsbHMgd2lsbCBiZSBsaW1pdGVkIHRvXFxuMTc3NDpcXHRcXHQgIENMT0NLX1JFQUxUSU1FLCBDTE9DS19NT05PVE9OSUMgYW5kIENMT0NLX0JPT1RUSU1FIG9ubHkuXFxuMTc3NTpcXHRcXG4xNzc2OlxcdFxcdCAgSWYgdW5zdXJlIHNheSB5LlxcbjE3Nzc6XFx0XFxuMTc3ODpcXHRjb25maWcgUFJJTlRLXFxuMTc3OTpcXHRcXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MjcuNjAyMTM3MTM5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MjA1MzI0MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBPU0lYIFRpbWVycyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBgQ09ORklHX1BPU0lYX1RJTUVSU2Agb3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGl0J3MgaW1wb3J0YW50IGVub3VnaCB0aGF0IHdlIG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIGl0IGluIGBFbmFibGVDb25maWdzYC4gTGV0J3MgZ2V0IHRoaXMgb3JnYW5pemVkOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogQWJzb2x1dGVseSwgdGhpcyBwYXRjaCBpcyBhIGdvb2QgY2FuZGlkYXRlLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBiZWdpbl9uZXdfZXhlY2AgYW5kIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBKdXN0IGBQT1NJWF9USU1FUlNgLiBOb3RoaW5nIGVsc2UgaXMgbmVlZGVkLlxuXG5UaGUgY29yZSBvZiBpdCBpcyB0aGlzOiBUaGUgcGF0Y2ggY29ycmVjdHMgYSBmbGF3IGluIGBkZV90aHJlYWRgLiAgU3BlY2lmaWNhbGx5LCBQT1NJWCBDUFUgdGltZXJzIHdlcmUgZ2V0dGluZyBtaXNzZWQgZHVyaW5nIHRoZSBQSUQgaGFuZG9mZiB3aXRoaW4gYGV4Y2hhbmdlX3RpZHMoKWAgd2hpY2ggd291bGQgbGVhZCB0byBhIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggc2ltcGx5IGFkZHMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2l0aGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgaGFwcGVuaW5nIGR1cmluZyB0aGUgYGV4ZWN2ZWAgcGF0aCwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBiZWNhdXNlIGFueSBpc3N1ZSBpbiB0aGUgYGV4ZWN2ZWAgcGF0aCBoYXMgd2lkZXNwcmVhZCBpbXBhY3QuXG5cbkkgbmVlZGVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIHdhcyBhY3R1YWxseSBleHBvcnRlZCwgYW5kIGl0IGlzLCBpdCdzIGdsb2JhbCB3aXRoaW4gYGtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuY2AuIFNpbWlsYXJseSwgYGJlZ2luX25ld19leGVjYCBpcyBnbG9iYWwgaW4gYGZzL2V4ZWMuY2AuXG5cbkkgZG91YmxlIGNoZWNrZWQgdGhhdCBgUE9TSVhfVElNRVJTYCB3YXMgdGhlIG9ubHkgcmVxdWlyZWQgY29uZmlnIOKAkyBjb25maXJtZWQgaXQncyB1c2VkIGluIGFuIGAjaWZkZWZgIGFuZCBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLiBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzM5MCwiT3V0cHV0VG9rZW5zIjoxNTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NTozMy41MjI2NzI2ODNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTMwNTE3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUE9TSVhfVElNRVJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmVnaW5fbmV3X2V4ZWNcIixcbiAgICBcInBvc2l4X2NwdV90aW1lcnNfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBkZV90aHJlYWRgIHdoZXJlIFBPU0lYIENQVSB0aW1lcnMgYXJlIG5vdCBwcm9wZXJseSBkZXF1ZXVlZCBiZWZvcmUgYGV4Y2hhbmdlX3RpZHMoKWAgaGFuZHMgdGhlIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggY2FuIGNhdXNlIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggYWRkcyBhIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBpbiBgZGVfdGhyZWFkKClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsIChleGVjdmUgcGF0aCkgYW5kIGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUE9TSVhfVElNRVJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmVnaW5fbmV3X2V4ZWNcIixcbiAgICBcInBvc2l4X2NwdV90aW1lcnNfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBkZV90aHJlYWRgIHdoZXJlIFBPU0lYIENQVSB0aW1lcnMgYXJlIG5vdCBwcm9wZXJseSBkZXF1ZXVlZCBiZWZvcmUgYGV4Y2hhbmdlX3RpZHMoKWAgaGFuZHMgdGhlIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggY2FuIGNhdXNlIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggYWRkcyBhIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBpbiBgZGVfdGhyZWFkKClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsIChleGVjdmUgcGF0aCkgYW5kIGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU1OjMzLjU5MTk4NDY4OFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxODExMTc2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU1OjMzLjU5MjQ0NDY5OFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2NTE3NjQ4NTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgZHVyaW5nIHRocmVhZCBncm91cCBsZWFkZXJzaGlwIGNoYW5nZXMgKGRlX3RocmVhZCkuIEl0IGRlcXVldWVzIHRoZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYmVmb3JlIHRoZSB0aHJlYWQncyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLiBUaGlzIHByZXZlbnRzIGlzc3VlcyB3aGVyZSB0aGUgdGltZXIgc3Vic3lzdGVtIG1pZ2h0IGZhaWwgdG8gbG9vayB1cCB0aGUgUElEIG9yIGFjY2VzcyBmcmVlZC9pbnZhbGlkIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIGludm9sdmUgbG9ja2luZyBhbmQgdGltZXIgbWFuYWdlbWVudCwgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvZ2ljIGJ1Z3MuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3N2VjMGJkYWMzNmE0NDUxMmEwMGM2NGZmNDkxYTZkOWZhOWMzNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDAyOjU0OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jXG5pbmRleCBjN2I4ZjJkNjM2NmM0Li5mODBmNzBlMWMyNmRlIDEwMDY0NFxuLS0tIGEvZnMvZXhlYy5jXG4rKysgYi9mcy9leGVjLmNcbkBAIC0xMDAwLDYgKzEwMDAsMTggQEAgc3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4gXHRcdCAqIHRoZSBmb3JtZXIgdGhyZWFkIGdyb3VwIGxlYWRlcjpcbiBcdFx0ICovXG4gXG4rI2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcbitcdFx0LypcbitcdFx0ICogZXhjaGFuZ2VfdGlkcygpIGhhbmRzIHRoaXMgdGhyZWFkJ3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLFxuK1x0XHQgKiB3aGljaCBpcyByZWFwZWQgcmlnaHQgYWZ0ZXIuIFRoZSBQSUQgbG9va3VwIGluXG4rXHRcdCAqIHRpbWVyX2xvY2tfc2lnaGFuZCgpIHRoZW4gZmFpbHMgd2hpbGUgdGhlIHBlciB0aHJlYWQgQ1BVXG4rXHRcdCAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC5cbitcdFx0ICovXG4rXHRcdHNwaW5fbG9jayhsb2NrKTtcbitcdFx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG4rXHRcdHNwaW5fdW5sb2NrKGxvY2spO1xuKyNlbmRpZlxuK1xuIFx0XHQvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJ3MgcGlkLlxuIFx0XHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cbiBcdFx0ICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NTozMy41OTI0NDU3MThaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUxNzYzMDk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBPU0lYIFRpbWVyIEZpeCBpbiBgZnMvZXhlYy5jYCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZzL2V4ZWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRlX3RocmVhZGAgZnVuY3Rpb24sIGFuZCBpdCdzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfUE9TSVhfVElNRVJTYCBiZWluZyBlbmFibGVkLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQncyBkZWFsaW5nIHdpdGggUE9TSVggdGltZXJzLCB3aGljaCBpcyBhIGtleSBpbmRpY2F0b3Igb2Ygd2hlcmUgdGhpcyBwYXRjaCdzIGZvY3VzIGxpZXMuXG5cblRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2stcHJvdGVjdGVkIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYC4gVGhlIGNvbW1lbnQgaXMgdGhlIGNydWNpYWwgcGllY2UgaGVyZTogaXQgaGlnaGxpZ2h0cyB0aGUgcHJvYmxlbSBiZWluZyBhZGRyZXNzZWQuIEl0IHNlZW1zIGBleGNoYW5nZV90aWRzKClgIGlzIHRyYW5zZmVycmluZyB0aGUgdGhyZWFkJ3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBpcyBzdWJzZXF1ZW50bHkgcmVhcGVkLiBUaGUgY3JpdGljYWwgdGltaW5nIGlzc3VlIGlzIHRoYXQgdGhlIFBJRCBsb29rdXAgd2l0aGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgKndoaWxlKiB0aGUgdGhyZWFkJ3MgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLCBtZWFuaW5nIHRoZXJlJ3MgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBhIHRpbWVyIG1pZ2h0IGZpcmUgYWZ0ZXIgdGhlIHRocmVhZCdzIGRhdGEgaXMgYWxyZWFkeSBmcmVlZC4gVGhhdCBwb2ludHMgdG8gdGhpcyBiZWluZyByZWxhdGVkIHRvIGEgbGlrZWx5IHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYSBsb2NraW5nIGlzc3VlIHJlbGF0ZWQgdG8gdGltaW5nLCBvciBhIHRpbWVyIGZpcmluZyBhZnRlciB0aGUgdGhyZWFkIGhhcyBleGl0ZWQuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB0aHJlYWQgcmVhcGluZyBhbmQgdGltZXIgZXhlY3V0aW9uLCBhbmQgdGhlIHBhdGNoIGlzIGF0dGVtcHRpbmcgdG8gZW5zdXJlIHRoYXQgdGhlIHRpbWVycyBhcmUgZGVxdWV1ZWQgYmVmb3JlIHRoZSB0aHJlYWQncyBQSUQgaXMgcmVhc3NpZ25lZCBhbmQgaXRzIHJlc291cmNlcyBjYW4gYmUgZnJlZWQuIFRoZSBsaWtlbHkgc2NlbmFyaW8gaXMgdGhlIHRpbWVyIHRyaWVzIHRvIGRlcmVmZXJlbmNlIG1lbW9yeSBhZnRlciB0aGUgdGhyZWFkIGhhcyBleGl0ZWQsIGxpa2VseSBjYXVzaW5nIGEga2VybmVsIHBhbmljIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhpcyBwYXRjaCBpcyBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHdoaWNoIGlzIGdvb2QuIEtBU0FOLCBLQ1NBTiwgb3IgbG9ja2RlcCB3b3VsZCBoYXZlIHByb2JhYmx5IGNhdWdodCBhbnkgcHJvYmxlbXMsIG9yIGl0IGNvdWxkIGJlIGEgbG9naWMgYnVnIGFuZCBhIHRvb2wgd2Fzbid0IG5lZWRlZCB0byBmaXggaXQuIFdlIGRvbid0IHNlZSBhbnkgbmV3IG1lbW9yeSBiZWluZyBleHBvc2VkLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIHRvIHZlcmlmeSBpdCdzIGp1c3QgZGVxdWV1aW5nIHRpbWVycy4gSXQgZG9lc24ndCBpbnRyb2R1Y2Ugb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuU28sIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGJlY2F1c2UgaXQgYXBwZWFycyB0byBiZSBhIGxvZ2ljIGJ1ZyB3aXRoIHRpbWluZyBhbmQgbG9ja2luZywgbm90IGEgbWVtb3J5IHNhZmV0eSBpc3N1ZSB0aGF0IEtNU0FOIHdvdWxkIHRhcmdldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1MiwiT3V0cHV0VG9rZW5zIjoxNjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NTo0MC4xMTAwNzg5MVoiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgcmVsYXRlZCB0byBQT1NJWCBDUFUgdGltZXJzIGR1cmluZyB0aHJlYWQgZ3JvdXAgbGVhZGVyc2hpcCBjaGFuZ2VzIChkZV90aHJlYWQpLiBJdCBkZXF1ZXVlcyB0aGUgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJlZm9yZSB0aGUgdGhyZWFkJ3MgUElEIGlzIGhhbmRlZCB0byB0aGUgb2xkIGxlYWRlci4gVGhpcyBwcmV2ZW50cyBpc3N1ZXMgd2hlcmUgdGhlIHRpbWVyIHN1YnN5c3RlbSBtaWdodCBmYWlsIHRvIGxvb2sgdXAgdGhlIFBJRCBvciBhY2Nlc3MgZnJlZWQvaW52YWxpZCBzdHJ1Y3R1cmVzLiBUaGUgY2hhbmdlcyBpbnZvbHZlIGxvY2tpbmcgYW5kIHRpbWVyIG1hbmFnZW1lbnQsIHdoaWNoIGFyZSByZWxhdGVkIHRvIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBsb2dpYyBidWdzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgZHVyaW5nIHRocmVhZCBncm91cCBsZWFkZXJzaGlwIGNoYW5nZXMgKGRlX3RocmVhZCkuIEl0IGRlcXVldWVzIHRoZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYmVmb3JlIHRoZSB0aHJlYWQncyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLiBUaGlzIHByZXZlbnRzIGlzc3VlcyB3aGVyZSB0aGUgdGltZXIgc3Vic3lzdGVtIG1pZ2h0IGZhaWwgdG8gbG9vayB1cCB0aGUgUElEIG9yIGFjY2VzcyBmcmVlZC9pbnZhbGlkIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIGludm9sdmUgbG9ja2luZyBhbmQgdGltZXIgbWFuYWdlbWVudCwgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvZ2ljIGJ1Z3MuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-09 02:13:22 +0000 UTC FinishedAt: 2026-08-09 02:55:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e0ffd277b09a7c9f1a436e5f75be37ac490bc59f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "POSIX_TIMERS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "e0ffd277b09a7c9f1a436e5f75be37ac490bc59f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "POSIX_TIMERS" ], "series_id": "b65bb201-b16f-47ed-ab44-c55a41a83d80" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "begin_new_exec", "posix_cpu_timers_exit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JlZ2luX25ld19leGVjJiMzNDssCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gUE9TSVggQ1BVIHRpbWVycyBkdXJpbmcgdGhyZWFkIGdyb3VwIGxlYWRlcnNoaXAgY2hhbmdlcyAoZGVfdGhyZWFkKS4gSXQgZGVxdWV1ZXMgdGhlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBiZWZvcmUgdGhlIHRocmVhZCYjMzk7cyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLiBUaGlzIHByZXZlbnRzIGlzc3VlcyB3aGVyZSB0aGUgdGltZXIgc3Vic3lzdGVtIG1pZ2h0IGZhaWwgdG8gbG9vayB1cCB0aGUgUElEIG9yIGFjY2VzcyBmcmVlZC9pbnZhbGlkIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIGludm9sdmUgbG9ja2luZyBhbmQgdGltZXIgbWFuYWdlbWVudCwgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvZ2ljIGJ1Z3MuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgZGVfdGhyZWFkYCB3aGVyZSBQT1NJWCBDUFUgdGltZXJzIGFyZSBub3QgcHJvcGVybHkgZGVxdWV1ZWQgYmVmb3JlIGBleGNoYW5nZV90aWRzKClgIGhhbmRzIHRoZSB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBjYW4gY2F1c2UgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYC4gVGhlIGZpeCBhZGRzIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwgKGV4ZWN2ZSBwYXRoKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc3N2VjMGJkYWMzNmE0NDUxMmEwMGM2NGZmNDkxYTZkOWZhOWMzNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDAyOjU0OjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xuaW5kZXggYzdiOGYyZDYzNjZjNC4uZjgwZjcwZTFjMjZkZSAxMDA2NDRcbi0tLSBhL2ZzL2V4ZWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jXG5AQCAtMTAwMCw2ICYjNDM7MTAwMCwxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbiBcdFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxuIFx0XHQgKi9cbiBcbiYjNDM7I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLFxuJiM0MztcdFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxuJiM0MztcdFx0ICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFVcbiYjNDM7XHRcdCAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC5cbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0c3Bpbl9sb2NrKGxvY2spO1xuJiM0MztcdFx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG4mIzQzO1x0XHRzcGluX3VubG9jayhsb2NrKTtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuIFx0XHQvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJiMzOTtzIHBpZC5cbiBcdFx0ICogVGhlIG9sZCBsZWFkZXIgYmVjb21lcyBhIHRocmVhZCBvZiB0aGUgdGhpcyB0aHJlYWQgZ3JvdXAuXG4gXHRcdCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQT1NJWF9USU1FUlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7LAogICAgJiMzNDtwb3NpeF9jcHVfdGltZXJzX2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYGRlX3RocmVhZGAgd2hlcmUgUE9TSVggQ1BVIHRpbWVycyBhcmUgbm90IHByb3Blcmx5IGRlcXVldWVkIGJlZm9yZSBgZXhjaGFuZ2VfdGlkcygpYCBoYW5kcyB0aGUgdGhyZWFkJiMzOTtzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggY2FuIGNhdXNlIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggYWRkcyBhIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBpbiBgZGVfdGhyZWFkKClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsIChleGVjdmUgcGF0aCkgYW5kIGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3NzdlYzBiZGFjMzZhNDQ1MTJhMDBjNjRmZjQ5MWE2ZDlmYTljMzQyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAwMjo1NDoxNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuYwppbmRleCBjN2I4ZjJkNjM2NmM0Li5mODBmNzBlMWMyNmRlIDEwMDY0NAotLS0gYS9mcy9leGVjLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXhlYy5jCkBAIC0xMDAwLDYgJiM0MzsxMDAwLDE4IEBAIHN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQogCQkgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6CiAJCSAqLwogCiYjNDM7I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlMKJiM0MzsJCS8qCiYjNDM7CQkgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLAomIzQzOwkJICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpbgomIzQzOwkJICogdGltZXJfbG9ja19zaWdoYW5kKCkgdGhlbiBmYWlscyB3aGlsZSB0aGUgcGVyIHRocmVhZCBDUFUKJiM0MzsJCSAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC4KJiM0MzsJCSAqLwomIzQzOwkJc3Bpbl9sb2NrKGxvY2spOwomIzQzOwkJcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7CiYjNDM7CQlzcGluX3VubG9jayhsb2NrKTsKJiM0MzsjZW5kaWYKJiM0MzsKIAkJLyogQmVjb21lIGEgcHJvY2VzcyBncm91cCBsZWFkZXIgd2l0aCB0aGUgb2xkIGxlYWRlciYjMzk7cyBwaWQuCiAJCSAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLgogCQkgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEZvY3VzIG9uIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggaW4gYGZzL2V4ZWMuY2AgdGhhdOKAmXMgYWx0ZXJpbmcgYGRlX3RocmVhZCgpYC4gRnJvbSB3aGF0IEkgc2VlLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgY2FsbCAqd2l0aGluKiBgZGVfdGhyZWFkKClgIOKAkyBidXQgb25seSBpZiBgQ09ORklHX1BPU0lYX1RJTUVSU2AgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGlzIGlzIHRvdWNoaW5nIHRoZSBjb3JlIGtlcm5lbCBleGVjdXRpb24gcGF0aCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBub24tbGVhZGVyIHRocmVhZCBpcyBjYWxsaW5nIGBleGVjdmVgIGFuZCBkZXRhY2hpbmcgZnJvbSB0aGUgdGhyZWFkIGdyb3VwLiBGdW5jdGlvbmFsbHksIGl0JiMzOTtzIG1ha2luZyBhIGNoYW5nZSByaWdodCB0aGVyZSwgc28gbXkgaW5pdGlhbCBpbnN0aW5jdCBpczogKipkZWZpbml0ZWx5Kiogd29ydGggZnV6emluZy4gVGhlIGludGVycGxheSBvZiBQT1NJWCB0aW1lcnMgd2l0aCB0aGUgYGV4ZWN2ZWAgcGF0aCBjb3VsZCBiZSBhIHJpY2ggc291cmNlIG9mIGludGVyZXN0aW5nIGJlaGF2aW9yLgoKTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biBhIGJpdC4gV2hhdCYjMzk7cyB0aGUgY29udGV4dCBoZXJlPyBMZXQgbWUgY2hlY2sgYGZzL2V4ZWMuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCAmIzM0O2xvY2smIzM0OyBpcy4gQWgsIGdvb2QuIEl0JiMzOTtzIHVzaW5nIGBzcGluX2xvY2sobG9jayk7YCBhbmQgYHNwaW5fdW5sb2NrKGxvY2spO2AsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IHNwaW5sb2Nrcy4gSSBzaG91bGQgY2hlY2sgbGluZSAxMDAwIGluIGBmcy9leGVjLmNgIGFuZCB0aGUgbGluZXMgYXJvdW5kIGl0IGp1c3QgdG8gZ2V0IGEgZnVsbGVyIHBpY3R1cmUgb2YgdGhlIGxvY2smIzM5O3Mgc2NvcGUgYW5kIHRoZSBwcm90ZWN0ZWQgZGF0YSBzdHJ1Y3R1cmVzLiBTcGlubG9ja3Mgd2l0aGluIGBkZV90aHJlYWRgLi4uIHRoaXMgY291bGQgaW50cm9kdWNlIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgb3IgcmFjZSBjb25kaXRpb25zIHRoYXQgZnV6emluZyBtaWdodCBleHBvc2UuIEdvdHRhIGxvb2sgYXQgdGhlIGJpZ2dlciBwaWN0dXJlIGFuZCBob3cgYWxsIHRoZXNlIHB1enpsZSBwaWVjZXMgZml0IHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvZXhlYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5OTA6XHRcdFx0ICogYWxzbyB0YWtlIGl0cyBiaXJ0aGRhdGUgKGFsd2F5cyBlYXJsaWVyIHRoYW4gb3VyIG93bikuXG4gOTkxOlx0XHRcdCAqL1xuIDk5MjpcdFx0XHR0c2stXHUwMDNlc3RhcnRfdGltZSA9IGxlYWRlci1cdTAwM2VzdGFydF90aW1lO1xuIDk5MzpcdFx0XHR0c2stXHUwMDNlc3RhcnRfYm9vdHRpbWUgPSBsZWFkZXItXHUwMDNlc3RhcnRfYm9vdHRpbWU7XG4gOTk0Olx0XG4gOTk1Olx0XHRcdEJVR19PTighc2FtZV90aHJlYWRfZ3JvdXAobGVhZGVyLCB0c2spKTtcbiA5OTY6XHRcdFx0LypcbiA5OTc6XHRcdFx0ICogQW4gZXhlYygpIHN0YXJ0cyBhIG5ldyB0aHJlYWQgZ3JvdXAgd2l0aCB0aGVcbiA5OTg6XHRcdFx0ICogVEdJRCBvZiB0aGUgcHJldmlvdXMgdGhyZWFkIGdyb3VwLiBSZWhhc2ggdGhlXG4gOTk5Olx0XHRcdCAqIHR3byB0aHJlYWRzIHdpdGggYSBzd2l0Y2hlZCBQSUQsIGFuZCByZWxlYXNlXG4xMDAwOlx0XHRcdCAqIHRoZSBmb3JtZXIgdGhyZWFkIGdyb3VwIGxlYWRlcjpcbjEwMDE6XHRcdFx0ICovXG4xMDAyOlx0XG4xMDAzOlx0I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcbjEwMDQ6XHRcdFx0LypcbjEwMDU6XHRcdFx0ICogZXhjaGFuZ2VfdGlkcygpIGhhbmRzIHRoaXMgdGhyZWFkJiMzOTtzIFBJRCB0byB0aGUgb2xkIGxlYWRlcixcbjEwMDY6XHRcdFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxuMTAwNzpcdFx0XHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxuMTAwODpcdFx0XHQgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuXG4xMDA5Olx0XHRcdCAqL1xuMTAxMDpcdFx0XHRzcGluX2xvY2sobG9jayk7XG4xMDExOlx0XHRcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xuMTAxMjpcdFx0XHRzcGluX3VubG9jayhsb2NrKTtcbjEwMTM6XHQjZW5kaWZcbjEwMTQ6XHRcbjEwMTU6XHRcdFx0LyogQmVjb21lIGEgcHJvY2VzcyBncm91cCBsZWFkZXIgd2l0aCB0aGUgb2xkIGxlYWRlciYjMzk7cyBwaWQuXG4xMDE2Olx0XHRcdCAqIFRoZSBvbGQgbGVhZGVyIGJlY29tZXMgYSB0aHJlYWQgb2YgdGhlIHRoaXMgdGhyZWFkIGdyb3VwLlxuMTAxNzpcdFx0XHQgKi9cbjEwMTg6XHRcdFx0ZXhjaGFuZ2VfdGlkcyh0c2ssIGxlYWRlcik7XG4xMDE5Olx0XHRcdHRyYW5zZmVyX3BpZChsZWFkZXIsIHRzaywgUElEVFlQRV9UR0lEKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDM2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEZWNvbnN0cnVjdGluZyBgZGVfdGhyZWFkYCoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgYGRlX3RocmVhZGAsIGFuZCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBsb2NraW5nIG1lY2hhbmlzbS4gQmFzZWQgb24gdGhlIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGlzIGNvZGViYXNlLCB0aGF0IGBsb2NrYCB2YXJpYWJsZSBpcyBhbG1vc3QgY2VydGFpbmx5IGEgc3BpbmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzaWduYWwgaGFuZGxpbmcgc3RydWN0dXJlLiBQcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgJmFtcDtzaWdoYW5kLSZndDtzaWdsb2NrYCwgbWF5YmUgYSBuZXN0ZWQgbWVtYmVyIHdpdGhpbiBhIGxhcmdlciBzdHJ1Y3R1cmUuIEdvdHRhIGJlIGNhcmVmdWwgd2l0aCB0aGlzLCB0aG91Z2g7IHNpZ25hbCBoYW5kbGluZyBpcyBhIG1pbmVmaWVsZC4gSSYjMzk7bGwgcXVpY2tseSBjb25maXJtIGV4YWN0bHkgd2hpY2ggbG9jayBpdCBpcy4gR290dGEgZW5zdXJlIHdlJiMzOTtyZSB1c2luZyB0aGUgY29ycmVjdCBvbmUsIGFuZCBub3QgYWNjaWRlbnRhbGx5IGdyYWJiaW5nIHRoZSB3cm9uZyBsb2NrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvZXhlYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5NzA6XHRcdFx0XHQgKi9cbiA5NzE6XHRcdFx0XHRzaWctXHUwMDNlbm90aWZ5X2NvdW50ID0gLTE7XG4gOTcyOlx0XHRcdFx0aWYgKGxpa2VseShsZWFkZXItXHUwMDNlZXhpdF9zdGF0ZSkpXG4gOTczOlx0XHRcdFx0XHRicmVhaztcbiA5NzQ6XHRcdFx0XHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfS0lMTEFCTEUpO1xuIDk3NTpcdFx0XHRcdHdyaXRlX3VubG9ja19pcnEoXHUwMDI2dGFza2xpc3RfbG9jayk7XG4gOTc2Olx0XHRcdFx0Y2dyb3VwX3RocmVhZGdyb3VwX2NoYW5nZV9lbmQodHNrKTtcbiA5Nzc6XHRcdFx0XHRzY2hlZHVsZSgpO1xuIDk3ODpcdFx0XHRcdGlmIChfX2ZhdGFsX3NpZ25hbF9wZW5kaW5nKHRzaykpXG4gOTc5Olx0XHRcdFx0XHRnb3RvIGtpbGxlZDtcbiA5ODA6XHRcdFx0fVxuIDk4MTpcdFxuIDk4MjpcdFx0XHQvKlxuIDk4MzpcdFx0XHQgKiBUaGUgb25seSByZWNvcmQgd2UgaGF2ZSBvZiB0aGUgcmVhbC10aW1lIGFnZSBvZiBhXG4gOTg0Olx0XHRcdCAqIHByb2Nlc3MsIHJlZ2FyZGxlc3Mgb2YgZXhlY3MgaXQmIzM5O3MgZG9uZSwgaXMgc3RhcnRfdGltZS5cbiA5ODU6XHRcdFx0ICogQWxsIHRoZSBwYXN0IENQVSB0aW1lIGlzIGFjY3VtdWxhdGVkIGluIHNpZ25hbF9zdHJ1Y3RcbiA5ODY6XHRcdFx0ICogZnJvbSBzaXN0ZXIgdGhyZWFkcyBub3cgZGVhZC4gIEJ1dCBpbiB0aGlzIG5vbi1sZWFkZXJcbiA5ODc6XHRcdFx0ICogZXhlYywgbm90aGluZyBzdXJ2aXZlcyBmcm9tIHRoZSBvcmlnaW5hbCBsZWFkZXIgdGhyZWFkLFxuIDk4ODpcdFx0XHQgKiB3aG9zZSBiaXJ0aCBtYXJrcyB0aGUgdHJ1ZSBhZ2Ugb2YgdGhpcyBwcm9jZXNzIG5vdy5cbiA5ODk6XHRcdFx0ICogV2hlbiB3ZSB0YWtlIG9uIGl0cyBpZGVudGl0eSBieSBzd2l0Y2hpbmcgdG8gaXRzIFBJRCwgd2VcbiA5OTA6XHRcdFx0ICogYWxzbyB0YWtlIGl0cyBiaXJ0aGRhdGUgKGFsd2F5cyBlYXJsaWVyIHRoYW4gb3VyIG93bikuXG4gOTkxOlx0XHRcdCAqL1xuIDk5MjpcdFx0XHR0c2stXHUwMDNlc3RhcnRfdGltZSA9IGxlYWRlci1cdTAwM2VzdGFydF90aW1lO1xuIDk5MzpcdFx0XHR0c2stXHUwMDNlc3RhcnRfYm9vdHRpbWUgPSBsZWFkZXItXHUwMDNlc3RhcnRfYm9vdHRpbWU7XG4gOTk0Olx0XG4gOTk1Olx0XHRcdEJVR19PTighc2FtZV90aHJlYWRfZ3JvdXAobGVhZGVyLCB0c2spKTtcbiA5OTY6XHRcdFx0LypcbiA5OTc6XHRcdFx0ICogQW4gZXhlYygpIHN0YXJ0cyBhIG5ldyB0aHJlYWQgZ3JvdXAgd2l0aCB0aGVcbiA5OTg6XHRcdFx0ICogVEdJRCBvZiB0aGUgcHJldmlvdXMgdGhyZWFkIGdyb3VwLiBSZWhhc2ggdGhlXG4gOTk5Olx0XHRcdCAqIHR3byB0aHJlYWRzIHdpdGggYSBzd2l0Y2hlZCBQSUQsIGFuZCByZWxlYXNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc0MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkRlYnVnZ2luZyBhIE1pc3NpbmcgRGVmaW5pdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBoaXR0aW5nIGEgc25hZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiAmIzM0O1dhaXQsIHdoZXJlICppcyogYGxvY2tgIGRlZmluZWQ/JiMzNDsgSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhhdCBzb21ldGhpbmcgY3J1Y2lhbCBpcyBtaXNzaW5nIOKAkyB0aGUgY29udGV4dCwgdGhlIGRlY2xhcmF0aW9uLCBvciB0aGUgc2NvcGUgd2l0aGluIHdoaWNoIGBsb2NrYCBpcyBzdXBwb3NlZCB0byBleGlzdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYGxvY2tgIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIHdvcmtpbmcsIGFuZCByaWdodCBub3csIGl0JiMzOTtzIGEgYmxhY2sgYm94LiBUaGlzIGlzIGEgZnVuZGFtZW50YWwgZmlyc3Qgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBwcm9ibGVtLCBpZGVudGlmeWluZyB3aGV0aGVyIGl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIG1pc3NpbmcgaW1wb3J0LCBhIG1vcmUgY29tcGxleCBzY29wZSBpc3N1ZSwgb3IgcGVyaGFwcyBhbiBlcnJvciBpbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBsaWJyYXJ5IGJlaW5nIHVzZWQuIFRpbWUgdG8gdHJhY2UgdGhpcyBgbG9ja2AgdG8gaXRzIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2V4ZWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDk0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgOTQwOlx0XG4gOTQxOlx0XHRzaWctXHUwMDNlZ3JvdXBfZXhlY190YXNrID0gdHNrO1xuIDk0MjpcdFx0c2lnLVx1MDAzZW5vdGlmeV9jb3VudCA9IHphcF9vdGhlcl90aHJlYWRzKHRzayk7XG4gOTQzOlx0XHRpZiAoIXRocmVhZF9ncm91cF9sZWFkZXIodHNrKSlcbiA5NDQ6XHRcdFx0c2lnLVx1MDAzZW5vdGlmeV9jb3VudC0tO1xuIDk0NTpcdFxuIDk0NjpcdFx0d2hpbGUgKHNpZy1cdTAwM2Vub3RpZnlfY291bnQpIHtcbiA5NDc6XHRcdFx0X19zZXRfY3VycmVudF9zdGF0ZShUQVNLX0tJTExBQkxFKTtcbiA5NDg6XHRcdFx0c3Bpbl91bmxvY2tfaXJxKGxvY2spO1xuIDk0OTpcdFx0XHRzY2hlZHVsZSgpO1xuIDk1MDpcdFx0XHRpZiAoX19mYXRhbF9zaWduYWxfcGVuZGluZyh0c2spKVxuIDk1MTpcdFx0XHRcdGdvdG8ga2lsbGVkO1xuIDk1MjpcdFx0XHRzcGluX2xvY2tfaXJxKGxvY2spO1xuIDk1MzpcdFx0fVxuIDk1NDpcdFx0c3Bpbl91bmxvY2tfaXJxKGxvY2spO1xuIDk1NTpcdFxuIDk1NjpcdFx0LypcbiA5NTc6XHRcdCAqIEF0IHRoaXMgcG9pbnQgYWxsIG90aGVyIHRocmVhZHMgaGF2ZSBleGl0ZWQsIGFsbCB3ZSBoYXZlIHRvXG4gOTU4Olx0XHQgKiBkbyBpcyB0byB3YWl0IGZvciB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciB0byBiZWNvbWUgaW5hY3RpdmUsXG4gOTU5Olx0XHQgKiBhbmQgdG8gYXNzdW1lIGl0cyBQSUQ6XG4gOTYwOlx0XHQgKi9cbiA5NjE6XHRcdGlmICghdGhyZWFkX2dyb3VwX2xlYWRlcih0c2spKSB7XG4gOTYyOlx0XHRcdHN0cnVjdCB0YXNrX3N0cnVjdCAqbGVhZGVyID0gdHNrLVx1MDAzZWdyb3VwX2xlYWRlcjtcbiA5NjM6XHRcbiA5NjQ6XHRcdFx0Zm9yICg7Oykge1xuIDk2NTpcdFx0XHRcdGNncm91cF90aHJlYWRncm91cF9jaGFuZ2VfYmVnaW4odHNrKTtcbiA5NjY6XHRcdFx0XHR3cml0ZV9sb2NrX2lycShcdTAwMjZ0YXNrbGlzdF9sb2NrKTtcbiA5Njc6XHRcdFx0XHQvKlxuIDk2ODpcdFx0XHRcdCAqIERvIHRoaXMgdW5kZXIgdGFza2xpc3RfbG9jayB0byBlbnN1cmUgdGhhdFxuIDk2OTpcdFx0XHRcdCAqIGV4aXRfbm90aWZ5KCkgY2FuJiMzOTt0IG1pc3MgLVx1MDAzZWdyb3VwX2V4ZWNfdGFza1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzOTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgdGhlIGNvZGUgcmVmZXJzIHRvIHNvbWV0aGluZyBjYWxsZWQgYGxvY2tgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgZm9yIGl0cyBkZWZpbml0aW9uLiBJJiMzOTttIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIHNjb3BlIGlzc3VlcywgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQsIGFuZCB3aGF0IHR5cGUgaXQgaXMuIElzIGl0IGEgbXV0ZXg/IEEgc2VtYXBob3JlPyBBIHJlYWRlci13cml0ZXIgbG9jaz8gVW5kZXJzdGFuZGluZyBgbG9ja2AmIzM5O3MgbmF0dXJlIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHJlYWxseSBncmFzcCB3aGF0JiMzOTtzIGhhcHBlbmluZyBpbiB0aGlzIHNlY3Rpb24gb2YgY29kZSBhbmQgYXNzZXNzIGl0cyBpbXBsaWNhdGlvbnMgZm9yIGNvbmN1cnJlbmN5LCByZXNvdXJjZSBtYW5hZ2VtZW50LCBhbmQgcG90ZW50aWFsIGRlYWRsb2Nrcy4gSSYjMzk7bSBlc3NlbnRpYWxseSBzdGFydGluZyB3aXRoIGEgYm90dG9tLXVwIGFwcHJvYWNoIGhlcmUsIGJ1aWxkaW5nIG15IHVuZGVyc3RhbmRpbmcgZnJvbSB0aGUgZm91bmRhdGlvbmFsIGVsZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvZXhlYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA5MDA6XHRcdGlmIChvbGRfbW0pIHtcbiA5MDE6XHRcdFx0bW1hcF9yZWFkX3VubG9jayhvbGRfbW0pO1xuIDkwMjpcdFx0XHRCVUdfT04oYWN0aXZlX21tICE9IG9sZF9tbSk7XG4gOTAzOlx0XHRcdC8qIERlZmVyIHRlYXJkb3duIHRvIHNldHVwX25ld19leGVjKCksIG91dHNpZGUgdGhlIGV4ZWMgbG9ja3MuICovXG4gOTA0Olx0XHRcdGJwcm0tXHUwMDNlb2xkX21tID0gb2xkX21tO1xuIDkwNTpcdFx0XHRyZXR1cm4gMDtcbiA5MDY6XHRcdH1cbiA5MDc6XHRcdG1tZHJvcF9sYXp5X3RsYihhY3RpdmVfbW0pO1xuIDkwODpcdFx0cmV0dXJuIDA7XG4gOTA5Olx0fVxuIDkxMDpcdFxuIDkxMTpcdC8qIFJlbGVhc2UgdGhlIGFkZHJlc3Mgc3BhY2UgcmVwbGFjZWQgYnkgZXhlYywgb3V0c2lkZSB0aGUgZXhlYyBsb2Nrcy4gKi9cbiA5MTI6XHRzdGF0aWMgdm9pZCBleGVjX21tX3B1dF9vbGQoc3RydWN0IG1tX3N0cnVjdCAqb2xkX21tKVxuIDkxMzpcdHtcbiA5MTQ6XHRcdHNldG1heF9tbV9oaXdhdGVyX3JzcyhcdTAwMjZjdXJyZW50LVx1MDAzZXNpZ25hbC1cdTAwM2VtYXhyc3MsIG9sZF9tbSk7XG4gOTE1Olx0XHRtbV91cGRhdGVfbmV4dF9vd25lcihvbGRfbW0pO1xuIDkxNjpcdFx0bW1wdXQob2xkX21tKTtcbiA5MTc6XHR9XG4gOTE4Olx0XG4gOTE5Olx0c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4gOTIwOlx0e1xuIDkyMTpcdFx0c3RydWN0IHNpZ25hbF9zdHJ1Y3QgKnNpZyA9IHRzay1cdTAwM2VzaWduYWw7XG4gOTIyOlx0XHRzdHJ1Y3Qgc2lnaGFuZF9zdHJ1Y3QgKm9sZHNpZ2hhbmQgPSB0c2stXHUwMDNlc2lnaGFuZDtcbiA5MjM6XHRcdHNwaW5sb2NrX3QgKmxvY2sgPSBcdTAwMjZvbGRzaWdoYW5kLVx1MDAzZXNpZ2xvY2s7XG4gOTI0Olx0XG4gOTI1Olx0XHRpZiAodGhyZWFkX2dyb3VwX2VtcHR5KHRzaykpXG4gOTI2Olx0XHRcdGdvdG8gbm9fdGhyZWFkX2dyb3VwO1xuIDkyNzpcdFxuIDkyODpcdFx0LypcbiA5Mjk6XHRcdCAqIEtpbGwgYWxsIG90aGVyIHRocmVhZHMgaW4gdGhlIHRocmVhZCBncm91cC5cbiA5MzA6XHRcdCAqL1xuIDkzMTpcdFx0c3Bpbl9sb2NrX2lycShsb2NrKTtcbiA5MzI6XHRcdGlmICgoc2lnLVx1MDAzZWZsYWdzIFx1MDAyNiBTSUdOQUxfR1JPVVBfRVhJVCkgfHwgc2lnLVx1MDAzZWdyb3VwX2V4ZWNfdGFzaykge1xuIDkzMzpcdFx0XHQvKlxuIDkzNDpcdFx0XHQgKiBBbm90aGVyIGdyb3VwIGFjdGlvbiBpbiBwcm9ncmVzcywganVzdFxuIDkzNTpcdFx0XHQgKiByZXR1cm4gc28gdGhhdCB0aGUgc2lnbmFsIGlzIHByb2Nlc3NlZC5cbiA5MzY6XHRcdFx0ICovXG4gOTM3Olx0XHRcdHNwaW5fdW5sb2NrX2lycShsb2NrKTtcbiA5Mzg6XHRcdFx0cmV0dXJuIC1FQUdBSU47XG4gOTM5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxODgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYGxvY2tgIGlzIGRlZmluZWQgYXMgYCZhbXA7b2xkc2lnaGFuZC0mZ3Q7c2lnbG9ja2AuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBCdXQgdGhlbiBJIHNlZSB0aGUgcGF0Y2ggdXNlcyBgc3Bpbl9sb2NrKGxvY2spO2AgYW5kIGxhdGVyIGBzcGluX3VubG9jayhsb2NrKTtgLCBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSBjbGlja2luZy4gYGxvY2tgIGlzIGEgcG9pbnRlciB0byBhIGBzcGlubG9ja190YCwgd2hpY2ggaXMgY29ycmVjdC4gSSBwYXVzZWQgZm9yIGEgbW9tZW50LCB0aGlua2luZyBJIHdhcyBtaXNzaW5nIHNvbWV0aGluZy4gTm8sIGBzcGluX2xvY2sobG9jaylgIGlzIHBlcmZlY3RseSB2YWxpZC4gTXkgYnJhaW4gY2F1Z2h0IHVwLCBhbmQgcmVtaW5kZWQgaXRzZWxmIGBzcGluX2xvY2tfaXJxKGxvY2spYCBpcyB1c2VkIGVhcmxpZXIgaW4gdGhlIHNhbWUgZnVuY3Rpb24uIEJ1dCB0aGF0IHN0aWxsIGRvZXNuJiMzOTt0IHNhdGlzZnkgbWUuIElzIGBzcGluX2xvY2sobG9jaylgIHNhZmUgaW4gKnRoaXMqIHNwZWNpZmljIHNwb3Q/IFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZS4KClRoZSBnb29kIG5ld3MgaXMgdGhlIHBhdGNoIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCwgc28gYXQgbGVhc3QgaXQgY29tcGlsZXMgd2l0aG91dCBhbnkgcmVwb3J0ZWQgaXNzdWVzLiBMZXQmIzM5O3Mgc2VlLi4uIHRoaXMgaXMgdGhlIGBkZV90aHJlYWRgIGZ1bmN0aW9uIGluIGBmcy9leGVjLmNgLiBEZWZpbml0ZWx5IHdvcnRoIGFkZGluZyB0byBteSBmdXp6aW5nIGxpc3QuIEkgbmVlZCB0byBmb2N1cyBvbiB0aGlzIGBkZV90aHJlYWRgIGZ1bmN0aW9uLiBUaGUgcHJvYmxlbSBpcywgaXQmIzM5O3MgZGVjbGFyZWQgYHN0YXRpY2AuIE9rYXksIEkga25vdyBteSB3YXkgYXJvdW5kIGEgc3RhdGljIGZ1bmN0aW9uLCBidXQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20gdG8gZ2FpbiBjb250cm9sLiBBaGEhIEl0JiMzOTtzIGNhbGxlZCBmcm9tIGBiZWdpbl9uZXdfZXhlY2AuIFRpbWUgdG8gZXhhbWluZSB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hlcmUgdGhpcyByYWJiaXQgaG9sZSBsZWFkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwNTA6XHRub190aHJlYWRfZ3JvdXA6XG4xMDUxOlx0XHQvKiB3ZSBoYXZlIGNoYW5nZWQgZXhlY3V0aW9uIGRvbWFpbiAqL1xuMTA1MjpcdFx0dHNrLVx1MDAzZWV4aXRfc2lnbmFsID0gU0lHQ0hMRDtcbjEwNTM6XHRcbjEwNTQ6XHRcdEJVR19PTighdGhyZWFkX2dyb3VwX2xlYWRlcih0c2spKTtcbjEwNTU6XHRcdHJldHVybiAwO1xuMTA1NjpcdFxuMTA1NzpcdGtpbGxlZDpcbjEwNTg6XHRcdC8qIHByb3RlY3RzIGFnYWluc3QgZXhpdF9ub3RpZnkoKSBhbmQgX19leGl0X3NpZ25hbCgpICovXG4xMDU5Olx0XHRyZWFkX2xvY2soXHUwMDI2dGFza2xpc3RfbG9jayk7XG4xMDYwOlx0XHRzaWctXHUwMDNlZ3JvdXBfZXhlY190YXNrID0gTlVMTDtcbjEwNjE6XHRcdHNpZy1cdTAwM2Vub3RpZnlfY291bnQgPSAwO1xuMTA2MjpcdFx0cmVhZF91bmxvY2soXHUwMDI2dGFza2xpc3RfbG9jayk7XG4xMDYzOlx0XHRyZXR1cm4gLUVBR0FJTjtcbjEwNjQ6XHR9XG4xMDY1Olx0XG4xMDY2Olx0XG4xMDY3Olx0LypcbjEwNjg6XHQgKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhlIGN1cnJlbnQgcHJvY2VzcyBoYXMgaXRzIG93biBzaWduYWwgdGFibGUsXG4xMDY5Olx0ICogc28gdGhhdCBmbHVzaF9zaWduYWxfaGFuZGxlcnMgY2FuIGxhdGVyIHJlc2V0IHRoZSBoYW5kbGVycyB3aXRob3V0XG4xMDcwOlx0ICogZGlzdHVyYmluZyBvdGhlciBwcm9jZXNzZXMuICAoT3RoZXIgcHJvY2Vzc2VzIG1pZ2h0IHNoYXJlIHRoZSBzaWduYWxcbjEwNzE6XHQgKiB0YWJsZSB2aWEgdGhlIENMT05FX1NJR0hBTkQgb3B0aW9uIHRvIGNsb25lKCkuKVxuMTA3MjpcdCAqL1xuMTA3MzpcdHN0YXRpYyBpbnQgdW5zaGFyZV9zaWdoYW5kKHN0cnVjdCB0YXNrX3N0cnVjdCAqbWUpXG4xMDc0Olx0e1xuMTA3NTpcdFx0c3RydWN0IHNpZ2hhbmRfc3RydWN0ICpvbGRzaWdoYW5kID0gbWUtXHUwMDNlc2lnaGFuZDtcbjEwNzY6XHRcbjEwNzc6XHRcdGlmIChyZWZjb3VudF9yZWFkKFx1MDAyNm9sZHNpZ2hhbmQtXHUwMDNlY291bnQpICE9IDEpIHtcbjEwNzg6XHRcdFx0c3RydWN0IHNpZ2hhbmRfc3RydWN0ICpuZXdzaWdoYW5kO1xuMTA3OTpcdFx0XHQvKlxuMTA4MDpcdFx0XHQgKiBUaGlzIC1cdTAwM2VzaWdoYW5kIGlzIHNoYXJlZCB3aXRoIHRoZSBDTE9ORV9TSUdIQU5EXG4xMDgxOlx0XHRcdCAqIGJ1dCBub3QgQ0xPTkVfVEhSRUFEIHRhc2ssIHN3aXRjaCB0byB0aGUgbmV3IG9uZS5cbjEwODI6XHRcdFx0ICovXG4xMDgzOlx0XHRcdG5ld3NpZ2hhbmQgPSBrbWVtX2NhY2hlX2FsbG9jKHNpZ2hhbmRfY2FjaGVwLCBHRlBfS0VSTkVMKTtcbjEwODQ6XHRcdFx0aWYgKCFuZXdzaWdoYW5kKVxuMTA4NTpcdFx0XHRcdHJldHVybiAtRU5PTUVNO1xuMTA4NjpcdFxuMTA4NzpcdFx0XHRyZWZjb3VudF9zZXQoXHUwMDI2bmV3c2lnaGFuZC1cdTAwM2Vjb3VudCwgMSk7XG4xMDg4Olx0XG4xMDg5Olx0XHRcdHdyaXRlX2xvY2tfaXJxKFx1MDAyNnRhc2tsaXN0X2xvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzA5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKlRyYWNpbmcgdGhlIFNvdXJjZTogRGVjb25zdHJ1Y3RpbmcgdGhlIGBkZV90aHJlYWRgIENhbGwqKgoKQWxyaWdodCwgc28gdGhlIGluaXRpYWwgb2JqZWN0aXZlIGlzIGNsZWFyOiBwaW5wb2ludCB0aGUgb3JpZ2luIG9mIHRoZSBgZGVfdGhyZWFkYCBmdW5jdGlvbiBjYWxsLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY2FzdWFsIGN1cmlvc2l0eTsgaWRlbnRpZnlpbmcgdGhlIGNhbGxlciBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgdGhyZWFkIGlzIGJlaW5nIHNwYXduZWQsIHdoYXQgdHJpZ2dlcnMgaXRzIGV4ZWN1dGlvbiwgYW5kIHdoYXQgaW5mb3JtYXRpb24gaXMgYmVpbmcgcGFzc2VkIHRvIGl0LgoKTXkgaW1tZWRpYXRlIGFwcHJvYWNoIHdpbGwgZGVwZW5kIGhlYXZpbHkgb24gdGhlIHRvb2xzIGFuZCBlbnZpcm9ubWVudCBJIGhhdmUgYXZhaWxhYmxlLiBJZiBJIGhhdmUgYSBkZWJ1Z2dlciBoYW5keSwgSSYjMzk7bGwgc2V0IGEgYnJlYWtwb2ludCBhdCB0aGUgZW50cnkgcG9pbnQgb2YgYGRlX3RocmVhZGAgYW5kIHN0ZXAgYmFja3dhcmRzIHRocm91Z2ggdGhlIGNhbGwgc3RhY2suIFRoaXMgd2lsbCBnaXZlIG1lIGFuIGltbWVkaWF0ZSB2aXN1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGV4ZWN1dGlvbiBwYXRoIGxlYWRpbmcgdXAgdG8gaXQuCgpJZiBJJiMzOTttIHdvcmtpbmcgd2l0aCBzb3VyY2UgY29kZSwgSSYjMzk7bGwgc3RhcnQgd2l0aCBhIHN0cmFpZ2h0Zm9yd2FyZCB0ZXh0IHNlYXJjaCB3aXRoaW4gdGhlIGNvZGViYXNlLiBHcmVwcGluZyBmb3IgJiMzNDtkZV90aHJlYWQoJiMzNDsgb3IgJiMzNDtkZV90aHJlYWQoJiMzNDsgKGRlcGVuZGluZyBvbiB0aGUgY29kZSYjMzk7cyBzeW50YXgpIHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCB0aGUgZGlyZWN0IGNhbGwgc2l0ZXMuIEnigJlsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IOKAkyBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgdmFyaWFibGUgYXNzaWdubWVudHMsIG9yIGZ1bmN0aW9uIGNhbGxzIGluIHRoZSB2aWNpbml0eSB0aGF0IG1pZ2h0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIHB1cnBvc2UgYW5kIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYGRlX3RocmVhZGAgaXMgaW52b2tlZC4KCkJleW9uZCB0aGF0LCBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIG1vcmUgc29waGlzdGljYXRlZCB0ZWNobmlxdWVzLiBJcyB0aGVyZSBhbnkgY3Jvc3MtcmVmZXJlbmNpbmcgZnVuY3Rpb25hbGl0eSBpbiBteSBJREUgb3IgY29kZSBhbmFseXNpcyB0b29scz8gVGhlc2UgY2FuIG9mdGVuIGdlbmVyYXRlIGEgY2FsbCBncmFwaCwgd2hpY2ggd2lsbCB2aXN1YWxseSBtYXAgb3V0IHRoZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gZGlmZmVyZW50IGZ1bmN0aW9ucyBhbmQgbWFrZSBpdCBlYXNpZXIgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBpbmRpcmVjdCBjYWxscyBhcyB3ZWxsLCBtYXliZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYGRlX3RocmVhZGAgYXMgYW4gYXJndW1lbnQgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi4KCkkgYWxzbyBoYXZlIHRvIGNvbnNpZGVyIGV4dGVybmFsIGZhY3RvcnMsIGxpa2UgdGhyZWFkaW5nIG1vZGVscyBvciB0aGUgdGFyZ2V0IG9wZXJhdGluZyBzeXN0ZW0uIERvZXMgdGhpcyBzeXN0ZW0gaGF2ZSBhIHNwZWNpZmljIHRocmVhZCBtYW5hZ2VtZW50IGZyYW1ld29yaz8gQXJlIHRoZXJlIGFueSBzaWduYWxzLCBldmVudHMsIG9yIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBtZWNoYW5pc21zIHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQ/IFRoZXNlIGNhbiBvYmZ1c2NhdGUgZGlyZWN0IGNhbGxzLgoKRmluYWxseSwgdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUgaGludHMgYXQgYSBwb3RlbnRpYWwgJiMzNDtkZS0mIzM0OyBvciAmIzM0O2RlbGV0ZSYjMzQ7IG9wZXJhdGlvbi4gQ291bGQgaXQgYmUgaW52b2x2ZWQgaW4gdGhyZWFkIHRlcm1pbmF0aW9uLCBjbGVhbnVwLCBvciByZXNvdXJjZSBkZWFsbG9jYXRpb24/IFRoaXMgd2lsbCBpbmZsdWVuY2UgdGhlIHR5cGVzIG9mIGNhbGxzaXRlcyBJIGV4cGVjdCB0byBzZWUuIFRoaXMgaW5mb3JtYXRpb24gd291bGQgZ3VpZGUgbXkgc2VhcmNoLiBNeSBnb2FsIGlzIGEgZnVsbCB1bmRlcnN0YW5kaW5nIG9mIGBkZV90aHJlYWRgJiMzOTtzIHJhaXNvbiBkJiMzOTtldHJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZV90aHJlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTkxMj1zdGF0aWMgdm9pZCBleGVjX21tX3B1dF9vbGQoc3RydWN0IG1tX3N0cnVjdCAqb2xkX21tKVxuLS1cbmZzL2V4ZWMuYy05MTgtXG5mcy9leGVjLmM6OTE5OnN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuZnMvZXhlYy5jLTkyMC17XG4tLVxuZnMvZXhlYy5jPTExMDY9dm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmJ1ZiwgYm9vbCBleGVjKVxuLS1cbmZzL2V4ZWMuYy0xMTE4LSAqIHNlZW4gYnkgdXNlcnNwYWNlIHNpbmNlIGVpdGhlciB0aGUgcHJvY2VzcyBpcyBhbHJlYWR5IHRha2luZyBhIGZhdGFsXG5mcy9leGVjLmM6MTExOTogKiBzaWduYWwgKHZpYSBkZV90aHJlYWQoKSBvciBjb3JlZHVtcCksIG9yIHdpbGwgaGF2ZSBTRUdWIHJhaXNlZFxuZnMvZXhlYy5jLTExMjAtICogKGFmdGVyIGV4ZWNfbW1hcCgpKSBieSBzZWFyY2hfYmluYXJ5X2hhbmRsZXIgKHNlZSBiZWxvdykuXG4tLVxuZnMvZXhlYy5jPTExMjI9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxuLS1cbmZzL2V4ZWMuYy0xMTQ1LVx0LyogTWFrZSB0aGlzIHRoZSBvbmx5IHRocmVhZCBpbiB0aGUgdGhyZWFkIGdyb3VwICovXG5mcy9leGVjLmM6MTE0NjpcdHJldHZhbCA9IGRlX3RocmVhZChtZSk7XG5mcy9leGVjLmMtMTE0Ny1cdGlmIChyZXR2YWwpXG4tLVxuZnMvZXhlYy5jPTE0MDk9c3RhdGljIHZvaWQgZnJlZV9icHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE0MTgtXHRpZiAoYnBybS1cdTAwM2VjcmVkKSB7XG5mcy9leGVjLmM6MTQxOTpcdFx0LyogaW4gY2FzZSBleGVjIGZhaWxzIGJlZm9yZSBkZV90aHJlYWQoKSBzdWNjZWVkcyAqL1xuZnMvZXhlYy5jLTE0MjAtXHRcdGN1cnJlbnQtXHUwMDNlZnMtXHUwMDNlaW5fZXhlYyA9IDA7XG4tLVxuZnMvZXhlYy5jPTE1Mjg9c3RhdGljIHZvaWQgY2hlY2tfdW5zYWZlX2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTU0OS1cdCAqIE90aGVyd2lzZSB3ZSBzZXQgZnMtXHUwMDNlaW5fZXhlYyA9IDEgdG8gZGVueSBjbG9uZShDTE9ORV9GUylcbmZzL2V4ZWMuYzoxNTUwOlx0ICogZnJvbSBhbm90aGVyIHN1Yi10aHJlYWQgdW50aWwgZGVfdGhyZWFkKCkgc3VjY2VlZHMsIHRoaXNcbmZzL2V4ZWMuYy0xNTUxLVx0ICogc3RhdGUgaXMgcHJvdGVjdGVkIGJ5IGNyZWRfZ3VhcmRfbXV0ZXggd2UgaG9sZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCoqCgpPa2F5LCBzbyBgYmVnaW5fbmV3X2V4ZWNgIGlzIHRoZSBvbmUgaW5pdGlhdGluZyB0aGlzIHdob2xlIHNlcXVlbmNlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uIG9yIHByb2Nlc3MgaXMgY2FsbGluZyAqaXQqLiBUaGUga2V5IGhlcmUgaXMgdG8gdW5kZXJzdGFuZCB0aGUgb3JpZ2luLCB0aGUgY29udGV4dCBpbiB3aGljaCBgYmVnaW5fbmV3X2V4ZWNgIGlzIGJlaW5nIGludm9rZWQuIEtub3dpbmcgdGhlIGNhbGxlciBmdW5jdGlvbiBpcyBjcml0aWNhbCBmb3IgZGVidWdnaW5nLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3Igc2ltcGx5IHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgY29udHJvbCBmbG93LiBXZSBuZWVkIHRvIHRyYWNlIGJhY2t3YXJkcyB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWF0aW5nIGFjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YmVnaW5fbmV3X2V4ZWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leGVjLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTI1Nz1zdGF0aWMgaW50IGJwcm1fbW1faW5pdChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0yNjYtXG5mcy9leGVjLmM6MjY3Olx0LyogU3RhZ2VkIGZvciB3b3VsZF9kdW1wKCkgbmFycm93aW5nOyBjb25zdW1lZCBieSBiZWdpbl9uZXdfZXhlYygpLiAqL1xuZnMvZXhlYy5jLTI2OC1cdGJwcm0tXHUwMDNldXNlcl9ucyA9IGdldF91c2VyX25zKGN1cnJlbnRfdXNlcl9ucygpKTtcbi0tXG5mcy9leGVjLmM9MTEwNj12b2lkIF9fc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY29uc3QgY2hhciAqYnVmLCBib29sIGV4ZWMpXG4tLVxuZnMvZXhlYy5jLTExMjEtICovXG5mcy9leGVjLmM6MTEyMjppbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pXG5mcy9leGVjLmMtMTEyMy17XG4tLVxuZnMvZXhlYy5jLTEzMjEtfVxuZnMvZXhlYy5jOjEzMjI6RVhQT1JUX1NZTUJPTChiZWdpbl9uZXdfZXhlYyk7XG5mcy9leGVjLmMtMTMyMy1cbi0tXG5mcy9leGVjLmM9MTY4Nz1zdGF0aWMgaW50IHNlYXJjaF9iaW5hcnlfaGFuZGxlcihzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0xNzE5LVxuZnMvZXhlYy5jOjE3MjA6LyogYmluZm10IGhhbmRsZXJzIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSBvbiBzdWNjZXNzLiAqL1xuZnMvZXhlYy5jLTE3MjEtc3RhdGljIGludCBleGVjX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYz0xNzY2PXN0YXRpYyBpbnQgYnBybV9leGVjdmUoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9leGVjLmMtMTc3NS1cdCAqIENoZWNrIGZvciB1bnNhZmUgZXhlY3V0aW9uIHN0YXRlcyBiZWZvcmUgZXhlY19iaW5wcm0oKSwgd2hpY2hcbmZzL2V4ZWMuYzoxNzc2Olx0ICogd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpLCBpbnRvIGJwcm1fY3JlZHNfZnJvbV9maWxlKCksXG5mcy9leGVjLmMtMTc3Ny1cdCAqIHdoZXJlIHNldHVpZC1uZXNzIGlzIGV2YWx1YXRlZC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxNQoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKlRyYWNpbmcgdGhlIEV4ZWN1dGlvbiBFbnRyeSBQb2ludCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgb3VyIGV4ZWN1dGFibGUgbG9hZGluZyB3b3Jrcy4gVGhlIHN5c3RlbSBzdGFydHMgd2l0aCBgYmVnaW5fbmV3X2V4ZWNgLCB3aGljaCBJIGtub3cgaXMgY2FsbGVkIGJ5IHRoZSBiaW5mbXQgaGFuZGxlcnMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGBiZWdpbl9uZXdfZXhlY2AgaXMgYWN0dWFsbHkgZXhwb3J0ZWQ/IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIHVzdWFsbHkgZnVuY3Rpb25zIHRoaXMgbG93LWxldmVsIGFyZW4mIzM5O3QuIFRoaXMgY2hhbmdlcyB0aGluZ3MgYSBiaXQuIFNvIEkgbmVlZCB0byBzaGlmdCBnZWFycyBhbmQgZmluZCBvdXQgZXhhY3RseSB3aGVyZSB0aGlzIGlzIGJlaW5nIGNhbGxlZCBmcm9tLCBnaXZlbiB0aGF0IGl0IGlzIGV4cG9ydGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnRzLiBMZXQmIzM5O3Mgc2VlIGhvdyB3aWRlc3ByZWFkIHRoZSBkZXBlbmRlbmNpZXMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9iaW5mbXRfZWxmLmM9ODMyPXN0YXRpYyBpbnQgbG9hZF9lbGZfYmluYXJ5KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvYmluZm10X2VsZi5jLTEwMDktXHQvKiBGbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXG5mcy9iaW5mbXRfZWxmLmM6MTAxMDpcdHJldHZhbCA9IGJlZ2luX25ld19leGVjKGJwcm0pO1xuZnMvYmluZm10X2VsZi5jLTEwMTEtXHRpZiAocmV0dmFsKVxuLS1cbmZzL2JpbmZtdF9lbGZfZmRwaWMuYz0xODI9c3RhdGljIGludCBsb2FkX2VsZl9mZHBpY19iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcbi0tXG5mcy9iaW5mbXRfZWxmX2ZkcGljLmMtMzQ0LVx0LyogZmx1c2ggYWxsIHRyYWNlcyBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgZXhlY3V0YWJsZSAqL1xuZnMvYmluZm10X2VsZl9mZHBpYy5jOjM0NTpcdHJldHZhbCA9IGJlZ2luX25ld19leGVjKGJwcm0pO1xuZnMvYmluZm10X2VsZl9mZHBpYy5jLTM0Ni1cdGlmIChyZXR2YWwpXG4tLVxuZnMvYmluZm10X2ZsYXQuYz00MDY9c3RhdGljIGludCBsb2FkX2ZsYXRfZmlsZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtLFxuLS1cbmZzL2JpbmZtdF9mbGF0LmMtNTA4LVx0LyogRmx1c2ggYWxsIHRyYWNlcyBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgZXhlY3V0YWJsZSAqL1xuZnMvYmluZm10X2ZsYXQuYzo1MDk6XHRyZXQgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcbmZzL2JpbmZtdF9mbGF0LmMtNTEwLVx0aWYgKHJldClcbi0tXG5mcy9leGVjLmM9MjU3PXN0YXRpYyBpbnQgYnBybV9tbV9pbml0KHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTI2Ni1cbmZzL2V4ZWMuYzoyNjc6XHQvKiBTdGFnZWQgZm9yIHdvdWxkX2R1bXAoKSBuYXJyb3dpbmc7IGNvbnN1bWVkIGJ5IGJlZ2luX25ld19leGVjKCkuICovXG5mcy9leGVjLmMtMjY4LVx0YnBybS1cdTAwM2V1c2VyX25zID0gZ2V0X3VzZXJfbnMoY3VycmVudF91c2VyX25zKCkpO1xuLS1cbmZzL2V4ZWMuYz0xMTA2PXZvaWQgX19zZXRfdGFza19jb21tKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCBjb25zdCBjaGFyICpidWYsIGJvb2wgZXhlYylcbi0tXG5mcy9leGVjLmMtMTEyMS0gKi9cbmZzL2V4ZWMuYzoxMTIyOmludCBiZWdpbl9uZXdfZXhlYyhzdHJ1Y3QgbGludXhfYmlucHJtICogYnBybSlcbmZzL2V4ZWMuYy0xMTIzLXtcbi0tXG5mcy9leGVjLmMtMTMyMS19XG5mcy9leGVjLmM6MTMyMjpFWFBPUlRfU1lNQk9MKGJlZ2luX25ld19leGVjKTtcbmZzL2V4ZWMuYy0xMzIzLVxuLS1cbmZzL2V4ZWMuYz0xNjg3PXN0YXRpYyBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jLTE3MTktXG5mcy9leGVjLmM6MTcyMDovKiBiaW5mbXQgaGFuZGxlcnMgd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpIG9uIHN1Y2Nlc3MuICovXG5mcy9leGVjLmMtMTcyMS1zdGF0aWMgaW50IGV4ZWNfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXG4tLVxuZnMvZXhlYy5jPTE3NjY9c3RhdGljIGludCBicHJtX2V4ZWN2ZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxuLS1cbmZzL2V4ZWMuYy0xNzc1LVx0ICogQ2hlY2sgZm9yIHVuc2FmZSBleGVjdXRpb24gc3RhdGVzIGJlZm9yZSBleGVjX2JpbnBybSgpLCB3aGljaFxuZnMvZXhlYy5jOjE3NzY6XHQgKiB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCksIGludG8gYnBybV9jcmVkc19mcm9tX2ZpbGUoKSxcbmZzL2V4ZWMuYy0xNzc3LVx0ICogd2hlcmUgc2V0dWlkLW5lc3MgaXMgZXZhbHVhdGVkLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDM2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGEgUGF0Y2ggb24gRXhlY3ZlIFBlcmZvcm1hbmNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIGl0cyBpbXBhY3QuIEkgc2VlIHRoYXQgYGJlZ2luX25ld19leGVjYCBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgaGVyZSwgdHJpZ2dlcmVkIGJ5IGBsb2FkX2VsZl9iaW5hcnlgLCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCwgYW5kIGBsb2FkX2ZsYXRfZmlsZWAuIFJpZ2h0LCBhbGwgdGhvc2UgYXJlIGhvdCBwYXRocyByZWxhdGVkIHRvIHRoZSBgZXhlY3ZlYCBzeXN0ZW0gY2FsbCwgbWFraW5nIHRoaXMgYXJlYSBhIHByaW1lIHRhcmdldCBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yLCBpbiB0aGlzIGNhc2UsIHBvdGVudGlhbCByZWdyZXNzaW9uLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRlX3RocmVhZGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IHRoYXQgY3J1Y2lhbCBgYmVnaW5fbmV3X2V4ZWNgIGZ1bmN0aW9uLiBXYWl0IGEgc2Vjb25kLCB0aGUga2V5IGNoYW5nZSBpcyB0aGF0IGl0JiMzOTtzIGludHJvZHVjaW5nIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIHdpdGhpbiBgZGVfdGhyZWFkYC4KClRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBmdW5jdGlvbiBpcyB0aGUgcmlnaHQgZm9jdXMgb2YgbXkgYXR0ZW50aW9uLiBJcyB0aGlzIGZ1bmN0aW9uIGFuIGFwcHJvcHJpYXRlIGluZGljYXRvciBvZiBwZXJmb3JtYW5jZSBjaGFuZ2VzLCBnb29kIG9yIGJhZCwgcmVsYXRlZCB0byB0aGlzIHBhdGNoPyBJdCYjMzk7cyB3b3J0aCBhIGRlZXBlciBkaXZlIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGlzIGNvZGUgcGF0aC4gTGV0IG1lIGdvIGNoZWNrIGl0IG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cG9zaXhfY3B1X3RpbWVyc19leGl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4ZWMuYz05MTk9c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxuZnMvZXhlYy5jLTEwMTAtXHRcdHNwaW5fbG9jayhsb2NrKTtcbmZzL2V4ZWMuYzoxMDExOlx0XHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcbmZzL2V4ZWMuYy0xMDEyLVx0XHRzcGluX3VubG9jayhsb2NrKTtcbi0tXG5mcy9leGVjLmM9MTEyMj1pbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pXG4tLVxuZnMvZXhlYy5jLTExOTAtXHRzcGluX2xvY2tfaXJxKFx1MDAyNm1lLVx1MDAzZXNpZ2hhbmQtXHUwMDNlc2lnbG9jayk7XG5mcy9leGVjLmM6MTE5MTpcdHBvc2l4X2NwdV90aW1lcnNfZXhpdChtZSk7XG5mcy9leGVjLmMtMTE5Mi1cdHNwaW5fdW5sb2NrX2lycShcdTAwMjZtZS1cdTAwM2VzaWdoYW5kLVx1MDAzZXNpZ2xvY2spO1xuLS1cbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg9MjI1PXZvaWQgcnVuX3Bvc2l4X2NwdV90aW1lcnModm9pZCk7XG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oOjIyNjp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spO1xuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjc6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmgtMjI4LXZvaWQgc2V0X3Byb2Nlc3NfY3B1X3RpbWVyKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgdW5zaWduZWQgaW50IGNsb2NrX2lkeCxcbi0tXG5rZXJuZWwvZXhpdC5jPTE1OT1zdGF0aWMgdm9pZCBfX2V4aXRfc2lnbmFsKHN0cnVjdCByZWxlYXNlX3Rhc2tfcG9zdCAqcG9zdCwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4tLVxua2VybmVsL2V4aXQuYy0xNzEtI2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcbmtlcm5lbC9leGl0LmM6MTcyOlx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG5rZXJuZWwvZXhpdC5jLTE3My1cdGlmIChncm91cF9kZWFkKVxua2VybmVsL2V4aXQuYzoxNzQ6XHRcdHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCh0c2spO1xua2VybmVsL2V4aXQuYy0xNzUtI2VuZGlmXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTQ1MT1zdGF0aWMgdm9pZCBkaXNhcm1fdGltZXIoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00ODEtICpcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo0ODI6ICogX19leGl0X3NpZ25hbCgpIGludm9rZXMgcG9zaXhfY3B1X3RpbWVyc19leGl0KCkgYW5kIGlmIHRoZSB0aHJlYWQgZ3JvdXAgaXNcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00ODMtICogZGVhZCBpdCBhbHNvIGludm9rZXMgcG9zaXhfY3B1X3RpbWVyc19ncm91cF9leGl0KCkuIFRoZXNlIGZ1bmN0aW9ucyBkZWxldGVcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDg5LSAqIHRocmVhZCBncm91cCBpcyBub3QgZGVhZCB0aGV5IG9ubHkgY2xlYW4gdXAgdGhlIHBlciB0YXNrIHRpbWVycyB2aWFcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo0OTA6ICogcG9zaXhfY3B1X3RpbWVyc19leGl0KCkuXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDkxLSAqXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTYyND1zdGF0aWMgdm9pZCBjbGVhbnVwX3RpbWVycyhzdHJ1Y3QgcG9zaXhfY3B1dGltZXJzICpwY3QpXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzMy0gKiBpcyBiZWluZyByZWFwZWQuICBXaGVuIHRoZSBmaW5hbCAobGVhZGVyKSB0aHJlYWQgaW4gdGhlIGdyb3VwIGlzIHJlYXBlZCxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo2MzQ6ICogcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHBvc2l4X2NwdV90aW1lcnNfZXhpdC5cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02MzUtICovXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM2OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzNy17XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzOS19XG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjQwOnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0X2dyb3VwKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTY0MS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDAwCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBUaHJlYWQgRXhpdCBSb3V0aW5lKioKCk9rYXksIHNvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIGlzIGEga2V5IGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSBtdWx0aXBsZSBwbGFjZXM6IGBfX2V4aXRfc2lnbmFsYCwgYGJlZ2luX25ld19leGVjYCwgYW5kIG5vdywgaW1wb3J0YW50bHksIGBkZV90aHJlYWRgLiBJdCBzZWVtcyBsaWtlIGEgZGVjZW50IHBvaW50IG9mIGZvY3VzIGZvciB0aGlzIHByb2JsZW0sIGJ1dCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIHRyaWdnZXJlZCBvbiAqZXZlcnkqIHRocmVhZCBleGl0IGlzIGEgYml0IGNvbmNlcm5pbmcgZm9yIGl0cyBzcGVjaWZpY2l0eS4gSXMgdGhlcmUgYSBtb3JlIHJlZmluZWQgcG9pbnQgb2YgaW50ZXJlc3Qgd2l0aGluIHRoaXMgY29kZSBwYXRoPwoKSG1tLCB0aGUgYnVnJiMzOTtzIGNvbm5lY3Rpb24gdG8gYGV4Y2hhbmdlX3RpZHMoKWAgYW5kIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgaXMgbWFraW5nIG1lIHRoaW5rIGFib3V0IHdoZXJlIHRoZSBhY3R1YWwgaXNzdWUgbWlnaHQgbGllLiBHaXZlbiB0aGF0IGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIHNlZW1zIHdpZGVzcHJlYWQsIG1heWJlIHRoZSBwcm9ibGVtIGlzIGluIGEgZnVuY3Rpb24gaXQmIzM5O3MgY2FsbGluZywgbGlrZSBgdGltZXJfbG9ja19zaWdoYW5kYC4gTGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBkb2luZyB3aXRoIHRpbWVycyBhbmQgc2lnbmFsIGhhbmRsaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0aW1lcl9sb2NrX3NpZ2hhbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXhlYy5jPTkxOT1zdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcbi0tXG5mcy9leGVjLmMtMTAwNi1cdFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxuZnMvZXhlYy5jOjEwMDc6XHRcdCAqIHRpbWVyX2xvY2tfc2lnaGFuZCgpIHRoZW4gZmFpbHMgd2hpbGUgdGhlIHBlciB0aHJlYWQgQ1BVXG5mcy9leGVjLmMtMTAwOC1cdFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNTIyLSAqL1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjUyMzpzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICp0aW1lcl9sb2NrX3NpZ2hhbmQoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgdW5zaWduZWQgbG9uZyAqZmxhZ3MpXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNTI0LXtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9NTc0PXN0YXRpYyBpbnQgcG9zaXhfY3B1X3RpbWVyX2RlbChzdHJ1Y3Qga19pdGltZXIgKnRpbWVyKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy01NzktXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NTgwOlx0cCA9IHRpbWVyX2xvY2tfc2lnaGFuZCh0aW1lciwgXHUwMDI2ZmxhZ3MpO1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTU4MS1cbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9NzA2PXN0YXRpYyBpbnQgcG9zaXhfY3B1X3RpbWVyX3NldChzdHJ1Y3Qga19pdGltZXIgKnRpbWVyLCBpbnQgdGltZXJfZmxhZ3MsXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTcxNi1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo3MTc6XHRwID0gdGltZXJfbG9ja19zaWdoYW5kKHRpbWVyLCBcdTAwMjZmbGFncyk7XG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNzE4LVx0Lypcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9MTA4Mj1zdGF0aWMgYm9vbCBwb3NpeF9jcHVfdGltZXJfcmVhcm0oc3RydWN0IGtfaXRpbWVyICp0aW1lcilcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTA4OC1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzoxMDg5Olx0cCA9IHRpbWVyX2xvY2tfc2lnaGFuZCh0aW1lciwgXHUwMDI2ZmxhZ3MpO1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTEwOTAtXHRpZiAodW5saWtlbHkoIXApKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTMxMAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWJ1Z2dpbmcgYSBUaW1lci1SZWxhdGVkIFRocmVhZCBQSUQgSXNzdWUqKgoKT2theSwgc28gaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLiBJdCBsb29rcyBsaWtlIGBleGNoYW5nZV90aWRzKClgIGlzIHBhc3NpbmcgYSB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCBhbmQgdGhhdCBsZWFkZXIgaXMgaW1tZWRpYXRlbHkgcmVhcGVkLiBUaGUgcHJvYmxlbSBhcmlzZXMgYmVjYXVzZSBsYXRlciwgd2hlbiBgdGltZXJfbG9ja19zaWdoYW5kKClgIHRyaWVzIHRvIGxvb2sgdXAgdGhlIFBJRCwgaXQgZmFpbHMgd2hpbGUgdGhlIENQVSB0aW1lcnMgZm9yIHRoYXQgc3BlY2lmaWMgdGhyZWFkIGFyZSBzdGlsbCBxdWV1ZWQuIFdlIG5lZWQgdG8gZGVxdWV1ZSB0aG9zZSB0aW1lcnMgYmVmb3JlIHRoaXMgbG9va3VwIGhhcHBlbnMuCgpUaGlzIHNlZW1zIHRvIHNwZWNpZmljYWxseSBvY2N1ciB3aGVuIGEgbm9uLWxlYWRlciB0aHJlYWQgZXhlY3V0ZXMgYW4gYGV4ZWN2ZWAgY2FsbCBhbmQgaGFzIFBPU0lYIENQVSB0aW1lcnMgcnVubmluZy4gVG8gcmVwcm9kdWNlIHRoaXMsIEkgbmVlZCB0byBjcmVhdGUgYSB0aHJlYWQgZ3JvdXAgd2l0aCBhdCBsZWFzdCB0d28gdGhyZWFkcy4gVGhlbiwgdGhlIG5vbi1sZWFkZXIgdGhyZWFkIGhhcyB0byBhcm0gYSBQT1NJWCBDUFUgdGltZXIgdXNpbmcgc29tZXRoaW5nIGxpa2UgYHRpbWVyX2NyZWF0ZWAgd2l0aCBgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSURgLiBGaW5hbGx5LCB0aGF0IG5vbi1sZWFkZXIgdGhyZWFkIG5lZWRzIHRvIGV4ZWN1dGUgYGV4ZWN2ZWAuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNoZWNrIHN5bWJvbHMgbGlrZSBgcG9zaXhfY3B1X3RpbWVyX3NldGAsIGBwb3NpeF9jcHVfdGltZXJfZGVsYCwgYW5kIGBkZV90aHJlYWRg4oCUYWx0aG91Z2ggYGRlX3RocmVhZGAgaXMgc3RhdGljLCBzbyBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGJlZ2luX25ld19leGVjYCBpbnN0ZWFkLgoKQnV0IHdhaXQsIGBwb3NpeF9jcHVfdGltZXJfc2V0YCBpcyBhbHNvIHN0YXRpYyEgT2theSwgc28gSSBuZWVkIHRvIGZpbmQgdGhlIGNhbGxzIHRvIGBwb3NpeF9jcHVfdGltZXJfc2V0YCBpdHNlbGYuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqY2FsbGluZyogdGhhdCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwb3NpeF9jcHVfdGltZXJfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNTEzLSAqXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NTE0OiAqICAtIHBvc2l4X2NwdV90aW1lcl9zZXQoKTogSW5kZXBlbmRlbnQgb2YgdGhlIGVucXVldWVkIHN0YXRlIHRoYXQgcmVzdWx0cyBpbiBhXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNTE1LSAqICAgIHRyYW5zaWVudCBmYWlsdXJlIHdoaWNoIGlzIHVzZXIgc3BhY2UgdmlzaWJsZSAoLUVTUkNIKSBmb3IgcmVndWxhciBwb3NpeFxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02OTg9c3RhdGljIHZvaWQgX19wb3NpeF9jcHVfdGltZXJfZ2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCBpdGltZXJzcGVjNjQgKml0cCwgdTY0IG5vdyk7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTcwNS0gKi9cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo3MDY6c3RhdGljIGludCBwb3NpeF9jcHVfdGltZXJfc2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIGludCB0aW1lcl9mbGFncyxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MDctXHRcdFx0ICAgICAgIHN0cnVjdCBpdGltZXJzcGVjNjQgKm5ldywgc3RydWN0IGl0aW1lcnNwZWM2NCAqb2xkKVxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz0xNTM3PXN0YXRpYyBpbnQgZG9fY3B1X25hbm9zbGVlcChjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIGludCBmbGFncyxcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTU2My1cdFx0c3Bpbl9sb2NrX2lycShcdTAwMjZ0aW1lci5pdF9sb2NrKTtcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzoxNTY0Olx0XHRlcnJvciA9IHBvc2l4X2NwdV90aW1lcl9zZXQoXHUwMDI2dGltZXIsIGZsYWdzLCBcdTAwMjZpdCwgTlVMTCk7XG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTU2NS1cdFx0aWYgKGVycm9yKSB7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTE1OTQtXHRcdGV4cGlyZXMgPSBjcHVfdGltZXJfZ2V0ZXhwaXJlcyhcdTAwMjZ0aW1lci5pdC5jcHUpO1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjE1OTU6XHRcdGVycm9yID0gcG9zaXhfY3B1X3RpbWVyX3NldChcdTAwMjZ0aW1lciwgMCwgXHUwMDI2emVyb19pdCwgXHUwMDI2aXQpO1xua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTE1OTYtXHRcdGlmICghZXJyb3IpIHtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9MTcwNj1jb25zdCBzdHJ1Y3Qga19jbG9jayBjbG9ja19wb3NpeF9jcHUgPSB7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTE3MTEtXHQubnNsZWVwXHRcdFx0PSBwb3NpeF9jcHVfbnNsZWVwLFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjE3MTI6XHQudGltZXJfc2V0XHRcdD0gcG9zaXhfY3B1X3RpbWVyX3NldCxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNzEzLVx0LnRpbWVyX2RlbFx0XHQ9IHBvc2l4X2NwdV90aW1lcl9kZWwsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjEzCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHN5c3RlbXMgcHJvZ3JhbW1pbmcgYW5kIGtlcm5lbCBpbnRlcm5hbHM6CgoqKkRpdmluZyBpbnRvIFRpbWVyIEltcGxlbWVudGF0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBgdGltZXJfc2V0dGltZWAuIE15IG1lbnRhbCBtYXAgaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIGZhY3QgdGhhdCB0aGlzIGlzIGNvbm5lY3RlZCB0byBgY2xvY2tfcG9zaXhfY3B1YCwgbGlrZWx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiB0aGUgYHRpbWVyX3NldHRpbWVgIHN5c2NhbGwgaXRzZWxmLCBgc3lzX3RpbWVyX3NldHRpbWVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZy4gVGhlIGFyY2hpdGVjdHVyZSB3b3VsZCBkaWN0YXRlIG15IG5leHQgc3RlcCwgd2hpY2ggd2lsbCBiZSB0byBjaGVjayBgdGltZXJfc2V0dGltZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25hbGl0eSB0aGlzIGNvZGUgaXMgc2VydmluZywgc28gbGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgcm91dGluZS4gTGV0JiMzOTtzIHNlZSBob3cgaXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpbWVyX3NldHRpbWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0PTExMTE9UnVubmluZyBwdHJhY2Ugb24gdGhpcyB0aHJlYWQgdXN1YWxseSByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgcGljdHVyZTo6XG4tLVxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0LTExMjgtICAgcHRyYWNlKFBUUkFDRV9HRVRTSUdJTkZPLCAxNjk2NywgTlVMTCwge3NpX3NpZ25vPVNJR1RSQVAsIHNpX2NvZGU9MHg4NSwgc2lfcGlkPTE2OTY3LCBzaV91aWQ9MH0pID0gMFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0OjExMjk6ICAgdGltZXJfc2V0dGltZSgwLCAwLCB7aXRfaW50ZXJ2YWw9e3R2X3NlYz0wLCB0dl9uc2VjPTB9LCBpdF92YWx1ZT17dHZfc2VjPTAsIHR2X25zZWM9MjgzMDkxMn19LCBOVUxMKSA9IDBcbkRvY3VtZW50YXRpb24vdmlydC91bWwvdXNlcl9tb2RlX2xpbnV4X2hvd3RvX3YyLnJzdC0xMTMwLSAgIGdldHBpZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE2NTY2XG4tLVxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0PTExMzU9VGhpcyBpcyBhIHR5cGljYWwgcGljdHVyZSBmcm9tIGEgbW9zdGx5IGlkbGUgVU1MIGluc3RhbmNlLlxuLS1cbkRvY3VtZW50YXRpb24vdmlydC91bWwvdXNlcl9tb2RlX2xpbnV4X2hvd3RvX3YyLnJzdC0xMTQzLSAgVU1MIHVzZXJzcGFjZS5cbkRvY3VtZW50YXRpb24vdmlydC91bWwvdXNlcl9tb2RlX2xpbnV4X2hvd3RvX3YyLnJzdDoxMTQ0OiogYGB0aW1lcl9zZXR0aW1lYGAgaXMgcGFydCBvZiB0aGUgVU1MIGhpZ2ggcmVzIHRpbWVyIHN1YnN5c3RlbSBtYXBwaW5nXG5Eb2N1bWVudGF0aW9uL3ZpcnQvdW1sL3VzZXJfbW9kZV9saW51eF9ob3d0b192Mi5yc3QtMTE0NS0gIHRpbWVyIHJlcXVlc3RzIGZyb20gaW5zaWRlIFVNTCBvbnRvIHRoZSBob3N0IGhpZ2ggcmVzb2x1dGlvbiB0aW1lcnMuXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ1LTQxNFx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNDY6NDE1XHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ3LTQxNlx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC0yNzUtMjU3XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRzeXNfdGltZXJfY3JlYXRlXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDoyNzY6MjU4XHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtMjc3LTI1OVx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00MjYtNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDo0Mjc6NDA5XHRjb21tb25cdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00MjgtNDEwXHRjb21tb25cdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTI3Mi0yNTdcdGNvbW1vblx0dGltZXJfY3JlYXRlXHRcdHN5c190aW1lcl9jcmVhdGVcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjI3MzoyNThcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcdGNvbW1vblx0dGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC00MjMtNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsOjQyNDo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDI1LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNjQtMjU0XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjY1OjI1NVx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNjYtMjU2XHRjb21tb25cdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTEtNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxMjo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEzLTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNjktMjU5XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjcwOjI2MFx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzEtMjYxXHRjb21tb25cdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxODo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDE5LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMjMxLTIyMFx0bjMyXHR0aW1lcl9jcmVhdGVcdFx0XHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MjMyOjIyMVx0bjMyXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMjMzLTIyMlx0bjMyXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWUzMlxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTM1MC00MDhcdG4zMlx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjM1MTo0MDlcdG4zMlx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTM1Mi00MTBcdG4zMlx0dGltZXJmZF9nZXR0aW1lNjRcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTIyNy0yMTZcdG42NFx0dGltZXJfY3JlYXRlXHRcdFx0c3lzX3RpbWVyX2NyZWF0ZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6MjI4OjIxN1x0bjY0XHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTIyOS0yMThcdG42NFx0dGltZXJfZ2V0dGltZVx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMjcxLTI1N1x0bzMyXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXHRcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDoyNzI6MjU4XHRvMzJcdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0yNzMtMjU5XHRvMzJcdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMzk5LTQwOFx0bzMyXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6NDAwOjQwOVx0bzMyXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtNDAxLTQxMFx0bzMyXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjc5LTI1MFx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0c3lzX3RpbWVyX2NyZWF0ZVx0XHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI4MDoyNTFcdDMyXHR0aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDoyODE6MjUxXHQ2NFx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI4Mi0yNTJcdDMyXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEwLTQwOFx0MzJcdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDExOjQwOVx0MzJcdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDEyLTQxMFx0MzJcdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzA2LTI0MFx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXHRcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwNzoyNDFcdDMyXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozMDg6MjQxXHQ2NFx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwOToyNDFcdHNwdVx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTMxMC0yNDJcdDMyXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWUzMlxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTAyLTQwOFx0MzJcdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjUwMzo0MDlcdDMyXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MDQtNDEwXHQzMlx0dGltZXJmZF9nZXR0aW1lNjRcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yMTAtMjU0XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjExOjI1NVx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEyLTI1Nlx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNjktMjU5XHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI3MDoyNjBcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3MS0yNjFcdGNvbW1vblx0dGltZXJfZ2V0dGltZVx0XHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTUtNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTY6NDA5XHRjb21tb25cdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDEwXHRjb21tb25cdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zMTgtMjYxXHRjb21tb25cdHNjaGVkX3NldGFmZmluaXR5XHRzeXNfc2NoZWRfc2V0YWZmaW5pdHlcdFx0Y29tcGF0X3N5c19zY2hlZF9zZXRhZmZpbml0eVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzE5OjI2Mlx0MzJcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzIwOjI2Mlx0NjRcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWVcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTMyMS0yNjNcdDMyXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTctNDA4XHQzMlx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcdFx0c3lzX3RpbWVyX2dldHRpbWVcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1ODo0MDlcdDMyXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU5LTQxMFx0MzJcdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxuLS1cbmFyY2gvdW0vb3MtTGludXgvdGltZS5jPTYxPWludCBvc190aW1lcl9zZXRfaW50ZXJ2YWwoaW50IGNwdSwgdW5zaWduZWQgbG9uZyBsb25nIG5zZWNzKVxuLS1cbmFyY2gvdW0vb3MtTGludXgvdGltZS5jLTcwLVxuYXJjaC91bS9vcy1MaW51eC90aW1lLmM6NzE6XHRpZiAodGltZXJfc2V0dGltZShldmVudF9oaWdoX3Jlc190aW1lcltjcHVdLCAwLCBcdTAwMjZpdHMsIE5VTEwpID09IC0xKVxuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtNzItXHRcdHJldHVybiAtZXJybm87XG4tLVxuYXJjaC91bS9vcy1MaW51eC90aW1lLmM9Nzc9aW50IG9zX3RpbWVyX29uZV9zaG90KGludCBjcHUsIHVuc2lnbmVkIGxvbmcgbG9uZyBuc2Vjcylcbi0tXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYy04Ni1cbmFyY2gvdW0vb3MtTGludXgvdGltZS5jOjg3Olx0dGltZXJfc2V0dGltZShldmVudF9oaWdoX3Jlc190aW1lcltjcHVdLCAwLCBcdTAwMjZpdHMsIE5VTEwpO1xuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtODgtXHRyZXR1cm4gMDtcbi0tXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYz05NT12b2lkIG9zX3RpbWVyX2Rpc2FibGUoaW50IGNwdSlcbi0tXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYy05OS1cdG1lbXNldChcdTAwMjZpdHMsIDAsIHNpemVvZihzdHJ1Y3QgaXRpbWVyc3BlYykpO1xuYXJjaC91bS9vcy1MaW51eC90aW1lLmM6MTAwOlx0dGltZXJfc2V0dGltZShldmVudF9oaWdoX3Jlc190aW1lcltjcHVdLCAwLCBcdTAwMjZpdHMsIE5VTEwpO1xuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtMTAxLX1cbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzQtMjU5XHRpMzg2XHR0aW1lcl9jcmVhdGVcdFx0c3lzX3RpbWVyX2NyZWF0ZVx0XHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6Mjc1OjI2MFx0aTM4Nlx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzYtMjYxXHRpMzg2XHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTctNDA4XHRpMzg2XHR0aW1lcl9nZXR0aW1lNjRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQxODo0MDlcdGkzODZcdHRpbWVyX3NldHRpbWU2NFx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDE5LTQxMFx0aTM4Nlx0dGltZXJmZF9nZXR0aW1lNjRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0yMzQtMjIyXHQ2NFx0dGltZXJfY3JlYXRlXHRcdHN5c190aW1lcl9jcmVhdGVcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjIzNToyMjNcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMjM2LTIyNFx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3MC0yNDlcdGNvbW1vblx0dGltZXJfZGVsZXRlXHRcdFx0c3lzX3RpbWVyX2RlbGV0ZVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI3MToyNTBcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzItMjUxXHRjb21tb25cdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM4Mi00MDhcdGNvbW1vblx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozODM6NDA5XHRjb21tb25cdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzg0LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxuZHJpdmVycy9wdHAvcHRwX25ldGMuYz02OTU9c3RhdGljIGludCBuZXRjX3RpbWVyX2dldHRpbWV4NjQoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXG4tLVxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03MTUtXG5kcml2ZXJzL3B0cC9wdHBfbmV0Yy5jOjcxNjpzdGF0aWMgaW50IG5ldGNfdGltZXJfc2V0dGltZTY0KHN0cnVjdCBwdHBfY2xvY2tfaW5mbyAqcHRwLFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03MTctXHRcdFx0XHRjb25zdCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHMpXG4tLVxuZHJpdmVycy9wdHAvcHRwX25ldGMuYz03MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBuZXRjX3RpbWVyX3B0cF9jYXBzID0ge1xuLS1cbmRyaXZlcnMvcHRwL3B0cF9uZXRjLmMtNzQ5LVx0LmdldHRpbWV4NjRcdD0gbmV0Y190aW1lcl9nZXR0aW1leDY0LFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYzo3NTA6XHQuc2V0dGltZTY0XHQ9IG5ldGNfdGltZXJfc2V0dGltZTY0LFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03NTEtXHQuZW5hYmxlXHRcdD0gbmV0Y190aW1lcl9lbmFibGUsXG4tLVxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oPTYxOD1hc21saW5rYWdlIGxvbmcgc3lzX3RpbWVyX2dldG92ZXJydW4odGltZXJfdCB0aW1lcl9pZCk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6NjE5OmFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyX2lkLCBpbnQgZmxhZ3MsXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNjIwLVx0XHRcdFx0Y29uc3Qgc3RydWN0IF9fa2VybmVsX2l0aW1lcnNwZWMgX191c2VyICpuZXdfc2V0dGluZyxcbi0tXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9NjMyPWFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfZ2V0dGltZTMyKHRpbWVyX3QgdGltZXJfaWQsXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNjMzLVx0XHRcdFx0IHN0cnVjdCBvbGRfaXRpbWVyc3BlYzMyIF9fdXNlciAqc2V0dGluZyk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6NjM0OmFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfc2V0dGltZTMyKHRpbWVyX3QgdGltZXJfaWQsIGludCBmbGFncyxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC02MzUtXHRcdFx0XHRcdCBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMzMiBfX3VzZXIgKm5ldyxcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9MzA1PV9fU1lTQ0FMTChfX05SX3RpbWVyX2dldG92ZXJydW4sIHN5c190aW1lcl9nZXRvdmVycnVuKVxuLS1cbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC0zMDctI2lmIGRlZmluZWQoX19BUkNIX1dBTlRfVElNRTMyX1NZU0NBTExTKSB8fCBfX0JJVFNfUEVSX0xPTkcgIT0gMzJcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDozMDg6I2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWUgMTEwXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6MzA5Ol9fU0NfMzI2NChfX05SX3RpbWVyX3NldHRpbWUsIHN5c190aW1lcl9zZXR0aW1lMzIsIHN5c190aW1lcl9zZXR0aW1lKVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTMxMC0jZW5kaWZcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9NzI2PV9fU1lTQ0FMTChfX05SX3RpbWVyX2dldHRpbWU2NCwgc3lzX3RpbWVyX2dldHRpbWUpXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzI3OiNkZWZpbmUgX19OUl90aW1lcl9zZXR0aW1lNjQgNDA5XG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzI4Ol9fU1lTQ0FMTChfX05SX3RpbWVyX3NldHRpbWU2NCwgc3lzX3RpbWVyX3NldHRpbWUpXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNzI5LSNkZWZpbmUgX19OUl90aW1lcmZkX2dldHRpbWU2NCA0MTBcbi0tXG5pbml0L0tjb25maWc9MTc2MT1jb25maWcgUE9TSVhfVElNRVJTXG4tLVxuaW5pdC9LY29uZmlnLTE3NzAtXHQgIGF2YWlsYWJsZTogdGltZXJfY3JlYXRlLCB0aW1lcl9nZXR0aW1lOiB0aW1lcl9nZXRvdmVycnVuLFxuaW5pdC9LY29uZmlnOjE3NzE6XHQgIHRpbWVyX3NldHRpbWUsIHRpbWVyX2RlbGV0ZSwgY2xvY2tfYWRqdGltZSwgZ2V0aXRpbWVyLFxuaW5pdC9LY29uZmlnLTE3NzItXHQgIHNldGl0aW1lciwgYWxhcm0uIEZ1cnRoZXJtb3JlLCB0aGUgY2xvY2tfc2V0dGltZSwgY2xvY2tfZ2V0dGltZSxcbi0tXG5rZXJuZWwvc3lzX25pLmM9MjA5PUNPTkRfU1lTQ0FMTCh0aW1lcl9nZXRvdmVycnVuKTtcbmtlcm5lbC9zeXNfbmkuYzoyMTA6Q09ORF9TWVNDQUxMKHRpbWVyX3NldHRpbWUpO1xua2VybmVsL3N5c19uaS5jLTIxMS1DT05EX1NZU0NBTEwodGltZXJfZGVsZXRlKTtcbi0tXG5rZXJuZWwvc3lzX25pLmM9MzM5PUNPTkRfU1lTQ0FMTF9DT01QQVQocnRfc2lndGltZWR3YWl0X3RpbWUzMik7XG5rZXJuZWwvc3lzX25pLmM6MzQwOkNPTkRfU1lTQ0FMTCh0aW1lcl9zZXR0aW1lMzIpO1xua2VybmVsL3N5c19uaS5jLTM0MS1DT05EX1NZU0NBTEwodGltZXJfZ2V0dGltZTMyKTtcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9Njk4PXN0YXRpYyB2b2lkIF9fcG9zaXhfY3B1X3RpbWVyX2dldChzdHJ1Y3Qga19pdGltZXIgKnRpbWVyLCBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICppdHAsIHU2NCBub3cpO1xuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MDAtLypcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo3MDE6ICogR3V0cyBvZiBzeXNfdGltZXJfc2V0dGltZSBmb3IgQ1BVIHRpbWVycy5cbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MDItICogVGhpcyBpcyBjYWxsZWQgd2l0aCB0aGUgdGltZXIgbG9ja2VkIGFuZCBpbnRlcnJ1cHRzIGRpc2FibGVkLlxuLS1cbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jPTg4Nz1pbnQgY29tbW9uX3RpbWVyX3NldChzdHJ1Y3Qga19pdGltZXIgKnRpbXIsIGludCBmbGFncyxcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05MjYtXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5Mjc6c3RhdGljIGludCBkb190aW1lcl9zZXR0aW1lKHRpbWVyX3QgdGltZXJfaWQsIGludCB0bXJfZmxhZ3MsIHN0cnVjdCBpdGltZXJzcGVjNjQgKm5ld19zcGVjNjQsXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05MjgtXHRcdFx0ICAgIHN0cnVjdCBpdGltZXJzcGVjNjQgKm9sZF9zcGVjNjQpXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTYxLS8qIFNldCBhIFBPU0lYLjFiIGludGVydmFsIHRpbWVyICovXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5NjI6U1lTQ0FMTF9ERUZJTkU0KHRpbWVyX3NldHRpbWUsIHRpbWVyX3QsIHRpbWVyX2lkLCBpbnQsIGZsYWdzLFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTYzLVx0XHRjb25zdCBzdHJ1Y3QgX19rZXJuZWxfaXRpbWVyc3BlYyBfX3VzZXIgKiwgbmV3X3NldHRpbmcsXG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTc1LVx0cnRuID0gb2xkX3NldHRpbmcgPyBcdTAwMjZvbGRfc3BlYyA6IE5VTEw7XG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5NzY6XHRlcnJvciA9IGRvX3RpbWVyX3NldHRpbWUodGltZXJfaWQsIGZsYWdzLCBcdTAwMjZuZXdfc3BlYywgcnRuKTtcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk3Ny1cdGlmICghZXJyb3IgXHUwMDI2XHUwMDI2IG9sZF9zZXR0aW5nKSB7XG4tLVxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTg0LSNpZmRlZiBDT05GSUdfQ09NUEFUXzMyQklUX1RJTUVcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjk4NTpTWVNDQUxMX0RFRklORTQodGltZXJfc2V0dGltZTMyLCB0aW1lcl90LCB0aW1lcl9pZCwgaW50LCBmbGFncyxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk4Ni1cdFx0c3RydWN0IG9sZF9pdGltZXJzcGVjMzIgX191c2VyICosIG5ldyxcbi0tXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05OTctXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5OTg6XHRlcnJvciA9IGRvX3RpbWVyX3NldHRpbWUodGltZXJfaWQsIGZsYWdzLCBcdTAwMjZuZXdfc3BlYywgcnRuKTtcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk5OS1cdGlmICghZXJyb3IgXHUwMDI2XHUwMDI2IG9sZCkge1xuLS1cbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaD0xOD1jYXQgXHUwMDNjXHUwMDNjIEVPRlxuLS1cbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMDAtI2RlZmluZSBfX0lHTk9SRV90aW1lcl9nZXR0aW1lNjRcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaDoxMDE6I2RlZmluZSBfX0lHTk9SRV90aW1lcl9zZXR0aW1lNjRcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMDItI2RlZmluZSBfX0lHTk9SRV90aW1lcmZkX2dldHRpbWU2NFxuLS1cbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMzMtI2RlZmluZSBfX0lHTk9SRV90aW1lcl9nZXR0aW1lXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g6MTM0OiNkZWZpbmUgX19JR05PUkVfdGltZXJfc2V0dGltZVxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTEzNS0jZGVmaW5lIF9fSUdOT1JFX3RpbWVyZmRfZ2V0dGltZVxuLS1cbnNjcmlwdHMvc3lzY2FsbC50YmwtMTM5LTEwOVx0Y29tbW9uXHR0aW1lcl9nZXRvdmVycnVuXHRcdHN5c190aW1lcl9nZXRvdmVycnVuXG5zY3JpcHRzL3N5c2NhbGwudGJsOjE0MDoxMTBcdHRpbWUzMlx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbnNjcmlwdHMvc3lzY2FsbC50Ymw6MTQxOjExMFx0NjRcdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxuc2NyaXB0cy9zeXNjYWxsLnRibC0xNDItMTExXHRjb21tb25cdHRpbWVyX2RlbGV0ZVx0XHRcdHN5c190aW1lcl9kZWxldGVcbi0tXG5zY3JpcHRzL3N5c2NhbGwudGJsLTM1Mi00MDhcdDMyXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVxuc2NyaXB0cy9zeXNjYWxsLnRibDozNTM6NDA5XHQzMlx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzU0LTQxMFx0MzJcdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg9MTI0PXRpbWVfdCB0aW1lKHRpbWVfdCAqdHB0cilcbi0tXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMTM5LSAqIGludCB0aW1lcl9nZXR0aW1lKHRpbWVyX3QgdGltZXJpZCwgc3RydWN0IGl0aW1lcnNwZWMgKmN1cnJfdmFsdWUpO1xudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE0MDogKiBpbnQgdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyaWQsIGludCBmbGFncywgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKm5ld192YWx1ZSwgc3RydWN0IGl0aW1lcnNwZWMgKm9sZF92YWx1ZSk7XG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMTQxLSAqL1xuLS1cbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaD0xODU9c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MTg2OmludCBfc3lzX3RpbWVyX3NldHRpbWUodGltZXJfdCB0aW1lcmlkLCBpbnQgZmxhZ3MsXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMTg3LVx0XHQgICAgICAgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKm5ld192YWx1ZSwgc3RydWN0IGl0aW1lcnNwZWMgKm9sZF92YWx1ZSlcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xODgte1xudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE4OTojaWYgZGVmaW5lZChfX05SX3RpbWVyX3NldHRpbWU2NClcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xOTAtXHRfX25vbGliY19hc3NlcnRfdGltZTY0X3R5cGUobmV3X3ZhbHVlLVx1MDAzZWl0X3ZhbHVlLnR2X3NlYyk7XG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MTkxOlx0cmV0dXJuIF9fbm9saWJjX3N5c2NhbGw0KF9fTlJfdGltZXJfc2V0dGltZTY0LCB0aW1lcmlkLCBmbGFncywgbmV3X3ZhbHVlLCBvbGRfdmFsdWUpO1xudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE5Mi0jZWxzZVxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE5My1cdF9fbm9saWJjX2Fzc2VydF9uYXRpdmVfdGltZTY0KCk7XG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MTk0Olx0cmV0dXJuIF9fbm9saWJjX3N5c2NhbGw0KF9fTlJfdGltZXJfc2V0dGltZSwgdGltZXJpZCwgZmxhZ3MsIG5ld192YWx1ZSwgb2xkX3ZhbHVlKTtcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xOTUtI2VuZGlmXG4tLVxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oPTE5OD1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSlcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaDoxOTk6aW50IHRpbWVyX3NldHRpbWUodGltZXJfdCB0aW1lcmlkLCBpbnQgZmxhZ3MsXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMjAwLVx0XHQgIGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpuZXdfdmFsdWUsIHN0cnVjdCBpdGltZXJzcGVjICpvbGRfdmFsdWUpXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMjAxLXtcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaDoyMDI6XHRyZXR1cm4gX19zeXNyZXQoX3N5c190aW1lcl9zZXR0aW1lKHRpbWVyaWQsIGZsYWdzLCBuZXdfdmFsdWUsIG9sZF92YWx1ZSkpO1xudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTIwMy19XG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTMwNT1fX1NZU0NBTEwoX19OUl90aW1lcl9nZXRvdmVycnVuLCBzeXNfdGltZXJfZ2V0b3ZlcnJ1bilcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtMzA3LSNpZiBkZWZpbmVkKF9fQVJDSF9XQU5UX1RJTUUzMl9TWVNDQUxMUykgfHwgX19CSVRTX1BFUl9MT05HICE9IDMyXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6MzA4OiNkZWZpbmUgX19OUl90aW1lcl9zZXR0aW1lIDExMFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjMwOTpfX1NDXzMyNjQoX19OUl90aW1lcl9zZXR0aW1lLCBzeXNfdGltZXJfc2V0dGltZTMyLCBzeXNfdGltZXJfc2V0dGltZSlcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC0zMTAtI2VuZGlmXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTcyNj1fX1NZU0NBTEwoX19OUl90aW1lcl9nZXR0aW1lNjQsIHN5c190aW1lcl9nZXR0aW1lKVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyNzojZGVmaW5lIF9fTlJfdGltZXJfc2V0dGltZTY0IDQwOVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyODpfX1NZU0NBTEwoX19OUl90aW1lcl9zZXR0aW1lNjQsIHN5c190aW1lcl9zZXR0aW1lKVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTcyOS0jZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lNjQgNDEwXG4tLVxudG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM0NS00MTRcdGNvbW1vblx0dGltZXJfY3JlYXRlXHRcdFx0c3lzX3RpbWVyX2NyZWF0ZVxudG9vbHMvcGVyZi9hcmNoL2FscGhhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM0Njo0MTVcdGNvbW1vblx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ3LTQxNlx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3NS0yNTdcdGNvbW1vblx0dGltZXJfY3JlYXRlXHRcdHN5c190aW1lcl9jcmVhdGVcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mjc2OjI1OFx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lMzJcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjc3LTI1OVx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQyNi00MDhcdGNvbW1vblx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDI3OjQwOVx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MjgtNDEwXHRjb21tb25cdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtMjcyLTI1N1x0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0c3lzX3RpbWVyX2NyZWF0ZVx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDoyNzM6MjU4XHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcdGNvbW1vblx0dGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQyMy00MDhcdGNvbW1vblx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MjQ6NDA5XHRjb21tb25cdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDI1LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTIyNy0yMTZcdG42NFx0dGltZXJfY3JlYXRlXHRcdFx0c3lzX3RpbWVyX2NyZWF0ZVxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsOjIyODoyMTdcdG42NFx0dGltZXJfc2V0dGltZVx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMjI5LTIxOFx0bjY0XHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3OS0yNTBcdGNvbW1vblx0dGltZXJfY3JlYXRlXHRcdHN5c190aW1lcl9jcmVhdGVcdFx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjgwOjI1MVx0MzJcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyODE6MjUxXHQ2NFx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yODItMjUyXHQzMlx0dGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTAtNDA4XHQzMlx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcdFx0c3lzX3RpbWVyX2dldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDExOjQwOVx0MzJcdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvcGFyaXNjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMi00MTBcdDMyXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMDYtMjQwXHRjb21tb25cdHRpbWVyX2NyZWF0ZVx0XHRcdHN5c190aW1lcl9jcmVhdGVcdFx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwNzoyNDFcdDMyXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzA4OjI0MVx0NjRcdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzA5OjI0MVx0c3B1XHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTMxMC0yNDJcdDMyXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWUzMlxuLS1cbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMi00MDhcdDMyXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTAzOjQwOVx0MzJcdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MDQtNDEwXHQzMlx0dGltZXJmZF9nZXR0aW1lNjRcdFx0c3lzX3RpbWVyZmRfZ2V0dGltZVx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEwLTI1NFx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyMTE6MjU1XHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEyLTI1Nlx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjY5LTI1OVx0Y29tbW9uXHR0aW1lcl9jcmVhdGVcdFx0XHRzeXNfdGltZXJfY3JlYXRlXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjcwOjI2MFx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3MS0yNjFcdGNvbW1vblx0dGltZXJfZ2V0dGltZVx0XHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDE1LTQwOFx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxNjo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDEwXHRjb21tb25cdHRpbWVyZmRfZ2V0dGltZTY0XHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzE4LTI2MVx0Y29tbW9uXHRzY2hlZF9zZXRhZmZpbml0eVx0c3lzX3NjaGVkX3NldGFmZmluaXR5XHRcdGNvbXBhdF9zeXNfc2NoZWRfc2V0YWZmaW5pdHlcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozMTk6MjYyXHQzMlx0dGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzIwOjI2Mlx0NjRcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMjEtMjYzXHQzMlx0dGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Ny00MDhcdDMyXHR0aW1lcl9nZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfZ2V0dGltZVx0XHRzeXNfdGltZXJfZ2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1ODo0MDlcdDMyXHR0aW1lcl9zZXR0aW1lNjRcdFx0XHRzeXNfdGltZXJfc2V0dGltZVx0XHRzeXNfdGltZXJfc2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1OS00MTBcdDMyXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXHRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcdGkzODZcdHRpbWVyX2NyZWF0ZVx0XHRzeXNfdGltZXJfY3JlYXRlXHRcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjI3NToyNjBcdGkzODZcdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzYtMjYxXHRpMzg2XHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lMzJcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxNy00MDhcdGkzODZcdHRpbWVyX2dldHRpbWU2NFx0XHRzeXNfdGltZXJfZ2V0dGltZVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MTg6NDA5XHRpMzg2XHR0aW1lcl9zZXR0aW1lNjRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDE5LTQxMFx0aTM4Nlx0dGltZXJmZF9nZXR0aW1lNjRcdHN5c190aW1lcmZkX2dldHRpbWVcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTIzNC0yMjJcdDY0XHR0aW1lcl9jcmVhdGVcdFx0c3lzX3RpbWVyX2NyZWF0ZVxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDoyMzU6MjIzXHRjb21tb25cdHRpbWVyX3NldHRpbWVcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMjM2LTIyNFx0Y29tbW9uXHR0aW1lcl9nZXR0aW1lXHRcdHN5c190aW1lcl9nZXR0aW1lXG4tLVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzAtMjQ5XHRjb21tb25cdHRpbWVyX2RlbGV0ZVx0XHRcdHN5c190aW1lcl9kZWxldGVcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjcxOjI1MFx0Y29tbW9uXHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWUzMlxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzItMjUxXHRjb21tb25cdHRpbWVyX2dldHRpbWVcdFx0XHRzeXNfdGltZXJfZ2V0dGltZTMyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODItNDA4XHRjb21tb25cdHRpbWVyX2dldHRpbWU2NFx0XHRcdHN5c190aW1lcl9nZXR0aW1lXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4Mzo0MDlcdGNvbW1vblx0dGltZXJfc2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzg0LTQxMFx0Y29tbW9uXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxudG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYz02Nzc5PXZvaWQgbXNyX3N1bV9yZWNvcmQodm9pZClcbi0tXG50b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jLTY4MTItXG50b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jOjY4MTM6XHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcdTAwMjZpdHMsIE5VTEwpID09IC0xKSB7XG50b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jLTY4MTQtXHRcdGZwcmludGYob3V0ZiwgXCYjMzQ7Q2FuIG5vdCBzZXQgdGltZXIuXFxuXCYjMzQ7KTtcbi0tXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTEzOS0xMDlcdGNvbW1vblx0dGltZXJfZ2V0b3ZlcnJ1blx0XHRzeXNfdGltZXJfZ2V0b3ZlcnJ1blxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDoxNDA6MTEwXHR0aW1lMzJcdHRpbWVyX3NldHRpbWVcdFx0XHRzeXNfdGltZXJfc2V0dGltZTMyXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjE0MToxMTBcdDY0XHR0aW1lcl9zZXR0aW1lXHRcdFx0c3lzX3RpbWVyX3NldHRpbWVcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMTQyLTExMVx0Y29tbW9uXHR0aW1lcl9kZWxldGVcdFx0XHRzeXNfdGltZXJfZGVsZXRlXG4tLVxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0zNTItNDA4XHQzMlx0dGltZXJfZ2V0dGltZTY0XHRcdFx0c3lzX3RpbWVyX2dldHRpbWVcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6MzUzOjQwOVx0MzJcdHRpbWVyX3NldHRpbWU2NFx0XHRcdHN5c190aW1lcl9zZXR0aW1lXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTM1NC00MTBcdDMyXHR0aW1lcmZkX2dldHRpbWU2NFx0XHRzeXNfdGltZXJmZF9nZXR0aW1lXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYz0xOTQ9c3RhdGljIHZvaWQgd2F0Y2hkb2dfdGltZXJfZnVuYyh1bmlvbiBzaWd2YWwgc2lndmFsKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjEyLVx0XHRlbnYud2F0Y2hkb2dfc3RhdGUgPSBXRF9LSUxMO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYzoyMTM6XHRcdGVyciA9IHRpbWVyX3NldHRpbWUoZW52LndhdGNoZG9nLCAwLCBcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjE0LVx0XHRpZiAoZXJyKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmM9MjI2PXN0YXRpYyB2b2lkIHdhdGNoZG9nX3N0YXJ0KHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYy0yMzktXHR9XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jOjI0MDpcdGVyciA9IHRpbWVyX3NldHRpbWUoZW52LndhdGNoZG9nLCAwLCBcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjQxLVx0aWYgKGVycilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jPTI0NT1zdGF0aWMgdm9pZCB3YXRjaGRvZ19zdG9wKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYy0yNTAtXHRlbnYud2F0Y2hkb2dfc3RhdGUgPSBXRF9OT1RJRlk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jOjI1MTpcdGVyciA9IHRpbWVyX3NldHRpbWUoZW52LndhdGNoZG9nLCAwLCBcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjUyLVx0aWYgKGVycilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9ub2xpYmMvbm9saWJjLXRlc3QuYz0xMDkzPWludCB0ZXN0X3RpbWVyKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbm9saWJjL25vbGliYy10ZXN0LmMtMTEwOC1cdH07XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9ub2xpYmMvbm9saWJjLXRlc3QuYzoxMTA5Olx0cmV0ID0gdGltZXJfc2V0dGltZSh0aW1lciwgMCwgXHUwMDI2dGltZXJzcGVjLCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25vbGliYy9ub2xpYmMtdGVzdC5jLTExMTAtXHRpZiAocmV0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy90aW1lci5jPTE4PXN0YXRpYyBpbnQgcnVuX3Rlc3QoaW50IGNsb2NraWQsIHN0cnVjdCB0aW1lc3BlYyBub3cpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZW5zL3RpbWVyLmMtNTEtXHRcdFx0ZmxhZ3MgfD0gVElNRVJfQUJTVElNRTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy90aW1lci5jOjUyOlx0XHRpZiAodGltZXJfc2V0dGltZShmZCwgZmxhZ3MsIFx1MDAyNm5ld192YWx1ZSwgTlVMTCkgPT0gLTEpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lbnMvdGltZXIuYy01My1cdFx0XHRyZXR1cm4gcHJfcGVycm9yKFwmIzM0O3RpbWVyZmRfc2V0dGltZVwmIzM0Oyk7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2FsYXJtdGltZXItc3VzcGVuZC5jPTEwNT1pbnQgbWFpbih2b2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYy0xNDQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvYWxhcm10aW1lci1zdXNwZW5kLmM6MTQ1Olx0XHR0aW1lcl9zZXR0aW1lKHRtMSwgVElNRVJfQUJTVElNRSwgXHUwMDI2aXRzMSwgXHUwMDI2aXRzMik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvYWxhcm10aW1lci1zdXNwZW5kLmMtMTQ2LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9sZWFwLWEtZGF5LmM9MTc1PWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbGVhcC1hLWRheS5jLTMwMy1cdFx0aXRzMS5pdF9pbnRlcnZhbC50dl9uc2VjID0gMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9sZWFwLWEtZGF5LmM6MzA0Olx0XHR0aW1lcl9zZXR0aW1lKHRtMSwgVElNRVJfQUJTVElNRSwgXHUwMDI2aXRzMSwgTlVMTCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbGVhcC1hLWRheS5jLTMwNS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbmFub3NsZWVwLmM9MTI0PXN0YXRpYyBpbnQgbmFub3NsZWVwX3Rlc3RfcmVtYWluaW5nKGludCBjbG9ja2lkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYy0xNDEtXHRpdGltZXIuaXRfdmFsdWUudHZfbnNlYyA9IE5TRUNfUEVSX1NFQyAvIDQ7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbmFub3NsZWVwLmM6MTQyOlx0cmV0ID0gdGltZXJfc2V0dGltZSh0aW1lciwgMCwgXHUwMDI2aXRpbWVyLCBOVUxMKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYy0xNDMtXHRpZiAocmV0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz0xNDQ9c3RhdGljIHZvaWQgY2hlY2tfdGltZXJfY3JlYXRlKGludCB3aGljaCwgY29uc3QgY2hhciAqbmFtZSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMTYzLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjE2NDpcdGlmICh0aW1lcl9zZXR0aW1lKGlkLCAwLCBcdTAwMjZ2YWwsIE5VTEwpIFx1MDAzYyAwKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjE2NTpcdFx0ZmF0YWxfZXJyb3IobmFtZSwgXCYjMzQ7dGltZXJfc2V0dGltZSgpXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0xNjYtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jPTE4Nj1zdGF0aWMgdm9pZCAqY3RkX3RocmVhZF9mdW5jKHZvaWQgKmFyZylcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMjAxLVx0XHRmYXRhbF9lcnJvcihOVUxMLCBcJiMzNDt0aW1lcl9jcmVhdGUoKVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6MjAyOlx0aWYgKHRpbWVyX3NldHRpbWUoaWQsIDAsIFx1MDAyNnZhbCwgTlVMTCkpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6MjAzOlx0XHRmYXRhbF9lcnJvcihOVUxMLCBcJiMzNDt0aW1lcl9zZXR0aW1lKClcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTIwNC1cdHdoaWxlIChjdGRfY291bnQgXHUwMDNlIDAgXHUwMDI2XHUwMDI2ICFjdGRfZmFpbGVkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz0yNjg9c3RhdGljIHZvaWQgY2hlY2tfc2lnX2lnbihpbnQgdGhyZWFkKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zMTMtXHRpdHMuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IDEwMDAwMDAwMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozMTQ6XHR0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFx1MDAyNml0cywgTlVMTCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzE1LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz0zNTQ9c3RhdGljIHZvaWQgY2hlY2tfcmVhcm0odm9pZClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzg2LVx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAxMDAwMDAwMDA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6Mzg3Olx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXHUwMDI2aXRzLCBOVUxMKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozODg6XHRcdGZhdGFsX2Vycm9yKE5VTEwsIFwmIzM0O3RpbWVyX3NldHRpbWUoKVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzg5LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zOTYtXHRpdHMuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IDA7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6Mzk3Olx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXHUwMDI2aXRzLCBOVUxMKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozOTg6XHRcdGZhdGFsX2Vycm9yKE5VTEwsIFwmIzM0O3RpbWVyX3NldHRpbWUoKVwmIzM0Oyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzk5LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz00MTA9c3RhdGljIHZvaWQgY2hlY2tfZGVsZXRlKHZvaWQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTQ0Mi1cdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjQ0MzpcdGlmICh0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFx1MDAyNml0cywgTlVMTCkpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6NDQ0Olx0XHRmYXRhbF9lcnJvcihOVUxMLCBcJiMzNDt0aW1lcl9zZXR0aW1lKClcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTQ0NS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM9NDU4PXN0YXRpYyB2b2lkIGNoZWNrX3NpZ2V2X25vbmUoaW50IHdoaWNoLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy00NzUtXHRpdHMuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IDEwMDAwMDAwMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzo0NzY6XHR0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFx1MDAyNml0cywgTlVMTCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNDc3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz00OTY9c3RhdGljIHZvaWQgY2hlY2tfZ2V0dGltZShpbnQgd2hpY2gsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTUyMi1cdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjUyMzpcdGlmICh0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFx1MDAyNml0cywgTlVMTCkpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6NTI0Olx0XHRmYXRhbF9lcnJvcihuYW1lLCBcJiMzNDt0aW1lcl9zZXR0aW1lKClcJiMzNDspO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTUyNS1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM9NTQ5PXN0YXRpYyB2b2lkIGNoZWNrX292ZXJydW4oaW50IHdoaWNoLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy01ODItXHRpdHMuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IDEwMDAwMDAwMDtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzo1ODM6XHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcdTAwMjZpdHMsIE5VTEwpKVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjU4NDpcdFx0ZmF0YWxfZXJyb3IobmFtZSwgXCYjMzQ7dGltZXJfc2V0dGltZSgpXCYjMzQ7KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy01ODUtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYz0xMTE9aW50IHNldHVwX3RpbWVyKGludCBjbG9ja19pZCwgaW50IGZsYWdzLCBpbnQgaW50ZXJ2YWwsIHRpbWVyX3QgKnRtMSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvc2V0LXRpbWVyLWxhdC5jLTE1MS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmM6MTUyOlx0ZXJyID0gdGltZXJfc2V0dGltZSgqdG0xLCBmbGFncywgXHUwMDI2aXRzMSwgXHUwMDI2aXRzMik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvc2V0LXRpbWVyLWxhdC5jLTE1My1cdGlmIChlcnIpIHtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmM6MTU0Olx0XHRwcmludGYoXCYjMzQ7JXMgLSB0aW1lcl9zZXR0aW1lKCkgZmFpbGVkXFxuXCYjMzQ7LCBjbG9ja3N0cmluZyhjbG9ja19pZCkpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYy0xNTUtXHRcdHJldHVybiAtMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0NTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCdWcmIzM5O3MgQ29udGV4dCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMgYnVnLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYHN5c190aW1lcl9zZXR0aW1lYCBsb29rZWQgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGEgcG90ZW50aWFsIGZvY3VzIHN5bWJvbCwgYnV0IHRoZW4gSSByZW1lbWJlcmVkIFN5emthbGxlciBpcyBhbHJlYWR5IGhpdHRpbmcgc3lzY2FsbHMuIFNvLCBzY3JhdGNoIHRoYXQuIEJ1dCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWRgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGZyb20gYGJlZ2luX25ld19leGVjYC4gQW5kLCB0aGUgYnVnIGlzIGFib3V0IFBPU0lYIENQVSB0aW1lcnMgYW5kIGBleGVjdmVgLiBBaGEhIGBiZWdpbl9uZXdfZXhlY2AgaXMgbG9va2luZyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBob25lIGluIG9uLgoKV2FpdCBhIHNlY29uZCwgYGJlZ2luX25ld19leGVjYCBhY3R1YWxseSBjYWxscyBpbnRvIGBleGVjX2JpbnBybWAgd2hpY2ggaW4gdHVybiBjYWxscyBpbnRvIGBicHJtX2V4ZWN2ZWAuIElzIGBiZWdpbl9uZXdfZXhlY2AgKnN0aWxsKiBhIGdvb2QgZm9jdXM/IFllcywgaXQgaXMsIGJlY2F1c2UgaXQmIzM5O3MgdGhlIGhlYXJ0IG9mIGBleGVjdmVgLCB0aGUgdHJhbnNpdGlvbi4gQW5kIG5vdywgSSB0aGluayBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCBpcyBhbm90aGVyIGNydWNpYWwgc3BvdC4gSXQmIzM5O3MgY2FsbGVkIGluc2lkZSBgZGVfdGhyZWFkYCwgYWZ0ZXIgYWxsLiBBcmUgdGhlcmUgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIEkmIzM5O20gbWlzc2luZz8gVGhlcmUgYXJlIHR3bywgYGV4Y2hhbmdlX3RpZHNgIGFuZCBgdGltZXJfbG9ja19zaWdoYW5kYCwgYnV0IHRoZXkgYXJlIHN0YXRpYywgc28gbWF5YmUgbm90LgoKSSBzaG91bGQgY2hlY2sgdGhlIGBDT05GSUdfUE9TSVhfVElNRVJTYCBvcHRpb24sIHRvIGNvbmZpcm0gdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFjdGl2ZS4gTGV0JiMzOTtzIHNlZSBpZiBpdCYjMzk7cyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCBJJiMzOTtsbCBsb29rIHRoYXQgdXAgaW4gYGluaXQvS2NvbmZpZ2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5pdC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzYwOlx0XG4xNzYxOlx0Y29uZmlnIFBPU0lYX1RJTUVSU1xuMTc2MjpcdFx0Ym9vbCBcJiMzNDtQb3NpeCBDbG9ja3MgXHUwMDI2IHRpbWVyc1wmIzM0OyBpZiBFWFBFUlRcbjE3NjM6XHRcdGRlZmF1bHQgeVxuMTc2NDpcdFx0aGVscFxuMTc2NTpcdFx0ICBUaGlzIGluY2x1ZGVzIG5hdGl2ZSBzdXBwb3J0IGZvciBQT1NJWCB0aW1lcnMgdG8gdGhlIGtlcm5lbC5cbjE3NjY6XHRcdCAgU29tZSBlbWJlZGRlZCBzeXN0ZW1zIGhhdmUgbm8gdXNlIGZvciB0aGVtIGFuZCB0aGVyZWZvcmUgdGhleVxuMTc2NzpcdFx0ICBjYW4gYmUgY29uZmlndXJlZCBvdXQgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBrZXJuZWwgaW1hZ2UuXG4xNzY4Olx0XG4xNzY5Olx0XHQgIFdoZW4gdGhpcyBvcHRpb24gaXMgZGlzYWJsZWQsIHRoZSBmb2xsb3dpbmcgc3lzY2FsbHMgd29uJiMzOTt0IGJlXG4xNzcwOlx0XHQgIGF2YWlsYWJsZTogdGltZXJfY3JlYXRlLCB0aW1lcl9nZXR0aW1lOiB0aW1lcl9nZXRvdmVycnVuLFxuMTc3MTpcdFx0ICB0aW1lcl9zZXR0aW1lLCB0aW1lcl9kZWxldGUsIGNsb2NrX2FkanRpbWUsIGdldGl0aW1lcixcbjE3NzI6XHRcdCAgc2V0aXRpbWVyLCBhbGFybS4gRnVydGhlcm1vcmUsIHRoZSBjbG9ja19zZXR0aW1lLCBjbG9ja19nZXR0aW1lLFxuMTc3MzpcdFx0ICBjbG9ja19nZXRyZXMgYW5kIGNsb2NrX25hbm9zbGVlcCBzeXNjYWxscyB3aWxsIGJlIGxpbWl0ZWQgdG9cbjE3NzQ6XHRcdCAgQ0xPQ0tfUkVBTFRJTUUsIENMT0NLX01PTk9UT05JQyBhbmQgQ0xPQ0tfQk9PVFRJTUUgb25seS5cbjE3NzU6XHRcbjE3NzY6XHRcdCAgSWYgdW5zdXJlIHNheSB5LlxuMTc3NzpcdFxuMTc3ODpcdGNvbmZpZyBQUklOVEtcbjE3Nzk6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzM5MAoJCQkJCQkJb3V0cHV0OiAxNTYKCQkJCQkJCXRob3VnaHRzOiAzMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFBPU0lYIFRpbWVycyBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgYENPTkZJR19QT1NJWF9USU1FUlNgIG9wdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBpdCYjMzk7cyBpbXBvcnRhbnQgZW5vdWdoIHRoYXQgd2UgbmVlZCB0byBleHBsaWNpdGx5IGluY2x1ZGUgaXQgaW4gYEVuYWJsZUNvbmZpZ3NgLiBMZXQmIzM5O3MgZ2V0IHRoaXMgb3JnYW5pemVkOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIEFic29sdXRlbHksIHRoaXMgcGF0Y2ggaXMgYSBnb29kIGNhbmRpZGF0ZS4KKiAgICoqRm9jdXNTeW1ib2xzOioqIGBiZWdpbl9uZXdfZXhlY2AgYW5kIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLgoqICAgKipFbmFibGVDb25maWdzOioqIEp1c3QgYFBPU0lYX1RJTUVSU2AuIE5vdGhpbmcgZWxzZSBpcyBuZWVkZWQuCgpUaGUgY29yZSBvZiBpdCBpcyB0aGlzOiBUaGUgcGF0Y2ggY29ycmVjdHMgYSBmbGF3IGluIGBkZV90aHJlYWRgLiAgU3BlY2lmaWNhbGx5LCBQT1NJWCBDUFUgdGltZXJzIHdlcmUgZ2V0dGluZyBtaXNzZWQgZHVyaW5nIHRoZSBQSUQgaGFuZG9mZiB3aXRoaW4gYGV4Y2hhbmdlX3RpZHMoKWAgd2hpY2ggd291bGQgbGVhZCB0byBhIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggc2ltcGx5IGFkZHMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2l0aGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgaGFwcGVuaW5nIGR1cmluZyB0aGUgYGV4ZWN2ZWAgcGF0aCwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBiZWNhdXNlIGFueSBpc3N1ZSBpbiB0aGUgYGV4ZWN2ZWAgcGF0aCBoYXMgd2lkZXNwcmVhZCBpbXBhY3QuCgpJIG5lZWRlZCB0byBtYWtlIHN1cmUgdGhhdCBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCB3YXMgYWN0dWFsbHkgZXhwb3J0ZWQsIGFuZCBpdCBpcywgaXQmIzM5O3MgZ2xvYmFsIHdpdGhpbiBga2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jYC4gU2ltaWxhcmx5LCBgYmVnaW5fbmV3X2V4ZWNgIGlzIGdsb2JhbCBpbiBgZnMvZXhlYy5jYC4KCkkgZG91YmxlIGNoZWNrZWQgdGhhdCBgUE9TSVhfVElNRVJTYCB3YXMgdGhlIG9ubHkgcmVxdWlyZWQgY29uZmlnIOKAkyBjb25maXJtZWQgaXQmIzM5O3MgdXNlZCBpbiBhbiBgI2lmZGVmYCBhbmQgbm90aGluZyBlbHNlIGlzIG5lZWRlZC4gSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQT1NJWF9USU1FUlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtiZWdpbl9uZXdfZXhlYyYjMzQ7LAogICAgJiMzNDtwb3NpeF9jcHVfdGltZXJzX2V4aXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYGRlX3RocmVhZGAgd2hlcmUgUE9TSVggQ1BVIHRpbWVycyBhcmUgbm90IHByb3Blcmx5IGRlcXVldWVkIGJlZm9yZSBgZXhjaGFuZ2VfdGlkcygpYCBoYW5kcyB0aGUgdGhyZWFkJiMzOTtzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggY2FuIGNhdXNlIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggYWRkcyBhIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBpbiBgZGVfdGhyZWFkKClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsIChleGVjdmUgcGF0aCkgYW5kIGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BPU0lYX1RJTUVSUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JlZ2luX25ld19leGVjJiMzNDssCiAgICAmIzM0O3Bvc2l4X2NwdV90aW1lcnNfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgZGVfdGhyZWFkYCB3aGVyZSBQT1NJWCBDUFUgdGltZXJzIGFyZSBub3QgcHJvcGVybHkgZGVxdWV1ZWQgYmVmb3JlIGBleGNoYW5nZV90aWRzKClgIGhhbmRzIHRoZSB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBjYW4gY2F1c2UgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYC4gVGhlIGZpeCBhZGRzIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwgKGV4ZWN2ZSBwYXRoKSBhbmQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMDI6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgZHVyaW5nIHRocmVhZCBncm91cCBsZWFkZXJzaGlwIGNoYW5nZXMgKGRlX3RocmVhZCkuIEl0IGRlcXVldWVzIHRoZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYmVmb3JlIHRoZSB0aHJlYWQmIzM5O3MgUElEIGlzIGhhbmRlZCB0byB0aGUgb2xkIGxlYWRlci4gVGhpcyBwcmV2ZW50cyBpc3N1ZXMgd2hlcmUgdGhlIHRpbWVyIHN1YnN5c3RlbSBtaWdodCBmYWlsIHRvIGxvb2sgdXAgdGhlIFBJRCBvciBhY2Nlc3MgZnJlZWQvaW52YWxpZCBzdHJ1Y3R1cmVzLiBUaGUgY2hhbmdlcyBpbnZvbHZlIGxvY2tpbmcgYW5kIHRpbWVyIG1hbmFnZW1lbnQsIHdoaWNoIGFyZSByZWxhdGVkIHRvIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBsb2dpYyBidWdzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzc3ZWMwYmRhYzM2YTQ0NTEyYTAwYzY0ZmY0OTFhNmQ5ZmE5YzM0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDkgMDI6NTQ6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9leGVjLmMgYi9mcy9leGVjLmMKaW5kZXggYzdiOGYyZDYzNjZjNC4uZjgwZjcwZTFjMjZkZSAxMDA2NDQKLS0tIGEvZnMvZXhlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4ZWMuYwpAQCAtMTAwMCw2ICYjNDM7MTAwMCwxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKIAkJICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOgogCQkgKi8KIAomIzQzOyNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTCiYjNDM7CQkvKgomIzQzOwkJICogZXhjaGFuZ2VfdGlkcygpIGhhbmRzIHRoaXMgdGhyZWFkJiMzOTtzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwKJiM0MzsJCSAqIHdoaWNoIGlzIHJlYXBlZCByaWdodCBhZnRlci4gVGhlIFBJRCBsb29rdXAgaW4KJiM0MzsJCSAqIHRpbWVyX2xvY2tfc2lnaGFuZCgpIHRoZW4gZmFpbHMgd2hpbGUgdGhlIHBlciB0aHJlYWQgQ1BVCiYjNDM7CQkgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuCiYjNDM7CQkgKi8KJiM0MzsJCXNwaW5fbG9jayhsb2NrKTsKJiM0MzsJCXBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spOwomIzQzOwkJc3Bpbl91bmxvY2sobG9jayk7CiYjNDM7I2VuZGlmCiYjNDM7CiAJCS8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXImIzM5O3MgcGlkLgogCQkgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC4KIAkJICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDUyCgkJCQkJCQlvdXRwdXQ6IDE2NQoJCQkJCQkJdGhvdWdodHM6IDI5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBPU0lYIFRpbWVyIEZpeCBpbiBgZnMvZXhlYy5jYCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmcy9leGVjLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkZV90aHJlYWRgIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgY29uZGl0aW9uYWwgb24gYENPTkZJR19QT1NJWF9USU1FUlNgIGJlaW5nIGVuYWJsZWQuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCYjMzk7cyBkZWFsaW5nIHdpdGggUE9TSVggdGltZXJzLCB3aGljaCBpcyBhIGtleSBpbmRpY2F0b3Igb2Ygd2hlcmUgdGhpcyBwYXRjaCYjMzk7cyBmb2N1cyBsaWVzLgoKVGhlIHBhdGNoIGludHJvZHVjZXMgYSBzcGlubG9jay1wcm90ZWN0ZWQgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgLiBUaGUgY29tbWVudCBpcyB0aGUgY3J1Y2lhbCBwaWVjZSBoZXJlOiBpdCBoaWdobGlnaHRzIHRoZSBwcm9ibGVtIGJlaW5nIGFkZHJlc3NlZC4gSXQgc2VlbXMgYGV4Y2hhbmdlX3RpZHMoKWAgaXMgdHJhbnNmZXJyaW5nIHRoZSB0aHJlYWQmIzM5O3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBpcyBzdWJzZXF1ZW50bHkgcmVhcGVkLiBUaGUgY3JpdGljYWwgdGltaW5nIGlzc3VlIGlzIHRoYXQgdGhlIFBJRCBsb29rdXAgd2l0aGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgKndoaWxlKiB0aGUgdGhyZWFkJiMzOTtzIENQVSB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCwgbWVhbmluZyB0aGVyZSYjMzk7cyBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGEgdGltZXIgbWlnaHQgZmlyZSBhZnRlciB0aGUgdGhyZWFkJiMzOTtzIGRhdGEgaXMgYWxyZWFkeSBmcmVlZC4gVGhhdCBwb2ludHMgdG8gdGhpcyBiZWluZyByZWxhdGVkIHRvIGEgbGlrZWx5IHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYSBsb2NraW5nIGlzc3VlIHJlbGF0ZWQgdG8gdGltaW5nLCBvciBhIHRpbWVyIGZpcmluZyBhZnRlciB0aGUgdGhyZWFkIGhhcyBleGl0ZWQuCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdGhyZWFkIHJlYXBpbmcgYW5kIHRpbWVyIGV4ZWN1dGlvbiwgYW5kIHRoZSBwYXRjaCBpcyBhdHRlbXB0aW5nIHRvIGVuc3VyZSB0aGF0IHRoZSB0aW1lcnMgYXJlIGRlcXVldWVkIGJlZm9yZSB0aGUgdGhyZWFkJiMzOTtzIFBJRCBpcyByZWFzc2lnbmVkIGFuZCBpdHMgcmVzb3VyY2VzIGNhbiBiZSBmcmVlZC4gVGhlIGxpa2VseSBzY2VuYXJpbyBpcyB0aGUgdGltZXIgdHJpZXMgdG8gZGVyZWZlcmVuY2UgbWVtb3J5IGFmdGVyIHRoZSB0aHJlYWQgaGFzIGV4aXRlZCwgbGlrZWx5IGNhdXNpbmcgYSBrZXJuZWwgcGFuaWMgb3IgdW5leHBlY3RlZCBiZWhhdmlvci4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhpcyBwYXRjaCBpcyBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHdoaWNoIGlzIGdvb2QuIEtBU0FOLCBLQ1NBTiwgb3IgbG9ja2RlcCB3b3VsZCBoYXZlIHByb2JhYmx5IGNhdWdodCBhbnkgcHJvYmxlbXMsIG9yIGl0IGNvdWxkIGJlIGEgbG9naWMgYnVnIGFuZCBhIHRvb2wgd2FzbiYjMzk7dCBuZWVkZWQgdG8gZml4IGl0LiBXZSBkb24mIzM5O3Qgc2VlIGFueSBuZXcgbWVtb3J5IGJlaW5nIGV4cG9zZWQuCgpMZXQmIzM5O3MgcXVpY2tseSBjaGVjayBgcG9zaXhfY3B1X3RpbWVyc19leGl0YCB0byB2ZXJpZnkgaXQmIzM5O3MganVzdCBkZXF1ZXVpbmcgdGltZXJzLiBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2Ugb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS4KClNvLCBJIHdpbGwgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgYSBsb2dpYyBidWcgd2l0aCB0aW1pbmcgYW5kIGxvY2tpbmcsIG5vdCBhIG1lbW9yeSBzYWZldHkgaXNzdWUgdGhhdCBLTVNBTiB3b3VsZCB0YXJnZXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gUE9TSVggQ1BVIHRpbWVycyBkdXJpbmcgdGhyZWFkIGdyb3VwIGxlYWRlcnNoaXAgY2hhbmdlcyAoZGVfdGhyZWFkKS4gSXQgZGVxdWV1ZXMgdGhlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBiZWZvcmUgdGhlIHRocmVhZCYjMzk7cyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLiBUaGlzIHByZXZlbnRzIGlzc3VlcyB3aGVyZSB0aGUgdGltZXIgc3Vic3lzdGVtIG1pZ2h0IGZhaWwgdG8gbG9vayB1cCB0aGUgUElEIG9yIGFjY2VzcyBmcmVlZC9pbnZhbGlkIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIGludm9sdmUgbG9ja2luZyBhbmQgdGltZXIgbWFuYWdlbWVudCwgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvZ2ljIGJ1Z3MuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgcmVsYXRlZCB0byBQT1NJWCBDUFUgdGltZXJzIGR1cmluZyB0aHJlYWQgZ3JvdXAgbGVhZGVyc2hpcCBjaGFuZ2VzIChkZV90aHJlYWQpLiBJdCBkZXF1ZXVlcyB0aGUgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJlZm9yZSB0aGUgdGhyZWFkJiMzOTtzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIuIFRoaXMgcHJldmVudHMgaXNzdWVzIHdoZXJlIHRoZSB0aW1lciBzdWJzeXN0ZW0gbWlnaHQgZmFpbCB0byBsb29rIHVwIHRoZSBQSUQgb3IgYWNjZXNzIGZyZWVkL2ludmFsaWQgc3RydWN0dXJlcy4gVGhlIGNoYW5nZXMgaW52b2x2ZSBsb2NraW5nIGFuZCB0aW1lciBtYW5hZ2VtZW50LCB3aGljaCBhcmUgcmVsYXRlZCB0byB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9naWMgYnVncy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU0OjE2LjU5MzI2MDA1NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNTE2ODQ0NDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBPU0lYX1RJTUVSU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJlZ2luX25ld19leGVjXCIsXG4gICAgXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gUE9TSVggQ1BVIHRpbWVycyBkdXJpbmcgdGhyZWFkIGdyb3VwIGxlYWRlcnNoaXAgY2hhbmdlcyAoZGVfdGhyZWFkKS4gSXQgZGVxdWV1ZXMgdGhlIHBlci10aHJlYWQgQ1BVIHRpbWVycyBiZWZvcmUgdGhlIHRocmVhZCdzIFBJRCBpcyBoYW5kZWQgdG8gdGhlIG9sZCBsZWFkZXIuIFRoaXMgcHJldmVudHMgaXNzdWVzIHdoZXJlIHRoZSB0aW1lciBzdWJzeXN0ZW0gbWlnaHQgZmFpbCB0byBsb29rIHVwIHRoZSBQSUQgb3IgYWNjZXNzIGZyZWVkL2ludmFsaWQgc3RydWN0dXJlcy4gVGhlIGNoYW5nZXMgaW52b2x2ZSBsb2NraW5nIGFuZCB0aW1lciBtYW5hZ2VtZW50LCB3aGljaCBhcmUgcmVsYXRlZCB0byB1c2UtYWZ0ZXItZnJlZSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9naWMgYnVncy4gVGhlc2UgdHlwZXMgb2YgYnVncyBhcmUgY2F1Z2h0IGJ5IEtBU0FOIG9yIHN0YW5kYXJkIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnksIHNvIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYGRlX3RocmVhZGAgd2hlcmUgUE9TSVggQ1BVIHRpbWVycyBhcmUgbm90IHByb3Blcmx5IGRlcXVldWVkIGJlZm9yZSBgZXhjaGFuZ2VfdGlkcygpYCBoYW5kcyB0aGUgdGhyZWFkJ3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBjYW4gY2F1c2UgYSBQSUQgbG9va3VwIGZhaWx1cmUgaW4gYHRpbWVyX2xvY2tfc2lnaGFuZCgpYC4gVGhlIGZpeCBhZGRzIGEgY2FsbCB0byBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBrZXJuZWwgKGV4ZWN2ZSBwYXRoKSBhbmQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MTYuNTkzMjY0MDc0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzcxMzQwODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzc3ZWMwYmRhYzM2YTQ0NTEyYTAwYzY0ZmY0OTFhNmQ5ZmE5YzM0MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyA5IDAyOjU0OjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xcbmluZGV4IGM3YjhmMmQ2MzY2YzQuLmY4MGY3MGUxYzI2ZGUgMTAwNjQ0XFxuLS0tIGEvZnMvZXhlYy5jXFxuKysrIGIvZnMvZXhlYy5jXFxuQEAgLTEwMDAsNiArMTAwMCwxOCBAQCBzdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4gXFx0XFx0ICogdGhlIGZvcm1lciB0aHJlYWQgZ3JvdXAgbGVhZGVyOlxcbiBcXHRcXHQgKi9cXG4gXFxuKyNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlcixcXG4rXFx0XFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxcbitcXHRcXHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxcbitcXHRcXHQgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuXFxuK1xcdFxcdCAqL1xcbitcXHRcXHRzcGluX2xvY2sobG9jayk7XFxuK1xcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbitcXHRcXHRzcGluX3VubG9jayhsb2NrKTtcXG4rI2VuZGlmXFxuK1xcbiBcXHRcXHQvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJ3MgcGlkLlxcbiBcXHRcXHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cXG4gXFx0XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU0OjE3Ljk2NTIxMTUzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc1NjI2NzY5MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBPU0lYX1RJTUVSU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJlZ2luX25ld19leGVjXCIsXG4gICAgXCJwb3NpeF9jcHVfdGltZXJzX2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgZGVfdGhyZWFkYCB3aGVyZSBQT1NJWCBDUFUgdGltZXJzIGFyZSBub3QgcHJvcGVybHkgZGVxdWV1ZWQgYmVmb3JlIGBleGNoYW5nZV90aWRzKClgIGhhbmRzIHRoZSB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsIHdoaWNoIGNhbiBjYXVzZSBhIFBJRCBsb29rdXAgZmFpbHVyZSBpbiBgdGltZXJfbG9ja19zaWdoYW5kKClgLiBUaGUgZml4IGFkZHMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgaW4gYGRlX3RocmVhZCgpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIGtlcm5lbCAoZXhlY3ZlIHBhdGgpIGFuZCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3NzdlYzBiZGFjMzZhNDQ1MTJhMDBjNjRmZjQ5MWE2ZDlmYTljMzQyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgOSAwMjo1NDoxNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBiL2ZzL2V4ZWMuY1xuaW5kZXggYzdiOGYyZDYzNjZjNC4uZjgwZjcwZTFjMjZkZSAxMDA2NDRcbi0tLSBhL2ZzL2V4ZWMuY1xuKysrIGIvZnMvZXhlYy5jXG5AQCAtMTAwMCw2ICsxMDAwLDE4IEBAIHN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxuIFx0XHQgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6XG4gXHRcdCAqL1xuIFxuKyNpZmRlZiBDT05GSUdfUE9TSVhfVElNRVJTXG4rXHRcdC8qXG4rXHRcdCAqIGV4Y2hhbmdlX3RpZHMoKSBoYW5kcyB0aGlzIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlcixcbitcdFx0ICogd2hpY2ggaXMgcmVhcGVkIHJpZ2h0IGFmdGVyLiBUaGUgUElEIGxvb2t1cCBpblxuK1x0XHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxuK1x0XHQgKiB0aW1lcnMgYXJlIHN0aWxsIHF1ZXVlZCBoZXJlLCBzbyBkZXF1ZXVlIHRoZW0gZmlyc3QuXG4rXHRcdCAqL1xuK1x0XHRzcGluX2xvY2sobG9jayk7XG4rXHRcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xuK1x0XHRzcGluX3VubG9jayhsb2NrKTtcbisjZW5kaWZcbitcbiBcdFx0LyogQmVjb21lIGEgcHJvY2VzcyBncm91cCBsZWFkZXIgd2l0aCB0aGUgb2xkIGxlYWRlcidzIHBpZC5cbiBcdFx0ICogVGhlIG9sZCBsZWFkZXIgYmVjb21lcyBhIHRocmVhZCBvZiB0aGUgdGhpcyB0aHJlYWQgZ3JvdXAuXG4gXHRcdCAqL1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MTcuOTY1MjEyNDY5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzMzQ2NTgxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IEZvY3VzIG9uIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIGluIGBmcy9leGVjLmNgIHRoYXTigJlzIGFsdGVyaW5nIGBkZV90aHJlYWQoKWAuIEZyb20gd2hhdCBJIHNlZSwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBgcG9zaXhfY3B1X3RpbWVyc19leGl0KHRzaylgIGNhbGwgKndpdGhpbiogYGRlX3RocmVhZCgpYCDigJMgYnV0IG9ubHkgaWYgYENPTkZJR19QT1NJWF9USU1FUlNgIGlzIGVuYWJsZWQuIFRoYXQncyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgYmVjYXVzZSB0aGlzIGlzIHRvdWNoaW5nIHRoZSBjb3JlIGtlcm5lbCBleGVjdXRpb24gcGF0aCwgc3BlY2lmaWNhbGx5IHdoZW4gYSBub24tbGVhZGVyIHRocmVhZCBpcyBjYWxsaW5nIGBleGVjdmVgIGFuZCBkZXRhY2hpbmcgZnJvbSB0aGUgdGhyZWFkIGdyb3VwLiBGdW5jdGlvbmFsbHksIGl0J3MgbWFraW5nIGEgY2hhbmdlIHJpZ2h0IHRoZXJlLCBzbyBteSBpbml0aWFsIGluc3RpbmN0IGlzOiAqKmRlZmluaXRlbHkqKiB3b3J0aCBmdXp6aW5nLiBUaGUgaW50ZXJwbGF5IG9mIFBPU0lYIHRpbWVycyB3aXRoIHRoZSBgZXhlY3ZlYCBwYXRoIGNvdWxkIGJlIGEgcmljaCBzb3VyY2Ugb2YgaW50ZXJlc3RpbmcgYmVoYXZpb3IuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBhIGJpdC4gV2hhdCdzIHRoZSBjb250ZXh0IGhlcmU/IExldCBtZSBjaGVjayBgZnMvZXhlYy5jYCBhbmQgZmlndXJlIG91dCB3aGF0IFwibG9ja1wiIGlzLiBBaCwgZ29vZC4gSXQncyB1c2luZyBgc3Bpbl9sb2NrKGxvY2spO2AgYW5kIGBzcGluX3VubG9jayhsb2NrKTtgLCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IHNwaW5sb2Nrcy4gSSBzaG91bGQgY2hlY2sgbGluZSAxMDAwIGluIGBmcy9leGVjLmNgIGFuZCB0aGUgbGluZXMgYXJvdW5kIGl0IGp1c3QgdG8gZ2V0IGEgZnVsbGVyIHBpY3R1cmUgb2YgdGhlIGxvY2sncyBzY29wZSBhbmQgdGhlIHByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZXMuIFNwaW5sb2NrcyB3aXRoaW4gYGRlX3RocmVhZGAuLi4gdGhpcyBjb3VsZCBpbnRyb2R1Y2Ugc3luY2hyb25pemF0aW9uIGlzc3VlcyBvciByYWNlIGNvbmRpdGlvbnMgdGhhdCBmdXp6aW5nIG1pZ2h0IGV4cG9zZS4gR290dGEgbG9vayBhdCB0aGUgYmlnZ2VyIHBpY3R1cmUgYW5kIGhvdyBhbGwgdGhlc2UgcHV6emxlIHBpZWNlcyBmaXQgdG9nZXRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDoyMi41OTg2Nzk5NDRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTgxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leGVjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTkwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTkwOlxcdFxcdFxcdCAqIGFsc28gdGFrZSBpdHMgYmlydGhkYXRlIChhbHdheXMgZWFybGllciB0aGFuIG91ciBvd24pLlxcbiA5OTE6XFx0XFx0XFx0ICovXFxuIDk5MjpcXHRcXHRcXHR0c2stXFx1MDAzZXN0YXJ0X3RpbWUgPSBsZWFkZXItXFx1MDAzZXN0YXJ0X3RpbWU7XFxuIDk5MzpcXHRcXHRcXHR0c2stXFx1MDAzZXN0YXJ0X2Jvb3R0aW1lID0gbGVhZGVyLVxcdTAwM2VzdGFydF9ib290dGltZTtcXG4gOTk0OlxcdFxcbiA5OTU6XFx0XFx0XFx0QlVHX09OKCFzYW1lX3RocmVhZF9ncm91cChsZWFkZXIsIHRzaykpO1xcbiA5OTY6XFx0XFx0XFx0LypcXG4gOTk3OlxcdFxcdFxcdCAqIEFuIGV4ZWMoKSBzdGFydHMgYSBuZXcgdGhyZWFkIGdyb3VwIHdpdGggdGhlXFxuIDk5ODpcXHRcXHRcXHQgKiBUR0lEIG9mIHRoZSBwcmV2aW91cyB0aHJlYWQgZ3JvdXAuIFJlaGFzaCB0aGVcXG4gOTk5OlxcdFxcdFxcdCAqIHR3byB0aHJlYWRzIHdpdGggYSBzd2l0Y2hlZCBQSUQsIGFuZCByZWxlYXNlXFxuMTAwMDpcXHRcXHRcXHQgKiB0aGUgZm9ybWVyIHRocmVhZCBncm91cCBsZWFkZXI6XFxuMTAwMTpcXHRcXHRcXHQgKi9cXG4xMDAyOlxcdFxcbjEwMDM6XFx0I2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcXG4xMDA0OlxcdFxcdFxcdC8qXFxuMTAwNTpcXHRcXHRcXHQgKiBleGNoYW5nZV90aWRzKCkgaGFuZHMgdGhpcyB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsXFxuMTAwNjpcXHRcXHRcXHQgKiB3aGljaCBpcyByZWFwZWQgcmlnaHQgYWZ0ZXIuIFRoZSBQSUQgbG9va3VwIGluXFxuMTAwNzpcXHRcXHRcXHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxcbjEwMDg6XFx0XFx0XFx0ICogdGltZXJzIGFyZSBzdGlsbCBxdWV1ZWQgaGVyZSwgc28gZGVxdWV1ZSB0aGVtIGZpcnN0LlxcbjEwMDk6XFx0XFx0XFx0ICovXFxuMTAxMDpcXHRcXHRcXHRzcGluX2xvY2sobG9jayk7XFxuMTAxMTpcXHRcXHRcXHRwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKTtcXG4xMDEyOlxcdFxcdFxcdHNwaW5fdW5sb2NrKGxvY2spO1xcbjEwMTM6XFx0I2VuZGlmXFxuMTAxNDpcXHRcXG4xMDE1OlxcdFxcdFxcdC8qIEJlY29tZSBhIHByb2Nlc3MgZ3JvdXAgbGVhZGVyIHdpdGggdGhlIG9sZCBsZWFkZXIncyBwaWQuXFxuMTAxNjpcXHRcXHRcXHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cXG4xMDE3OlxcdFxcdFxcdCAqL1xcbjEwMTg6XFx0XFx0XFx0ZXhjaGFuZ2VfdGlkcyh0c2ssIGxlYWRlcik7XFxuMTAxOTpcXHRcXHRcXHR0cmFuc2Zlcl9waWQobGVhZGVyLCB0c2ssIFBJRFRZUEVfVEdJRCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU0OjIyLjU5ODc3MzIwNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzYyNDY4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEZWNvbnN0cnVjdGluZyBgZGVfdGhyZWFkYCoqXG5cblJpZ2h0LCBzbyB3ZSdyZSBsb29raW5nIGF0IGBkZV90aHJlYWRgLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgbG9ja2luZyBtZWNoYW5pc20uIEJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbnMgaW4gdGhpcyBjb2RlYmFzZSwgdGhhdCBgbG9ja2AgdmFyaWFibGUgaXMgYWxtb3N0IGNlcnRhaW5seSBhIHNwaW5sb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmFsIGhhbmRsaW5nIHN0cnVjdHVyZS4gUHJvYmFibHkgc29tZXRoaW5nIGxpa2UgYFx1MDAyNnNpZ2hhbmQtXHUwMDNlc2lnbG9ja2AsIG1heWJlIGEgbmVzdGVkIG1lbWJlciB3aXRoaW4gYSBsYXJnZXIgc3RydWN0dXJlLiBHb3R0YSBiZSBjYXJlZnVsIHdpdGggdGhpcywgdGhvdWdoOyBzaWduYWwgaGFuZGxpbmcgaXMgYSBtaW5lZmllbGQuIEknbGwgcXVpY2tseSBjb25maXJtIGV4YWN0bHkgd2hpY2ggbG9jayBpdCBpcy4gR290dGEgZW5zdXJlIHdlJ3JlIHVzaW5nIHRoZSBjb3JyZWN0IG9uZSwgYW5kIG5vdCBhY2NpZGVudGFsbHkgZ3JhYmJpbmcgdGhlIHdyb25nIGxvY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU0OjI2LjEzNTAyMjAzNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4ZWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5NzAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5NzA6XFx0XFx0XFx0XFx0ICovXFxuIDk3MTpcXHRcXHRcXHRcXHRzaWctXFx1MDAzZW5vdGlmeV9jb3VudCA9IC0xO1xcbiA5NzI6XFx0XFx0XFx0XFx0aWYgKGxpa2VseShsZWFkZXItXFx1MDAzZWV4aXRfc3RhdGUpKVxcbiA5NzM6XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDk3NDpcXHRcXHRcXHRcXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfS0lMTEFCTEUpO1xcbiA5NzU6XFx0XFx0XFx0XFx0d3JpdGVfdW5sb2NrX2lycShcXHUwMDI2dGFza2xpc3RfbG9jayk7XFxuIDk3NjpcXHRcXHRcXHRcXHRjZ3JvdXBfdGhyZWFkZ3JvdXBfY2hhbmdlX2VuZCh0c2spO1xcbiA5Nzc6XFx0XFx0XFx0XFx0c2NoZWR1bGUoKTtcXG4gOTc4OlxcdFxcdFxcdFxcdGlmIChfX2ZhdGFsX3NpZ25hbF9wZW5kaW5nKHRzaykpXFxuIDk3OTpcXHRcXHRcXHRcXHRcXHRnb3RvIGtpbGxlZDtcXG4gOTgwOlxcdFxcdFxcdH1cXG4gOTgxOlxcdFxcbiA5ODI6XFx0XFx0XFx0LypcXG4gOTgzOlxcdFxcdFxcdCAqIFRoZSBvbmx5IHJlY29yZCB3ZSBoYXZlIG9mIHRoZSByZWFsLXRpbWUgYWdlIG9mIGFcXG4gOTg0OlxcdFxcdFxcdCAqIHByb2Nlc3MsIHJlZ2FyZGxlc3Mgb2YgZXhlY3MgaXQncyBkb25lLCBpcyBzdGFydF90aW1lLlxcbiA5ODU6XFx0XFx0XFx0ICogQWxsIHRoZSBwYXN0IENQVSB0aW1lIGlzIGFjY3VtdWxhdGVkIGluIHNpZ25hbF9zdHJ1Y3RcXG4gOTg2OlxcdFxcdFxcdCAqIGZyb20gc2lzdGVyIHRocmVhZHMgbm93IGRlYWQuICBCdXQgaW4gdGhpcyBub24tbGVhZGVyXFxuIDk4NzpcXHRcXHRcXHQgKiBleGVjLCBub3RoaW5nIHN1cnZpdmVzIGZyb20gdGhlIG9yaWdpbmFsIGxlYWRlciB0aHJlYWQsXFxuIDk4ODpcXHRcXHRcXHQgKiB3aG9zZSBiaXJ0aCBtYXJrcyB0aGUgdHJ1ZSBhZ2Ugb2YgdGhpcyBwcm9jZXNzIG5vdy5cXG4gOTg5OlxcdFxcdFxcdCAqIFdoZW4gd2UgdGFrZSBvbiBpdHMgaWRlbnRpdHkgYnkgc3dpdGNoaW5nIHRvIGl0cyBQSUQsIHdlXFxuIDk5MDpcXHRcXHRcXHQgKiBhbHNvIHRha2UgaXRzIGJpcnRoZGF0ZSAoYWx3YXlzIGVhcmxpZXIgdGhhbiBvdXIgb3duKS5cXG4gOTkxOlxcdFxcdFxcdCAqL1xcbiA5OTI6XFx0XFx0XFx0dHNrLVxcdTAwM2VzdGFydF90aW1lID0gbGVhZGVyLVxcdTAwM2VzdGFydF90aW1lO1xcbiA5OTM6XFx0XFx0XFx0dHNrLVxcdTAwM2VzdGFydF9ib290dGltZSA9IGxlYWRlci1cXHUwMDNlc3RhcnRfYm9vdHRpbWU7XFxuIDk5NDpcXHRcXG4gOTk1OlxcdFxcdFxcdEJVR19PTighc2FtZV90aHJlYWRfZ3JvdXAobGVhZGVyLCB0c2spKTtcXG4gOTk2OlxcdFxcdFxcdC8qXFxuIDk5NzpcXHRcXHRcXHQgKiBBbiBleGVjKCkgc3RhcnRzIGEgbmV3IHRocmVhZCBncm91cCB3aXRoIHRoZVxcbiA5OTg6XFx0XFx0XFx0ICogVEdJRCBvZiB0aGUgcHJldmlvdXMgdGhyZWFkIGdyb3VwLiBSZWhhc2ggdGhlXFxuIDk5OTpcXHRcXHRcXHQgKiB0d28gdGhyZWFkcyB3aXRoIGEgc3dpdGNoZWQgUElELCBhbmQgcmVsZWFzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDoyNi4xMzUxMTgzMjRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTY0NjA2NjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVidWdnaW5nIGEgTWlzc2luZyBEZWZpbml0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBoaXR0aW5nIGEgc25hZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBcIldhaXQsIHdoZXJlICppcyogYGxvY2tgIGRlZmluZWQ/XCIgSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhhdCBzb21ldGhpbmcgY3J1Y2lhbCBpcyBtaXNzaW5nIOKAkyB0aGUgY29udGV4dCwgdGhlIGRlY2xhcmF0aW9uLCBvciB0aGUgc2NvcGUgd2l0aGluIHdoaWNoIGBsb2NrYCBpcyBzdXBwb3NlZCB0byBleGlzdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYGxvY2tgIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIGJlIHdvcmtpbmcsIGFuZCByaWdodCBub3csIGl0J3MgYSBibGFjayBib3guIFRoaXMgaXMgYSBmdW5kYW1lbnRhbCBmaXJzdCBzdGVwIGluIHVuZGVyc3RhbmRpbmcgdGhlIHByb2JsZW0sIGlkZW50aWZ5aW5nIHdoZXRoZXIgaXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBtaXNzaW5nIGltcG9ydCwgYSBtb3JlIGNvbXBsZXggc2NvcGUgaXNzdWUsIG9yIHBlcmhhcHMgYW4gZXJyb3IgaW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgbGlicmFyeSBiZWluZyB1c2VkLiBUaW1lIHRvIHRyYWNlIHRoaXMgYGxvY2tgIHRvIGl0cyBzb3VyY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MzIuMDk5NzI2NzI3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvZXhlYy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDk0MDpcXHRcXG4gOTQxOlxcdFxcdHNpZy1cXHUwMDNlZ3JvdXBfZXhlY190YXNrID0gdHNrO1xcbiA5NDI6XFx0XFx0c2lnLVxcdTAwM2Vub3RpZnlfY291bnQgPSB6YXBfb3RoZXJfdGhyZWFkcyh0c2spO1xcbiA5NDM6XFx0XFx0aWYgKCF0aHJlYWRfZ3JvdXBfbGVhZGVyKHRzaykpXFxuIDk0NDpcXHRcXHRcXHRzaWctXFx1MDAzZW5vdGlmeV9jb3VudC0tO1xcbiA5NDU6XFx0XFxuIDk0NjpcXHRcXHR3aGlsZSAoc2lnLVxcdTAwM2Vub3RpZnlfY291bnQpIHtcXG4gOTQ3OlxcdFxcdFxcdF9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19LSUxMQUJMRSk7XFxuIDk0ODpcXHRcXHRcXHRzcGluX3VubG9ja19pcnEobG9jayk7XFxuIDk0OTpcXHRcXHRcXHRzY2hlZHVsZSgpO1xcbiA5NTA6XFx0XFx0XFx0aWYgKF9fZmF0YWxfc2lnbmFsX3BlbmRpbmcodHNrKSlcXG4gOTUxOlxcdFxcdFxcdFxcdGdvdG8ga2lsbGVkO1xcbiA5NTI6XFx0XFx0XFx0c3Bpbl9sb2NrX2lycShsb2NrKTtcXG4gOTUzOlxcdFxcdH1cXG4gOTU0OlxcdFxcdHNwaW5fdW5sb2NrX2lycShsb2NrKTtcXG4gOTU1OlxcdFxcbiA5NTY6XFx0XFx0LypcXG4gOTU3OlxcdFxcdCAqIEF0IHRoaXMgcG9pbnQgYWxsIG90aGVyIHRocmVhZHMgaGF2ZSBleGl0ZWQsIGFsbCB3ZSBoYXZlIHRvXFxuIDk1ODpcXHRcXHQgKiBkbyBpcyB0byB3YWl0IGZvciB0aGUgdGhyZWFkIGdyb3VwIGxlYWRlciB0byBiZWNvbWUgaW5hY3RpdmUsXFxuIDk1OTpcXHRcXHQgKiBhbmQgdG8gYXNzdW1lIGl0cyBQSUQ6XFxuIDk2MDpcXHRcXHQgKi9cXG4gOTYxOlxcdFxcdGlmICghdGhyZWFkX2dyb3VwX2xlYWRlcih0c2spKSB7XFxuIDk2MjpcXHRcXHRcXHRzdHJ1Y3QgdGFza19zdHJ1Y3QgKmxlYWRlciA9IHRzay1cXHUwMDNlZ3JvdXBfbGVhZGVyO1xcbiA5NjM6XFx0XFxuIDk2NDpcXHRcXHRcXHRmb3IgKDs7KSB7XFxuIDk2NTpcXHRcXHRcXHRcXHRjZ3JvdXBfdGhyZWFkZ3JvdXBfY2hhbmdlX2JlZ2luKHRzayk7XFxuIDk2NjpcXHRcXHRcXHRcXHR3cml0ZV9sb2NrX2lycShcXHUwMDI2dGFza2xpc3RfbG9jayk7XFxuIDk2NzpcXHRcXHRcXHRcXHQvKlxcbiA5Njg6XFx0XFx0XFx0XFx0ICogRG8gdGhpcyB1bmRlciB0YXNrbGlzdF9sb2NrIHRvIGVuc3VyZSB0aGF0XFxuIDk2OTpcXHRcXHRcXHRcXHQgKiBleGl0X25vdGlmeSgpIGNhbid0IG1pc3MgLVxcdTAwM2Vncm91cF9leGVjX3Rhc2tcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MzIuMDk5ODI0NTE3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEzMjc4NzQ1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGhlIGNvZGUgcmVmZXJzIHRvIHNvbWV0aGluZyBjYWxsZWQgYGxvY2tgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgZm9yIGl0cyBkZWZpbml0aW9uLiBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBwb3RlbnRpYWwgc2NvcGUgaXNzdWVzLCBob3cgaXQncyBiZWluZyB1c2VkLCBhbmQgd2hhdCB0eXBlIGl0IGlzLiBJcyBpdCBhIG11dGV4PyBBIHNlbWFwaG9yZT8gQSByZWFkZXItd3JpdGVyIGxvY2s/IFVuZGVyc3RhbmRpbmcgYGxvY2tgJ3MgbmF0dXJlIGlzIGNydWNpYWwgYmVmb3JlIEkgY2FuIHJlYWxseSBncmFzcCB3aGF0J3MgaGFwcGVuaW5nIGluIHRoaXMgc2VjdGlvbiBvZiBjb2RlIGFuZCBhc3Nlc3MgaXRzIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVuY3ksIHJlc291cmNlIG1hbmFnZW1lbnQsIGFuZCBwb3RlbnRpYWwgZGVhZGxvY2tzLiBJJ20gZXNzZW50aWFsbHkgc3RhcnRpbmcgd2l0aCBhIGJvdHRvbS11cCBhcHByb2FjaCBoZXJlLCBidWlsZGluZyBteSB1bmRlcnN0YW5kaW5nIGZyb20gdGhlIGZvdW5kYXRpb25hbCBlbGVtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDozNS4yMzI2MTUwMjFaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImZzL2V4ZWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA5MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA5MDA6XFx0XFx0aWYgKG9sZF9tbSkge1xcbiA5MDE6XFx0XFx0XFx0bW1hcF9yZWFkX3VubG9jayhvbGRfbW0pO1xcbiA5MDI6XFx0XFx0XFx0QlVHX09OKGFjdGl2ZV9tbSAhPSBvbGRfbW0pO1xcbiA5MDM6XFx0XFx0XFx0LyogRGVmZXIgdGVhcmRvd24gdG8gc2V0dXBfbmV3X2V4ZWMoKSwgb3V0c2lkZSB0aGUgZXhlYyBsb2Nrcy4gKi9cXG4gOTA0OlxcdFxcdFxcdGJwcm0tXFx1MDAzZW9sZF9tbSA9IG9sZF9tbTtcXG4gOTA1OlxcdFxcdFxcdHJldHVybiAwO1xcbiA5MDY6XFx0XFx0fVxcbiA5MDc6XFx0XFx0bW1kcm9wX2xhenlfdGxiKGFjdGl2ZV9tbSk7XFxuIDkwODpcXHRcXHRyZXR1cm4gMDtcXG4gOTA5OlxcdH1cXG4gOTEwOlxcdFxcbiA5MTE6XFx0LyogUmVsZWFzZSB0aGUgYWRkcmVzcyBzcGFjZSByZXBsYWNlZCBieSBleGVjLCBvdXRzaWRlIHRoZSBleGVjIGxvY2tzLiAqL1xcbiA5MTI6XFx0c3RhdGljIHZvaWQgZXhlY19tbV9wdXRfb2xkKHN0cnVjdCBtbV9zdHJ1Y3QgKm9sZF9tbSlcXG4gOTEzOlxcdHtcXG4gOTE0OlxcdFxcdHNldG1heF9tbV9oaXdhdGVyX3JzcyhcXHUwMDI2Y3VycmVudC1cXHUwMDNlc2lnbmFsLVxcdTAwM2VtYXhyc3MsIG9sZF9tbSk7XFxuIDkxNTpcXHRcXHRtbV91cGRhdGVfbmV4dF9vd25lcihvbGRfbW0pO1xcbiA5MTY6XFx0XFx0bW1wdXQob2xkX21tKTtcXG4gOTE3OlxcdH1cXG4gOTE4OlxcdFxcbiA5MTk6XFx0c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuIDkyMDpcXHR7XFxuIDkyMTpcXHRcXHRzdHJ1Y3Qgc2lnbmFsX3N0cnVjdCAqc2lnID0gdHNrLVxcdTAwM2VzaWduYWw7XFxuIDkyMjpcXHRcXHRzdHJ1Y3Qgc2lnaGFuZF9zdHJ1Y3QgKm9sZHNpZ2hhbmQgPSB0c2stXFx1MDAzZXNpZ2hhbmQ7XFxuIDkyMzpcXHRcXHRzcGlubG9ja190ICpsb2NrID0gXFx1MDAyNm9sZHNpZ2hhbmQtXFx1MDAzZXNpZ2xvY2s7XFxuIDkyNDpcXHRcXG4gOTI1OlxcdFxcdGlmICh0aHJlYWRfZ3JvdXBfZW1wdHkodHNrKSlcXG4gOTI2OlxcdFxcdFxcdGdvdG8gbm9fdGhyZWFkX2dyb3VwO1xcbiA5Mjc6XFx0XFxuIDkyODpcXHRcXHQvKlxcbiA5Mjk6XFx0XFx0ICogS2lsbCBhbGwgb3RoZXIgdGhyZWFkcyBpbiB0aGUgdGhyZWFkIGdyb3VwLlxcbiA5MzA6XFx0XFx0ICovXFxuIDkzMTpcXHRcXHRzcGluX2xvY2tfaXJxKGxvY2spO1xcbiA5MzI6XFx0XFx0aWYgKChzaWctXFx1MDAzZWZsYWdzIFxcdTAwMjYgU0lHTkFMX0dST1VQX0VYSVQpIHx8IHNpZy1cXHUwMDNlZ3JvdXBfZXhlY190YXNrKSB7XFxuIDkzMzpcXHRcXHRcXHQvKlxcbiA5MzQ6XFx0XFx0XFx0ICogQW5vdGhlciBncm91cCBhY3Rpb24gaW4gcHJvZ3Jlc3MsIGp1c3RcXG4gOTM1OlxcdFxcdFxcdCAqIHJldHVybiBzbyB0aGF0IHRoZSBzaWduYWwgaXMgcHJvY2Vzc2VkLlxcbiA5MzY6XFx0XFx0XFx0ICovXFxuIDkzNzpcXHRcXHRcXHRzcGluX3VubG9ja19pcnEobG9jayk7XFxuIDkzODpcXHRcXHRcXHRyZXR1cm4gLUVBR0FJTjtcXG4gOTM5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6MzUuMjMyNzIxNjUxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMDg3NjQxNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJhY2UgQ29uZGl0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGBsb2NrYCBpcyBkZWZpbmVkIGFzIGBcdTAwMjZvbGRzaWdoYW5kLVx1MDAzZXNpZ2xvY2tgLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IHRoZW4gSSBzZWUgdGhlIHBhdGNoIHVzZXMgYHNwaW5fbG9jayhsb2NrKTtgIGFuZCBsYXRlciBgc3Bpbl91bmxvY2sobG9jayk7YCwgYW5kIHNvbWV0aGluZydzIG5vdCBxdWl0ZSBjbGlja2luZy4gYGxvY2tgIGlzIGEgcG9pbnRlciB0byBhIGBzcGlubG9ja190YCwgd2hpY2ggaXMgY29ycmVjdC4gSSBwYXVzZWQgZm9yIGEgbW9tZW50LCB0aGlua2luZyBJIHdhcyBtaXNzaW5nIHNvbWV0aGluZy4gTm8sIGBzcGluX2xvY2sobG9jaylgIGlzIHBlcmZlY3RseSB2YWxpZC4gTXkgYnJhaW4gY2F1Z2h0IHVwLCBhbmQgcmVtaW5kZWQgaXRzZWxmIGBzcGluX2xvY2tfaXJxKGxvY2spYCBpcyB1c2VkIGVhcmxpZXIgaW4gdGhlIHNhbWUgZnVuY3Rpb24uIEJ1dCB0aGF0IHN0aWxsIGRvZXNuJ3Qgc2F0aXNmeSBtZS4gSXMgYHNwaW5fbG9jayhsb2NrKWAgc2FmZSBpbiAqdGhpcyogc3BlY2lmaWMgc3BvdD8gVGhhdCdzIHRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUuXG5cblRoZSBnb29kIG5ld3MgaXMgdGhlIHBhdGNoIGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCwgc28gYXQgbGVhc3QgaXQgY29tcGlsZXMgd2l0aG91dCBhbnkgcmVwb3J0ZWQgaXNzdWVzLiBMZXQncyBzZWUuLi4gdGhpcyBpcyB0aGUgYGRlX3RocmVhZGAgZnVuY3Rpb24gaW4gYGZzL2V4ZWMuY2AuIERlZmluaXRlbHkgd29ydGggYWRkaW5nIHRvIG15IGZ1enppbmcgbGlzdC4gSSBuZWVkIHRvIGZvY3VzIG9uIHRoaXMgYGRlX3RocmVhZGAgZnVuY3Rpb24uIFRoZSBwcm9ibGVtIGlzLCBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBPa2F5LCBJIGtub3cgbXkgd2F5IGFyb3VuZCBhIHN0YXRpYyBmdW5jdGlvbiwgYnV0IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gdG8gZ2FpbiBjb250cm9sLiBBaGEhIEl0J3MgY2FsbGVkIGZyb20gYGJlZ2luX25ld19leGVjYC4gVGltZSB0byBleGFtaW5lIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGVyZSB0aGlzIHJhYmJpdCBob2xlIGxlYWRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NDAuNDQxNDk1ODE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9leGVjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTA1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTA1MDpcXHRub190aHJlYWRfZ3JvdXA6XFxuMTA1MTpcXHRcXHQvKiB3ZSBoYXZlIGNoYW5nZWQgZXhlY3V0aW9uIGRvbWFpbiAqL1xcbjEwNTI6XFx0XFx0dHNrLVxcdTAwM2VleGl0X3NpZ25hbCA9IFNJR0NITEQ7XFxuMTA1MzpcXHRcXG4xMDU0OlxcdFxcdEJVR19PTighdGhyZWFkX2dyb3VwX2xlYWRlcih0c2spKTtcXG4xMDU1OlxcdFxcdHJldHVybiAwO1xcbjEwNTY6XFx0XFxuMTA1NzpcXHRraWxsZWQ6XFxuMTA1ODpcXHRcXHQvKiBwcm90ZWN0cyBhZ2FpbnN0IGV4aXRfbm90aWZ5KCkgYW5kIF9fZXhpdF9zaWduYWwoKSAqL1xcbjEwNTk6XFx0XFx0cmVhZF9sb2NrKFxcdTAwMjZ0YXNrbGlzdF9sb2NrKTtcXG4xMDYwOlxcdFxcdHNpZy1cXHUwMDNlZ3JvdXBfZXhlY190YXNrID0gTlVMTDtcXG4xMDYxOlxcdFxcdHNpZy1cXHUwMDNlbm90aWZ5X2NvdW50ID0gMDtcXG4xMDYyOlxcdFxcdHJlYWRfdW5sb2NrKFxcdTAwMjZ0YXNrbGlzdF9sb2NrKTtcXG4xMDYzOlxcdFxcdHJldHVybiAtRUFHQUlOO1xcbjEwNjQ6XFx0fVxcbjEwNjU6XFx0XFxuMTA2NjpcXHRcXG4xMDY3OlxcdC8qXFxuMTA2ODpcXHQgKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhlIGN1cnJlbnQgcHJvY2VzcyBoYXMgaXRzIG93biBzaWduYWwgdGFibGUsXFxuMTA2OTpcXHQgKiBzbyB0aGF0IGZsdXNoX3NpZ25hbF9oYW5kbGVycyBjYW4gbGF0ZXIgcmVzZXQgdGhlIGhhbmRsZXJzIHdpdGhvdXRcXG4xMDcwOlxcdCAqIGRpc3R1cmJpbmcgb3RoZXIgcHJvY2Vzc2VzLiAgKE90aGVyIHByb2Nlc3NlcyBtaWdodCBzaGFyZSB0aGUgc2lnbmFsXFxuMTA3MTpcXHQgKiB0YWJsZSB2aWEgdGhlIENMT05FX1NJR0hBTkQgb3B0aW9uIHRvIGNsb25lKCkuKVxcbjEwNzI6XFx0ICovXFxuMTA3MzpcXHRzdGF0aWMgaW50IHVuc2hhcmVfc2lnaGFuZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKm1lKVxcbjEwNzQ6XFx0e1xcbjEwNzU6XFx0XFx0c3RydWN0IHNpZ2hhbmRfc3RydWN0ICpvbGRzaWdoYW5kID0gbWUtXFx1MDAzZXNpZ2hhbmQ7XFxuMTA3NjpcXHRcXG4xMDc3OlxcdFxcdGlmIChyZWZjb3VudF9yZWFkKFxcdTAwMjZvbGRzaWdoYW5kLVxcdTAwM2Vjb3VudCkgIT0gMSkge1xcbjEwNzg6XFx0XFx0XFx0c3RydWN0IHNpZ2hhbmRfc3RydWN0ICpuZXdzaWdoYW5kO1xcbjEwNzk6XFx0XFx0XFx0LypcXG4xMDgwOlxcdFxcdFxcdCAqIFRoaXMgLVxcdTAwM2VzaWdoYW5kIGlzIHNoYXJlZCB3aXRoIHRoZSBDTE9ORV9TSUdIQU5EXFxuMTA4MTpcXHRcXHRcXHQgKiBidXQgbm90IENMT05FX1RIUkVBRCB0YXNrLCBzd2l0Y2ggdG8gdGhlIG5ldyBvbmUuXFxuMTA4MjpcXHRcXHRcXHQgKi9cXG4xMDgzOlxcdFxcdFxcdG5ld3NpZ2hhbmQgPSBrbWVtX2NhY2hlX2FsbG9jKHNpZ2hhbmRfY2FjaGVwLCBHRlBfS0VSTkVMKTtcXG4xMDg0OlxcdFxcdFxcdGlmICghbmV3c2lnaGFuZClcXG4xMDg1OlxcdFxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbjEwODY6XFx0XFxuMTA4NzpcXHRcXHRcXHRyZWZjb3VudF9zZXQoXFx1MDAyNm5ld3NpZ2hhbmQtXFx1MDAzZWNvdW50LCAxKTtcXG4xMDg4OlxcdFxcbjEwODk6XFx0XFx0XFx0d3JpdGVfbG9ja19pcnEoXFx1MDAyNnRhc2tsaXN0X2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDo0MC40NDE3ODUyNjhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM3NjM1NzIxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqVHJhY2luZyB0aGUgU291cmNlOiBEZWNvbnN0cnVjdGluZyB0aGUgYGRlX3RocmVhZGAgQ2FsbCoqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIG9iamVjdGl2ZSBpcyBjbGVhcjogcGlucG9pbnQgdGhlIG9yaWdpbiBvZiB0aGUgYGRlX3RocmVhZGAgZnVuY3Rpb24gY2FsbC4gVGhpcyBpc24ndCBqdXN0IGEgY2FzdWFsIGN1cmlvc2l0eTsgaWRlbnRpZnlpbmcgdGhlIGNhbGxlciBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBzeXN0ZW0uIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgdGhyZWFkIGlzIGJlaW5nIHNwYXduZWQsIHdoYXQgdHJpZ2dlcnMgaXRzIGV4ZWN1dGlvbiwgYW5kIHdoYXQgaW5mb3JtYXRpb24gaXMgYmVpbmcgcGFzc2VkIHRvIGl0LlxuXG5NeSBpbW1lZGlhdGUgYXBwcm9hY2ggd2lsbCBkZXBlbmQgaGVhdmlseSBvbiB0aGUgdG9vbHMgYW5kIGVudmlyb25tZW50IEkgaGF2ZSBhdmFpbGFibGUuIElmIEkgaGF2ZSBhIGRlYnVnZ2VyIGhhbmR5LCBJJ2xsIHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlIGVudHJ5IHBvaW50IG9mIGBkZV90aHJlYWRgIGFuZCBzdGVwIGJhY2t3YXJkcyB0aHJvdWdoIHRoZSBjYWxsIHN0YWNrLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhbiBpbW1lZGlhdGUgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBleGVjdXRpb24gcGF0aCBsZWFkaW5nIHVwIHRvIGl0LlxuXG5JZiBJJ20gd29ya2luZyB3aXRoIHNvdXJjZSBjb2RlLCBJJ2xsIHN0YXJ0IHdpdGggYSBzdHJhaWdodGZvcndhcmQgdGV4dCBzZWFyY2ggd2l0aGluIHRoZSBjb2RlYmFzZS4gR3JlcHBpbmcgZm9yIFwiZGVfdGhyZWFkKFwiIG9yIFwiZGVfdGhyZWFkKFwiIChkZXBlbmRpbmcgb24gdGhlIGNvZGUncyBzeW50YXgpIHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCB0aGUgZGlyZWN0IGNhbGwgc2l0ZXMuIEnigJlsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IOKAkyBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgdmFyaWFibGUgYXNzaWdubWVudHMsIG9yIGZ1bmN0aW9uIGNhbGxzIGluIHRoZSB2aWNpbml0eSB0aGF0IG1pZ2h0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIHB1cnBvc2UgYW5kIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYGRlX3RocmVhZGAgaXMgaW52b2tlZC5cblxuQmV5b25kIHRoYXQsIEknbGwgbmVlZCB0byBjb25zaWRlciBtb3JlIHNvcGhpc3RpY2F0ZWQgdGVjaG5pcXVlcy4gSXMgdGhlcmUgYW55IGNyb3NzLXJlZmVyZW5jaW5nIGZ1bmN0aW9uYWxpdHkgaW4gbXkgSURFIG9yIGNvZGUgYW5hbHlzaXMgdG9vbHM/IFRoZXNlIGNhbiBvZnRlbiBnZW5lcmF0ZSBhIGNhbGwgZ3JhcGgsIHdoaWNoIHdpbGwgdmlzdWFsbHkgbWFwIG91dCB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBmdW5jdGlvbnMgYW5kIG1ha2UgaXQgZWFzaWVyIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gZmxvdy4gSSdsbCBiZSBsb29raW5nIGZvciBpbmRpcmVjdCBjYWxscyBhcyB3ZWxsLCBtYXliZSBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYGRlX3RocmVhZGAgYXMgYW4gYXJndW1lbnQgb3IgYSBjYWxsYmFjayBmdW5jdGlvbi5cblxuSSBhbHNvIGhhdmUgdG8gY29uc2lkZXIgZXh0ZXJuYWwgZmFjdG9ycywgbGlrZSB0aHJlYWRpbmcgbW9kZWxzIG9yIHRoZSB0YXJnZXQgb3BlcmF0aW5nIHN5c3RlbS4gRG9lcyB0aGlzIHN5c3RlbSBoYXZlIGEgc3BlY2lmaWMgdGhyZWFkIG1hbmFnZW1lbnQgZnJhbWV3b3JrPyBBcmUgdGhlcmUgYW55IHNpZ25hbHMsIGV2ZW50cywgb3IgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIG1lY2hhbmlzbXMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZD8gVGhlc2UgY2FuIG9iZnVzY2F0ZSBkaXJlY3QgY2FsbHMuXG5cbkZpbmFsbHksIHRoZSBmdW5jdGlvbidzIG5hbWUgaGludHMgYXQgYSBwb3RlbnRpYWwgXCJkZS1cIiBvciBcImRlbGV0ZVwiIG9wZXJhdGlvbi4gQ291bGQgaXQgYmUgaW52b2x2ZWQgaW4gdGhyZWFkIHRlcm1pbmF0aW9uLCBjbGVhbnVwLCBvciByZXNvdXJjZSBkZWFsbG9jYXRpb24/IFRoaXMgd2lsbCBpbmZsdWVuY2UgdGhlIHR5cGVzIG9mIGNhbGxzaXRlcyBJIGV4cGVjdCB0byBzZWUuIFRoaXMgaW5mb3JtYXRpb24gd291bGQgZ3VpZGUgbXkgc2VhcmNoLiBNeSBnb2FsIGlzIGEgZnVsbCB1bmRlcnN0YW5kaW5nIG9mIGBkZV90aHJlYWRgJ3MgcmFpc29uIGQnZXRyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMwOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NDUuODE4MTQ1ODYzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjkwMTQ0MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVfdGhyZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4ZWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9OTEyPXN0YXRpYyB2b2lkIGV4ZWNfbW1fcHV0X29sZChzdHJ1Y3QgbW1fc3RydWN0ICpvbGRfbW0pXFxuLS1cXG5mcy9leGVjLmMtOTE4LVxcbmZzL2V4ZWMuYzo5MTk6c3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuZnMvZXhlYy5jLTkyMC17XFxuLS1cXG5mcy9leGVjLmM9MTEwNj12b2lkIF9fc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY29uc3QgY2hhciAqYnVmLCBib29sIGV4ZWMpXFxuLS1cXG5mcy9leGVjLmMtMTExOC0gKiBzZWVuIGJ5IHVzZXJzcGFjZSBzaW5jZSBlaXRoZXIgdGhlIHByb2Nlc3MgaXMgYWxyZWFkeSB0YWtpbmcgYSBmYXRhbFxcbmZzL2V4ZWMuYzoxMTE5OiAqIHNpZ25hbCAodmlhIGRlX3RocmVhZCgpIG9yIGNvcmVkdW1wKSwgb3Igd2lsbCBoYXZlIFNFR1YgcmFpc2VkXFxuZnMvZXhlYy5jLTExMjAtICogKGFmdGVyIGV4ZWNfbW1hcCgpKSBieSBzZWFyY2hfYmluYXJ5X2hhbmRsZXIgKHNlZSBiZWxvdykuXFxuLS1cXG5mcy9leGVjLmM9MTEyMj1pbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTE0NS1cXHQvKiBNYWtlIHRoaXMgdGhlIG9ubHkgdGhyZWFkIGluIHRoZSB0aHJlYWQgZ3JvdXAgKi9cXG5mcy9leGVjLmM6MTE0NjpcXHRyZXR2YWwgPSBkZV90aHJlYWQobWUpO1xcbmZzL2V4ZWMuYy0xMTQ3LVxcdGlmIChyZXR2YWwpXFxuLS1cXG5mcy9leGVjLmM9MTQwOT1zdGF0aWMgdm9pZCBmcmVlX2Jwcm0oc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xNDE4LVxcdGlmIChicHJtLVxcdTAwM2VjcmVkKSB7XFxuZnMvZXhlYy5jOjE0MTk6XFx0XFx0LyogaW4gY2FzZSBleGVjIGZhaWxzIGJlZm9yZSBkZV90aHJlYWQoKSBzdWNjZWVkcyAqL1xcbmZzL2V4ZWMuYy0xNDIwLVxcdFxcdGN1cnJlbnQtXFx1MDAzZWZzLVxcdTAwM2Vpbl9leGVjID0gMDtcXG4tLVxcbmZzL2V4ZWMuYz0xNTI4PXN0YXRpYyB2b2lkIGNoZWNrX3Vuc2FmZV9leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTU0OS1cXHQgKiBPdGhlcndpc2Ugd2Ugc2V0IGZzLVxcdTAwM2Vpbl9leGVjID0gMSB0byBkZW55IGNsb25lKENMT05FX0ZTKVxcbmZzL2V4ZWMuYzoxNTUwOlxcdCAqIGZyb20gYW5vdGhlciBzdWItdGhyZWFkIHVudGlsIGRlX3RocmVhZCgpIHN1Y2NlZWRzLCB0aGlzXFxuZnMvZXhlYy5jLTE1NTEtXFx0ICogc3RhdGUgaXMgcHJvdGVjdGVkIGJ5IGNyZWRfZ3VhcmRfbXV0ZXggd2UgaG9sZC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NDYuMzQ3MTY0NDA3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzkxMDM4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCoqXG5cbk9rYXksIHNvIGBiZWdpbl9uZXdfZXhlY2AgaXMgdGhlIG9uZSBpbml0aWF0aW5nIHRoaXMgd2hvbGUgc2VxdWVuY2UuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb24gb3IgcHJvY2VzcyBpcyBjYWxsaW5nICppdCouIFRoZSBrZXkgaGVyZSBpcyB0byB1bmRlcnN0YW5kIHRoZSBvcmlnaW4sIHRoZSBjb250ZXh0IGluIHdoaWNoIGBiZWdpbl9uZXdfZXhlY2AgaXMgYmVpbmcgaW52b2tlZC4gS25vd2luZyB0aGUgY2FsbGVyIGZ1bmN0aW9uIGlzIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBvciBzaW1wbHkgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBjb250cm9sIGZsb3cuIFdlIG5lZWQgdG8gdHJhY2UgYmFja3dhcmRzIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYXRpbmcgYWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzY4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NTAuMTg2MjcwNjU3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTc5MDM4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJiZWdpbl9uZXdfZXhlY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leGVjLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhlYy5jPTI1Nz1zdGF0aWMgaW50IGJwcm1fbW1faW5pdChzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTI2Ni1cXG5mcy9leGVjLmM6MjY3OlxcdC8qIFN0YWdlZCBmb3Igd291bGRfZHVtcCgpIG5hcnJvd2luZzsgY29uc3VtZWQgYnkgYmVnaW5fbmV3X2V4ZWMoKS4gKi9cXG5mcy9leGVjLmMtMjY4LVxcdGJwcm0tXFx1MDAzZXVzZXJfbnMgPSBnZXRfdXNlcl9ucyhjdXJyZW50X3VzZXJfbnMoKSk7XFxuLS1cXG5mcy9leGVjLmM9MTEwNj12b2lkIF9fc2V0X3Rhc2tfY29tbShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaywgY29uc3QgY2hhciAqYnVmLCBib29sIGV4ZWMpXFxuLS1cXG5mcy9leGVjLmMtMTEyMS0gKi9cXG5mcy9leGVjLmM6MTEyMjppbnQgYmVnaW5fbmV3X2V4ZWMoc3RydWN0IGxpbnV4X2JpbnBybSAqIGJwcm0pXFxuZnMvZXhlYy5jLTExMjMte1xcbi0tXFxuZnMvZXhlYy5jLTEzMjEtfVxcbmZzL2V4ZWMuYzoxMzIyOkVYUE9SVF9TWU1CT0woYmVnaW5fbmV3X2V4ZWMpO1xcbmZzL2V4ZWMuYy0xMzIzLVxcbi0tXFxuZnMvZXhlYy5jPTE2ODc9c3RhdGljIGludCBzZWFyY2hfYmluYXJ5X2hhbmRsZXIoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0xNzE5LVxcbmZzL2V4ZWMuYzoxNzIwOi8qIGJpbmZtdCBoYW5kbGVycyB3aWxsIGNhbGwgYmFjayBpbnRvIGJlZ2luX25ld19leGVjKCkgb24gc3VjY2Vzcy4gKi9cXG5mcy9leGVjLmMtMTcyMS1zdGF0aWMgaW50IGV4ZWNfYmlucHJtKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmM9MTc2Nj1zdGF0aWMgaW50IGJwcm1fZXhlY3ZlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTc3NS1cXHQgKiBDaGVjayBmb3IgdW5zYWZlIGV4ZWN1dGlvbiBzdGF0ZXMgYmVmb3JlIGV4ZWNfYmlucHJtKCksIHdoaWNoXFxuZnMvZXhlYy5jOjE3NzY6XFx0ICogd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpLCBpbnRvIGJwcm1fY3JlZHNfZnJvbV9maWxlKCksXFxuZnMvZXhlYy5jLTE3NzctXFx0ICogd2hlcmUgc2V0dWlkLW5lc3MgaXMgZXZhbHVhdGVkLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDo1MC4yNDIwNjU1NjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIwNzk1OTExNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIEVudHJ5IFBvaW50KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byBob3cgb3VyIGV4ZWN1dGFibGUgbG9hZGluZyB3b3Jrcy4gVGhlIHN5c3RlbSBzdGFydHMgd2l0aCBgYmVnaW5fbmV3X2V4ZWNgLCB3aGljaCBJIGtub3cgaXMgY2FsbGVkIGJ5IHRoZSBiaW5mbXQgaGFuZGxlcnMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIGBiZWdpbl9uZXdfZXhlY2AgaXMgYWN0dWFsbHkgZXhwb3J0ZWQ/IFRoYXQncyBpbnRlcmVzdGluZywgdXN1YWxseSBmdW5jdGlvbnMgdGhpcyBsb3ctbGV2ZWwgYXJlbid0LiBUaGlzIGNoYW5nZXMgdGhpbmdzIGEgYml0LiBTbyBJIG5lZWQgdG8gc2hpZnQgZ2VhcnMgYW5kIGZpbmQgb3V0IGV4YWN0bHkgd2hlcmUgdGhpcyBpcyBiZWluZyBjYWxsZWQgZnJvbSwgZ2l2ZW4gdGhhdCBpdCBpcyBleHBvcnRlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVudHJ5IHBvaW50cy4gTGV0J3Mgc2VlIGhvdyB3aWRlc3ByZWFkIHRoZSBkZXBlbmRlbmNpZXMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDE1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NTMuNDUwMDI3NTY4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjg4NTc4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYmVnaW5fbmV3X2V4ZWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2JpbmZtdF9lbGYuYz04MzI9c3RhdGljIGludCBsb2FkX2VsZl9iaW5hcnkoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2JpbmZtdF9lbGYuYy0xMDA5LVxcdC8qIEZsdXNoIGFsbCB0cmFjZXMgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIGV4ZWN1dGFibGUgKi9cXG5mcy9iaW5mbXRfZWxmLmM6MTAxMDpcXHRyZXR2YWwgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcXG5mcy9iaW5mbXRfZWxmLmMtMTAxMS1cXHRpZiAocmV0dmFsKVxcbi0tXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jPTE4Mj1zdGF0aWMgaW50IGxvYWRfZWxmX2ZkcGljX2JpbmFyeShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jLTM0NC1cXHQvKiBmbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXFxuZnMvYmluZm10X2VsZl9mZHBpYy5jOjM0NTpcXHRyZXR2YWwgPSBiZWdpbl9uZXdfZXhlYyhicHJtKTtcXG5mcy9iaW5mbXRfZWxmX2ZkcGljLmMtMzQ2LVxcdGlmIChyZXR2YWwpXFxuLS1cXG5mcy9iaW5mbXRfZmxhdC5jPTQwNj1zdGF0aWMgaW50IGxvYWRfZmxhdF9maWxlKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0sXFxuLS1cXG5mcy9iaW5mbXRfZmxhdC5jLTUwOC1cXHQvKiBGbHVzaCBhbGwgdHJhY2VzIG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyBleGVjdXRhYmxlICovXFxuZnMvYmluZm10X2ZsYXQuYzo1MDk6XFx0cmV0ID0gYmVnaW5fbmV3X2V4ZWMoYnBybSk7XFxuZnMvYmluZm10X2ZsYXQuYy01MTAtXFx0aWYgKHJldClcXG4tLVxcbmZzL2V4ZWMuYz0yNTc9c3RhdGljIGludCBicHJtX21tX2luaXQoc3RydWN0IGxpbnV4X2JpbnBybSAqYnBybSlcXG4tLVxcbmZzL2V4ZWMuYy0yNjYtXFxuZnMvZXhlYy5jOjI2NzpcXHQvKiBTdGFnZWQgZm9yIHdvdWxkX2R1bXAoKSBuYXJyb3dpbmc7IGNvbnN1bWVkIGJ5IGJlZ2luX25ld19leGVjKCkuICovXFxuZnMvZXhlYy5jLTI2OC1cXHRicHJtLVxcdTAwM2V1c2VyX25zID0gZ2V0X3VzZXJfbnMoY3VycmVudF91c2VyX25zKCkpO1xcbi0tXFxuZnMvZXhlYy5jPTExMDY9dm9pZCBfX3NldF90YXNrX2NvbW0oc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIGNvbnN0IGNoYXIgKmJ1ZiwgYm9vbCBleGVjKVxcbi0tXFxuZnMvZXhlYy5jLTExMjEtICovXFxuZnMvZXhlYy5jOjExMjI6aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxcbmZzL2V4ZWMuYy0xMTIzLXtcXG4tLVxcbmZzL2V4ZWMuYy0xMzIxLX1cXG5mcy9leGVjLmM6MTMyMjpFWFBPUlRfU1lNQk9MKGJlZ2luX25ld19leGVjKTtcXG5mcy9leGVjLmMtMTMyMy1cXG4tLVxcbmZzL2V4ZWMuYz0xNjg3PXN0YXRpYyBpbnQgc2VhcmNoX2JpbmFyeV9oYW5kbGVyKHN0cnVjdCBsaW51eF9iaW5wcm0gKmJwcm0pXFxuLS1cXG5mcy9leGVjLmMtMTcxOS1cXG5mcy9leGVjLmM6MTcyMDovKiBiaW5mbXQgaGFuZGxlcnMgd2lsbCBjYWxsIGJhY2sgaW50byBiZWdpbl9uZXdfZXhlYygpIG9uIHN1Y2Nlc3MuICovXFxuZnMvZXhlYy5jLTE3MjEtc3RhdGljIGludCBleGVjX2JpbnBybShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jPTE3NjY9c3RhdGljIGludCBicHJtX2V4ZWN2ZShzdHJ1Y3QgbGludXhfYmlucHJtICpicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTE3NzUtXFx0ICogQ2hlY2sgZm9yIHVuc2FmZSBleGVjdXRpb24gc3RhdGVzIGJlZm9yZSBleGVjX2JpbnBybSgpLCB3aGljaFxcbmZzL2V4ZWMuYzoxNzc2OlxcdCAqIHdpbGwgY2FsbCBiYWNrIGludG8gYmVnaW5fbmV3X2V4ZWMoKSwgaW50byBicHJtX2NyZWRzX2Zyb21fZmlsZSgpLFxcbmZzL2V4ZWMuYy0xNzc3LVxcdCAqIHdoZXJlIHNldHVpZC1uZXNzIGlzIGV2YWx1YXRlZC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTQ6NTQuMTc4ODkwNjM3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNjIwNTQwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBQYXRjaCBvbiBFeGVjdmUgUGVyZm9ybWFuY2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cmFjaW5nIGl0cyBpbXBhY3QuIEkgc2VlIHRoYXQgYGJlZ2luX25ld19leGVjYCBpcyB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQgaGVyZSwgdHJpZ2dlcmVkIGJ5IGBsb2FkX2VsZl9iaW5hcnlgLCBgbG9hZF9lbGZfZmRwaWNfYmluYXJ5YCwgYW5kIGBsb2FkX2ZsYXRfZmlsZWAuIFJpZ2h0LCBhbGwgdGhvc2UgYXJlIGhvdCBwYXRocyByZWxhdGVkIHRvIHRoZSBgZXhlY3ZlYCBzeXN0ZW0gY2FsbCwgbWFraW5nIHRoaXMgYXJlYSBhIHByaW1lIHRhcmdldCBmb3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yLCBpbiB0aGlzIGNhc2UsIHBvdGVudGlhbCByZWdyZXNzaW9uLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGRlX3RocmVhZGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IHRoYXQgY3J1Y2lhbCBgYmVnaW5fbmV3X2V4ZWNgIGZ1bmN0aW9uLiBXYWl0IGEgc2Vjb25kLCB0aGUga2V5IGNoYW5nZSBpcyB0aGF0IGl0J3MgaW50cm9kdWNpbmcgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2l0aGluIGBkZV90aHJlYWRgLlxuXG5UaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgZnVuY3Rpb24gaXMgdGhlIHJpZ2h0IGZvY3VzIG9mIG15IGF0dGVudGlvbi4gSXMgdGhpcyBmdW5jdGlvbiBhbiBhcHByb3ByaWF0ZSBpbmRpY2F0b3Igb2YgcGVyZm9ybWFuY2UgY2hhbmdlcywgZ29vZCBvciBiYWQsIHJlbGF0ZWQgdG8gdGhpcyBwYXRjaD8gSXQncyB3b3J0aCBhIGRlZXBlciBkaXZlIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGlzIGNvZGUgcGF0aC4gTGV0IG1lIGdvIGNoZWNrIGl0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTAzNiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NDo1OC41NDA5NDY3MzJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ3OTc3NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicG9zaXhfY3B1X3RpbWVyc19leGl0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leGVjLmM9OTE5PXN0YXRpYyBpbnQgZGVfdGhyZWFkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbi0tXFxuZnMvZXhlYy5jLTEwMTAtXFx0XFx0c3Bpbl9sb2NrKGxvY2spO1xcbmZzL2V4ZWMuYzoxMDExOlxcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbmZzL2V4ZWMuYy0xMDEyLVxcdFxcdHNwaW5fdW5sb2NrKGxvY2spO1xcbi0tXFxuZnMvZXhlYy5jPTExMjI9aW50IGJlZ2luX25ld19leGVjKHN0cnVjdCBsaW51eF9iaW5wcm0gKiBicHJtKVxcbi0tXFxuZnMvZXhlYy5jLTExOTAtXFx0c3Bpbl9sb2NrX2lycShcXHUwMDI2bWUtXFx1MDAzZXNpZ2hhbmQtXFx1MDAzZXNpZ2xvY2spO1xcbmZzL2V4ZWMuYzoxMTkxOlxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdChtZSk7XFxuZnMvZXhlYy5jLTExOTItXFx0c3Bpbl91bmxvY2tfaXJxKFxcdTAwMjZtZS1cXHUwMDNlc2lnaGFuZC1cXHUwMDNlc2lnbG9jayk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oPTIyNT12b2lkIHJ1bl9wb3NpeF9jcHVfdGltZXJzKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvcG9zaXgtdGltZXJzLmg6MjI2OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzayk7XFxuaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaDoyMjc6dm9pZCBwb3NpeF9jcHVfdGltZXJzX2V4aXRfZ3JvdXAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKTtcXG5pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oLTIyOC12b2lkIHNldF9wcm9jZXNzX2NwdV90aW1lcihzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGludCBjbG9ja19pZHgsXFxuLS1cXG5rZXJuZWwvZXhpdC5jPTE1OT1zdGF0aWMgdm9pZCBfX2V4aXRfc2lnbmFsKHN0cnVjdCByZWxlYXNlX3Rhc2tfcG9zdCAqcG9zdCwgc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXFxuLS1cXG5rZXJuZWwvZXhpdC5jLTE3MS0jaWZkZWYgQ09ORklHX1BPU0lYX1RJTUVSU1xcbmtlcm5lbC9leGl0LmM6MTcyOlxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spO1xcbmtlcm5lbC9leGl0LmMtMTczLVxcdGlmIChncm91cF9kZWFkKVxcbmtlcm5lbC9leGl0LmM6MTc0OlxcdFxcdHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCh0c2spO1xcbmtlcm5lbC9leGl0LmMtMTc1LSNlbmRpZlxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTQ1MT1zdGF0aWMgdm9pZCBkaXNhcm1fdGltZXIoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgc3RydWN0IHRhc2tfc3RydWN0ICpwKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTQ4MS0gKlxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo0ODI6ICogX19leGl0X3NpZ25hbCgpIGludm9rZXMgcG9zaXhfY3B1X3RpbWVyc19leGl0KCkgYW5kIGlmIHRoZSB0aHJlYWQgZ3JvdXAgaXNcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDgzLSAqIGRlYWQgaXQgYWxzbyBpbnZva2VzIHBvc2l4X2NwdV90aW1lcnNfZ3JvdXBfZXhpdCgpLiBUaGVzZSBmdW5jdGlvbnMgZGVsZXRlXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNDg5LSAqIHRocmVhZCBncm91cCBpcyBub3QgZGVhZCB0aGV5IG9ubHkgY2xlYW4gdXAgdGhlIHBlciB0YXNrIHRpbWVycyB2aWFcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NDkwOiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdCgpLlxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy00OTEtICpcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02MjQ9c3RhdGljIHZvaWQgY2xlYW51cF90aW1lcnMoc3RydWN0IHBvc2l4X2NwdXRpbWVycyAqcGN0KVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzMy0gKiBpcyBiZWluZyByZWFwZWQuICBXaGVuIHRoZSBmaW5hbCAobGVhZGVyKSB0aHJlYWQgaW4gdGhlIGdyb3VwIGlzIHJlYXBlZCxcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM0OiAqIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cCB3aWxsIGJlIGNhbGxlZCBhZnRlciBwb3NpeF9jcHVfdGltZXJzX2V4aXQuXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzNS0gKi9cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NjM2OnZvaWQgcG9zaXhfY3B1X3RpbWVyc19leGl0KHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrKVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy02Mzcte1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTYzOS19XFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjY0MDp2b2lkIHBvc2l4X2NwdV90aW1lcnNfZXhpdF9ncm91cChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNjQxLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MDAuMDk1NzQ5MTc0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MzUzODUwNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBUaHJlYWQgRXhpdCBSb3V0aW5lKipcblxuT2theSwgc28gYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgaXMgYSBrZXkgZnVuY3Rpb24sIGNhbGxlZCBmcm9tIG11bHRpcGxlIHBsYWNlczogYF9fZXhpdF9zaWduYWxgLCBgYmVnaW5fbmV3X2V4ZWNgLCBhbmQgbm93LCBpbXBvcnRhbnRseSwgYGRlX3RocmVhZGAuIEl0IHNlZW1zIGxpa2UgYSBkZWNlbnQgcG9pbnQgb2YgZm9jdXMgZm9yIHRoaXMgcHJvYmxlbSwgYnV0IHRoZSBmYWN0IHRoYXQgaXQncyB0cmlnZ2VyZWQgb24gKmV2ZXJ5KiB0aHJlYWQgZXhpdCBpcyBhIGJpdCBjb25jZXJuaW5nIGZvciBpdHMgc3BlY2lmaWNpdHkuIElzIHRoZXJlIGEgbW9yZSByZWZpbmVkIHBvaW50IG9mIGludGVyZXN0IHdpdGhpbiB0aGlzIGNvZGUgcGF0aD9cblxuSG1tLCB0aGUgYnVnJ3MgY29ubmVjdGlvbiB0byBgZXhjaGFuZ2VfdGlkcygpYCBhbmQgYHRpbWVyX2xvY2tfc2lnaGFuZCgpYCBpcyBtYWtpbmcgbWUgdGhpbmsgYWJvdXQgd2hlcmUgdGhlIGFjdHVhbCBpc3N1ZSBtaWdodCBsaWUuIEdpdmVuIHRoYXQgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgc2VlbXMgd2lkZXNwcmVhZCwgbWF5YmUgdGhlIHByb2JsZW0gaXMgaW4gYSBmdW5jdGlvbiBpdCdzIGNhbGxpbmcsIGxpa2UgYHRpbWVyX2xvY2tfc2lnaGFuZGAuIExldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGRvaW5nIHdpdGggdGltZXJzIGFuZCBzaWduYWwgaGFuZGxpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDAwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MDQuOTMxMTM2NTk2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc2MjQyODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpbWVyX2xvY2tfc2lnaGFuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXhlYy5jPTkxOT1zdGF0aWMgaW50IGRlX3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaylcXG4tLVxcbmZzL2V4ZWMuYy0xMDA2LVxcdFxcdCAqIHdoaWNoIGlzIHJlYXBlZCByaWdodCBhZnRlci4gVGhlIFBJRCBsb29rdXAgaW5cXG5mcy9leGVjLmM6MTAwNzpcXHRcXHQgKiB0aW1lcl9sb2NrX3NpZ2hhbmQoKSB0aGVuIGZhaWxzIHdoaWxlIHRoZSBwZXIgdGhyZWFkIENQVVxcbmZzL2V4ZWMuYy0xMDA4LVxcdFxcdCAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC5cXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy01MjItICovXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjUyMzpzdGF0aWMgc3RydWN0IHRhc2tfc3RydWN0ICp0aW1lcl9sb2NrX3NpZ2hhbmQoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgdW5zaWduZWQgbG9uZyAqZmxhZ3MpXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTUyNC17XFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM9NTc0PXN0YXRpYyBpbnQgcG9zaXhfY3B1X3RpbWVyX2RlbChzdHJ1Y3Qga19pdGltZXIgKnRpbWVyKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTU3OS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NTgwOlxcdHAgPSB0aW1lcl9sb2NrX3NpZ2hhbmQodGltZXIsIFxcdTAwMjZmbGFncyk7XFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTU4MS1cXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz03MDY9c3RhdGljIGludCBwb3NpeF9jcHVfdGltZXJfc2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIGludCB0aW1lcl9mbGFncyxcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MTYtXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjcxNzpcXHRwID0gdGltZXJfbG9ja19zaWdoYW5kKHRpbWVyLCBcXHUwMDI2ZmxhZ3MpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MTgtXFx0LypcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz0xMDgyPXN0YXRpYyBib29sIHBvc2l4X2NwdV90aW1lcl9yZWFybShzdHJ1Y3Qga19pdGltZXIgKnRpbWVyKVxcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTEwODgtXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjEwODk6XFx0cCA9IHRpbWVyX2xvY2tfc2lnaGFuZCh0aW1lciwgXFx1MDAyNmZsYWdzKTtcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTA5MC1cXHRpZiAodW5saWtlbHkoIXApKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NTowNi41MDczODM1MTdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcyMjcyNzI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgYSBUaW1lci1SZWxhdGVkIFRocmVhZCBQSUQgSXNzdWUqKlxuXG5Pa2F5LCBzbyBoZXJlJ3Mgd2hhdCBJJ20gZGVhbGluZyB3aXRoLiBJdCBsb29rcyBsaWtlIGBleGNoYW5nZV90aWRzKClgIGlzIHBhc3NpbmcgYSB0aHJlYWQncyBQSUQgdG8gdGhlIG9sZCBsZWFkZXIsIGFuZCB0aGF0IGxlYWRlciBpcyBpbW1lZGlhdGVseSByZWFwZWQuIFRoZSBwcm9ibGVtIGFyaXNlcyBiZWNhdXNlIGxhdGVyLCB3aGVuIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgdHJpZXMgdG8gbG9vayB1cCB0aGUgUElELCBpdCBmYWlscyB3aGlsZSB0aGUgQ1BVIHRpbWVycyBmb3IgdGhhdCBzcGVjaWZpYyB0aHJlYWQgYXJlIHN0aWxsIHF1ZXVlZC4gV2UgbmVlZCB0byBkZXF1ZXVlIHRob3NlIHRpbWVycyBiZWZvcmUgdGhpcyBsb29rdXAgaGFwcGVucy5cblxuVGhpcyBzZWVtcyB0byBzcGVjaWZpY2FsbHkgb2NjdXIgd2hlbiBhIG5vbi1sZWFkZXIgdGhyZWFkIGV4ZWN1dGVzIGFuIGBleGVjdmVgIGNhbGwgYW5kIGhhcyBQT1NJWCBDUFUgdGltZXJzIHJ1bm5pbmcuIFRvIHJlcHJvZHVjZSB0aGlzLCBJIG5lZWQgdG8gY3JlYXRlIGEgdGhyZWFkIGdyb3VwIHdpdGggYXQgbGVhc3QgdHdvIHRocmVhZHMuIFRoZW4sIHRoZSBub24tbGVhZGVyIHRocmVhZCBoYXMgdG8gYXJtIGEgUE9TSVggQ1BVIHRpbWVyIHVzaW5nIHNvbWV0aGluZyBsaWtlIGB0aW1lcl9jcmVhdGVgIHdpdGggYENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEYC4gRmluYWxseSwgdGhhdCBub24tbGVhZGVyIHRocmVhZCBuZWVkcyB0byBleGVjdXRlIGBleGVjdmVgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGNoZWNrIHN5bWJvbHMgbGlrZSBgcG9zaXhfY3B1X3RpbWVyX3NldGAsIGBwb3NpeF9jcHVfdGltZXJfZGVsYCwgYW5kIGBkZV90aHJlYWRg4oCUYWx0aG91Z2ggYGRlX3RocmVhZGAgaXMgc3RhdGljLCBzbyBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgYmVnaW5fbmV3X2V4ZWNgIGluc3RlYWQuXG5cbkJ1dCB3YWl0LCBgcG9zaXhfY3B1X3RpbWVyX3NldGAgaXMgYWxzbyBzdGF0aWMhIE9rYXksIHNvIEkgbmVlZCB0byBmaW5kIHRoZSBjYWxscyB0byBgcG9zaXhfY3B1X3RpbWVyX3NldGAgaXRzZWxmLiBUaGF0J3MgdGhlIG5leHQgc3RlcCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpjYWxsaW5nKiB0aGF0IGZ1bmN0aW9uLiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzMTAsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MTIuMjMwMTEzOTg2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI3ODE3MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBvc2l4X2NwdV90aW1lcl9zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz00NTE9c3RhdGljIHZvaWQgZGlzYXJtX3RpbWVyKHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCB0YXNrX3N0cnVjdCAqcClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy01MTMtICpcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NTE0OiAqICAtIHBvc2l4X2NwdV90aW1lcl9zZXQoKTogSW5kZXBlbmRlbnQgb2YgdGhlIGVucXVldWVkIHN0YXRlIHRoYXQgcmVzdWx0cyBpbiBhXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTUxNS0gKiAgICB0cmFuc2llbnQgZmFpbHVyZSB3aGljaCBpcyB1c2VyIHNwYWNlIHZpc2libGUgKC1FU1JDSCkgZm9yIHJlZ3VsYXIgcG9zaXhcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz02OTg9c3RhdGljIHZvaWQgX19wb3NpeF9jcHVfdGltZXJfZ2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIHN0cnVjdCBpdGltZXJzcGVjNjQgKml0cCwgdTY0IG5vdyk7XFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNzA1LSAqL1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzo3MDY6c3RhdGljIGludCBwb3NpeF9jcHVfdGltZXJfc2V0KHN0cnVjdCBrX2l0aW1lciAqdGltZXIsIGludCB0aW1lcl9mbGFncyxcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtNzA3LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICpuZXcsIHN0cnVjdCBpdGltZXJzcGVjNjQgKm9sZClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz0xNTM3PXN0YXRpYyBpbnQgZG9fY3B1X25hbm9zbGVlcChjb25zdCBjbG9ja2lkX3Qgd2hpY2hfY2xvY2ssIGludCBmbGFncyxcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNTYzLVxcdFxcdHNwaW5fbG9ja19pcnEoXFx1MDAyNnRpbWVyLml0X2xvY2spO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzoxNTY0OlxcdFxcdGVycm9yID0gcG9zaXhfY3B1X3RpbWVyX3NldChcXHUwMDI2dGltZXIsIGZsYWdzLCBcXHUwMDI2aXQsIE5VTEwpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNTY1LVxcdFxcdGlmIChlcnJvcikge1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTE1OTQtXFx0XFx0ZXhwaXJlcyA9IGNwdV90aW1lcl9nZXRleHBpcmVzKFxcdTAwMjZ0aW1lci5pdC5jcHUpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYzoxNTk1OlxcdFxcdGVycm9yID0gcG9zaXhfY3B1X3RpbWVyX3NldChcXHUwMDI2dGltZXIsIDAsIFxcdTAwMjZ6ZXJvX2l0LCBcXHUwMDI2aXQpO1xcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNTk2LVxcdFxcdGlmICghZXJyb3IpIHtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYz0xNzA2PWNvbnN0IHN0cnVjdCBrX2Nsb2NrIGNsb2NrX3Bvc2l4X2NwdSA9IHtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy0xNzExLVxcdC5uc2xlZXBcXHRcXHRcXHQ9IHBvc2l4X2NwdV9uc2xlZXAsXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jOjE3MTI6XFx0LnRpbWVyX3NldFxcdFxcdD0gcG9zaXhfY3B1X3RpbWVyX3NldCxcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmMtMTcxMy1cXHQudGltZXJfZGVsXFx0XFx0PSBwb3NpeF9jcHVfdGltZXJfZGVsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NToxMy43NTc5MzYyOVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDQ5MDIxMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gc3lzdGVtcyBwcm9ncmFtbWluZyBhbmQga2VybmVsIGludGVybmFsczpcblxuKipEaXZpbmcgaW50byBUaW1lciBJbXBsZW1lbnRhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGB0aW1lcl9zZXR0aW1lYC4gTXkgbWVudGFsIG1hcCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgZmFjdCB0aGF0IHRoaXMgaXMgY29ubmVjdGVkIHRvIGBjbG9ja19wb3NpeF9jcHVgLCBsaWtlbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBgdGltZXJfc2V0dGltZWAgc3lzY2FsbCBpdHNlbGYsIGBzeXNfdGltZXJfc2V0dGltZWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcuIFRoZSBhcmNoaXRlY3R1cmUgd291bGQgZGljdGF0ZSBteSBuZXh0IHN0ZXAsIHdoaWNoIHdpbGwgYmUgdG8gY2hlY2sgYHRpbWVyX3NldHRpbWVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9uYWxpdHkgdGhpcyBjb2RlIGlzIHNlcnZpbmcsIHNvIGxldCdzIGRpZyBpbnRvIHRoYXQgcm91dGluZS4gTGV0J3Mgc2VlIGhvdyBpdCB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MTMsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NToyMC4yMDY5NTk2NTdaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTcyNDcxNTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGltZXJfc2V0dGltZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0PTExMTE9UnVubmluZyBwdHJhY2Ugb24gdGhpcyB0aHJlYWQgdXN1YWxseSByZXN1bHRzIGluIHRoZSBmb2xsb3dpbmcgcGljdHVyZTo6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3ZpcnQvdW1sL3VzZXJfbW9kZV9saW51eF9ob3d0b192Mi5yc3QtMTEyOC0gICBwdHJhY2UoUFRSQUNFX0dFVFNJR0lORk8sIDE2OTY3LCBOVUxMLCB7c2lfc2lnbm89U0lHVFJBUCwgc2lfY29kZT0weDg1LCBzaV9waWQ9MTY5NjcsIHNpX3VpZD0wfSkgPSAwXFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0OjExMjk6ICAgdGltZXJfc2V0dGltZSgwLCAwLCB7aXRfaW50ZXJ2YWw9e3R2X3NlYz0wLCB0dl9uc2VjPTB9LCBpdF92YWx1ZT17dHZfc2VjPTAsIHR2X25zZWM9MjgzMDkxMn19LCBOVUxMKSA9IDBcXG5Eb2N1bWVudGF0aW9uL3ZpcnQvdW1sL3VzZXJfbW9kZV9saW51eF9ob3d0b192Mi5yc3QtMTEzMC0gICBnZXRwaWQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxNjU2Nlxcbi0tXFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0PTExMzU9VGhpcyBpcyBhIHR5cGljYWwgcGljdHVyZSBmcm9tIGEgbW9zdGx5IGlkbGUgVU1MIGluc3RhbmNlLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0LTExNDMtICBVTUwgdXNlcnNwYWNlLlxcbkRvY3VtZW50YXRpb24vdmlydC91bWwvdXNlcl9tb2RlX2xpbnV4X2hvd3RvX3YyLnJzdDoxMTQ0OiogYGB0aW1lcl9zZXR0aW1lYGAgaXMgcGFydCBvZiB0aGUgVU1MIGhpZ2ggcmVzIHRpbWVyIHN1YnN5c3RlbSBtYXBwaW5nXFxuRG9jdW1lbnRhdGlvbi92aXJ0L3VtbC91c2VyX21vZGVfbGludXhfaG93dG9fdjIucnN0LTExNDUtICB0aW1lciByZXF1ZXN0cyBmcm9tIGluc2lkZSBVTUwgb250byB0aGUgaG9zdCBoaWdoIHJlc29sdXRpb24gdGltZXJzLlxcbi0tXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ1LTQxNFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozNDY6NDE1XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ3LTQxNlxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbi0tXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtMjc1LTI1N1xcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDoyNzY6MjU4XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC0yNzctMjU5XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZVxcdFxcdHN5c190aW1lcl9nZXR0aW1lMzJcXG4tLVxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQyNi00MDhcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsOjQyNzo0MDlcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQyOC00MTBcXHRjb21tb25cXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtMjcyLTI1N1xcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdHN5c190aW1lcl9jcmVhdGVcXHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50Ymw6MjczOjI1OFxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibC0yNzQtMjU5XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZVxcdFxcdHN5c190aW1lcl9nZXR0aW1lMzJcXG4tLVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDIzLTQwOFxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0MjQ6NDA5XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL2FybTY0L3Rvb2xzL3N5c2NhbGxfMzIudGJsLTQyNS00MTBcXHRjb21tb25cXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjY0LTI1NFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI2NToyNTVcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWUzMlxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjY2LTI1NlxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMS00MDhcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDEyOjQwOVxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTMtNDEwXFx0Y29tbW9uXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI2OS0yNTlcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDoyNzA6MjYwXFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3MS0yNjFcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDA4XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQxODo0MDlcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDE5LTQxMFxcdGNvbW1vblxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMjMxLTIyMFxcdG4zMlxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50Ymw6MjMyOjIyMVxcdG4zMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtMjMzLTIyMlxcdG4zMlxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zNTAtNDA4XFx0bjMyXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibDozNTE6NDA5XFx0bjMyXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjMyLnRibC0zNTItNDEwXFx0bjMyXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0yMjctMjE2XFx0bjY0XFx0dGltZXJfY3JlYXRlXFx0XFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsOjIyODoyMTdcXHRuNjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0yMjktMjE4XFx0bjY0XFx0dGltZXJfZ2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0yNzEtMjU3XFx0bzMyXFx0dGltZXJfY3JlYXRlXFx0XFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50Ymw6MjcyOjI1OFxcdG8zMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtMjczLTI1OVxcdG8zMlxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC0zOTktNDA4XFx0bzMyXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsOjQwMDo0MDlcXHRvMzJcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtNDAxLTQxMFxcdG8zMlxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzktMjUwXFx0Y29tbW9uXFx0dGltZXJfY3JlYXRlXFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI4MDoyNTFcXHQzMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjI4MToyNTFcXHQ2NFxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yODItMjUyXFx0MzJcXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxuYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxMC00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDExOjQwOVxcdDMyXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTItNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTMwNi0yNDBcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFx0XFx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwNzoyNDFcXHQzMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozMDg6MjQxXFx0NjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjMwOToyNDFcXHRzcHVcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTMxMC0yNDJcXHQzMlxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMi00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjUwMzo0MDlcXHQzMlxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwNC00MTBcXHQzMlxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEwLTI1NFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjIxMToyNTVcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTIxMi0yNTZcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG4tLVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTI2OS0yNTlcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjcwOjI2MFxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjcxLTI2MVxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTUtNDA4XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTY6NDA5XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3NoL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00MTctNDEwXFx0Y29tbW9uXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zMTgtMjYxXFx0Y29tbW9uXFx0c2NoZWRfc2V0YWZmaW5pdHlcXHRzeXNfc2NoZWRfc2V0YWZmaW5pdHlcXHRcXHRjb21wYXRfc3lzX3NjaGVkX3NldGFmZmluaXR5XFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzE5OjI2MlxcdDMyXFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozMjA6MjYyXFx0NjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zMjEtMjYzXFx0MzJcXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDU3LTQwOFxcdDMyXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ1ODo0MDlcXHQzMlxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NTktNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYz02MT1pbnQgb3NfdGltZXJfc2V0X2ludGVydmFsKGludCBjcHUsIHVuc2lnbmVkIGxvbmcgbG9uZyBuc2VjcylcXG4tLVxcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jLTcwLVxcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jOjcxOlxcdGlmICh0aW1lcl9zZXR0aW1lKGV2ZW50X2hpZ2hfcmVzX3RpbWVyW2NwdV0sIDAsIFxcdTAwMjZpdHMsIE5VTEwpID09IC0xKVxcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jLTcyLVxcdFxcdHJldHVybiAtZXJybm87XFxuLS1cXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYz03Nz1pbnQgb3NfdGltZXJfb25lX3Nob3QoaW50IGNwdSwgdW5zaWduZWQgbG9uZyBsb25nIG5zZWNzKVxcbi0tXFxuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtODYtXFxuYXJjaC91bS9vcy1MaW51eC90aW1lLmM6ODc6XFx0dGltZXJfc2V0dGltZShldmVudF9oaWdoX3Jlc190aW1lcltjcHVdLCAwLCBcXHUwMDI2aXRzLCBOVUxMKTtcXG5hcmNoL3VtL29zLUxpbnV4L3RpbWUuYy04OC1cXHRyZXR1cm4gMDtcXG4tLVxcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jPTk1PXZvaWQgb3NfdGltZXJfZGlzYWJsZShpbnQgY3B1KVxcbi0tXFxuYXJjaC91bS9vcy1MaW51eC90aW1lLmMtOTktXFx0bWVtc2V0KFxcdTAwMjZpdHMsIDAsIHNpemVvZihzdHJ1Y3QgaXRpbWVyc3BlYykpO1xcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jOjEwMDpcXHR0aW1lcl9zZXR0aW1lKGV2ZW50X2hpZ2hfcmVzX3RpbWVyW2NwdV0sIDAsIFxcdTAwMjZpdHMsIE5VTEwpO1xcbmFyY2gvdW0vb3MtTGludXgvdGltZS5jLTEwMS19XFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzQtMjU5XFx0aTM4NlxcdHRpbWVyX2NyZWF0ZVxcdFxcdHN5c190aW1lcl9jcmVhdGVcXHRcXHRjb21wYXRfc3lzX3RpbWVyX2NyZWF0ZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjI3NToyNjBcXHRpMzg2XFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzYtMjYxXFx0aTM4NlxcdHRpbWVyX2dldHRpbWVcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00MTctNDA4XFx0aTM4NlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDE4OjQwOVxcdGkzODZcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxOS00MTBcXHRpMzg2XFx0dGltZXJmZF9nZXR0aW1lNjRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0yMzQtMjIyXFx0NjRcXHR0aW1lcl9jcmVhdGVcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6MjM1OjIyM1xcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTIzNi0yMjRcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG4tLVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzAtMjQ5XFx0Y29tbW9uXFx0dGltZXJfZGVsZXRlXFx0XFx0XFx0c3lzX3RpbWVyX2RlbGV0ZVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDoyNzE6MjUwXFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjcyLTI1MVxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzgyLTQwOFxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjM4Mzo0MDlcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC0zODQtNDEwXFx0Y29tbW9uXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG5kcml2ZXJzL3B0cC9wdHBfbmV0Yy5jPTY5NT1zdGF0aWMgaW50IG5ldGNfdGltZXJfZ2V0dGltZXg2NChzdHJ1Y3QgcHRwX2Nsb2NrX2luZm8gKnB0cCxcXG4tLVxcbmRyaXZlcnMvcHRwL3B0cF9uZXRjLmMtNzE1LVxcbmRyaXZlcnMvcHRwL3B0cF9uZXRjLmM6NzE2OnN0YXRpYyBpbnQgbmV0Y190aW1lcl9zZXR0aW1lNjQoc3RydWN0IHB0cF9jbG9ja19pbmZvICpwdHAsXFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03MTctXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IHRpbWVzcGVjNjQgKnRzKVxcbi0tXFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYz03MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBwdHBfY2xvY2tfaW5mbyBuZXRjX3RpbWVyX3B0cF9jYXBzID0ge1xcbi0tXFxuZHJpdmVycy9wdHAvcHRwX25ldGMuYy03NDktXFx0LmdldHRpbWV4NjRcXHQ9IG5ldGNfdGltZXJfZ2V0dGltZXg2NCxcXG5kcml2ZXJzL3B0cC9wdHBfbmV0Yy5jOjc1MDpcXHQuc2V0dGltZTY0XFx0PSBuZXRjX3RpbWVyX3NldHRpbWU2NCxcXG5kcml2ZXJzL3B0cC9wdHBfbmV0Yy5jLTc1MS1cXHQuZW5hYmxlXFx0XFx0PSBuZXRjX3RpbWVyX2VuYWJsZSxcXG4tLVxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaD02MTg9YXNtbGlua2FnZSBsb25nIHN5c190aW1lcl9nZXRvdmVycnVuKHRpbWVyX3QgdGltZXJfaWQpO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDo2MTk6YXNtbGlua2FnZSBsb25nIHN5c190aW1lcl9zZXR0aW1lKHRpbWVyX3QgdGltZXJfaWQsIGludCBmbGFncyxcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNjIwLVxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBfX2tlcm5lbF9pdGltZXJzcGVjIF9fdXNlciAqbmV3X3NldHRpbmcsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9NjMyPWFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfZ2V0dGltZTMyKHRpbWVyX3QgdGltZXJfaWQsXFxuaW5jbHVkZS9saW51eC9zeXNjYWxscy5oLTYzMy1cXHRcXHRcXHRcXHQgc3RydWN0IG9sZF9pdGltZXJzcGVjMzIgX191c2VyICpzZXR0aW5nKTtcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6NjM0OmFzbWxpbmthZ2UgbG9uZyBzeXNfdGltZXJfc2V0dGltZTMyKHRpbWVyX3QgdGltZXJfaWQsIGludCBmbGFncyxcXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmgtNjM1LVxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgb2xkX2l0aW1lcnNwZWMzMiBfX3VzZXIgKm5ldyxcXG4tLVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaD0zMDU9X19TWVNDQUxMKF9fTlJfdGltZXJfZ2V0b3ZlcnJ1biwgc3lzX3RpbWVyX2dldG92ZXJydW4pXFxuLS1cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtMzA3LSNpZiBkZWZpbmVkKF9fQVJDSF9XQU5UX1RJTUUzMl9TWVNDQUxMUykgfHwgX19CSVRTX1BFUl9MT05HICE9IDMyXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjMwODojZGVmaW5lIF9fTlJfdGltZXJfc2V0dGltZSAxMTBcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6MzA5Ol9fU0NfMzI2NChfX05SX3RpbWVyX3NldHRpbWUsIHN5c190aW1lcl9zZXR0aW1lMzIsIHN5c190aW1lcl9zZXR0aW1lKVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC0zMTAtI2VuZGlmXFxuLS1cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9NzI2PV9fU1lTQ0FMTChfX05SX3RpbWVyX2dldHRpbWU2NCwgc3lzX3RpbWVyX2dldHRpbWUpXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjcyNzojZGVmaW5lIF9fTlJfdGltZXJfc2V0dGltZTY0IDQwOVxcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3Mjg6X19TWVNDQUxMKF9fTlJfdGltZXJfc2V0dGltZTY0LCBzeXNfdGltZXJfc2V0dGltZSlcXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtNzI5LSNkZWZpbmUgX19OUl90aW1lcmZkX2dldHRpbWU2NCA0MTBcXG4tLVxcbmluaXQvS2NvbmZpZz0xNzYxPWNvbmZpZyBQT1NJWF9USU1FUlNcXG4tLVxcbmluaXQvS2NvbmZpZy0xNzcwLVxcdCAgYXZhaWxhYmxlOiB0aW1lcl9jcmVhdGUsIHRpbWVyX2dldHRpbWU6IHRpbWVyX2dldG92ZXJydW4sXFxuaW5pdC9LY29uZmlnOjE3NzE6XFx0ICB0aW1lcl9zZXR0aW1lLCB0aW1lcl9kZWxldGUsIGNsb2NrX2FkanRpbWUsIGdldGl0aW1lcixcXG5pbml0L0tjb25maWctMTc3Mi1cXHQgIHNldGl0aW1lciwgYWxhcm0uIEZ1cnRoZXJtb3JlLCB0aGUgY2xvY2tfc2V0dGltZSwgY2xvY2tfZ2V0dGltZSxcXG4tLVxcbmtlcm5lbC9zeXNfbmkuYz0yMDk9Q09ORF9TWVNDQUxMKHRpbWVyX2dldG92ZXJydW4pO1xcbmtlcm5lbC9zeXNfbmkuYzoyMTA6Q09ORF9TWVNDQUxMKHRpbWVyX3NldHRpbWUpO1xcbmtlcm5lbC9zeXNfbmkuYy0yMTEtQ09ORF9TWVNDQUxMKHRpbWVyX2RlbGV0ZSk7XFxuLS1cXG5rZXJuZWwvc3lzX25pLmM9MzM5PUNPTkRfU1lTQ0FMTF9DT01QQVQocnRfc2lndGltZWR3YWl0X3RpbWUzMik7XFxua2VybmVsL3N5c19uaS5jOjM0MDpDT05EX1NZU0NBTEwodGltZXJfc2V0dGltZTMyKTtcXG5rZXJuZWwvc3lzX25pLmMtMzQxLUNPTkRfU1lTQ0FMTCh0aW1lcl9nZXR0aW1lMzIpO1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jPTY5OD1zdGF0aWMgdm9pZCBfX3Bvc2l4X2NwdV90aW1lcl9nZXQoc3RydWN0IGtfaXRpbWVyICp0aW1lciwgc3RydWN0IGl0aW1lcnNwZWM2NCAqaXRwLCB1NjQgbm93KTtcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYy03MDAtLypcXG5rZXJuZWwvdGltZS9wb3NpeC1jcHUtdGltZXJzLmM6NzAxOiAqIEd1dHMgb2Ygc3lzX3RpbWVyX3NldHRpbWUgZm9yIENQVSB0aW1lcnMuXFxua2VybmVsL3RpbWUvcG9zaXgtY3B1LXRpbWVycy5jLTcwMi0gKiBUaGlzIGlzIGNhbGxlZCB3aXRoIHRoZSB0aW1lciBsb2NrZWQgYW5kIGludGVycnVwdHMgZGlzYWJsZWQuXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYz04ODc9aW50IGNvbW1vbl90aW1lcl9zZXQoc3RydWN0IGtfaXRpbWVyICp0aW1yLCBpbnQgZmxhZ3MsXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05MjYtXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6OTI3OnN0YXRpYyBpbnQgZG9fdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyX2lkLCBpbnQgdG1yX2ZsYWdzLCBzdHJ1Y3QgaXRpbWVyc3BlYzY0ICpuZXdfc3BlYzY0LFxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTkyOC1cXHRcXHRcXHQgICAgc3RydWN0IGl0aW1lcnNwZWM2NCAqb2xkX3NwZWM2NClcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk2MS0vKiBTZXQgYSBQT1NJWC4xYiBpbnRlcnZhbCB0aW1lciAqL1xcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jOjk2MjpTWVNDQUxMX0RFRklORTQodGltZXJfc2V0dGltZSwgdGltZXJfdCwgdGltZXJfaWQsIGludCwgZmxhZ3MsXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTYzLVxcdFxcdGNvbnN0IHN0cnVjdCBfX2tlcm5lbF9pdGltZXJzcGVjIF9fdXNlciAqLCBuZXdfc2V0dGluZyxcXG4tLVxcbmtlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jLTk3NS1cXHRydG4gPSBvbGRfc2V0dGluZyA/IFxcdTAwMjZvbGRfc3BlYyA6IE5VTEw7XFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6OTc2OlxcdGVycm9yID0gZG9fdGltZXJfc2V0dGltZSh0aW1lcl9pZCwgZmxhZ3MsIFxcdTAwMjZuZXdfc3BlYywgcnRuKTtcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05NzctXFx0aWYgKCFlcnJvciBcXHUwMDI2XFx1MDAyNiBvbGRfc2V0dGluZykge1xcbi0tXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTg0LSNpZmRlZiBDT05GSUdfQ09NUEFUXzMyQklUX1RJTUVcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYzo5ODU6U1lTQ0FMTF9ERUZJTkU0KHRpbWVyX3NldHRpbWUzMiwgdGltZXJfdCwgdGltZXJfaWQsIGludCwgZmxhZ3MsXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmMtOTg2LVxcdFxcdHN0cnVjdCBvbGRfaXRpbWVyc3BlYzMyIF9fdXNlciAqLCBuZXcsXFxuLS1cXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05OTctXFxua2VybmVsL3RpbWUvcG9zaXgtdGltZXJzLmM6OTk4OlxcdGVycm9yID0gZG9fdGltZXJfc2V0dGltZSh0aW1lcl9pZCwgZmxhZ3MsIFxcdTAwMjZuZXdfc3BlYywgcnRuKTtcXG5rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYy05OTktXFx0aWYgKCFlcnJvciBcXHUwMDI2XFx1MDAyNiBvbGQpIHtcXG4tLVxcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaD0xOD1jYXQgXFx1MDAzY1xcdTAwM2MgRU9GXFxuLS1cXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2gtMTAwLSNkZWZpbmUgX19JR05PUkVfdGltZXJfZ2V0dGltZTY0XFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoOjEwMTojZGVmaW5lIF9fSUdOT1JFX3RpbWVyX3NldHRpbWU2NFxcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMDItI2RlZmluZSBfX0lHTk9SRV90aW1lcmZkX2dldHRpbWU2NFxcbi0tXFxuc2NyaXB0cy9jaGVja3N5c2NhbGxzLnNoLTEzMy0jZGVmaW5lIF9fSUdOT1JFX3RpbWVyX2dldHRpbWVcXG5zY3JpcHRzL2NoZWNrc3lzY2FsbHMuc2g6MTM0OiNkZWZpbmUgX19JR05PUkVfdGltZXJfc2V0dGltZVxcbnNjcmlwdHMvY2hlY2tzeXNjYWxscy5zaC0xMzUtI2RlZmluZSBfX0lHTk9SRV90aW1lcmZkX2dldHRpbWVcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMTM5LTEwOVxcdGNvbW1vblxcdHRpbWVyX2dldG92ZXJydW5cXHRcXHRzeXNfdGltZXJfZ2V0b3ZlcnJ1blxcbnNjcmlwdHMvc3lzY2FsbC50Ymw6MTQwOjExMFxcdHRpbWUzMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxuc2NyaXB0cy9zeXNjYWxsLnRibDoxNDE6MTEwXFx0NjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG5zY3JpcHRzL3N5c2NhbGwudGJsLTE0Mi0xMTFcXHRjb21tb25cXHR0aW1lcl9kZWxldGVcXHRcXHRcXHRzeXNfdGltZXJfZGVsZXRlXFxuLS1cXG5zY3JpcHRzL3N5c2NhbGwudGJsLTM1Mi00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuc2NyaXB0cy9zeXNjYWxsLnRibDozNTM6NDA5XFx0MzJcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtMzU0LTQxMFxcdDMyXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg9MTI0PXRpbWVfdCB0aW1lKHRpbWVfdCAqdHB0cilcXG4tLVxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xMzktICogaW50IHRpbWVyX2dldHRpbWUodGltZXJfdCB0aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqY3Vycl92YWx1ZSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE0MDogKiBpbnQgdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyaWQsIGludCBmbGFncywgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKm5ld192YWx1ZSwgc3RydWN0IGl0aW1lcnNwZWMgKm9sZF92YWx1ZSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE0MS0gKi9cXG4tLVxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaD0xODU9c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpXFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE4NjppbnQgX3N5c190aW1lcl9zZXR0aW1lKHRpbWVyX3QgdGltZXJpZCwgaW50IGZsYWdzLFxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xODctXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpdGltZXJzcGVjICpuZXdfdmFsdWUsIHN0cnVjdCBpdGltZXJzcGVjICpvbGRfdmFsdWUpXFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE4OC17XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE4OTojaWYgZGVmaW5lZChfX05SX3RpbWVyX3NldHRpbWU2NClcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMTkwLVxcdF9fbm9saWJjX2Fzc2VydF90aW1lNjRfdHlwZShuZXdfdmFsdWUtXFx1MDAzZWl0X3ZhbHVlLnR2X3NlYyk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE5MTpcXHRyZXR1cm4gX19ub2xpYmNfc3lzY2FsbDQoX19OUl90aW1lcl9zZXR0aW1lNjQsIHRpbWVyaWQsIGZsYWdzLCBuZXdfdmFsdWUsIG9sZF92YWx1ZSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE5Mi0jZWxzZVxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaC0xOTMtXFx0X19ub2xpYmNfYXNzZXJ0X25hdGl2ZV90aW1lNjQoKTtcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MTk0OlxcdHJldHVybiBfX25vbGliY19zeXNjYWxsNChfX05SX3RpbWVyX3NldHRpbWUsIHRpbWVyaWQsIGZsYWdzLCBuZXdfdmFsdWUsIG9sZF92YWx1ZSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTE5NS0jZW5kaWZcXG4tLVxcbnRvb2xzL2luY2x1ZGUvbm9saWJjL3RpbWUuaD0xOTg9c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpXFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oOjE5OTppbnQgdGltZXJfc2V0dGltZSh0aW1lcl90IHRpbWVyaWQsIGludCBmbGFncyxcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMjAwLVxcdFxcdCAgY29uc3Qgc3RydWN0IGl0aW1lcnNwZWMgKm5ld192YWx1ZSwgc3RydWN0IGl0aW1lcnNwZWMgKm9sZF92YWx1ZSlcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmgtMjAxLXtcXG50b29scy9pbmNsdWRlL25vbGliYy90aW1lLmg6MjAyOlxcdHJldHVybiBfX3N5c3JldChfc3lzX3RpbWVyX3NldHRpbWUodGltZXJpZCwgZmxhZ3MsIG5ld192YWx1ZSwgb2xkX3ZhbHVlKSk7XFxudG9vbHMvaW5jbHVkZS9ub2xpYmMvdGltZS5oLTIwMy19XFxuLS1cXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9MzA1PV9fU1lTQ0FMTChfX05SX3RpbWVyX2dldG92ZXJydW4sIHN5c190aW1lcl9nZXRvdmVycnVuKVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTMwNy0jaWYgZGVmaW5lZChfX0FSQ0hfV0FOVF9USU1FMzJfU1lTQ0FMTFMpIHx8IF9fQklUU19QRVJfTE9ORyAhPSAzMlxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDozMDg6I2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWUgMTEwXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjMwOTpfX1NDXzMyNjQoX19OUl90aW1lcl9zZXR0aW1lLCBzeXNfdGltZXJfc2V0dGltZTMyLCBzeXNfdGltZXJfc2V0dGltZSlcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtMzEwLSNlbmRpZlxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTcyNj1fX1NZU0NBTEwoX19OUl90aW1lcl9nZXR0aW1lNjQsIHN5c190aW1lcl9nZXR0aW1lKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo3Mjc6I2RlZmluZSBfX05SX3RpbWVyX3NldHRpbWU2NCA0MDlcXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6NzI4Ol9fU1lTQ0FMTChfX05SX3RpbWVyX3NldHRpbWU2NCwgc3lzX3RpbWVyX3NldHRpbWUpXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTcyOS0jZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lNjQgNDEwXFxuLS1cXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzQ1LTQxNFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG50b29scy9wZXJmL2FyY2gvYWxwaGEvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzQ2OjQxNVxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hbHBoYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zNDctNDE2XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxuLS1cXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3NS0yNTdcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyNzY6MjU4XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI3Ny0yNTlcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MjYtNDA4XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQyNzo0MDlcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDI4LTQxMFxcdGNvbW1vblxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3Mi0yNTdcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFx0Y29tcGF0X3N5c190aW1lcl9jcmVhdGVcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6MjczOjI1OFxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL2FybTY0L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQyMy00MDhcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9hcm02NC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0MjQ6NDA5XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvYXJtNjQvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDI1LTQxMFxcdGNvbW1vblxcdHRpbWVyZmRfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTIyNy0yMTZcXHRuNjRcXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL21pcHMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsOjIyODoyMTdcXHRuNjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMjI5LTIxOFxcdG42NFxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzktMjUwXFx0Y29tbW9uXFx0dGltZXJfY3JlYXRlXFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyODA6MjUxXFx0MzJcXHR0aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC9wYXJpc2MvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MjgxOjI1MVxcdDY0XFx0dGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yODItMjUyXFx0MzJcXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTAtNDA4XFx0MzJcXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0MTE6NDA5XFx0MzJcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3BhcmlzYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTItNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMDYtMjQwXFx0Y29tbW9uXFx0dGltZXJfY3JlYXRlXFx0XFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzA3OjI0MVxcdDMyXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozMDg6MjQxXFx0NjRcXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozMDk6MjQxXFx0c3B1XFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzEwLTI0MlxcdDMyXFx0dGltZXJfZ2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lMzJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwMi00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo1MDM6NDA5XFx0MzJcXHR0aW1lcl9zZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTA0LTQxMFxcdDMyXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyZmRfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEwLTI1NFxcdGNvbW1vblxcdHRpbWVyX2NyZWF0ZVxcdFxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDoyMTE6MjU1XFx0Y29tbW9uXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjEyLTI1NlxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTI2OS0yNTlcXHRjb21tb25cXHR0aW1lcl9jcmVhdGVcXHRcXHRcXHRzeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjI3MDoyNjBcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0yNzEtMjYxXFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lMzJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00MTUtNDA4XFx0Y29tbW9uXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDE2OjQwOVxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3NoL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQxNy00MTBcXHRjb21tb25cXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMTgtMjYxXFx0Y29tbW9uXFx0c2NoZWRfc2V0YWZmaW5pdHlcXHRzeXNfc2NoZWRfc2V0YWZmaW5pdHlcXHRcXHRjb21wYXRfc3lzX3NjaGVkX3NldGFmZmluaXR5XFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjMxOToyNjJcXHQzMlxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjMyMDoyNjJcXHQ2NFxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zMjEtMjYzXFx0MzJcXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWUzMlxcbi0tXFxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ1Ny00MDhcXHQzMlxcdHRpbWVyX2dldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDU4OjQwOVxcdDMyXFx0dGltZXJfc2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NTktNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTI3NC0yNTlcXHRpMzg2XFx0dGltZXJfY3JlYXRlXFx0XFx0c3lzX3RpbWVyX2NyZWF0ZVxcdFxcdGNvbXBhdF9zeXNfdGltZXJfY3JlYXRlXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDoyNzU6MjYwXFx0aTM4NlxcdHRpbWVyX3NldHRpbWVcXHRcXHRzeXNfdGltZXJfc2V0dGltZTMyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC0yNzYtMjYxXFx0aTM4NlxcdHRpbWVyX2dldHRpbWVcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxNy00MDhcXHRpMzg2XFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQxODo0MDlcXHRpMzg2XFx0dGltZXJfc2V0dGltZTY0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQxOS00MTBcXHRpMzg2XFx0dGltZXJmZF9nZXR0aW1lNjRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTIzNC0yMjJcXHQ2NFxcdHRpbWVyX2NyZWF0ZVxcdFxcdHN5c190aW1lcl9jcmVhdGVcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjIzNToyMjNcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0c3lzX3RpbWVyX3NldHRpbWVcXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTIzNi0yMjRcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lXFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjcwLTI0OVxcdGNvbW1vblxcdHRpbWVyX2RlbGV0ZVxcdFxcdFxcdHN5c190aW1lcl9kZWxldGVcXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjI3MToyNTBcXHRjb21tb25cXHR0aW1lcl9zZXR0aW1lXFx0XFx0XFx0c3lzX3RpbWVyX3NldHRpbWUzMlxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMjcyLTI1MVxcdGNvbW1vblxcdHRpbWVyX2dldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZTMyXFxuLS1cXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM4Mi00MDhcXHRjb21tb25cXHR0aW1lcl9nZXR0aW1lNjRcXHRcXHRcXHRzeXNfdGltZXJfZ2V0dGltZVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6MzgzOjQwOVxcdGNvbW1vblxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zODQtNDEwXFx0Y29tbW9uXFx0dGltZXJmZF9nZXR0aW1lNjRcXHRcXHRzeXNfdGltZXJmZF9nZXR0aW1lXFxuLS1cXG50b29scy9wb3dlci94ODYvdHVyYm9zdGF0L3R1cmJvc3RhdC5jPTY3Nzk9dm9pZCBtc3Jfc3VtX3JlY29yZCh2b2lkKVxcbi0tXFxudG9vbHMvcG93ZXIveDg2L3R1cmJvc3RhdC90dXJib3N0YXQuYy02ODEyLVxcbnRvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmM6NjgxMzpcXHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcXHUwMDI2aXRzLCBOVUxMKSA9PSAtMSkge1xcbnRvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvdHVyYm9zdGF0LmMtNjgxNC1cXHRcXHRmcHJpbnRmKG91dGYsIFxcXCJDYW4gbm90IHNldCB0aW1lci5cXFxcblxcXCIpO1xcbi0tXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0xMzktMTA5XFx0Y29tbW9uXFx0dGltZXJfZ2V0b3ZlcnJ1blxcdFxcdHN5c190aW1lcl9nZXRvdmVycnVuXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDoxNDA6MTEwXFx0dGltZTMyXFx0dGltZXJfc2V0dGltZVxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lMzJcXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjE0MToxMTBcXHQ2NFxcdHRpbWVyX3NldHRpbWVcXHRcXHRcXHRzeXNfdGltZXJfc2V0dGltZVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMTQyLTExMVxcdGNvbW1vblxcdHRpbWVyX2RlbGV0ZVxcdFxcdFxcdHN5c190aW1lcl9kZWxldGVcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtMzUyLTQwOFxcdDMyXFx0dGltZXJfZ2V0dGltZTY0XFx0XFx0XFx0c3lzX3RpbWVyX2dldHRpbWVcXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsOjM1Mzo0MDlcXHQzMlxcdHRpbWVyX3NldHRpbWU2NFxcdFxcdFxcdHN5c190aW1lcl9zZXR0aW1lXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibC0zNTQtNDEwXFx0MzJcXHR0aW1lcmZkX2dldHRpbWU2NFxcdFxcdHN5c190aW1lcmZkX2dldHRpbWVcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmM9MTk0PXN0YXRpYyB2b2lkIHdhdGNoZG9nX3RpbWVyX2Z1bmModW5pb24gc2lndmFsIHNpZ3ZhbClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjEyLVxcdFxcdGVudi53YXRjaGRvZ19zdGF0ZSA9IFdEX0tJTEw7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYzoyMTM6XFx0XFx0ZXJyID0gdGltZXJfc2V0dGltZShlbnYud2F0Y2hkb2csIDAsIFxcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jLTIxNC1cXHRcXHRpZiAoZXJyKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYz0yMjY9c3RhdGljIHZvaWQgd2F0Y2hkb2dfc3RhcnQodm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjM5LVxcdH1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jOjI0MDpcXHRlcnIgPSB0aW1lcl9zZXR0aW1lKGVudi53YXRjaGRvZywgMCwgXFx1MDAyNnRpbWVvdXQsIE5VTEwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90ZXN0X3Byb2dzLmMtMjQxLVxcdGlmIChlcnIpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jPTI0NT1zdGF0aWMgdm9pZCB3YXRjaGRvZ19zdG9wKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jLTI1MC1cXHRlbnYud2F0Y2hkb2dfc3RhdGUgPSBXRF9OT1RJRlk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Rlc3RfcHJvZ3MuYzoyNTE6XFx0ZXJyID0gdGltZXJfc2V0dGltZShlbnYud2F0Y2hkb2csIDAsIFxcdTAwMjZ0aW1lb3V0LCBOVUxMKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdGVzdF9wcm9ncy5jLTI1Mi1cXHRpZiAoZXJyKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbm9saWJjL25vbGliYy10ZXN0LmM9MTA5Mz1pbnQgdGVzdF90aW1lcih2b2lkKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbm9saWJjL25vbGliYy10ZXN0LmMtMTEwOC1cXHR9O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25vbGliYy9ub2xpYmMtdGVzdC5jOjExMDk6XFx0cmV0ID0gdGltZXJfc2V0dGltZSh0aW1lciwgMCwgXFx1MDAyNnRpbWVyc3BlYywgTlVMTCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbm9saWJjL25vbGliYy10ZXN0LmMtMTExMC1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZW5zL3RpbWVyLmM9MTg9c3RhdGljIGludCBydW5fdGVzdChpbnQgY2xvY2tpZCwgc3RydWN0IHRpbWVzcGVjIG5vdylcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVucy90aW1lci5jLTUxLVxcdFxcdFxcdGZsYWdzIHw9IFRJTUVSX0FCU1RJTUU7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZW5zL3RpbWVyLmM6NTI6XFx0XFx0aWYgKHRpbWVyX3NldHRpbWUoZmQsIGZsYWdzLCBcXHUwMDI2bmV3X3ZhbHVlLCBOVUxMKSA9PSAtMSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lbnMvdGltZXIuYy01My1cXHRcXHRcXHRyZXR1cm4gcHJfcGVycm9yKFxcXCJ0aW1lcmZkX3NldHRpbWVcXFwiKTtcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYz0xMDU9aW50IG1haW4odm9pZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9hbGFybXRpbWVyLXN1c3BlbmQuYy0xNDQtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2FsYXJtdGltZXItc3VzcGVuZC5jOjE0NTpcXHRcXHR0aW1lcl9zZXR0aW1lKHRtMSwgVElNRVJfQUJTVElNRSwgXFx1MDAyNml0czEsIFxcdTAwMjZpdHMyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvYWxhcm10aW1lci1zdXNwZW5kLmMtMTQ2LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2xlYXAtYS1kYXkuYz0xNzU9aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL2xlYXAtYS1kYXkuYy0zMDMtXFx0XFx0aXRzMS5pdF9pbnRlcnZhbC50dl9uc2VjID0gMDtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvbGVhcC1hLWRheS5jOjMwNDpcXHRcXHR0aW1lcl9zZXR0aW1lKHRtMSwgVElNRVJfQUJTVElNRSwgXFx1MDAyNml0czEsIE5VTEwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9sZWFwLWEtZGF5LmMtMzA1LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL25hbm9zbGVlcC5jPTEyND1zdGF0aWMgaW50IG5hbm9zbGVlcF90ZXN0X3JlbWFpbmluZyhpbnQgY2xvY2tpZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYy0xNDEtXFx0aXRpbWVyLml0X3ZhbHVlLnR2X25zZWMgPSBOU0VDX1BFUl9TRUMgLyA0O1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9uYW5vc2xlZXAuYzoxNDI6XFx0cmV0ID0gdGltZXJfc2V0dGltZSh0aW1lciwgMCwgXFx1MDAyNml0aW1lciwgTlVMTCk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL25hbm9zbGVlcC5jLTE0My1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jPTE0ND1zdGF0aWMgdm9pZCBjaGVja190aW1lcl9jcmVhdGUoaW50IHdoaWNoLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTE2My1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6MTY0OlxcdGlmICh0aW1lcl9zZXR0aW1lKGlkLCAwLCBcXHUwMDI2dmFsLCBOVUxMKSBcXHUwMDNjIDApXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjE2NTpcXHRcXHRmYXRhbF9lcnJvcihuYW1lLCBcXFwidGltZXJfc2V0dGltZSgpXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTE2Ni1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz0xODY9c3RhdGljIHZvaWQgKmN0ZF90aHJlYWRfZnVuYyh2b2lkICphcmcpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMjAxLVxcdFxcdGZhdGFsX2Vycm9yKE5VTEwsIFxcXCJ0aW1lcl9jcmVhdGUoKVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzoyMDI6XFx0aWYgKHRpbWVyX3NldHRpbWUoaWQsIDAsIFxcdTAwMjZ2YWwsIE5VTEwpKVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzoyMDM6XFx0XFx0ZmF0YWxfZXJyb3IoTlVMTCwgXFxcInRpbWVyX3NldHRpbWUoKVxcXCIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0yMDQtXFx0d2hpbGUgKGN0ZF9jb3VudCBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgIWN0ZF9mYWlsZWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM9MjY4PXN0YXRpYyB2b2lkIGNoZWNrX3NpZ19pZ24oaW50IHRocmVhZClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zMTMtXFx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAxMDAwMDAwMDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjMxNDpcXHR0aW1lcl9zZXR0aW1lKHRpbWVyaWQsIDAsIFxcdTAwMjZpdHMsIE5VTEwpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zMTUtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM9MzU0PXN0YXRpYyB2b2lkIGNoZWNrX3JlYXJtKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtMzg2LVxcdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozODc6XFx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXFx1MDAyNml0cywgTlVMTCkpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjM4ODpcXHRcXHRmYXRhbF9lcnJvcihOVUxMLCBcXFwidGltZXJfc2V0dGltZSgpXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTM4OS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy0zOTYtXFx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzozOTc6XFx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXFx1MDAyNml0cywgTlVMTCkpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjM5ODpcXHRcXHRmYXRhbF9lcnJvcihOVUxMLCBcXFwidGltZXJfc2V0dGltZSgpXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTM5OS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz00MTA9c3RhdGljIHZvaWQgY2hlY2tfZGVsZXRlKHZvaWQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNDQyLVxcdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzo0NDM6XFx0aWYgKHRpbWVyX3NldHRpbWUodGltZXJpZCwgMCwgXFx1MDAyNml0cywgTlVMTCkpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjQ0NDpcXHRcXHRmYXRhbF9lcnJvcihOVUxMLCBcXFwidGltZXJfc2V0dGltZSgpXFxcIik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jLTQ0NS1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYz00NTg9c3RhdGljIHZvaWQgY2hlY2tfc2lnZXZfbm9uZShpbnQgd2hpY2gsIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNDc1LVxcdGl0cy5pdF9pbnRlcnZhbC50dl9uc2VjID0gMTAwMDAwMDAwO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYzo0NzY6XFx0dGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcXHUwMDI2aXRzLCBOVUxMKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNDc3LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jPTQ5Nj1zdGF0aWMgdm9pZCBjaGVja19nZXR0aW1lKGludCB3aGljaCwgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy01MjItXFx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAxMDAwMDAwMDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjUyMzpcXHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcXHUwMDI2aXRzLCBOVUxMKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6NTI0OlxcdFxcdGZhdGFsX2Vycm9yKG5hbWUsIFxcXCJ0aW1lcl9zZXR0aW1lKClcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNTI1LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jPTU0OT1zdGF0aWMgdm9pZCBjaGVja19vdmVycnVuKGludCB3aGljaCwgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9wb3NpeF90aW1lcnMuYy01ODItXFx0aXRzLml0X2ludGVydmFsLnR2X25zZWMgPSAxMDAwMDAwMDA7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3Bvc2l4X3RpbWVycy5jOjU4MzpcXHRpZiAodGltZXJfc2V0dGltZSh0aW1lcmlkLCAwLCBcXHUwMDI2aXRzLCBOVUxMKSlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmM6NTg0OlxcdFxcdGZhdGFsX2Vycm9yKG5hbWUsIFxcXCJ0aW1lcl9zZXR0aW1lKClcXFwiKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvcG9zaXhfdGltZXJzLmMtNTg1LVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYz0xMTE9aW50IHNldHVwX3RpbWVyKGludCBjbG9ja19pZCwgaW50IGZsYWdzLCBpbnQgaW50ZXJ2YWwsIHRpbWVyX3QgKnRtMSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmMtMTUxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmM6MTUyOlxcdGVyciA9IHRpbWVyX3NldHRpbWUoKnRtMSwgZmxhZ3MsIFxcdTAwMjZpdHMxLCBcXHUwMDI2aXRzMik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGltZXJzL3NldC10aW1lci1sYXQuYy0xNTMtXFx0aWYgKGVycikge1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmM6MTU0OlxcdFxcdHByaW50ZihcXFwiJXMgLSB0aW1lcl9zZXR0aW1lKCkgZmFpbGVkXFxcXG5cXFwiLCBjbG9ja3N0cmluZyhjbG9ja19pZCkpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RpbWVycy9zZXQtdGltZXItbGF0LmMtMTU1LVxcdFxcdHJldHVybiAtMTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MjEuNzA0MjExMTM0WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTc3OTg5OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCdWcncyBDb250ZXh0KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB3cmFwIG15IGhlYWQgYXJvdW5kIHRoaXMgYnVnLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYHN5c190aW1lcl9zZXR0aW1lYCBsb29rZWQgbGlrZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGEgcG90ZW50aWFsIGZvY3VzIHN5bWJvbCwgYnV0IHRoZW4gSSByZW1lbWJlcmVkIFN5emthbGxlciBpcyBhbHJlYWR5IGhpdHRpbmcgc3lzY2FsbHMuIFNvLCBzY3JhdGNoIHRoYXQuIEJ1dCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBkZV90aHJlYWRgLCB3aGljaCBpcywgaW4gdHVybiwgY2FsbGVkIGZyb20gYGJlZ2luX25ld19leGVjYC4gQW5kLCB0aGUgYnVnIGlzIGFib3V0IFBPU0lYIENQVSB0aW1lcnMgYW5kIGBleGVjdmVgLiBBaGEhIGBiZWdpbl9uZXdfZXhlY2AgaXMgbG9va2luZyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBob25lIGluIG9uLlxuXG5XYWl0IGEgc2Vjb25kLCBgYmVnaW5fbmV3X2V4ZWNgIGFjdHVhbGx5IGNhbGxzIGludG8gYGV4ZWNfYmlucHJtYCB3aGljaCBpbiB0dXJuIGNhbGxzIGludG8gYGJwcm1fZXhlY3ZlYC4gSXMgYGJlZ2luX25ld19leGVjYCAqc3RpbGwqIGEgZ29vZCBmb2N1cz8gWWVzLCBpdCBpcywgYmVjYXVzZSBpdCdzIHRoZSBoZWFydCBvZiBgZXhlY3ZlYCwgdGhlIHRyYW5zaXRpb24uIEFuZCBub3csIEkgdGhpbmsgYHBvc2l4X2NwdV90aW1lcnNfZXhpdGAgaXMgYW5vdGhlciBjcnVjaWFsIHNwb3QuIEl0J3MgY2FsbGVkIGluc2lkZSBgZGVfdGhyZWFkYCwgYWZ0ZXIgYWxsLiBBcmUgdGhlcmUgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIEknbSBtaXNzaW5nPyBUaGVyZSBhcmUgdHdvLCBgZXhjaGFuZ2VfdGlkc2AgYW5kIGB0aW1lcl9sb2NrX3NpZ2hhbmRgLCBidXQgdGhleSBhcmUgc3RhdGljLCBzbyBtYXliZSBub3QuXG5cbkkgc2hvdWxkIGNoZWNrIHRoZSBgQ09ORklHX1BPU0lYX1RJTUVSU2Agb3B0aW9uLCB0byBjb25maXJtIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhY3RpdmUuIExldCdzIHNlZSBpZiBpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIEknbGwgbG9vayB0aGF0IHVwIGluIGBpbml0L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQ1MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NToyNy42MDIwMTM1ODlaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImluaXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzYwOlxcdFxcbjE3NjE6XFx0Y29uZmlnIFBPU0lYX1RJTUVSU1xcbjE3NjI6XFx0XFx0Ym9vbCBcXFwiUG9zaXggQ2xvY2tzIFxcdTAwMjYgdGltZXJzXFxcIiBpZiBFWFBFUlRcXG4xNzYzOlxcdFxcdGRlZmF1bHQgeVxcbjE3NjQ6XFx0XFx0aGVscFxcbjE3NjU6XFx0XFx0ICBUaGlzIGluY2x1ZGVzIG5hdGl2ZSBzdXBwb3J0IGZvciBQT1NJWCB0aW1lcnMgdG8gdGhlIGtlcm5lbC5cXG4xNzY2OlxcdFxcdCAgU29tZSBlbWJlZGRlZCBzeXN0ZW1zIGhhdmUgbm8gdXNlIGZvciB0aGVtIGFuZCB0aGVyZWZvcmUgdGhleVxcbjE3Njc6XFx0XFx0ICBjYW4gYmUgY29uZmlndXJlZCBvdXQgdG8gcmVkdWNlIHRoZSBzaXplIG9mIHRoZSBrZXJuZWwgaW1hZ2UuXFxuMTc2ODpcXHRcXG4xNzY5OlxcdFxcdCAgV2hlbiB0aGlzIG9wdGlvbiBpcyBkaXNhYmxlZCwgdGhlIGZvbGxvd2luZyBzeXNjYWxscyB3b24ndCBiZVxcbjE3NzA6XFx0XFx0ICBhdmFpbGFibGU6IHRpbWVyX2NyZWF0ZSwgdGltZXJfZ2V0dGltZTogdGltZXJfZ2V0b3ZlcnJ1bixcXG4xNzcxOlxcdFxcdCAgdGltZXJfc2V0dGltZSwgdGltZXJfZGVsZXRlLCBjbG9ja19hZGp0aW1lLCBnZXRpdGltZXIsXFxuMTc3MjpcXHRcXHQgIHNldGl0aW1lciwgYWxhcm0uIEZ1cnRoZXJtb3JlLCB0aGUgY2xvY2tfc2V0dGltZSwgY2xvY2tfZ2V0dGltZSxcXG4xNzczOlxcdFxcdCAgY2xvY2tfZ2V0cmVzIGFuZCBjbG9ja19uYW5vc2xlZXAgc3lzY2FsbHMgd2lsbCBiZSBsaW1pdGVkIHRvXFxuMTc3NDpcXHRcXHQgIENMT0NLX1JFQUxUSU1FLCBDTE9DS19NT05PVE9OSUMgYW5kIENMT0NLX0JPT1RUSU1FIG9ubHkuXFxuMTc3NTpcXHRcXG4xNzc2OlxcdFxcdCAgSWYgdW5zdXJlIHNheSB5LlxcbjE3Nzc6XFx0XFxuMTc3ODpcXHRjb25maWcgUFJJTlRLXFxuMTc3OTpcXHRcXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMDI6NTU6MjcuNjAyMTM3MTM5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MjA1MzI0MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBPU0lYIFRpbWVycyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBgQ09ORklHX1BPU0lYX1RJTUVSU2Agb3B0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGl0J3MgaW1wb3J0YW50IGVub3VnaCB0aGF0IHdlIG5lZWQgdG8gZXhwbGljaXRseSBpbmNsdWRlIGl0IGluIGBFbmFibGVDb25maWdzYC4gTGV0J3MgZ2V0IHRoaXMgb3JnYW5pemVkOlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogQWJzb2x1dGVseSwgdGhpcyBwYXRjaCBpcyBhIGdvb2QgY2FuZGlkYXRlLlxuKiAgICoqRm9jdXNTeW1ib2xzOioqIGBiZWdpbl9uZXdfZXhlY2AgYW5kIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgLlxuKiAgICoqRW5hYmxlQ29uZmlnczoqKiBKdXN0IGBQT1NJWF9USU1FUlNgLiBOb3RoaW5nIGVsc2UgaXMgbmVlZGVkLlxuXG5UaGUgY29yZSBvZiBpdCBpcyB0aGlzOiBUaGUgcGF0Y2ggY29ycmVjdHMgYSBmbGF3IGluIGBkZV90aHJlYWRgLiAgU3BlY2lmaWNhbGx5LCBQT1NJWCBDUFUgdGltZXJzIHdlcmUgZ2V0dGluZyBtaXNzZWQgZHVyaW5nIHRoZSBQSUQgaGFuZG9mZiB3aXRoaW4gYGV4Y2hhbmdlX3RpZHMoKWAgd2hpY2ggd291bGQgbGVhZCB0byBhIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggc2ltcGx5IGFkZHMgYSBjYWxsIHRvIGBwb3NpeF9jcHVfdGltZXJzX2V4aXQodHNrKWAgd2l0aGluIGBkZV90aHJlYWQoKWAuIFRoaXMgaXMgaGFwcGVuaW5nIGR1cmluZyB0aGUgYGV4ZWN2ZWAgcGF0aCwgd2hpY2ggaXMgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBiZWNhdXNlIGFueSBpc3N1ZSBpbiB0aGUgYGV4ZWN2ZWAgcGF0aCBoYXMgd2lkZXNwcmVhZCBpbXBhY3QuXG5cbkkgbmVlZGVkIHRvIG1ha2Ugc3VyZSB0aGF0IGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIHdhcyBhY3R1YWxseSBleHBvcnRlZCwgYW5kIGl0IGlzLCBpdCdzIGdsb2JhbCB3aXRoaW4gYGtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuY2AuIFNpbWlsYXJseSwgYGJlZ2luX25ld19leGVjYCBpcyBnbG9iYWwgaW4gYGZzL2V4ZWMuY2AuXG5cbkkgZG91YmxlIGNoZWNrZWQgdGhhdCBgUE9TSVhfVElNRVJTYCB3YXMgdGhlIG9ubHkgcmVxdWlyZWQgY29uZmlnIOKAkyBjb25maXJtZWQgaXQncyB1c2VkIGluIGFuIGAjaWZkZWZgIGFuZCBub3RoaW5nIGVsc2UgaXMgbmVlZGVkLiBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzM5MCwiT3V0cHV0VG9rZW5zIjoxNTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NTozMy41MjI2NzI2ODNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2OTMwNTE3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUE9TSVhfVElNRVJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmVnaW5fbmV3X2V4ZWNcIixcbiAgICBcInBvc2l4X2NwdV90aW1lcnNfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBkZV90aHJlYWRgIHdoZXJlIFBPU0lYIENQVSB0aW1lcnMgYXJlIG5vdCBwcm9wZXJseSBkZXF1ZXVlZCBiZWZvcmUgYGV4Y2hhbmdlX3RpZHMoKWAgaGFuZHMgdGhlIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggY2FuIGNhdXNlIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggYWRkcyBhIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBpbiBgZGVfdGhyZWFkKClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsIChleGVjdmUgcGF0aCkgYW5kIGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUE9TSVhfVElNRVJTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYmVnaW5fbmV3X2V4ZWNcIixcbiAgICBcInBvc2l4X2NwdV90aW1lcnNfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBkZV90aHJlYWRgIHdoZXJlIFBPU0lYIENQVSB0aW1lcnMgYXJlIG5vdCBwcm9wZXJseSBkZXF1ZXVlZCBiZWZvcmUgYGV4Y2hhbmdlX3RpZHMoKWAgaGFuZHMgdGhlIHRocmVhZCdzIFBJRCB0byB0aGUgb2xkIGxlYWRlciwgd2hpY2ggY2FuIGNhdXNlIGEgUElEIGxvb2t1cCBmYWlsdXJlIGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAuIFRoZSBmaXggYWRkcyBhIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYCBpbiBgZGVfdGhyZWFkKClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUga2VybmVsIChleGVjdmUgcGF0aCkgYW5kIGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU1OjMzLjU5MTk4NDY4OFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxODExMTc2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDAyOjU1OjMzLjU5MjQ0NDY5OFoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2NTE3NjQ4NTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgZHVyaW5nIHRocmVhZCBncm91cCBsZWFkZXJzaGlwIGNoYW5nZXMgKGRlX3RocmVhZCkuIEl0IGRlcXVldWVzIHRoZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYmVmb3JlIHRoZSB0aHJlYWQncyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLiBUaGlzIHByZXZlbnRzIGlzc3VlcyB3aGVyZSB0aGUgdGltZXIgc3Vic3lzdGVtIG1pZ2h0IGZhaWwgdG8gbG9vayB1cCB0aGUgUElEIG9yIGFjY2VzcyBmcmVlZC9pbnZhbGlkIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIGludm9sdmUgbG9ja2luZyBhbmQgdGltZXIgbWFuYWdlbWVudCwgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvZ2ljIGJ1Z3MuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDc3N2VjMGJkYWMzNmE0NDUxMmEwMGM2NGZmNDkxYTZkOWZhOWMzNDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDAyOjU0OjE0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXhlYy5jIGIvZnMvZXhlYy5jXG5pbmRleCBjN2I4ZjJkNjM2NmM0Li5mODBmNzBlMWMyNmRlIDEwMDY0NFxuLS0tIGEvZnMvZXhlYy5jXG4rKysgYi9mcy9leGVjLmNcbkBAIC0xMDAwLDYgKzEwMDAsMTggQEAgc3RhdGljIGludCBkZV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spXG4gXHRcdCAqIHRoZSBmb3JtZXIgdGhyZWFkIGdyb3VwIGxlYWRlcjpcbiBcdFx0ICovXG4gXG4rI2lmZGVmIENPTkZJR19QT1NJWF9USU1FUlNcbitcdFx0LypcbitcdFx0ICogZXhjaGFuZ2VfdGlkcygpIGhhbmRzIHRoaXMgdGhyZWFkJ3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLFxuK1x0XHQgKiB3aGljaCBpcyByZWFwZWQgcmlnaHQgYWZ0ZXIuIFRoZSBQSUQgbG9va3VwIGluXG4rXHRcdCAqIHRpbWVyX2xvY2tfc2lnaGFuZCgpIHRoZW4gZmFpbHMgd2hpbGUgdGhlIHBlciB0aHJlYWQgQ1BVXG4rXHRcdCAqIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkIGhlcmUsIHNvIGRlcXVldWUgdGhlbSBmaXJzdC5cbitcdFx0ICovXG4rXHRcdHNwaW5fbG9jayhsb2NrKTtcbitcdFx0cG9zaXhfY3B1X3RpbWVyc19leGl0KHRzayk7XG4rXHRcdHNwaW5fdW5sb2NrKGxvY2spO1xuKyNlbmRpZlxuK1xuIFx0XHQvKiBCZWNvbWUgYSBwcm9jZXNzIGdyb3VwIGxlYWRlciB3aXRoIHRoZSBvbGQgbGVhZGVyJ3MgcGlkLlxuIFx0XHQgKiBUaGUgb2xkIGxlYWRlciBiZWNvbWVzIGEgdGhyZWFkIG9mIHRoZSB0aGlzIHRocmVhZCBncm91cC5cbiBcdFx0ICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NTozMy41OTI0NDU3MThaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUxNzYzMDk0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBPU0lYIFRpbWVyIEZpeCBpbiBgZnMvZXhlYy5jYCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZzL2V4ZWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRlX3RocmVhZGAgZnVuY3Rpb24sIGFuZCBpdCdzIGNvbmRpdGlvbmFsIG9uIGBDT05GSUdfUE9TSVhfVElNRVJTYCBiZWluZyBlbmFibGVkLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQncyBkZWFsaW5nIHdpdGggUE9TSVggdGltZXJzLCB3aGljaCBpcyBhIGtleSBpbmRpY2F0b3Igb2Ygd2hlcmUgdGhpcyBwYXRjaCdzIGZvY3VzIGxpZXMuXG5cblRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgc3BpbmxvY2stcHJvdGVjdGVkIGNhbGwgdG8gYHBvc2l4X2NwdV90aW1lcnNfZXhpdCh0c2spYC4gVGhlIGNvbW1lbnQgaXMgdGhlIGNydWNpYWwgcGllY2UgaGVyZTogaXQgaGlnaGxpZ2h0cyB0aGUgcHJvYmxlbSBiZWluZyBhZGRyZXNzZWQuIEl0IHNlZW1zIGBleGNoYW5nZV90aWRzKClgIGlzIHRyYW5zZmVycmluZyB0aGUgdGhyZWFkJ3MgUElEIHRvIHRoZSBvbGQgbGVhZGVyLCB3aGljaCBpcyBzdWJzZXF1ZW50bHkgcmVhcGVkLiBUaGUgY3JpdGljYWwgdGltaW5nIGlzc3VlIGlzIHRoYXQgdGhlIFBJRCBsb29rdXAgd2l0aGluIGB0aW1lcl9sb2NrX3NpZ2hhbmQoKWAgZmFpbHMgKndoaWxlKiB0aGUgdGhyZWFkJ3MgQ1BVIHRpbWVycyBhcmUgc3RpbGwgcXVldWVkLCBtZWFuaW5nIHRoZXJlJ3MgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBhIHRpbWVyIG1pZ2h0IGZpcmUgYWZ0ZXIgdGhlIHRocmVhZCdzIGRhdGEgaXMgYWxyZWFkeSBmcmVlZC4gVGhhdCBwb2ludHMgdG8gdGhpcyBiZWluZyByZWxhdGVkIHRvIGEgbGlrZWx5IHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLCBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSwgYSBsb2NraW5nIGlzc3VlIHJlbGF0ZWQgdG8gdGltaW5nLCBvciBhIHRpbWVyIGZpcmluZyBhZnRlciB0aGUgdGhyZWFkIGhhcyBleGl0ZWQuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB0aHJlYWQgcmVhcGluZyBhbmQgdGltZXIgZXhlY3V0aW9uLCBhbmQgdGhlIHBhdGNoIGlzIGF0dGVtcHRpbmcgdG8gZW5zdXJlIHRoYXQgdGhlIHRpbWVycyBhcmUgZGVxdWV1ZWQgYmVmb3JlIHRoZSB0aHJlYWQncyBQSUQgaXMgcmVhc3NpZ25lZCBhbmQgaXRzIHJlc291cmNlcyBjYW4gYmUgZnJlZWQuIFRoZSBsaWtlbHkgc2NlbmFyaW8gaXMgdGhlIHRpbWVyIHRyaWVzIHRvIGRlcmVmZXJlbmNlIG1lbW9yeSBhZnRlciB0aGUgdGhyZWFkIGhhcyBleGl0ZWQsIGxpa2VseSBjYXVzaW5nIGEga2VybmVsIHBhbmljIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG5cbkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeCwgSSBjYW4gY29uZmlkZW50bHkgc2F5IHRoYXQgdGhpcyBwYXRjaCBpcyBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHdoaWNoIGlzIGdvb2QuIEtBU0FOLCBLQ1NBTiwgb3IgbG9ja2RlcCB3b3VsZCBoYXZlIHByb2JhYmx5IGNhdWdodCBhbnkgcHJvYmxlbXMsIG9yIGl0IGNvdWxkIGJlIGEgbG9naWMgYnVnIGFuZCBhIHRvb2wgd2Fzbid0IG5lZWRlZCB0byBmaXggaXQuIFdlIGRvbid0IHNlZSBhbnkgbmV3IG1lbW9yeSBiZWluZyBleHBvc2VkLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIGBwb3NpeF9jcHVfdGltZXJzX2V4aXRgIHRvIHZlcmlmeSBpdCdzIGp1c3QgZGVxdWV1aW5nIHRpbWVycy4gSXQgZG9lc24ndCBpbnRyb2R1Y2Ugb3IgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuU28sIEkgd2lsbCBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGJlY2F1c2UgaXQgYXBwZWFycyB0byBiZSBhIGxvZ2ljIGJ1ZyB3aXRoIHRpbWluZyBhbmQgbG9ja2luZywgbm90IGEgbWVtb3J5IHNhZmV0eSBpc3N1ZSB0aGF0IEtNU0FOIHdvdWxkIHRhcmdldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1MiwiT3V0cHV0VG9rZW5zIjoxNjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQwMjo1NTo0MC4xMTAwNzg5MVoiLCJTZXEiOjM0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyOTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgcmVsYXRlZCB0byBQT1NJWCBDUFUgdGltZXJzIGR1cmluZyB0aHJlYWQgZ3JvdXAgbGVhZGVyc2hpcCBjaGFuZ2VzIChkZV90aHJlYWQpLiBJdCBkZXF1ZXVlcyB0aGUgcGVyLXRocmVhZCBDUFUgdGltZXJzIGJlZm9yZSB0aGUgdGhyZWFkJ3MgUElEIGlzIGhhbmRlZCB0byB0aGUgb2xkIGxlYWRlci4gVGhpcyBwcmV2ZW50cyBpc3N1ZXMgd2hlcmUgdGhlIHRpbWVyIHN1YnN5c3RlbSBtaWdodCBmYWlsIHRvIGxvb2sgdXAgdGhlIFBJRCBvciBhY2Nlc3MgZnJlZWQvaW52YWxpZCBzdHJ1Y3R1cmVzLiBUaGUgY2hhbmdlcyBpbnZvbHZlIGxvY2tpbmcgYW5kIHRpbWVyIG1hbmFnZW1lbnQsIHdoaWNoIGFyZSByZWxhdGVkIHRvIHVzZS1hZnRlci1mcmVlLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBsb2dpYyBidWdzLiBUaGVzZSB0eXBlcyBvZiBidWdzIGFyZSBjYXVnaHQgYnkgS0FTQU4gb3Igc3RhbmRhcmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSwgc28gS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIFBPU0lYIENQVSB0aW1lcnMgZHVyaW5nIHRocmVhZCBncm91cCBsZWFkZXJzaGlwIGNoYW5nZXMgKGRlX3RocmVhZCkuIEl0IGRlcXVldWVzIHRoZSBwZXItdGhyZWFkIENQVSB0aW1lcnMgYmVmb3JlIHRoZSB0aHJlYWQncyBQSUQgaXMgaGFuZGVkIHRvIHRoZSBvbGQgbGVhZGVyLiBUaGlzIHByZXZlbnRzIGlzc3VlcyB3aGVyZSB0aGUgdGltZXIgc3Vic3lzdGVtIG1pZ2h0IGZhaWwgdG8gbG9vayB1cCB0aGUgUElEIG9yIGFjY2VzcyBmcmVlZC9pbnZhbGlkIHN0cnVjdHVyZXMuIFRoZSBjaGFuZ2VzIGludm9sdmUgbG9ja2luZyBhbmQgdGltZXIgbWFuYWdlbWVudCwgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdXNlLWFmdGVyLWZyZWUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvZ2ljIGJ1Z3MuIFRoZXNlIHR5cGVzIG9mIGJ1Z3MgYXJlIGNhdWdodCBieSBLQVNBTiBvciBzdGFuZGFyZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[1] Phase: Succeeded StartedAt: 2026-08-09 02:55:51 +0000 UTC FinishedAt: 2026-08-09 02:55:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-09 02:55:51 +0000 UTC FinishedAt: 2026-08-09 02:55:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2] Phase: Succeeded StartedAt: 2026-08-09 02:55:51 +0000 UTC FinishedAt: 2026-08-09 06:36:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-09 02:55:51 +0000 UTC FinishedAt: 2026-08-09 06:36:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-09 02:55:51 +0000 UTC FinishedAt: 2026-08-09 02:56:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-09 02:55:51 +0000 UTC FinishedAt: 2026-08-09 02:55:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},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-workflowxbpmr/series-workflowxbpmr-convert-artifact-3899567681/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-09 02:56:01 +0000 UTC FinishedAt: 2026-08-09 03:12:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-09 02:56:01 +0000 UTC FinishedAt: 2026-08-09 03:12:26 +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:*ecd07049-74a8-4e6d-8fda-a1e42854e5f5,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-workflowxbpmr/series-workflowxbpmr-convert-artifact-3899567681/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": "89b01d79-8d59-40eb-8ca3-7a79fa4ea7c1", "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-workflowxbpmr/series-workflowxbpmr-build-action-2726024303/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-09 02:56:01 +0000 UTC FinishedAt: 2026-08-09 03:12:16 +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:*ecd07049-74a8-4e6d-8fda-a1e42854e5f5,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-workflowxbpmr/series-workflowxbpmr-convert-artifact-3899567681/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": "89b01d79-8d59-40eb-8ca3-7a79fa4ea7c1", "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-workflowxbpmr/series-workflowxbpmr-build-action-2726024303/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-09 03:12:26 +0000 UTC FinishedAt: 2026-08-09 03:12:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-09 03:12:26 +0000 UTC FinishedAt: 2026-08-09 03:12:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-09 03:12:26 +0000 UTC FinishedAt: 2026-08-09 03:12:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-09 03:12:26 +0000 UTC FinishedAt: 2026-08-09 03:12:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},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-workflowxbpmr/series-workflowxbpmr-convert-artifact-3445469716/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-09 03:12:36 +0000 UTC FinishedAt: 2026-08-09 03:14:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-09 03:12:36 +0000 UTC FinishedAt: 2026-08-09 03:14:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*89b01d79-8d59-40eb-8ca3-7a79fa4ea7c1,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-workflowxbpmr/series-workflowxbpmr-build-action-2726024303/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-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-09 03:14:35 +0000 UTC FinishedAt: 2026-08-09 03:14:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-09 03:14:35 +0000 UTC FinishedAt: 2026-08-09 03:14:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-09 03:14:35 +0000 UTC FinishedAt: 2026-08-09 03:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-09 03:14:35 +0000 UTC FinishedAt: 2026-08-09 03:31:03 +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:*ecd07049-74a8-4e6d-8fda-a1e42854e5f5,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-workflowxbpmr/series-workflowxbpmr-convert-artifact-3445469716/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": "c8cfb9d3-be5c-4296-9848-78ad33e106d4", "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-workflowxbpmr/series-workflowxbpmr-build-action-1118182112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-09 03:14:35 +0000 UTC FinishedAt: 2026-08-09 03:30:53 +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:*ecd07049-74a8-4e6d-8fda-a1e42854e5f5,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-workflowxbpmr/series-workflowxbpmr-convert-artifact-3445469716/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": "c8cfb9d3-be5c-4296-9848-78ad33e106d4", "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-workflowxbpmr/series-workflowxbpmr-build-action-1118182112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-09 03:31:03 +0000 UTC FinishedAt: 2026-08-09 03:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-09 03:31:03 +0000 UTC FinishedAt: 2026-08-09 03:31:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-09 03:31:03 +0000 UTC FinishedAt: 2026-08-09 03:33:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-09 03:31:03 +0000 UTC FinishedAt: 2026-08-09 03:33:24 +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:*c8cfb9d3-be5c-4296-9848-78ad33e106d4,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-workflowxbpmr/series-workflowxbpmr-build-action-1118182112/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-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-09 03:33:34 +0000 UTC FinishedAt: 2026-08-09 06:36:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-09 03:33:34 +0000 UTC FinishedAt: 2026-08-09 06:36:24 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},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:*89b01d79-8d59-40eb-8ca3-7a79fa4ea7c1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c8cfb9d3-be5c-4296-9848-78ad33e106d4,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-workflowxbpmr/series-workflowxbpmr-build-action-2726024303/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-workflowxbpmr/series-workflowxbpmr-build-action-1118182112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-09 03:33:34 +0000 UTC FinishedAt: 2026-08-09 03:33:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-09 03:33:34 +0000 UTC FinishedAt: 2026-08-09 03:33:39 +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","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},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-workflowxbpmr/series-workflowxbpmr-convert-artifact-31829053/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-09 03:33:34 +0000 UTC FinishedAt: 2026-08-09 03:33:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-09 03:33:34 +0000 UTC FinishedAt: 2026-08-09 03:33:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-09 03:33:34 +0000 UTC FinishedAt: 2026-08-09 03:33:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-09 03:33:44 +0000 UTC FinishedAt: 2026-08-09 06:36:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxbpmr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["begin_new_exec","posix_cpu_timers_exit"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"e0ffd277b09a7c9f1a436e5f75be37ac490bc59f","config_name":"upstream-apparmor-kasan.config","enable_configs":["POSIX_TIMERS"],"series_id":"b65bb201-b16f-47ed-ab44-c55a41a83d80","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-09 03:33:44 +0000 UTC FinishedAt: 2026-08-09 06:36:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*89b01d79-8d59-40eb-8ca3-7a79fa4ea7c1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c8cfb9d3-be5c-4296-9848-78ad33e106d4,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-workflowxbpmr/series-workflowxbpmr-build-action-2726024303/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-workflowxbpmr/series-workflowxbpmr-build-action-1118182112/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-workflowxbpmr/series-workflowxbpmr-convert-artifact-31829053/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,}