Name: series-workflowrqp8l Phase: Succeeded StartedAt: 2026-07-15 17:04:45 +0000 UTC FinishedAt: 2026-07-15 21:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[0] Phase: Succeeded StartedAt: 2026-07-15 17:04:45 +0000 UTC FinishedAt: 2026-07-15 17:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[0].run-triage Phase: Succeeded StartedAt: 2026-07-15 17:04:45 +0000 UTC FinishedAt: 2026-07-15 17:31:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "babe08404e1993697a523e60bc0f9d096ffe1ef8", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "babe08404e1993697a523e60bc0f9d096ffe1ef8", "config_name": "upstream-apparmor-kasan.config", "series_id": "285c60dc-0c66-4f6f-a014-0d62fcfba550" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "__apic_accept_irq", "kvm_apic_set_irq", "kvm_apic_local_deliver" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19hcGljX2FjY2VwdF9pcnEmIzM0OywKICAgICYjMzQ7a3ZtX2FwaWNfc2V0X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fYXBpY19sb2NhbF9kZWxpdmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgcHJpbnRrIHdpdGggYSBXQVJOX09OX09OQ0UuIFdoaWxlIHRoaXMgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSBjb3JlIGxvZ2ljLCBpdCBpbnRyb2R1Y2VzIGEgbmV3IGJ1ZyBhc3NlcnRpb24gKGEgd2FybmluZykgdGhhdCBzeXprYWxsZXIgY2FuIGRldGVjdCBhcyBhIGNyYXNoLiBGdXp6aW5nIHRoaXMgY2hhbmdlIGlzIHZhbHVhYmxlIHRvIHZlcmlmeSBpZiB0aGUgJiMzOTt1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlJiMzOTsgY29uZGl0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIGd1ZXN0IHNwYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjNmYmM4NzQ2ZjljZTUzNTc2MTU2NjJjNWQ1MWU2YzE5ODcwYTJkNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDE3OjMwOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcbmluZGV4IDQwNzhlNjI0Y2E2Njc1Li5jNzc1Nzg5ZGJkYjNjMiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xuQEAgLTE0ODUsOCAmIzQzOzE0ODUsNyBAQCBzdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxuIFx0XHRicmVhaztcbiBcbiBcdGRlZmF1bHQ6XG4tXHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtUT0RPOiB1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlICV4XFxuXCYjMzQ7LFxuLVx0XHQgICAgICAgZGVsaXZlcnlfbW9kZSk7XG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoMSk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0cmV0dXJuIHJlc3VsdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNzozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fYXBpY19hY2NlcHRfaXJxJiMzNDssCiAgICAmIzM0O2t2bV9hcGljX3NldF9pcnEmIzM0OywKICAgICYjMzQ7a3ZtX2FwaWNfbG9jYWxfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIHByaW50ayB3aXRoIGEgV0FSTl9PTl9PTkNFLiBXaGlsZSB0aGlzIGRvZXNuJiMzOTt0IGNoYW5nZSB0aGUgY29yZSBsb2dpYywgaXQgaW50cm9kdWNlcyBhIG5ldyBidWcgYXNzZXJ0aW9uIChhIHdhcm5pbmcpIHRoYXQgc3l6a2FsbGVyIGNhbiBkZXRlY3QgYXMgYSBjcmFzaC4gRnV6emluZyB0aGlzIGNoYW5nZSBpcyB2YWx1YWJsZSB0byB2ZXJpZnkgaWYgdGhlICYjMzk7dW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZSYjMzk7IGNvbmRpdGlvbiBpcyByZWFjaGFibGUgZnJvbSBndWVzdCBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjNmYmM4NzQ2ZjljZTUzNTc2MTU2NjJjNWQ1MWU2YzE5ODcwYTJkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDE3OjMwOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2xhcGljLmMgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuYwppbmRleCA0MDc4ZTYyNGNhNjY3NS4uYzc3NTc4OWRiZGIzYzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9sYXBpYy5jCkBAIC0xNDg1LDggJiM0MzsxNDg1LDcgQEAgc3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSwKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgotCQlwcmludGsoS0VSTl9FUlIgJiMzNDtUT0RPOiB1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlICV4XG4mIzM0OywKLQkJICAgICAgIGRlbGl2ZXJ5X21vZGUpOwomIzQzOwkJV0FSTl9PTl9PTkNFKDEpOwogCQlicmVhazsKIAl9CiAJcmV0dXJuIHJlc3VsdDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzOAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0veDg2IFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGNoYW5nZXMgYGFyY2gveDg2L2t2bS9sYXBpYy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgX19hcGljX2FjY2VwdF9pcnFgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgbG9nZ2luZyBjaGFuZ2UuIEl0IHN3YXBzIGEgYHByaW50ayhLRVJOX0VSUiAuLi4pYCBmb3IgYSBgV0FSTl9PTl9PTkNFKDEpYCB3aXRoaW4gdGhlIGBkZWZhdWx0YCBjYXNlIG9mIHRoZSBgZGVsaXZlcnlfbW9kZWAgc3dpdGNoLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2xhc3NpZnkgdGhpcyBhcyBhICYjMzQ7ZGVjb3JhdGl2ZSBjaGFuZ2UmIzM0OyDigJMganVzdCBhbHRlcmluZyB0aGUgbG9nZ2luZyBvdXRwdXQuIEJ1dCB3YWl0Li4uCgpUaGUgcHJvbXB0IHNwZWNpZmllcyBleGNlcHRpb25zOiBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGBwcmludGtgLCBjb25zdGFudHMgd2l0aG91dCBmdW5jdGlvbmFsIGltcGFjdCwgYW5kIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJcyBgV0FSTl9PTl9PTkNFYCBwdXJlbHkgZGVjb3JhdGl2ZT8gTm90IGlmIHlvdSYjMzk7cmUgdGhpbmtpbmcgYWJvdXQgZnV6emluZyEgVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLgoKYHByaW50a2AganVzdCBsb2dzOyBpdOKAmXMgYSBwYXNzaXZlIG9ic2VydmF0aW9uLiBIb3dldmVyLCBgV0FSTl9PTl9PTkNFYCBpcyBhIGNydWNpYWwgZGlmZmVyZW5jZS4gSW4gYSBmdXp6ZXImIzM5O3Mgd29ybGQsIHRoYXQgd2FybmluZyBpcyBhIHBvdGVudGlhbCBidWcgcmVwb3J0LCBlc3BlY2lhbGx5IGlmIGBwYW5pY19vbl93YXJuYCBpcyBlbmFibGVkLiBJdCBtZWFucyBpZiB0aGF0ICYjMzQ7ZGVmYXVsdCYjMzQ7IGNhc2UgaXMgaGl0LCBpbnN0ZWFkIG9mIGEgc2lsZW50IGVycm9yLCBvciBqdXN0IGEgbG9nZ2VkIGVycm9yLCBzeXprYWxsZXIgd2lsbCAqbm93KiByZXBvcnQgYSBidWcuIFRoaXMgaXMgYSBzaWduaWZpY2FudCB0cmFuc2Zvcm1hdGlvbiEgSXTigJlzIG5vIGxvbmdlciBqdXN0IGxvZ2dpbmc7IGl0JiMzOTtzIHRyYW5zaXRpb25pbmcgYSBzaWxlbnQgb3IgbG9nZ2VkIGVycm9yIGludG8gYSBmdXp6ZXItZGV0ZWN0YWJsZSBldmVudC4gVGhpcyBwYXRjaCBoYXMgYmVjb21lIG11Y2ggbW9yZSByZWxldmFudCB0byBmdXp6aW5nIHRoYW4gaXQgZmlyc3QgYXBwZWFyZWQuIE5vdyBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBfX2FwaWNfYWNjZXB0X2lycWAgdG8gY29uZmlybSB0aGUgY29udGV4dCBhbmQgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYXBpY19hY2NlcHRfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmM9ODE2PWludCBrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MTcte1xuYXJjaC94ODYva3ZtL2xhcGljLmM6ODE4Olx0LyogVGhpcyBtYXkgcmFjZSB3aXRoIHNldHRpbmcgb2YgaXJyIGluIF9fYXBpY19hY2NlcHRfaXJxKCkgYW5kXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzo4MTk6XHQgKiB2YWx1ZSByZXR1cm5lZCBtYXkgYmUgd3JvbmcsIGJ1dCBrdm1fdmNwdV9raWNrKCkgaW4gX19hcGljX2FjY2VwdF9pcnFcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyMC1cdCAqIHdpbGwgY2F1c2Ugdm1leGl0IGltbWVkaWF0ZWx5IGFuZCB0aGUgdmFsdWUgd2lsbCBiZSByZWNhbGN1bGF0ZWRcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz04MjU9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9sYXBpY19maW5kX2hpZ2hlc3RfaXJyKTtcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyNi1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgyNzpzdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODI4LVx0XHRcdCAgICAgaW50IHZlY3RvciwgaW50IGxldmVsLCBpbnQgdHJpZ19tb2RlLFxuLS1cbmFyY2gveDg2L2t2bS9sYXBpYy5jPTgzMT1pbnQga3ZtX2FwaWNfc2V0X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbGFwaWNfaXJxICppcnEsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM1LVxuYXJjaC94ODYva3ZtL2xhcGljLmM6ODM2Olx0cmV0dXJuIF9fYXBpY19hY2NlcHRfaXJxKGFwaWMsIGlycS1cdTAwM2VkZWxpdmVyeV9tb2RlLCBpcnEtXHUwMDNldmVjdG9yLFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM3LVx0XHRcdFx0IGlycS1cdTAwM2VsZXZlbCwgaXJxLVx1MDAzZXRyaWdfbW9kZSwgcnRjX3N0YXR1cyk7XG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MTMzNj1pbnQgX19rdm1faXJxX2RlbGl2ZXJ5X3RvX2FwaWMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2xhcGljICpzcmMsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMTM5Ny0gKi9cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjEzOTg6c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTEzOTktXHRcdFx0ICAgICBpbnQgdmVjdG9yLCBpbnQgbGV2ZWwsIGludCB0cmlnX21vZGUsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MzAwOD1pbnQga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcihzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgbHZ0X3R5cGUpXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzAxOC1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjMwMTk6XHRcdHIgPSBfX2FwaWNfYWNjZXB0X2lycShhcGljLCBtb2RlLCB2ZWN0b3IsIDEsIHRyaWdfbW9kZSwgTlVMTCk7XG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMDIwLVx0XHRpZiAociBcdTAwMjZcdTAwMjYgbHZ0X3R5cGUgPT0gQVBJQ19MVlRQQyBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDE1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBLVk0gcGF0Y2gsIGFuZCB0aGUga2V5IGNoYW5nZSBpcyB0aGlzIHJlcGxhY2VtZW50IG9mIGBwcmludGtgIHdpdGggYFdBUk5fT05fT05DRSgxKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgd2FpdCwgYF9fYXBpY19hY2NlcHRfaXJxYCBpcyBhICpjb3JlKiBLVk0gZnVuY3Rpb24g4oCTIHRoYXQmIzM5O3MgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcuIE5vdywgaXMgdGhpcyBjb25zaWRlcmVkIGZ1bmN0aW9uYWwgZm9yIG91ciBwdXJwb3Nlcz8gWWVzLCBhYnNvbHV0ZWx5ISBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlOyBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhICpuZXcgYnVnIGNoZWNrKi4gVGhpcyBgV0FSTl9PTl9PTkNFYCBjb25zdHJ1Y3QgaXMgYSBjcml0aWNhbCBhZGRpdGlvbi4gVGhlIHBvaW50IGhlcmUgaXMgdGhhdCB3ZSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgYW5kIGNhdGNoIGl0IHdpdGggU3l6a2FsbGVyLCBzbyB0aGlzIGNoYW5nZSB3aWxsIGNyZWF0ZSBtb3JlIGZ1enppbmcgc3VyZmFjZS4KCk9rYXksIG5vdyBsZXQgbWUgc3RlcCBiYWNrIGFuZCB0aGluayBjYXJlZnVsbHkgYWJvdXQgd2hhdCBgV0FSTl9PTl9PTkNFYCBhY3R1YWxseSBkb2VzLiBXaGlsZSBpdCBkb2VzIHRlY2huaWNhbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93ICpzbGlnaHRseSog4oCTIGJ5IHRyYXBwaW5nLCBwcmludGluZyBhIHdhcm5pbmcsIGFuZCBjb250aW51aW5nIOKAkyB0aGUgcHJpbWFyeSBpbXBhY3QgaXMgdGhhdCBpdCYjMzk7cyBhICpidWcgYXNzZXJ0aW9uKi4gVGhhdCYjMzk7cyB0aGUga2V5LgoKTm93LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSBwcm9tcHQ6IEl0IGV4cGxpY2l0bHkgc2F5cyB0byBjb25zaWRlciB0aGUgcGF0Y2ggd29ydGggZnV6emluZyBpZiBpdCYjMzk7cyAqbm90KiBqdXN0IGFib3V0IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIG9yIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgdGhhdCAqZG9uJiMzOTt0KiBhbHRlciBleGVjdXRpb24gZmxvdy4gV2VsbCwgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHRoaXM6IGlzIGBXQVJOX09OX09OQ0VgIGNvbnNpZGVyZWQganVzdCBsb2dnaW5nPyBUaGUgYW5zd2VyIGlzIGEgY2xlYXIgKm5vKi4gSXQmIzM5O3MgYSBidWcgKmFzc2VydGlvbiogdGhhdCB3b3VsZCBsaWtlbHkgYmUgd29ydGggZnV6emluZywgYW5kIGlzIGEgc3Ryb25nIGluZGljYXRpb24gd2UgbWF5IHdhbnQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIHRyaWdnZXIgdGhpcy4KCkZpbmFsbHksIGp1c3QgdG8gYmUgc3VyZSwgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBLVk0tc3BlY2lmaWMgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoZSBtYWluIG9uZSBoZXJlIHdpbGwgYmUgYENPTkZJR19LVk1gLCB3aGljaCB3ZSBuZWVkLiBTbywgdGhpcyBwYXRjaCBhcHBlYXJzIHRvIGJlIHdvcnRod2hpbGUgYW5kIHNob3VsZCBhZGQgc29tZSBmdXp6aW5nIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTaWduaWZpY2FuY2Ugb2YgYFdBUk5fT05fT05DRWAgaW4gRnV6emluZyBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBXQVJOX09OX09OQ0VgIGFzc2VydGlvbiwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFuZ2UgaW52b2x2aW5nIGl0IHdhcnJhbnRzIGZ1enppbmcuIFRoZSBwcm9tcHQgZGVmaW5lcyB3aGF0IHNob3VsZG4mIzM5O3QgYmUgZnV6emVkLCBhbmQgSSYjMzk7bSB0cnlpbmcgdG8gZGVjaWRlIGlmIHRoaXMgZmFsbHMgdW5kZXIgb25lIG9mIHRob3NlIGNhdGVnb3JpZXMuIEkgc2VlIHRoYXQgaXQgZXhwbGljaXRseSBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24sIEtjb25maWcsIG9yIGNvbW1lbnRzIGFyZSBub3Qgd29ydGggZnV6emluZy4gSXQgYWxzbyBsaXN0cyAmIzM0O1B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzJiMzNDsgYXMgbm90IHdvcnRoIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uc2lkZXIgaWYgYFdBUk5fT05fT05DRWAgY291bGQgYmUgZGVlbWVkICYjMzQ7cHVyZWx5IGRlY29yYXRpdmUmIzM0Oy4gSG93ZXZlciwgSSYjMzk7bSBxdWlja2x5IHJlYWxpemluZyB0aGF0JiMzOTtzIGluY29ycmVjdC4gYFdBUk5fT05fT05DRWAgaXMgKm5vdCoganVzdCBhIGxvZzsgaXQmIzM5O3MgYW4gYXNzZXJ0aW9uLiBJdCBjYW4gdHJpZ2dlciBhIGtlcm5lbCBwYW5pYyBpZiBgcGFuaWNfb25fd2FybmAgaXMgc2V0LCB3aGljaCBpdCBtb3N0IGxpa2VseSB3aWxsIGJlIHNldCBmb3IgZnV6emluZy4KClRoZW4gSSB0aGluazogaWYgaXQmIzM5O3MgKm9ubHkqIGEgc3dhcCBvdXQgZnJvbSBgcHJpbnRrYCB0byBgV0FSTl9PTl9PTkNFYCwgaXMgdGhlIGV4ZWN1dGlvbiBmbG93IGVzc2VudGlhbGx5IHRoZSBzYW1lPyBCb3RoIGxvZyBhIG1lc3NhZ2UgYW5kIGNvbnRpbnVlLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGUgc3RhY2sgZHVtcCBhbmQgcG9zc2liaWxpdHkgb2YgYSBwYW5pYywgd2hpY2ggSSB0aGluayBpcyBzaWduaWZpY2FudCBoZXJlLiBCdXQgaXMgaXQganVzdCBkZWNvcmF0aXZlPyBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBleGNsdWRlcyBjaGFuZ2VzIHRvIGxvZ2dpbmcsIGJ1dCBpcyByZXBsYWNpbmcgYSBwcmludCBzdGF0ZW1lbnQgd2l0aCBhbiBhc3NlcnRpb24gc3RpbGwgY29uc2lkZXJlZCAmIzM0O2RlY29yYXRpdmUmIzM0OyBpbiB0aGlzIHNpdHVhdGlvbj8KCkkgaGF2ZSB0byBhY2tub3dsZWRnZSB0aGF0IGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcsIHRoaXMgaXMgYSB2ZXJ5IHNpZ25pZmljYW50IGNoYW5nZS4gRnV6emluZyBpcyBhbGwgYWJvdXQgdHJpZ2dlcmluZyB3YXJuaW5ncywgYnVncywgYW5kIGVkZ2UgY2FzZXMuIFJlcGxhY2luZyBhIGBwcmludGtgIHdpdGggYSBgV0FSTl9PTl9PTkNFYCBleHBvc2VzIGEgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgYnVnIHRoYXQgdGhlIGZ1enplciBjYW4gbm93IGRldGVjdC4gSWYgd2UgKmRvbiYjMzk7dCogZnV6eiBpdCwgd2UmIzM5O3JlIGxpa2VseSB0byBtaXNzIGEgcmVhbCBidWcuCgpTbywgaWYgdGhlIGNoYW5nZSBpcyAqc29sZWx5KiBhIHJlcGxhY2VtZW50IG9mIGBwcmludGtgIHdpdGggYFdBUk5fT05fT05DRWAsIGl0ICppcyogd29ydGggZnV6emluZy4gVGhlIGRldmVsb3BlciBleHBsaWNpdGx5IHB1dCB0aGF0IGluIHRoZXJlLCBhbmQgdGhleSB3YW50IHRvIGtub3cgaWYgaXQgY2FuIGJlIHRyaWdnZXJlZC4KTm93LCBsZXQgbWUgY2hlY2sgYF9fYXBpY19hY2NlcHRfaXJxYC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0NzA6XHRcdFx0cmVzdWx0ID0gMTtcbjE0NzE6XHRcdFx0YXBpYy1cdTAwM2VzaXBpX3ZlY3RvciA9IHZlY3RvcjtcbjE0NzI6XHRcdFx0LyogbWFrZSBzdXJlIHNpcGlfdmVjdG9yIGlzIHZpc2libGUgZm9yIHRoZSByZWNlaXZlciAqL1xuMTQ3MzpcdFx0XHRzbXBfd21iKCk7XG4xNDc0Olx0XHRcdHNldF9iaXQoS1ZNX0FQSUNfU0lQSSwgXHUwMDI2YXBpYy1cdTAwM2VwZW5kaW5nX2V2ZW50cyk7XG4xNDc1Olx0XHRcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9FVkVOVCwgdmNwdSk7XG4xNDc2Olx0XHRcdGt2bV92Y3B1X2tpY2sodmNwdSk7XG4xNDc3Olx0XHRcdGJyZWFrO1xuMTQ3ODpcdFxuMTQ3OTpcdFx0Y2FzZSBBUElDX0RNX0VYVElOVDpcbjE0ODA6XHRcdFx0LypcbjE0ODE6XHRcdFx0ICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IGt2bV9hcGljX2xvY2FsX2RlbGl2ZXIoKSB3aXRoIExWVDAsXG4xNDgyOlx0XHRcdCAqIGJlZm9yZSBOTUkgd2F0Y2hkb2cgd2FzIGVuYWJsZWQuIEFscmVhZHkgaGFuZGxlZCBieVxuMTQ4MzpcdFx0XHQgKiBrdm1fYXBpY19hY2NlcHRfcGljX2ludHIoKS5cbjE0ODQ6XHRcdFx0ICovXG4xNDg1Olx0XHRcdGJyZWFrO1xuMTQ4NjpcdFxuMTQ4NzpcdFx0ZGVmYXVsdDpcbjE0ODg6XHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuMTQ4OTpcdFx0XHRicmVhaztcbjE0OTA6XHRcdH1cbjE0OTE6XHRcdHJldHVybiByZXN1bHQ7XG4xNDkyOlx0fVxuMTQ5MzpcdFxuMTQ5NDpcdC8qXG4xNDk1Olx0ICogVGhpcyByb3V0aW5lIGlkZW50aWZpZXMgdGhlIGRlc3RpbmF0aW9uIHZjcHVzIG1hc2sgbWVhbnQgdG8gcmVjZWl2ZSB0aGVcbjE0OTY6XHQgKiBJT0FQSUMgaW50ZXJydXB0cy4gSXQgZWl0aGVyIHVzZXMga3ZtX2FwaWNfbWFwX2dldF9kZXN0X2xhcGljKCkgdG8gZmluZFxuMTQ5NzpcdCAqIG91dCB0aGUgZGVzdGluYXRpb24gdmNwdXMgYXJyYXkgYW5kIHNldCB0aGUgYml0bWFwIG9yIGl0IHRyYXZlcnNlcyB0b1xuMTQ5ODpcdCAqIGVhY2ggYXZhaWxhYmxlIHZjcHUgdG8gaWRlbnRpZnkgdGhlIHNhbWUuXG4xNDk5Olx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIGEgQnVnIEFzc2VydGlvbiBpbiBgX19hcGljX2FjY2VwdF9pcnFgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgY2hhbmdlOiBhIGBwcmludGtgIGVycm9yIG1lc3NhZ2UgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBhIGBXQVJOX09OX09OQ0UoMSlgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgYnVnIGFzc2VydGlvbiDigJMgdGhlIGRldmVsb3BlciBpcyBlc3NlbnRpYWxseSBzYXlpbmcsICYjMzQ7dGhpcyBkZWZhdWx0IGNhc2UgKnNob3VsZCogbmV2ZXIgYmUgaGl0LiYjMzQ7IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2lzIHRoaXMgd29ydGggZnV6emluZz8mIzM0OyBBYnNvbHV0ZWx5LiBUaGUgd2hvbGUgcG9pbnQgaXMgdG8gZWl0aGVyIGNvbmZpcm0gdGhlIGFzc3VtcHRpb24gb3IsIG1vcmUgaW1wb3J0YW50bHksICp2aW9sYXRlKiBpdCBhbmQgcmV2ZWFsIGEgaGlkZGVuIGJ1Zy4gRmluZGluZyBhIHBhdGggdGhhdCB0cmlnZ2VycyB0aGF0IGBXQVJOX09OX09OQ0VgIHdvdWxkIGJlIGEgZ3JlYXQgb3V0Y29tZS4KClRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgX19hcGljX2FjY2VwdF9pcnFgLCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyBgS1ZNYCBhbmQgYEtWTV9YODZgLCBidXQgbGV0JiMzOTtzIHNlZSBpZiBwbGFpbiBgS1ZNYCBpcyBlbm91Z2guIEFoLCB5ZXMsIGxvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSwgYGFyY2gveDg2L2t2bS9sYXBpYy5jYCBnZXRzIGNvbXBpbGVkIHdpdGggYENPTkZJR19LVk1gIGVuYWJsZWQuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhcGljLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTY9aW5jbHVkZSAkKHNyY3RyZWUpL3ZpcnQva3ZtL01ha2VmaWxlLmt2bVxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTctXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6ODprdm0teVx0XHRcdCYjNDM7PSB4ODYubyBlbXVsYXRlLm8gaXJxLm8gbGFwaWMubyBjcHVpZC5vIHBtdS5vIG10cnIubyBcXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTktXHRcdFx0ICAgZGVidWdmcy5vIG1tdS9tbXUubyBtbXUvcGFnZV90cmFjay5vIG1tdS9zcHRlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQyMwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQgbG9va3MgbGlrZSBgQ09ORklHX0tWTWAgaXMgcmVsZXZhbnQsIGJ1dCBoYW5nIG9uLCBgS1ZNYCBpdHNlbGYgaXMgYSB0cmlzdGF0ZSwgYW5kIHRoYXQgcHJvbXB0IHNwZWNpZmljYWxseSB0ZWxscyB1cyB0byBhdm9pZCBnZW5lcmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQuIEkgbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLiBJcyBgS1ZNYCB0b28gZ2VuZXJpYyBoZXJlPyBZZXMsIGl0IGlzLiBUaGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSBhbnkgKnNwZWNpZmljKiBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIExBUElDIHRoYXQgYXJlIGVuYWJsZWQ/IE5vcGUsIGBsYXBpYy5vYCBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBga3ZtLXlgLiBTbywgSSBkb24mIzM5O3QgbmVlZCB0byBzcGVjaWZ5IGFueSBzcGVjaWZpYyBjb25maWdzIGluIGBFbmFibGVDb25maWdzYC4gVGhhdCBjYW4gc3RheSBlbXB0eS4KCk5vdywgdGhlIG1vcmUgaW1wb3J0YW50IHF1ZXN0aW9uOiBJcyB0aGlzIGNoYW5nZSAmIzM0O2Z1bmN0aW9uYWwmIzM0OyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZT8gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNyaXRlcmlhLiBJdCBzYXlzIGEgcGF0Y2ggaXNuJiMzOTt0ICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgaWYgaXQgaW52b2x2ZXMgdGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIG9yIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIEl0IGFsc28gZXhjbHVkZXMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpIbW0sIHRoaXMgcGF0Y2ggY2hhbmdlcyBgcHJpbnRrYCB0byBgV0FSTl9PTl9PTkNFYC4gSXMgdGhhdCBwdXJlbHkgZGVjb3JhdGl2ZT8gQWJzb2x1dGVseSBub3QuIGBXQVJOX09OX09OQ0VgIGlzIGEgYnVnIGFzc2VydGlvbiwgYSBkZWxpYmVyYXRlIGNoZWNrIGZvciBhIHNwZWNpZmljIGNvbmRpdGlvbi4gSW4gdGhlIGNvbnRleHQgb2Ygc3l6a2FsbGVyLCBhIGBXQVJOYCBlc3NlbnRpYWxseSAqaXMqIGEgY3Jhc2guIFRoZSBhdXRob3IgaXMgZXhwbGljaXRseSBhc2tpbmcgdGhlIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8gdHJlYXQgdGhpcyBjb25kaXRpb24gYXMgYSBjcml0aWNhbCBidWcuIFRoaXMgaXMgaGlnaGx5IHJlbGV2YW50IHRvIGZ1enppbmcuIEl0JiMzOTtzIGEgY2xlYXIgaW5kaWNhdGlvbiBvZiBhIHBvc3NpYmxlIGxhdGVudCBwcm9ibGVtLiBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgdHJ1ZWAuCgpCdXQgdGhhdCBtZWFucyBJIG5lZWQgdG8gcHJvdmlkZSBgRm9jdXNTeW1ib2xzYC4gT2theSwgdGhhdCBzaG91bGQgYmUgYF9fYXBpY19hY2NlcHRfaXJxYC4gV2FpdCwgaXNuJiMzOTt0IHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB0aGUga2VybmVsJiMzOTtzIHBlcnNwZWN0aXZlIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYXBpY19hY2NlcHRfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmM9ODE2PWludCBrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MTcte1xuYXJjaC94ODYva3ZtL2xhcGljLmM6ODE4Olx0LyogVGhpcyBtYXkgcmFjZSB3aXRoIHNldHRpbmcgb2YgaXJyIGluIF9fYXBpY19hY2NlcHRfaXJxKCkgYW5kXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzo4MTk6XHQgKiB2YWx1ZSByZXR1cm5lZCBtYXkgYmUgd3JvbmcsIGJ1dCBrdm1fdmNwdV9raWNrKCkgaW4gX19hcGljX2FjY2VwdF9pcnFcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyMC1cdCAqIHdpbGwgY2F1c2Ugdm1leGl0IGltbWVkaWF0ZWx5IGFuZCB0aGUgdmFsdWUgd2lsbCBiZSByZWNhbGN1bGF0ZWRcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz04MjU9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9sYXBpY19maW5kX2hpZ2hlc3RfaXJyKTtcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyNi1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgyNzpzdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODI4LVx0XHRcdCAgICAgaW50IHZlY3RvciwgaW50IGxldmVsLCBpbnQgdHJpZ19tb2RlLFxuLS1cbmFyY2gveDg2L2t2bS9sYXBpYy5jPTgzMT1pbnQga3ZtX2FwaWNfc2V0X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbGFwaWNfaXJxICppcnEsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM1LVxuYXJjaC94ODYva3ZtL2xhcGljLmM6ODM2Olx0cmV0dXJuIF9fYXBpY19hY2NlcHRfaXJxKGFwaWMsIGlycS1cdTAwM2VkZWxpdmVyeV9tb2RlLCBpcnEtXHUwMDNldmVjdG9yLFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM3LVx0XHRcdFx0IGlycS1cdTAwM2VsZXZlbCwgaXJxLVx1MDAzZXRyaWdfbW9kZSwgcnRjX3N0YXR1cyk7XG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MTMzNj1pbnQgX19rdm1faXJxX2RlbGl2ZXJ5X3RvX2FwaWMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2xhcGljICpzcmMsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMTM5Ny0gKi9cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjEzOTg6c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTEzOTktXHRcdFx0ICAgICBpbnQgdmVjdG9yLCBpbnQgbGV2ZWwsIGludCB0cmlnX21vZGUsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MzAwOD1pbnQga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcihzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgbHZ0X3R5cGUpXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzAxOC1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjMwMTk6XHRcdHIgPSBfX2FwaWNfYWNjZXB0X2lycShhcGljLCBtb2RlLCB2ZWN0b3IsIDEsIHRyaWdfbW9kZSwgTlVMTCk7XG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMDIwLVx0XHRpZiAociBcdTAwMjZcdTAwMjYgbHZ0X3R5cGUgPT0gQVBJQ19MVlRQQyBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTA3OAoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiA1ODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgYSBLVk0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgS1ZNIHBhdGNoIGFuZCB0cnlpbmcgdG8gZGVjaWRlIGlmIGl0JiMzOTtzIHdvcnRoIGZsYWdnaW5nIGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQga2V5IHN5bWJvbHMgaW4gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMsIHNvIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiBgX19hcGljX2FjY2VwdF9pcnFgLCBga3ZtX2FwaWNfc2V0X2lycWAsIGFuZCBga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcmAuIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0LiBJIGFsc28gY29uc2lkZXIgZm9jdXNpbmcganVzdCBvbiBgX19hcGljX2FjY2VwdF9pcnFgLgoKTm93LCB0aGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGludm9sdmUgcmVwbGFjaW5nIGEgYHByaW50a2Agc3RhdGVtZW50IHdpdGggYFdBUk5fT05fT05DRSgxKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHB1cmVseSBkZWNvcmF0aXZlPyBEb2VzIGl0IGFjdHVhbGx5IGNoYW5nZSB0aGUgKmV4ZWN1dGlvbiogZmxvdz8mIzM0OyBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRoaW5ncyBsaWtlIGBwcmludGtgIGFyZSAmIzM0O3B1cmVseSBkZWNvcmF0aXZlJiMzNDssIGJ1dCBpcyB0aGF0IHJlYWxseSB0cnVlIGluIHRoaXMgY2FzZT8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoaXMgY2FyZWZ1bGx5LiBgV0FSTl9PTl9PTkNFYCBkb2VzbiYjMzk7dCAqZnVuY3Rpb25hbGx5KiBhbHRlciBleGVjdXRpb24gaW4gbW9zdCBjYXNlcyAodW5sZXNzIGBwYW5pY19vbl93YXJuYCBpcyBzZXQpLgoKSG93ZXZlciwgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZywgYSBgV0FSTmAgKmlzKiBhIGNyYXNoISBBIGRldmVsb3BlciBoYXMgZXhwbGljaXRseSBjaGFuZ2VkIHRoaXMgZnJvbSBhbiBpbmZvcm1hdGl2ZSBsb2cgbWVzc2FnZSB0byBhbiBhc3NlcnRpb24uIFRoZXkgYXJlIGVzc2VudGlhbGx5IHNheWluZywgJiMzNDtJZiB0aGlzIGNvbmRpdGlvbiBpcyBoaXQsIGl0IHNpZ25pZmllcyBhIHByb2JsZW0sIGFuZCB3ZSAqd2FudCogdG8ga25vdyBhYm91dCBpdC4mIzM0OwoKSWYgSSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAsIHN5ei1jbHVzdGVyIHdpbGwgaWdub3JlIHRoaXMgcGF0Y2gsIGFuZCB3ZSBtaWdodCBtaXNzIHRyaWdnZXJpbmcgdGhlIHdhcm5pbmcuIFRoYXQmIzM5O3MgdW5hY2NlcHRhYmxlLiBXZSAqYWJzb2x1dGVseSogd2FudCB0byBmdXp6IHRoaXMgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBgV0FSTl9PTl9PTkNFYC4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY2hhbmdlcyBpbiB0aGUgcGF0Y2guIE5vcGUsIGp1c3QgdGhlIHdhcm5pbmcuIFNvIHRoaXMgaXMgYSBmb2N1c2VkIGNoYW5nZS4KCkkmIzM5O20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBmb2N1cyBzeW1ib2xzIHJlbWFpbiBhczogYF9fYXBpY19hY2NlcHRfaXJxYCwgYGt2bV9hcGljX3NldF9pcnFgLCBhbmQgYGt2bV9hcGljX2xvY2FsX2RlbGl2ZXJgLiBUaGVyZSBhcmUgbm8gS1ZNLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgc2VlbSByZWxldmFudCBoZXJlLCBpdCYjMzk7cyBwcmV0dHkgZ2VuZXJpYy4KCkkgbmVlZCB0byBiZSB2ZXJ5IGNsZWFyIGluIG15IHJlYXNvbmluZzogV2hpbGUgYFdBUk5fT05fT05DRWAgaXNuJiMzOTt0IGEgZGlyZWN0IGNvZGUgY2hhbmdlIGluIG1vc3QgY2FzZXMsIGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSBmcm9tIGEgdGVzdGluZy9mdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBhbHRlcnMgdGhlIHRlc3Qgb3JhY2xlOyB3aGF0IHdlIGNvbnNpZGVyIGEgYnVnLiBUaGlzIG1ha2VzIGl0IHdvcnRoIGZ1enppbmcgdG8gZGlzY292ZXIgd2hhdCBjb25kaXRpb25zIGFyZSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoaXMgd2FybmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fYXBpY19hY2NlcHRfaXJxJiMzNDssCiAgICAmIzM0O2t2bV9hcGljX3NldF9pcnEmIzM0OywKICAgICYjMzQ7a3ZtX2FwaWNfbG9jYWxfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIHByaW50ayB3aXRoIGEgV0FSTl9PTl9PTkNFLiBXaGlsZSB0aGlzIGRvZXNuJiMzOTt0IGNoYW5nZSB0aGUgY29yZSBsb2dpYywgaXQgaW50cm9kdWNlcyBhIG5ldyBidWcgYXNzZXJ0aW9uIChhIHdhcm5pbmcpIHRoYXQgc3l6a2FsbGVyIGNhbiBkZXRlY3QgYXMgYSBjcmFzaC4gRnV6emluZyB0aGlzIGNoYW5nZSBpcyB2YWx1YWJsZSB0byB2ZXJpZnkgaWYgdGhlICYjMzk7dW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZSYjMzk7IGNvbmRpdGlvbiBpcyByZWFjaGFibGUgZnJvbSBndWVzdCBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2FwaWNfYWNjZXB0X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fYXBpY19zZXRfaXJxJiMzNDssCiAgICAmIzM0O2t2bV9hcGljX2xvY2FsX2RlbGl2ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSBwcmludGsgd2l0aCBhIFdBUk5fT05fT05DRS4gV2hpbGUgdGhpcyBkb2VzbiYjMzk7dCBjaGFuZ2UgdGhlIGNvcmUgbG9naWMsIGl0IGludHJvZHVjZXMgYSBuZXcgYnVnIGFzc2VydGlvbiAoYSB3YXJuaW5nKSB0aGF0IHN5emthbGxlciBjYW4gZGV0ZWN0IGFzIGEgY3Jhc2guIEZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgdmFsdWFibGUgdG8gdmVyaWZ5IGlmIHRoZSAmIzM5O3Vuc3VwcG9ydGVkIGRlbGl2ZXJ5IG1vZGUmIzM5OyBjb25kaXRpb24gaXMgcmVhY2hhYmxlIGZyb20gZ3Vlc3Qgc3BhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDoxMi45NDQwNzE4ODlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODczNTc4NDM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2FwaWNfYWNjZXB0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfc2V0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfbG9jYWxfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcHJpbnRrIHdpdGggYSBXQVJOX09OX09OQ0UuIFdoaWxlIHRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGNvcmUgbG9naWMsIGl0IGludHJvZHVjZXMgYSBuZXcgYnVnIGFzc2VydGlvbiAoYSB3YXJuaW5nKSB0aGF0IHN5emthbGxlciBjYW4gZGV0ZWN0IGFzIGEgY3Jhc2guIEZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgdmFsdWFibGUgdG8gdmVyaWZ5IGlmIHRoZSAndW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZScgY29uZGl0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIGd1ZXN0IHNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDoxMi45NDQwNzg4MDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MzYzNTI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYzZmJjODc0NmY5Y2U1MzU3NjE1NjYyYzVkNTFlNmMxOTg3MGEyZDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTc6MzA6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2xhcGljLmMgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xcbmluZGV4IDQwNzhlNjI0Y2E2Njc1Li5jNzc1Nzg5ZGJkYjNjMiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9sYXBpYy5jXFxuQEAgLTE0ODUsOCArMTQ4NSw3IEBAIHN0YXRpYyBpbnQgX19hcGljX2FjY2VwdF9pcnEoc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IGRlbGl2ZXJ5X21vZGUsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0ZGVmYXVsdDpcXG4tXFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJUT0RPOiB1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlICV4XFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgICAgZGVsaXZlcnlfbW9kZSk7XFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIHJlc3VsdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTc6MzA6MTMuNjAwODU4NjEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA3ODk4MDkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2FwaWNfYWNjZXB0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfc2V0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfbG9jYWxfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcHJpbnRrIHdpdGggYSBXQVJOX09OX09OQ0UuIFdoaWxlIHRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGNvcmUgbG9naWMsIGl0IGludHJvZHVjZXMgYSBuZXcgYnVnIGFzc2VydGlvbiAoYSB3YXJuaW5nKSB0aGF0IHN5emthbGxlciBjYW4gZGV0ZWN0IGFzIGEgY3Jhc2guIEZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgdmFsdWFibGUgdG8gdmVyaWZ5IGlmIHRoZSAndW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZScgY29uZGl0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIGd1ZXN0IHNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYzZmJjODc0NmY5Y2U1MzU3NjE1NjYyYzVkNTFlNmMxOTg3MGEyZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNzozMDoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcbmluZGV4IDQwNzhlNjI0Y2E2Njc1Li5jNzc1Nzg5ZGJkYjNjMiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xuQEAgLTE0ODUsOCArMTQ4NSw3IEBAIHN0YXRpYyBpbnQgX19hcGljX2FjY2VwdF9pcnEoc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IGRlbGl2ZXJ5X21vZGUsXG4gXHRcdGJyZWFrO1xuIFxuIFx0ZGVmYXVsdDpcbi1cdFx0cHJpbnRrKEtFUk5fRVJSIFwiVE9ETzogdW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZSAleFxcblwiLFxuLVx0XHQgICAgICAgZGVsaXZlcnlfbW9kZSk7XG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRyZXR1cm4gcmVzdWx0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTc6MzA6MTMuNjAwODYxNDQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ4MzU3NTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0veDg2IFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggY2hhbmdlcyBgYXJjaC94ODYva3ZtL2xhcGljLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2FwaWNfYWNjZXB0X2lycWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGxvZ2dpbmcgY2hhbmdlLiBJdCBzd2FwcyBhIGBwcmludGsoS0VSTl9FUlIgLi4uKWAgZm9yIGEgYFdBUk5fT05fT05DRSgxKWAgd2l0aGluIHRoZSBgZGVmYXVsdGAgY2FzZSBvZiB0aGUgYGRlbGl2ZXJ5X21vZGVgIHN3aXRjaC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNsYXNzaWZ5IHRoaXMgYXMgYSBcImRlY29yYXRpdmUgY2hhbmdlXCIg4oCTIGp1c3QgYWx0ZXJpbmcgdGhlIGxvZ2dpbmcgb3V0cHV0LiBCdXQgd2FpdC4uLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmllcyBleGNlcHRpb25zOiBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGBwcmludGtgLCBjb25zdGFudHMgd2l0aG91dCBmdW5jdGlvbmFsIGltcGFjdCwgYW5kIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJcyBgV0FSTl9PTl9PTkNFYCBwdXJlbHkgZGVjb3JhdGl2ZT8gTm90IGlmIHlvdSdyZSB0aGlua2luZyBhYm91dCBmdXp6aW5nISBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuXG5cbmBwcmludGtgIGp1c3QgbG9nczsgaXTigJlzIGEgcGFzc2l2ZSBvYnNlcnZhdGlvbi4gSG93ZXZlciwgYFdBUk5fT05fT05DRWAgaXMgYSBjcnVjaWFsIGRpZmZlcmVuY2UuIEluIGEgZnV6emVyJ3Mgd29ybGQsIHRoYXQgd2FybmluZyBpcyBhIHBvdGVudGlhbCBidWcgcmVwb3J0LCBlc3BlY2lhbGx5IGlmIGBwYW5pY19vbl93YXJuYCBpcyBlbmFibGVkLiBJdCBtZWFucyBpZiB0aGF0IFwiZGVmYXVsdFwiIGNhc2UgaXMgaGl0LCBpbnN0ZWFkIG9mIGEgc2lsZW50IGVycm9yLCBvciBqdXN0IGEgbG9nZ2VkIGVycm9yLCBzeXprYWxsZXIgd2lsbCAqbm93KiByZXBvcnQgYSBidWcuIFRoaXMgaXMgYSBzaWduaWZpY2FudCB0cmFuc2Zvcm1hdGlvbiEgSXTigJlzIG5vIGxvbmdlciBqdXN0IGxvZ2dpbmc7IGl0J3MgdHJhbnNpdGlvbmluZyBhIHNpbGVudCBvciBsb2dnZWQgZXJyb3IgaW50byBhIGZ1enplci1kZXRlY3RhYmxlIGV2ZW50LiBUaGlzIHBhdGNoIGhhcyBiZWNvbWUgbXVjaCBtb3JlIHJlbGV2YW50IHRvIGZ1enppbmcgdGhhbiBpdCBmaXJzdCBhcHBlYXJlZC4gTm93IEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYF9fYXBpY19hY2NlcHRfaXJxYCB0byBjb25maXJtIHRoZSBjb250ZXh0IGFuZCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDoyMS4wODQ0Mzk0OTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NTk3MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fYXBpY19hY2NlcHRfaXJxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9sYXBpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9sYXBpYy5jPTgxNj1pbnQga3ZtX2xhcGljX2ZpbmRfaGlnaGVzdF9pcnIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgxNy17XFxuYXJjaC94ODYva3ZtL2xhcGljLmM6ODE4OlxcdC8qIFRoaXMgbWF5IHJhY2Ugd2l0aCBzZXR0aW5nIG9mIGlyciBpbiBfX2FwaWNfYWNjZXB0X2lycSgpIGFuZFxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgxOTpcXHQgKiB2YWx1ZSByZXR1cm5lZCBtYXkgYmUgd3JvbmcsIGJ1dCBrdm1fdmNwdV9raWNrKCkgaW4gX19hcGljX2FjY2VwdF9pcnFcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MjAtXFx0ICogd2lsbCBjYXVzZSB2bWV4aXQgaW1tZWRpYXRlbHkgYW5kIHRoZSB2YWx1ZSB3aWxsIGJlIHJlY2FsY3VsYXRlZFxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmM9ODI1PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycik7XFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODI2LVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgyNzpzdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyOC1cXHRcXHRcXHQgICAgIGludCB2ZWN0b3IsIGludCBsZXZlbCwgaW50IHRyaWdfbW9kZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTgzMT1pbnQga3ZtX2FwaWNfc2V0X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbGFwaWNfaXJxICppcnEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MzUtXFxuYXJjaC94ODYva3ZtL2xhcGljLmM6ODM2OlxcdHJldHVybiBfX2FwaWNfYWNjZXB0X2lycShhcGljLCBpcnEtXFx1MDAzZWRlbGl2ZXJ5X21vZGUsIGlycS1cXHUwMDNldmVjdG9yLFxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgzNy1cXHRcXHRcXHRcXHQgaXJxLVxcdTAwM2VsZXZlbCwgaXJxLVxcdTAwM2V0cmlnX21vZGUsIHJ0Y19zdGF0dXMpO1xcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmM9MTMzNj1pbnQgX19rdm1faXJxX2RlbGl2ZXJ5X3RvX2FwaWMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2xhcGljICpzcmMsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xMzk3LSAqL1xcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjEzOTg6c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xMzk5LVxcdFxcdFxcdCAgICAgaW50IHZlY3RvciwgaW50IGxldmVsLCBpbnQgdHJpZ19tb2RlLFxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmM9MzAwOD1pbnQga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcihzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgbHZ0X3R5cGUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMDE4LVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjMwMTk6XFx0XFx0ciA9IF9fYXBpY19hY2NlcHRfaXJxKGFwaWMsIG1vZGUsIHZlY3RvciwgMSwgdHJpZ19tb2RlLCBOVUxMKTtcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMDIwLVxcdFxcdGlmIChyIFxcdTAwMjZcXHUwMDI2IGx2dF90eXBlID09IEFQSUNfTFZUUEMgXFx1MDAyNlxcdTAwMjZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTc6MzA6MjEuMjkxMDQ0NzcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEzMzI3NDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEtWTSBwYXRjaCwgYW5kIHRoZSBrZXkgY2hhbmdlIGlzIHRoaXMgcmVwbGFjZW1lbnQgb2YgYHByaW50a2Agd2l0aCBgV0FSTl9PTl9PTkNFKDEpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3YWl0LCBgX19hcGljX2FjY2VwdF9pcnFgIGlzIGEgKmNvcmUqIEtWTSBmdW5jdGlvbiDigJMgdGhhdCdzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBOb3csIGlzIHRoaXMgY29uc2lkZXJlZCBmdW5jdGlvbmFsIGZvciBvdXIgcHVycG9zZXM/IFllcywgYWJzb2x1dGVseSEgVGhpcyBpc24ndCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlOyBpdCdzIGludHJvZHVjaW5nIGEgKm5ldyBidWcgY2hlY2sqLiBUaGlzIGBXQVJOX09OX09OQ0VgIGNvbnN0cnVjdCBpcyBhIGNyaXRpY2FsIGFkZGl0aW9uLiBUaGUgcG9pbnQgaGVyZSBpcyB0aGF0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBhbmQgY2F0Y2ggaXQgd2l0aCBTeXprYWxsZXIsIHNvIHRoaXMgY2hhbmdlIHdpbGwgY3JlYXRlIG1vcmUgZnV6emluZyBzdXJmYWNlLlxuXG5Pa2F5LCBub3cgbGV0IG1lIHN0ZXAgYmFjayBhbmQgdGhpbmsgY2FyZWZ1bGx5IGFib3V0IHdoYXQgYFdBUk5fT05fT05DRWAgYWN0dWFsbHkgZG9lcy4gV2hpbGUgaXQgZG9lcyB0ZWNobmljYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyAqc2xpZ2h0bHkqIOKAkyBieSB0cmFwcGluZywgcHJpbnRpbmcgYSB3YXJuaW5nLCBhbmQgY29udGludWluZyDigJMgdGhlIHByaW1hcnkgaW1wYWN0IGlzIHRoYXQgaXQncyBhICpidWcgYXNzZXJ0aW9uKi4gVGhhdCdzIHRoZSBrZXkuXG5cbk5vdywgbGV0J3MgZ28gYmFjayBhbmQgY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSBwcm9tcHQ6IEl0IGV4cGxpY2l0bHkgc2F5cyB0byBjb25zaWRlciB0aGUgcGF0Y2ggd29ydGggZnV6emluZyBpZiBpdCdzICpub3QqIGp1c3QgYWJvdXQgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZywgb3IgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyB0aGF0ICpkb24ndCogYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFdlbGwsIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB0aGlzOiBpcyBgV0FSTl9PTl9PTkNFYCBjb25zaWRlcmVkIGp1c3QgbG9nZ2luZz8gVGhlIGFuc3dlciBpcyBhIGNsZWFyICpubyouIEl0J3MgYSBidWcgKmFzc2VydGlvbiogdGhhdCB3b3VsZCBsaWtlbHkgYmUgd29ydGggZnV6emluZywgYW5kIGlzIGEgc3Ryb25nIGluZGljYXRpb24gd2UgbWF5IHdhbnQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIHRyaWdnZXIgdGhpcy5cblxuRmluYWxseSwganVzdCB0byBiZSBzdXJlLCBsZXQncyBxdWlja2x5IGNoZWNrIGZvciBhbnkgS1ZNLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGUgbWFpbiBvbmUgaGVyZSB3aWxsIGJlIGBDT05GSUdfS1ZNYCwgd2hpY2ggd2UgbmVlZC4gU28sIHRoaXMgcGF0Y2ggYXBwZWFycyB0byBiZSB3b3J0aHdoaWxlIGFuZCBzaG91bGQgYWRkIHNvbWUgZnV6emluZyBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDE1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjI4LjQyNDMyMTE5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk3Mjc1NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDoyOC42NTQxMjY2NDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjAzNDM4NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2lnbmlmaWNhbmNlIG9mIGBXQVJOX09OX09OQ0VgIGluIEZ1enppbmcgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFdBUk5fT05fT05DRWAgYXNzZXJ0aW9uLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhIGNoYW5nZSBpbnZvbHZpbmcgaXQgd2FycmFudHMgZnV6emluZy4gVGhlIHByb21wdCBkZWZpbmVzIHdoYXQgc2hvdWxkbid0IGJlIGZ1enplZCwgYW5kIEknbSB0cnlpbmcgdG8gZGVjaWRlIGlmIHRoaXMgZmFsbHMgdW5kZXIgb25lIG9mIHRob3NlIGNhdGVnb3JpZXMuIEkgc2VlIHRoYXQgaXQgZXhwbGljaXRseSBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24sIEtjb25maWcsIG9yIGNvbW1lbnRzIGFyZSBub3Qgd29ydGggZnV6emluZy4gSXQgYWxzbyBsaXN0cyBcIlB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzXCIgYXMgbm90IHdvcnRoIGZ1enppbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciBpZiBgV0FSTl9PTl9PTkNFYCBjb3VsZCBiZSBkZWVtZWQgXCJwdXJlbHkgZGVjb3JhdGl2ZVwiLiBIb3dldmVyLCBJJ20gcXVpY2tseSByZWFsaXppbmcgdGhhdCdzIGluY29ycmVjdC4gYFdBUk5fT05fT05DRWAgaXMgKm5vdCoganVzdCBhIGxvZzsgaXQncyBhbiBhc3NlcnRpb24uIEl0IGNhbiB0cmlnZ2VyIGEga2VybmVsIHBhbmljIGlmIGBwYW5pY19vbl93YXJuYCBpcyBzZXQsIHdoaWNoIGl0IG1vc3QgbGlrZWx5IHdpbGwgYmUgc2V0IGZvciBmdXp6aW5nLlxuXG5UaGVuIEkgdGhpbms6IGlmIGl0J3MgKm9ubHkqIGEgc3dhcCBvdXQgZnJvbSBgcHJpbnRrYCB0byBgV0FSTl9PTl9PTkNFYCwgaXMgdGhlIGV4ZWN1dGlvbiBmbG93IGVzc2VudGlhbGx5IHRoZSBzYW1lPyBCb3RoIGxvZyBhIG1lc3NhZ2UgYW5kIGNvbnRpbnVlLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGUgc3RhY2sgZHVtcCBhbmQgcG9zc2liaWxpdHkgb2YgYSBwYW5pYywgd2hpY2ggSSB0aGluayBpcyBzaWduaWZpY2FudCBoZXJlLiBCdXQgaXMgaXQganVzdCBkZWNvcmF0aXZlPyBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBleGNsdWRlcyBjaGFuZ2VzIHRvIGxvZ2dpbmcsIGJ1dCBpcyByZXBsYWNpbmcgYSBwcmludCBzdGF0ZW1lbnQgd2l0aCBhbiBhc3NlcnRpb24gc3RpbGwgY29uc2lkZXJlZCBcImRlY29yYXRpdmVcIiBpbiB0aGlzIHNpdHVhdGlvbj9cblxuSSBoYXZlIHRvIGFja25vd2xlZGdlIHRoYXQgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZywgdGhpcyBpcyBhIHZlcnkgc2lnbmlmaWNhbnQgY2hhbmdlLiBGdXp6aW5nIGlzIGFsbCBhYm91dCB0cmlnZ2VyaW5nIHdhcm5pbmdzLCBidWdzLCBhbmQgZWRnZSBjYXNlcy4gUmVwbGFjaW5nIGEgYHByaW50a2Agd2l0aCBhIGBXQVJOX09OX09OQ0VgIGV4cG9zZXMgYSBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBidWcgdGhhdCB0aGUgZnV6emVyIGNhbiBub3cgZGV0ZWN0LiBJZiB3ZSAqZG9uJ3QqIGZ1enogaXQsIHdlJ3JlIGxpa2VseSB0byBtaXNzIGEgcmVhbCBidWcuXG5cblNvLCBpZiB0aGUgY2hhbmdlIGlzICpzb2xlbHkqIGEgcmVwbGFjZW1lbnQgb2YgYHByaW50a2Agd2l0aCBgV0FSTl9PTl9PTkNFYCwgaXQgKmlzKiB3b3J0aCBmdXp6aW5nLiBUaGUgZGV2ZWxvcGVyIGV4cGxpY2l0bHkgcHV0IHRoYXQgaW4gdGhlcmUsIGFuZCB0aGV5IHdhbnQgdG8ga25vdyBpZiBpdCBjYW4gYmUgdHJpZ2dlcmVkLlxuTm93LCBsZXQgbWUgY2hlY2sgYF9fYXBpY19hY2NlcHRfaXJxYC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzgzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjM2LjI1NzU2NzQzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vbGFwaWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDcwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDcwOlxcdFxcdFxcdHJlc3VsdCA9IDE7XFxuMTQ3MTpcXHRcXHRcXHRhcGljLVxcdTAwM2VzaXBpX3ZlY3RvciA9IHZlY3RvcjtcXG4xNDcyOlxcdFxcdFxcdC8qIG1ha2Ugc3VyZSBzaXBpX3ZlY3RvciBpcyB2aXNpYmxlIGZvciB0aGUgcmVjZWl2ZXIgKi9cXG4xNDczOlxcdFxcdFxcdHNtcF93bWIoKTtcXG4xNDc0OlxcdFxcdFxcdHNldF9iaXQoS1ZNX0FQSUNfU0lQSSwgXFx1MDAyNmFwaWMtXFx1MDAzZXBlbmRpbmdfZXZlbnRzKTtcXG4xNDc1OlxcdFxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9FVkVOVCwgdmNwdSk7XFxuMTQ3NjpcXHRcXHRcXHRrdm1fdmNwdV9raWNrKHZjcHUpO1xcbjE0Nzc6XFx0XFx0XFx0YnJlYWs7XFxuMTQ3ODpcXHRcXG4xNDc5OlxcdFxcdGNhc2UgQVBJQ19ETV9FWFRJTlQ6XFxuMTQ4MDpcXHRcXHRcXHQvKlxcbjE0ODE6XFx0XFx0XFx0ICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IGt2bV9hcGljX2xvY2FsX2RlbGl2ZXIoKSB3aXRoIExWVDAsXFxuMTQ4MjpcXHRcXHRcXHQgKiBiZWZvcmUgTk1JIHdhdGNoZG9nIHdhcyBlbmFibGVkLiBBbHJlYWR5IGhhbmRsZWQgYnlcXG4xNDgzOlxcdFxcdFxcdCAqIGt2bV9hcGljX2FjY2VwdF9waWNfaW50cigpLlxcbjE0ODQ6XFx0XFx0XFx0ICovXFxuMTQ4NTpcXHRcXHRcXHRicmVhaztcXG4xNDg2OlxcdFxcbjE0ODc6XFx0XFx0ZGVmYXVsdDpcXG4xNDg4OlxcdFxcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4xNDg5OlxcdFxcdFxcdGJyZWFrO1xcbjE0OTA6XFx0XFx0fVxcbjE0OTE6XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG4xNDkyOlxcdH1cXG4xNDkzOlxcdFxcbjE0OTQ6XFx0LypcXG4xNDk1OlxcdCAqIFRoaXMgcm91dGluZSBpZGVudGlmaWVzIHRoZSBkZXN0aW5hdGlvbiB2Y3B1cyBtYXNrIG1lYW50IHRvIHJlY2VpdmUgdGhlXFxuMTQ5NjpcXHQgKiBJT0FQSUMgaW50ZXJydXB0cy4gSXQgZWl0aGVyIHVzZXMga3ZtX2FwaWNfbWFwX2dldF9kZXN0X2xhcGljKCkgdG8gZmluZFxcbjE0OTc6XFx0ICogb3V0IHRoZSBkZXN0aW5hdGlvbiB2Y3B1cyBhcnJheSBhbmQgc2V0IHRoZSBiaXRtYXAgb3IgaXQgdHJhdmVyc2VzIHRvXFxuMTQ5ODpcXHQgKiBlYWNoIGF2YWlsYWJsZSB2Y3B1IHRvIGlkZW50aWZ5IHRoZSBzYW1lLlxcbjE0OTk6XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjM2LjI1Nzc3Mjg3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDA1NDA1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBhIEJ1ZyBBc3NlcnRpb24gaW4gYF9fYXBpY19hY2NlcHRfaXJxYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBjaGFuZ2U6IGEgYHByaW50a2AgZXJyb3IgbWVzc2FnZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGEgYFdBUk5fT05fT05DRSgxKWAuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBidWcgYXNzZXJ0aW9uIOKAkyB0aGUgZGV2ZWxvcGVyIGlzIGVzc2VudGlhbGx5IHNheWluZywgXCJ0aGlzIGRlZmF1bHQgY2FzZSAqc2hvdWxkKiBuZXZlciBiZSBoaXQuXCIgTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiaXMgdGhpcyB3b3J0aCBmdXp6aW5nP1wiIEFic29sdXRlbHkuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBlaXRoZXIgY29uZmlybSB0aGUgYXNzdW1wdGlvbiBvciwgbW9yZSBpbXBvcnRhbnRseSwgKnZpb2xhdGUqIGl0IGFuZCByZXZlYWwgYSBoaWRkZW4gYnVnLiBGaW5kaW5nIGEgcGF0aCB0aGF0IHRyaWdnZXJzIHRoYXQgYFdBUk5fT05fT05DRWAgd291bGQgYmUgYSBncmVhdCBvdXRjb21lLlxuXG5UaGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYF9fYXBpY19hY2NlcHRfaXJxYCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYEtWTWAgYW5kIGBLVk1fWDg2YCwgYnV0IGxldCdzIHNlZSBpZiBwbGFpbiBgS1ZNYCBpcyBlbm91Z2guIEFoLCB5ZXMsIGxvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSwgYGFyY2gveDg2L2t2bS9sYXBpYy5jYCBnZXRzIGNvbXBpbGVkIHdpdGggYENPTkZJR19LVk1gIGVuYWJsZWQuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBmdXp6ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3ODgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDo0MS42OTgzMTU1NjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjgyMTY0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGFwaWMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlPTY9aW5jbHVkZSAkKHNyY3RyZWUpL3ZpcnQva3ZtL01ha2VmaWxlLmt2bVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS03LVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTo4Omt2bS15XFx0XFx0XFx0Kz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBwbXUubyBtdHJyLm8gXFxcXFxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS05LVxcdFxcdFxcdCAgIGRlYnVnZnMubyBtbXUvbW11Lm8gbW11L3BhZ2VfdHJhY2subyBtbXUvc3B0ZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjQzLjY2NjU0MDQwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODM0MTc4NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQgbG9va3MgbGlrZSBgQ09ORklHX0tWTWAgaXMgcmVsZXZhbnQsIGJ1dCBoYW5nIG9uLCBgS1ZNYCBpdHNlbGYgaXMgYSB0cmlzdGF0ZSwgYW5kIHRoYXQgcHJvbXB0IHNwZWNpZmljYWxseSB0ZWxscyB1cyB0byBhdm9pZCBnZW5lcmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQuIEkgbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLiBJcyBgS1ZNYCB0b28gZ2VuZXJpYyBoZXJlPyBZZXMsIGl0IGlzLiBUaGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSBhbnkgKnNwZWNpZmljKiBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIExBUElDIHRoYXQgYXJlIGVuYWJsZWQ/IE5vcGUsIGBsYXBpYy5vYCBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBga3ZtLXlgLiBTbywgSSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYW55IHNwZWNpZmljIGNvbmZpZ3MgaW4gYEVuYWJsZUNvbmZpZ3NgLiBUaGF0IGNhbiBzdGF5IGVtcHR5LlxuXG5Ob3csIHRoZSBtb3JlIGltcG9ydGFudCBxdWVzdGlvbjogSXMgdGhpcyBjaGFuZ2UgXCJmdW5jdGlvbmFsXCIgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmU/IEkgbmVlZCB0byBjb25zdWx0IHRoZSBjcml0ZXJpYS4gSXQgc2F5cyBhIHBhdGNoIGlzbid0IFwiV29ydGhGdXp6aW5nXCIgaWYgaXQgaW52b2x2ZXMgdGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIG9yIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgYWxzbyBleGNsdWRlcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuSG1tLCB0aGlzIHBhdGNoIGNoYW5nZXMgYHByaW50a2AgdG8gYFdBUk5fT05fT05DRWAuIElzIHRoYXQgcHVyZWx5IGRlY29yYXRpdmU/IEFic29sdXRlbHkgbm90LiBgV0FSTl9PTl9PTkNFYCBpcyBhIGJ1ZyBhc3NlcnRpb24sIGEgZGVsaWJlcmF0ZSBjaGVjayBmb3IgYSBzcGVjaWZpYyBjb25kaXRpb24uIEluIHRoZSBjb250ZXh0IG9mIHN5emthbGxlciwgYSBgV0FSTmAgZXNzZW50aWFsbHkgKmlzKiBhIGNyYXNoLiBUaGUgYXV0aG9yIGlzIGV4cGxpY2l0bHkgYXNraW5nIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHRvIHRyZWF0IHRoaXMgY29uZGl0aW9uIGFzIGEgY3JpdGljYWwgYnVnLiBUaGlzIGlzIGhpZ2hseSByZWxldmFudCB0byBmdXp6aW5nLiBJdCdzIGEgY2xlYXIgaW5kaWNhdGlvbiBvZiBhIHBvc3NpYmxlIGxhdGVudCBwcm9ibGVtLiBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgdHJ1ZWAuXG5cbkJ1dCB0aGF0IG1lYW5zIEkgbmVlZCB0byBwcm92aWRlIGBGb2N1c1N5bWJvbHNgLiBPa2F5LCB0aGF0IHNob3VsZCBiZSBgX19hcGljX2FjY2VwdF9pcnFgLiBXYWl0LCBpc24ndCB0aGF0IGEgc3RhdGljIGZ1bmN0aW9uPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXQncyByZWFjaGFibGUgZnJvbSB0aGUga2VybmVsJ3MgcGVyc3BlY3RpdmUgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQyMywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDo1MC41MDA3MjE3NjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTQ3NDg2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2FwaWNfYWNjZXB0X2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vbGFwaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vbGFwaWMuYz04MTY9aW50IGt2bV9sYXBpY19maW5kX2hpZ2hlc3RfaXJyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MTcte1xcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgxODpcXHQvKiBUaGlzIG1heSByYWNlIHdpdGggc2V0dGluZyBvZiBpcnIgaW4gX19hcGljX2FjY2VwdF9pcnEoKSBhbmRcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzo4MTk6XFx0ICogdmFsdWUgcmV0dXJuZWQgbWF5IGJlIHdyb25nLCBidXQga3ZtX3ZjcHVfa2ljaygpIGluIF9fYXBpY19hY2NlcHRfaXJxXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODIwLVxcdCAqIHdpbGwgY2F1c2Ugdm1leGl0IGltbWVkaWF0ZWx5IGFuZCB0aGUgdmFsdWUgd2lsbCBiZSByZWNhbGN1bGF0ZWRcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTgyNT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2xhcGljX2ZpbmRfaGlnaGVzdF9pcnIpO1xcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyNi1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzo4Mjc6c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MjgtXFx0XFx0XFx0ICAgICBpbnQgdmVjdG9yLCBpbnQgbGV2ZWwsIGludCB0cmlnX21vZGUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz04MzE9aW50IGt2bV9hcGljX3NldF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM1LVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgzNjpcXHRyZXR1cm4gX19hcGljX2FjY2VwdF9pcnEoYXBpYywgaXJxLVxcdTAwM2VkZWxpdmVyeV9tb2RlLCBpcnEtXFx1MDAzZXZlY3RvcixcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MzctXFx0XFx0XFx0XFx0IGlycS1cXHUwMDNlbGV2ZWwsIGlycS1cXHUwMDNldHJpZ19tb2RlLCBydGNfc3RhdHVzKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTEzMzY9aW50IF9fa3ZtX2lycV9kZWxpdmVyeV90b19hcGljKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9sYXBpYyAqc3JjLFxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMTM5Ny0gKi9cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzoxMzk4OnN0YXRpYyBpbnQgX19hcGljX2FjY2VwdF9pcnEoc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IGRlbGl2ZXJ5X21vZGUsXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMTM5OS1cXHRcXHRcXHQgICAgIGludCB2ZWN0b3IsIGludCBsZXZlbCwgaW50IHRyaWdfbW9kZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTMwMDg9aW50IGt2bV9hcGljX2xvY2FsX2RlbGl2ZXIoc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IGx2dF90eXBlKVxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzAxOC1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzozMDE5OlxcdFxcdHIgPSBfX2FwaWNfYWNjZXB0X2lycShhcGljLCBtb2RlLCB2ZWN0b3IsIDEsIHRyaWdfbW9kZSwgTlVMTCk7XFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzAyMC1cXHRcXHRpZiAociBcXHUwMDI2XFx1MDAyNiBsdnRfdHlwZSA9PSBBUElDX0xWVFBDIFxcdTAwMjZcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjUxLjE1MDIwMjI5OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDUyOTU5MDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBhIEtWTSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgS1ZNIHBhdGNoIGFuZCB0cnlpbmcgdG8gZGVjaWRlIGlmIGl0J3Mgd29ydGggZmxhZ2dpbmcgZm9yIGZ1enppbmcuIEluaXRpYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGtleSBzeW1ib2xzIGluIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLCBzbyBJJ3ZlIHplcm9lZCBpbiBvbiBgX19hcGljX2FjY2VwdF9pcnFgLCBga3ZtX2FwaWNfc2V0X2lycWAsIGFuZCBga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcmAuIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gncyBpbXBhY3QuIEkgYWxzbyBjb25zaWRlciBmb2N1c2luZyBqdXN0IG9uIGBfX2FwaWNfYWNjZXB0X2lycWAuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBpbnZvbHZlIHJlcGxhY2luZyBhIGBwcmludGtgIHN0YXRlbWVudCB3aXRoIGBXQVJOX09OX09OQ0UoMSlgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBwdXJlbHkgZGVjb3JhdGl2ZT8gRG9lcyBpdCBhY3R1YWxseSBjaGFuZ2UgdGhlICpleGVjdXRpb24qIGZsb3c/XCIgVGhlIGRvY3VtZW50YXRpb24gc2F5cyB0aGluZ3MgbGlrZSBgcHJpbnRrYCBhcmUgXCJwdXJlbHkgZGVjb3JhdGl2ZVwiLCBidXQgaXMgdGhhdCByZWFsbHkgdHJ1ZSBpbiB0aGlzIGNhc2U/IEkgbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGNhcmVmdWxseS4gYFdBUk5fT05fT05DRWAgZG9lc24ndCAqZnVuY3Rpb25hbGx5KiBhbHRlciBleGVjdXRpb24gaW4gbW9zdCBjYXNlcyAodW5sZXNzIGBwYW5pY19vbl93YXJuYCBpcyBzZXQpLlxuXG5Ib3dldmVyLCBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nLCBhIGBXQVJOYCAqaXMqIGEgY3Jhc2ghIEEgZGV2ZWxvcGVyIGhhcyBleHBsaWNpdGx5IGNoYW5nZWQgdGhpcyBmcm9tIGFuIGluZm9ybWF0aXZlIGxvZyBtZXNzYWdlIHRvIGFuIGFzc2VydGlvbi4gVGhleSBhcmUgZXNzZW50aWFsbHkgc2F5aW5nLCBcIklmIHRoaXMgY29uZGl0aW9uIGlzIGhpdCwgaXQgc2lnbmlmaWVzIGEgcHJvYmxlbSwgYW5kIHdlICp3YW50KiB0byBrbm93IGFib3V0IGl0LlwiXG5cbklmIEkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCBzeXotY2x1c3RlciB3aWxsIGlnbm9yZSB0aGlzIHBhdGNoLCBhbmQgd2UgbWlnaHQgbWlzcyB0cmlnZ2VyaW5nIHRoZSB3YXJuaW5nLiBUaGF0J3MgdW5hY2NlcHRhYmxlLiBXZSAqYWJzb2x1dGVseSogd2FudCB0byBmdXp6IHRoaXMgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBgV0FSTl9PTl9PTkNFYC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjaGFuZ2VzIGluIHRoZSBwYXRjaC4gTm9wZSwganVzdCB0aGUgd2FybmluZy4gU28gdGhpcyBpcyBhIGZvY3VzZWQgY2hhbmdlLlxuXG5JJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBmb2N1cyBzeW1ib2xzIHJlbWFpbiBhczogYF9fYXBpY19hY2NlcHRfaXJxYCwgYGt2bV9hcGljX3NldF9pcnFgLCBhbmQgYGt2bV9hcGljX2xvY2FsX2RlbGl2ZXJgLiBUaGVyZSBhcmUgbm8gS1ZNLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgc2VlbSByZWxldmFudCBoZXJlLCBpdCdzIHByZXR0eSBnZW5lcmljLlxuXG5JIG5lZWQgdG8gYmUgdmVyeSBjbGVhciBpbiBteSByZWFzb25pbmc6IFdoaWxlIGBXQVJOX09OX09OQ0VgIGlzbid0IGEgZGlyZWN0IGNvZGUgY2hhbmdlIGluIG1vc3QgY2FzZXMsIGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSBmcm9tIGEgdGVzdGluZy9mdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBhbHRlcnMgdGhlIHRlc3Qgb3JhY2xlOyB3aGF0IHdlIGNvbnNpZGVyIGEgYnVnLiBUaGlzIG1ha2VzIGl0IHdvcnRoIGZ1enppbmcgdG8gZGlzY292ZXIgd2hhdCBjb25kaXRpb25zIGFyZSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoaXMgd2FybmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA3OCwiT3V0cHV0VG9rZW5zIjoxMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTc6MzE6MDEuNjc5Nzk1NTY5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2FwaWNfYWNjZXB0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfc2V0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfbG9jYWxfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcHJpbnRrIHdpdGggYSBXQVJOX09OX09OQ0UuIFdoaWxlIHRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGNvcmUgbG9naWMsIGl0IGludHJvZHVjZXMgYSBuZXcgYnVnIGFzc2VydGlvbiAoYSB3YXJuaW5nKSB0aGF0IHN5emthbGxlciBjYW4gZGV0ZWN0IGFzIGEgY3Jhc2guIEZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgdmFsdWFibGUgdG8gdmVyaWZ5IGlmIHRoZSAndW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZScgY29uZGl0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIGd1ZXN0IHNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYXBpY19hY2NlcHRfaXJxXCIsXG4gICAgXCJrdm1fYXBpY19zZXRfaXJxXCIsXG4gICAgXCJrdm1fYXBpY19sb2NhbF9kZWxpdmVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBwcmludGsgd2l0aCBhIFdBUk5fT05fT05DRS4gV2hpbGUgdGhpcyBkb2Vzbid0IGNoYW5nZSB0aGUgY29yZSBsb2dpYywgaXQgaW50cm9kdWNlcyBhIG5ldyBidWcgYXNzZXJ0aW9uIChhIHdhcm5pbmcpIHRoYXQgc3l6a2FsbGVyIGNhbiBkZXRlY3QgYXMgYSBjcmFzaC4gRnV6emluZyB0aGlzIGNoYW5nZSBpcyB2YWx1YWJsZSB0byB2ZXJpZnkgaWYgdGhlICd1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlJyBjb25kaXRpb24gaXMgcmVhY2hhYmxlIGZyb20gZ3Vlc3Qgc3BhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowrqp8l[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-15 17:04:45 +0000 UTC FinishedAt: 2026-07-15 17:31:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "babe08404e1993697a523e60bc0f9d096ffe1ef8", "config_name": "upstream-apparmor-kasan.config", "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "babe08404e1993697a523e60bc0f9d096ffe1ef8", "config_name": "upstream-apparmor-kasan.config", "series_id": "285c60dc-0c66-4f6f-a014-0d62fcfba550" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "__apic_accept_irq", "kvm_apic_set_irq", "kvm_apic_local_deliver" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19hcGljX2FjY2VwdF9pcnEmIzM0OywKICAgICYjMzQ7a3ZtX2FwaWNfc2V0X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fYXBpY19sb2NhbF9kZWxpdmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgcHJpbnRrIHdpdGggYSBXQVJOX09OX09OQ0UuIFdoaWxlIHRoaXMgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSBjb3JlIGxvZ2ljLCBpdCBpbnRyb2R1Y2VzIGEgbmV3IGJ1ZyBhc3NlcnRpb24gKGEgd2FybmluZykgdGhhdCBzeXprYWxsZXIgY2FuIGRldGVjdCBhcyBhIGNyYXNoLiBGdXp6aW5nIHRoaXMgY2hhbmdlIGlzIHZhbHVhYmxlIHRvIHZlcmlmeSBpZiB0aGUgJiMzOTt1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlJiMzOTsgY29uZGl0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIGd1ZXN0IHNwYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjNmYmM4NzQ2ZjljZTUzNTc2MTU2NjJjNWQ1MWU2YzE5ODcwYTJkNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDE1IDE3OjMwOjExIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcbmluZGV4IDQwNzhlNjI0Y2E2Njc1Li5jNzc1Nzg5ZGJkYjNjMiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xuQEAgLTE0ODUsOCAmIzQzOzE0ODUsNyBAQCBzdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxuIFx0XHRicmVhaztcbiBcbiBcdGRlZmF1bHQ6XG4tXHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtUT0RPOiB1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlICV4XFxuXCYjMzQ7LFxuLVx0XHQgICAgICAgZGVsaXZlcnlfbW9kZSk7XG4mIzQzO1x0XHRXQVJOX09OX09OQ0UoMSk7XG4gXHRcdGJyZWFrO1xuIFx0fVxuIFx0cmV0dXJuIHJlc3VsdDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNzozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fYXBpY19hY2NlcHRfaXJxJiMzNDssCiAgICAmIzM0O2t2bV9hcGljX3NldF9pcnEmIzM0OywKICAgICYjMzQ7a3ZtX2FwaWNfbG9jYWxfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIHByaW50ayB3aXRoIGEgV0FSTl9PTl9PTkNFLiBXaGlsZSB0aGlzIGRvZXNuJiMzOTt0IGNoYW5nZSB0aGUgY29yZSBsb2dpYywgaXQgaW50cm9kdWNlcyBhIG5ldyBidWcgYXNzZXJ0aW9uIChhIHdhcm5pbmcpIHRoYXQgc3l6a2FsbGVyIGNhbiBkZXRlY3QgYXMgYSBjcmFzaC4gRnV6emluZyB0aGlzIGNoYW5nZSBpcyB2YWx1YWJsZSB0byB2ZXJpZnkgaWYgdGhlICYjMzk7dW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZSYjMzk7IGNvbmRpdGlvbiBpcyByZWFjaGFibGUgZnJvbSBndWVzdCBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjNmYmM4NzQ2ZjljZTUzNTc2MTU2NjJjNWQ1MWU2YzE5ODcwYTJkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDE1IDE3OjMwOjExIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2xhcGljLmMgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuYwppbmRleCA0MDc4ZTYyNGNhNjY3NS4uYzc3NTc4OWRiZGIzYzIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9sYXBpYy5jCkBAIC0xNDg1LDggJiM0MzsxNDg1LDcgQEAgc3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSwKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgotCQlwcmludGsoS0VSTl9FUlIgJiMzNDtUT0RPOiB1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlICV4XG4mIzM0OywKLQkJICAgICAgIGRlbGl2ZXJ5X21vZGUpOwomIzQzOwkJV0FSTl9PTl9PTkNFKDEpOwogCQlicmVhazsKIAl9CiAJcmV0dXJuIHJlc3VsdDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgzOAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDM4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLVk0veDg2IFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGNoYW5nZXMgYGFyY2gveDg2L2t2bS9sYXBpYy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgX19hcGljX2FjY2VwdF9pcnFgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgbG9nZ2luZyBjaGFuZ2UuIEl0IHN3YXBzIGEgYHByaW50ayhLRVJOX0VSUiAuLi4pYCBmb3IgYSBgV0FSTl9PTl9PTkNFKDEpYCB3aXRoaW4gdGhlIGBkZWZhdWx0YCBjYXNlIG9mIHRoZSBgZGVsaXZlcnlfbW9kZWAgc3dpdGNoLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2xhc3NpZnkgdGhpcyBhcyBhICYjMzQ7ZGVjb3JhdGl2ZSBjaGFuZ2UmIzM0OyDigJMganVzdCBhbHRlcmluZyB0aGUgbG9nZ2luZyBvdXRwdXQuIEJ1dCB3YWl0Li4uCgpUaGUgcHJvbXB0IHNwZWNpZmllcyBleGNlcHRpb25zOiBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGBwcmludGtgLCBjb25zdGFudHMgd2l0aG91dCBmdW5jdGlvbmFsIGltcGFjdCwgYW5kIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJcyBgV0FSTl9PTl9PTkNFYCBwdXJlbHkgZGVjb3JhdGl2ZT8gTm90IGlmIHlvdSYjMzk7cmUgdGhpbmtpbmcgYWJvdXQgZnV6emluZyEgVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLgoKYHByaW50a2AganVzdCBsb2dzOyBpdOKAmXMgYSBwYXNzaXZlIG9ic2VydmF0aW9uLiBIb3dldmVyLCBgV0FSTl9PTl9PTkNFYCBpcyBhIGNydWNpYWwgZGlmZmVyZW5jZS4gSW4gYSBmdXp6ZXImIzM5O3Mgd29ybGQsIHRoYXQgd2FybmluZyBpcyBhIHBvdGVudGlhbCBidWcgcmVwb3J0LCBlc3BlY2lhbGx5IGlmIGBwYW5pY19vbl93YXJuYCBpcyBlbmFibGVkLiBJdCBtZWFucyBpZiB0aGF0ICYjMzQ7ZGVmYXVsdCYjMzQ7IGNhc2UgaXMgaGl0LCBpbnN0ZWFkIG9mIGEgc2lsZW50IGVycm9yLCBvciBqdXN0IGEgbG9nZ2VkIGVycm9yLCBzeXprYWxsZXIgd2lsbCAqbm93KiByZXBvcnQgYSBidWcuIFRoaXMgaXMgYSBzaWduaWZpY2FudCB0cmFuc2Zvcm1hdGlvbiEgSXTigJlzIG5vIGxvbmdlciBqdXN0IGxvZ2dpbmc7IGl0JiMzOTtzIHRyYW5zaXRpb25pbmcgYSBzaWxlbnQgb3IgbG9nZ2VkIGVycm9yIGludG8gYSBmdXp6ZXItZGV0ZWN0YWJsZSBldmVudC4gVGhpcyBwYXRjaCBoYXMgYmVjb21lIG11Y2ggbW9yZSByZWxldmFudCB0byBmdXp6aW5nIHRoYW4gaXQgZmlyc3QgYXBwZWFyZWQuIE5vdyBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBfX2FwaWNfYWNjZXB0X2lycWAgdG8gY29uZmlybSB0aGUgY29udGV4dCBhbmQgaW1wYWN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYXBpY19hY2NlcHRfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmM9ODE2PWludCBrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MTcte1xuYXJjaC94ODYva3ZtL2xhcGljLmM6ODE4Olx0LyogVGhpcyBtYXkgcmFjZSB3aXRoIHNldHRpbmcgb2YgaXJyIGluIF9fYXBpY19hY2NlcHRfaXJxKCkgYW5kXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzo4MTk6XHQgKiB2YWx1ZSByZXR1cm5lZCBtYXkgYmUgd3JvbmcsIGJ1dCBrdm1fdmNwdV9raWNrKCkgaW4gX19hcGljX2FjY2VwdF9pcnFcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyMC1cdCAqIHdpbGwgY2F1c2Ugdm1leGl0IGltbWVkaWF0ZWx5IGFuZCB0aGUgdmFsdWUgd2lsbCBiZSByZWNhbGN1bGF0ZWRcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz04MjU9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9sYXBpY19maW5kX2hpZ2hlc3RfaXJyKTtcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyNi1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgyNzpzdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODI4LVx0XHRcdCAgICAgaW50IHZlY3RvciwgaW50IGxldmVsLCBpbnQgdHJpZ19tb2RlLFxuLS1cbmFyY2gveDg2L2t2bS9sYXBpYy5jPTgzMT1pbnQga3ZtX2FwaWNfc2V0X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbGFwaWNfaXJxICppcnEsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM1LVxuYXJjaC94ODYva3ZtL2xhcGljLmM6ODM2Olx0cmV0dXJuIF9fYXBpY19hY2NlcHRfaXJxKGFwaWMsIGlycS1cdTAwM2VkZWxpdmVyeV9tb2RlLCBpcnEtXHUwMDNldmVjdG9yLFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM3LVx0XHRcdFx0IGlycS1cdTAwM2VsZXZlbCwgaXJxLVx1MDAzZXRyaWdfbW9kZSwgcnRjX3N0YXR1cyk7XG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MTMzNj1pbnQgX19rdm1faXJxX2RlbGl2ZXJ5X3RvX2FwaWMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2xhcGljICpzcmMsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMTM5Ny0gKi9cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjEzOTg6c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTEzOTktXHRcdFx0ICAgICBpbnQgdmVjdG9yLCBpbnQgbGV2ZWwsIGludCB0cmlnX21vZGUsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MzAwOD1pbnQga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcihzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgbHZ0X3R5cGUpXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzAxOC1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjMwMTk6XHRcdHIgPSBfX2FwaWNfYWNjZXB0X2lycShhcGljLCBtb2RlLCB2ZWN0b3IsIDEsIHRyaWdfbW9kZSwgTlVMTCk7XG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMDIwLVx0XHRpZiAociBcdTAwMjZcdTAwMjYgbHZ0X3R5cGUgPT0gQVBJQ19MVlRQQyBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNSAxNzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDE1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBLVk0gcGF0Y2gsIGFuZCB0aGUga2V5IGNoYW5nZSBpcyB0aGlzIHJlcGxhY2VtZW50IG9mIGBwcmludGtgIHdpdGggYFdBUk5fT05fT05DRSgxKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgd2FpdCwgYF9fYXBpY19hY2NlcHRfaXJxYCBpcyBhICpjb3JlKiBLVk0gZnVuY3Rpb24g4oCTIHRoYXQmIzM5O3MgcG90ZW50aWFsbHkgaW50ZXJlc3RpbmcuIE5vdywgaXMgdGhpcyBjb25zaWRlcmVkIGZ1bmN0aW9uYWwgZm9yIG91ciBwdXJwb3Nlcz8gWWVzLCBhYnNvbHV0ZWx5ISBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlOyBpdCYjMzk7cyBpbnRyb2R1Y2luZyBhICpuZXcgYnVnIGNoZWNrKi4gVGhpcyBgV0FSTl9PTl9PTkNFYCBjb25zdHJ1Y3QgaXMgYSBjcml0aWNhbCBhZGRpdGlvbi4gVGhlIHBvaW50IGhlcmUgaXMgdGhhdCB3ZSBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgYW5kIGNhdGNoIGl0IHdpdGggU3l6a2FsbGVyLCBzbyB0aGlzIGNoYW5nZSB3aWxsIGNyZWF0ZSBtb3JlIGZ1enppbmcgc3VyZmFjZS4KCk9rYXksIG5vdyBsZXQgbWUgc3RlcCBiYWNrIGFuZCB0aGluayBjYXJlZnVsbHkgYWJvdXQgd2hhdCBgV0FSTl9PTl9PTkNFYCBhY3R1YWxseSBkb2VzLiBXaGlsZSBpdCBkb2VzIHRlY2huaWNhbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93ICpzbGlnaHRseSog4oCTIGJ5IHRyYXBwaW5nLCBwcmludGluZyBhIHdhcm5pbmcsIGFuZCBjb250aW51aW5nIOKAkyB0aGUgcHJpbWFyeSBpbXBhY3QgaXMgdGhhdCBpdCYjMzk7cyBhICpidWcgYXNzZXJ0aW9uKi4gVGhhdCYjMzk7cyB0aGUga2V5LgoKTm93LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSBwcm9tcHQ6IEl0IGV4cGxpY2l0bHkgc2F5cyB0byBjb25zaWRlciB0aGUgcGF0Y2ggd29ydGggZnV6emluZyBpZiBpdCYjMzk7cyAqbm90KiBqdXN0IGFib3V0IGRvY3VtZW50YXRpb24sIEtjb25maWcsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIG9yIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgdGhhdCAqZG9uJiMzOTt0KiBhbHRlciBleGVjdXRpb24gZmxvdy4gV2VsbCwgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzIHRoaXM6IGlzIGBXQVJOX09OX09OQ0VgIGNvbnNpZGVyZWQganVzdCBsb2dnaW5nPyBUaGUgYW5zd2VyIGlzIGEgY2xlYXIgKm5vKi4gSXQmIzM5O3MgYSBidWcgKmFzc2VydGlvbiogdGhhdCB3b3VsZCBsaWtlbHkgYmUgd29ydGggZnV6emluZywgYW5kIGlzIGEgc3Ryb25nIGluZGljYXRpb24gd2UgbWF5IHdhbnQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIHRyaWdnZXIgdGhpcy4KCkZpbmFsbHksIGp1c3QgdG8gYmUgc3VyZSwgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBLVk0tc3BlY2lmaWMgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIFRoZSBtYWluIG9uZSBoZXJlIHdpbGwgYmUgYENPTkZJR19LVk1gLCB3aGljaCB3ZSBuZWVkLiBTbywgdGhpcyBwYXRjaCBhcHBlYXJzIHRvIGJlIHdvcnRod2hpbGUgYW5kIHNob3VsZCBhZGQgc29tZSBmdXp6aW5nIHN1cmZhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzODMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0MzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTaWduaWZpY2FuY2Ugb2YgYFdBUk5fT05fT05DRWAgaW4gRnV6emluZyBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBXQVJOX09OX09OQ0VgIGFzc2VydGlvbiwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFuZ2UgaW52b2x2aW5nIGl0IHdhcnJhbnRzIGZ1enppbmcuIFRoZSBwcm9tcHQgZGVmaW5lcyB3aGF0IHNob3VsZG4mIzM5O3QgYmUgZnV6emVkLCBhbmQgSSYjMzk7bSB0cnlpbmcgdG8gZGVjaWRlIGlmIHRoaXMgZmFsbHMgdW5kZXIgb25lIG9mIHRob3NlIGNhdGVnb3JpZXMuIEkgc2VlIHRoYXQgaXQgZXhwbGljaXRseSBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24sIEtjb25maWcsIG9yIGNvbW1lbnRzIGFyZSBub3Qgd29ydGggZnV6emluZy4gSXQgYWxzbyBsaXN0cyAmIzM0O1B1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzJiMzNDsgYXMgbm90IHdvcnRoIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uc2lkZXIgaWYgYFdBUk5fT05fT05DRWAgY291bGQgYmUgZGVlbWVkICYjMzQ7cHVyZWx5IGRlY29yYXRpdmUmIzM0Oy4gSG93ZXZlciwgSSYjMzk7bSBxdWlja2x5IHJlYWxpemluZyB0aGF0JiMzOTtzIGluY29ycmVjdC4gYFdBUk5fT05fT05DRWAgaXMgKm5vdCoganVzdCBhIGxvZzsgaXQmIzM5O3MgYW4gYXNzZXJ0aW9uLiBJdCBjYW4gdHJpZ2dlciBhIGtlcm5lbCBwYW5pYyBpZiBgcGFuaWNfb25fd2FybmAgaXMgc2V0LCB3aGljaCBpdCBtb3N0IGxpa2VseSB3aWxsIGJlIHNldCBmb3IgZnV6emluZy4KClRoZW4gSSB0aGluazogaWYgaXQmIzM5O3MgKm9ubHkqIGEgc3dhcCBvdXQgZnJvbSBgcHJpbnRrYCB0byBgV0FSTl9PTl9PTkNFYCwgaXMgdGhlIGV4ZWN1dGlvbiBmbG93IGVzc2VudGlhbGx5IHRoZSBzYW1lPyBCb3RoIGxvZyBhIG1lc3NhZ2UgYW5kIGNvbnRpbnVlLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGUgc3RhY2sgZHVtcCBhbmQgcG9zc2liaWxpdHkgb2YgYSBwYW5pYywgd2hpY2ggSSB0aGluayBpcyBzaWduaWZpY2FudCBoZXJlLiBCdXQgaXMgaXQganVzdCBkZWNvcmF0aXZlPyBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBleGNsdWRlcyBjaGFuZ2VzIHRvIGxvZ2dpbmcsIGJ1dCBpcyByZXBsYWNpbmcgYSBwcmludCBzdGF0ZW1lbnQgd2l0aCBhbiBhc3NlcnRpb24gc3RpbGwgY29uc2lkZXJlZCAmIzM0O2RlY29yYXRpdmUmIzM0OyBpbiB0aGlzIHNpdHVhdGlvbj8KCkkgaGF2ZSB0byBhY2tub3dsZWRnZSB0aGF0IGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcsIHRoaXMgaXMgYSB2ZXJ5IHNpZ25pZmljYW50IGNoYW5nZS4gRnV6emluZyBpcyBhbGwgYWJvdXQgdHJpZ2dlcmluZyB3YXJuaW5ncywgYnVncywgYW5kIGVkZ2UgY2FzZXMuIFJlcGxhY2luZyBhIGBwcmludGtgIHdpdGggYSBgV0FSTl9PTl9PTkNFYCBleHBvc2VzIGEgcG90ZW50aWFsbHkgZXhwbG9pdGFibGUgYnVnIHRoYXQgdGhlIGZ1enplciBjYW4gbm93IGRldGVjdC4gSWYgd2UgKmRvbiYjMzk7dCogZnV6eiBpdCwgd2UmIzM5O3JlIGxpa2VseSB0byBtaXNzIGEgcmVhbCBidWcuCgpTbywgaWYgdGhlIGNoYW5nZSBpcyAqc29sZWx5KiBhIHJlcGxhY2VtZW50IG9mIGBwcmludGtgIHdpdGggYFdBUk5fT05fT05DRWAsIGl0ICppcyogd29ydGggZnV6emluZy4gVGhlIGRldmVsb3BlciBleHBsaWNpdGx5IHB1dCB0aGF0IGluIHRoZXJlLCBhbmQgdGhleSB3YW50IHRvIGtub3cgaWYgaXQgY2FuIGJlIHRyaWdnZXJlZC4KTm93LCBsZXQgbWUgY2hlY2sgYF9fYXBpY19hY2NlcHRfaXJxYC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0NzA6XHRcdFx0cmVzdWx0ID0gMTtcbjE0NzE6XHRcdFx0YXBpYy1cdTAwM2VzaXBpX3ZlY3RvciA9IHZlY3RvcjtcbjE0NzI6XHRcdFx0LyogbWFrZSBzdXJlIHNpcGlfdmVjdG9yIGlzIHZpc2libGUgZm9yIHRoZSByZWNlaXZlciAqL1xuMTQ3MzpcdFx0XHRzbXBfd21iKCk7XG4xNDc0Olx0XHRcdHNldF9iaXQoS1ZNX0FQSUNfU0lQSSwgXHUwMDI2YXBpYy1cdTAwM2VwZW5kaW5nX2V2ZW50cyk7XG4xNDc1Olx0XHRcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9FVkVOVCwgdmNwdSk7XG4xNDc2Olx0XHRcdGt2bV92Y3B1X2tpY2sodmNwdSk7XG4xNDc3Olx0XHRcdGJyZWFrO1xuMTQ3ODpcdFxuMTQ3OTpcdFx0Y2FzZSBBUElDX0RNX0VYVElOVDpcbjE0ODA6XHRcdFx0LypcbjE0ODE6XHRcdFx0ICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IGt2bV9hcGljX2xvY2FsX2RlbGl2ZXIoKSB3aXRoIExWVDAsXG4xNDgyOlx0XHRcdCAqIGJlZm9yZSBOTUkgd2F0Y2hkb2cgd2FzIGVuYWJsZWQuIEFscmVhZHkgaGFuZGxlZCBieVxuMTQ4MzpcdFx0XHQgKiBrdm1fYXBpY19hY2NlcHRfcGljX2ludHIoKS5cbjE0ODQ6XHRcdFx0ICovXG4xNDg1Olx0XHRcdGJyZWFrO1xuMTQ4NjpcdFxuMTQ4NzpcdFx0ZGVmYXVsdDpcbjE0ODg6XHRcdFx0V0FSTl9PTl9PTkNFKDEpO1xuMTQ4OTpcdFx0XHRicmVhaztcbjE0OTA6XHRcdH1cbjE0OTE6XHRcdHJldHVybiByZXN1bHQ7XG4xNDkyOlx0fVxuMTQ5MzpcdFxuMTQ5NDpcdC8qXG4xNDk1Olx0ICogVGhpcyByb3V0aW5lIGlkZW50aWZpZXMgdGhlIGRlc3RpbmF0aW9uIHZjcHVzIG1hc2sgbWVhbnQgdG8gcmVjZWl2ZSB0aGVcbjE0OTY6XHQgKiBJT0FQSUMgaW50ZXJydXB0cy4gSXQgZWl0aGVyIHVzZXMga3ZtX2FwaWNfbWFwX2dldF9kZXN0X2xhcGljKCkgdG8gZmluZFxuMTQ5NzpcdCAqIG91dCB0aGUgZGVzdGluYXRpb24gdmNwdXMgYXJyYXkgYW5kIHNldCB0aGUgYml0bWFwIG9yIGl0IHRyYXZlcnNlcyB0b1xuMTQ5ODpcdCAqIGVhY2ggYXZhaWxhYmxlIHZjcHUgdG8gaWRlbnRpZnkgdGhlIHNhbWUuXG4xNDk5Olx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc4OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIGEgQnVnIEFzc2VydGlvbiBpbiBgX19hcGljX2FjY2VwdF9pcnFgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgY2hhbmdlOiBhIGBwcmludGtgIGVycm9yIG1lc3NhZ2UgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBhIGBXQVJOX09OX09OQ0UoMSlgLiBSaWdodCBhd2F5LCBJIHJlY29nbml6ZSB0aGlzIGFzIGEgYnVnIGFzc2VydGlvbiDigJMgdGhlIGRldmVsb3BlciBpcyBlc3NlbnRpYWxseSBzYXlpbmcsICYjMzQ7dGhpcyBkZWZhdWx0IGNhc2UgKnNob3VsZCogbmV2ZXIgYmUgaGl0LiYjMzQ7IE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O2lzIHRoaXMgd29ydGggZnV6emluZz8mIzM0OyBBYnNvbHV0ZWx5LiBUaGUgd2hvbGUgcG9pbnQgaXMgdG8gZWl0aGVyIGNvbmZpcm0gdGhlIGFzc3VtcHRpb24gb3IsIG1vcmUgaW1wb3J0YW50bHksICp2aW9sYXRlKiBpdCBhbmQgcmV2ZWFsIGEgaGlkZGVuIGJ1Zy4gRmluZGluZyBhIHBhdGggdGhhdCB0cmlnZ2VycyB0aGF0IGBXQVJOX09OX09OQ0VgIHdvdWxkIGJlIGEgZ3JlYXQgb3V0Y29tZS4KClRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgX19hcGljX2FjY2VwdF9pcnFgLCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyBgS1ZNYCBhbmQgYEtWTV9YODZgLCBidXQgbGV0JiMzOTtzIHNlZSBpZiBwbGFpbiBgS1ZNYCBpcyBlbm91Z2guIEFoLCB5ZXMsIGxvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSwgYGFyY2gveDg2L2t2bS9sYXBpYy5jYCBnZXRzIGNvbXBpbGVkIHdpdGggYENPTkZJR19LVk1gIGVuYWJsZWQuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBmdXp6ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xhcGljLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTY9aW5jbHVkZSAkKHNyY3RyZWUpL3ZpcnQva3ZtL01ha2VmaWxlLmt2bVxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTctXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6ODprdm0teVx0XHRcdCYjNDM7PSB4ODYubyBlbXVsYXRlLm8gaXJxLm8gbGFwaWMubyBjcHVpZC5vIHBtdS5vIG10cnIubyBcXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTktXHRcdFx0ICAgZGVidWdmcy5vIG1tdS9tbXUubyBtbXUvcGFnZV90cmFjay5vIG1tdS9zcHRlLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQyMwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDQxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQgbG9va3MgbGlrZSBgQ09ORklHX0tWTWAgaXMgcmVsZXZhbnQsIGJ1dCBoYW5nIG9uLCBgS1ZNYCBpdHNlbGYgaXMgYSB0cmlzdGF0ZSwgYW5kIHRoYXQgcHJvbXB0IHNwZWNpZmljYWxseSB0ZWxscyB1cyB0byBhdm9pZCBnZW5lcmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQuIEkgbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLiBJcyBgS1ZNYCB0b28gZ2VuZXJpYyBoZXJlPyBZZXMsIGl0IGlzLiBUaGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSBhbnkgKnNwZWNpZmljKiBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIExBUElDIHRoYXQgYXJlIGVuYWJsZWQ/IE5vcGUsIGBsYXBpYy5vYCBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBga3ZtLXlgLiBTbywgSSBkb24mIzM5O3QgbmVlZCB0byBzcGVjaWZ5IGFueSBzcGVjaWZpYyBjb25maWdzIGluIGBFbmFibGVDb25maWdzYC4gVGhhdCBjYW4gc3RheSBlbXB0eS4KCk5vdywgdGhlIG1vcmUgaW1wb3J0YW50IHF1ZXN0aW9uOiBJcyB0aGlzIGNoYW5nZSAmIzM0O2Z1bmN0aW9uYWwmIzM0OyBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZT8gSSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNyaXRlcmlhLiBJdCBzYXlzIGEgcGF0Y2ggaXNuJiMzOTt0ICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgaWYgaXQgaW52b2x2ZXMgdGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIG9yIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24mIzM5O3QgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIEl0IGFsc28gZXhjbHVkZXMgdW5yZWFjaGFibGUgY29kZSBwYXRocyBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpIbW0sIHRoaXMgcGF0Y2ggY2hhbmdlcyBgcHJpbnRrYCB0byBgV0FSTl9PTl9PTkNFYC4gSXMgdGhhdCBwdXJlbHkgZGVjb3JhdGl2ZT8gQWJzb2x1dGVseSBub3QuIGBXQVJOX09OX09OQ0VgIGlzIGEgYnVnIGFzc2VydGlvbiwgYSBkZWxpYmVyYXRlIGNoZWNrIGZvciBhIHNwZWNpZmljIGNvbmRpdGlvbi4gSW4gdGhlIGNvbnRleHQgb2Ygc3l6a2FsbGVyLCBhIGBXQVJOYCBlc3NlbnRpYWxseSAqaXMqIGEgY3Jhc2guIFRoZSBhdXRob3IgaXMgZXhwbGljaXRseSBhc2tpbmcgdGhlIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8gdHJlYXQgdGhpcyBjb25kaXRpb24gYXMgYSBjcml0aWNhbCBidWcuIFRoaXMgaXMgaGlnaGx5IHJlbGV2YW50IHRvIGZ1enppbmcuIEl0JiMzOTtzIGEgY2xlYXIgaW5kaWNhdGlvbiBvZiBhIHBvc3NpYmxlIGxhdGVudCBwcm9ibGVtLiBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgdHJ1ZWAuCgpCdXQgdGhhdCBtZWFucyBJIG5lZWQgdG8gcHJvdmlkZSBgRm9jdXNTeW1ib2xzYC4gT2theSwgdGhhdCBzaG91bGQgYmUgYF9fYXBpY19hY2NlcHRfaXJxYC4gV2FpdCwgaXNuJiMzOTt0IHRoYXQgYSBzdGF0aWMgZnVuY3Rpb24/IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB0aGUga2VybmVsJiMzOTtzIHBlcnNwZWN0aXZlIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE1IDE3OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYXBpY19hY2NlcHRfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2xhcGljLmM9ODE2PWludCBrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MTcte1xuYXJjaC94ODYva3ZtL2xhcGljLmM6ODE4Olx0LyogVGhpcyBtYXkgcmFjZSB3aXRoIHNldHRpbmcgb2YgaXJyIGluIF9fYXBpY19hY2NlcHRfaXJxKCkgYW5kXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzo4MTk6XHQgKiB2YWx1ZSByZXR1cm5lZCBtYXkgYmUgd3JvbmcsIGJ1dCBrdm1fdmNwdV9raWNrKCkgaW4gX19hcGljX2FjY2VwdF9pcnFcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyMC1cdCAqIHdpbGwgY2F1c2Ugdm1leGl0IGltbWVkaWF0ZWx5IGFuZCB0aGUgdmFsdWUgd2lsbCBiZSByZWNhbGN1bGF0ZWRcbi0tXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz04MjU9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV9sYXBpY19maW5kX2hpZ2hlc3RfaXJyKTtcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyNi1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgyNzpzdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODI4LVx0XHRcdCAgICAgaW50IHZlY3RvciwgaW50IGxldmVsLCBpbnQgdHJpZ19tb2RlLFxuLS1cbmFyY2gveDg2L2t2bS9sYXBpYy5jPTgzMT1pbnQga3ZtX2FwaWNfc2V0X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbGFwaWNfaXJxICppcnEsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM1LVxuYXJjaC94ODYva3ZtL2xhcGljLmM6ODM2Olx0cmV0dXJuIF9fYXBpY19hY2NlcHRfaXJxKGFwaWMsIGlycS1cdTAwM2VkZWxpdmVyeV9tb2RlLCBpcnEtXHUwMDNldmVjdG9yLFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM3LVx0XHRcdFx0IGlycS1cdTAwM2VsZXZlbCwgaXJxLVx1MDAzZXRyaWdfbW9kZSwgcnRjX3N0YXR1cyk7XG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MTMzNj1pbnQgX19rdm1faXJxX2RlbGl2ZXJ5X3RvX2FwaWMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2xhcGljICpzcmMsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMTM5Ny0gKi9cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjEzOTg6c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTEzOTktXHRcdFx0ICAgICBpbnQgdmVjdG9yLCBpbnQgbGV2ZWwsIGludCB0cmlnX21vZGUsXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmM9MzAwOD1pbnQga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcihzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgbHZ0X3R5cGUpXG4tLVxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzAxOC1cbmFyY2gveDg2L2t2bS9sYXBpYy5jOjMwMTk6XHRcdHIgPSBfX2FwaWNfYWNjZXB0X2lycShhcGljLCBtb2RlLCB2ZWN0b3IsIDEsIHRyaWdfbW9kZSwgTlVMTCk7XG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMDIwLVx0XHRpZiAociBcdTAwMjZcdTAwMjYgbHZ0X3R5cGUgPT0gQVBJQ19MVlRQQyBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTA3OAoJCQkJCQkJb3V0cHV0OiAxMzYKCQkJCQkJCXRob3VnaHRzOiA1ODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgYSBLVk0gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgS1ZNIHBhdGNoIGFuZCB0cnlpbmcgdG8gZGVjaWRlIGlmIGl0JiMzOTtzIHdvcnRoIGZsYWdnaW5nIGZvciBmdXp6aW5nLiBJbml0aWFsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQga2V5IHN5bWJvbHMgaW4gdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMsIHNvIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiBgX19hcGljX2FjY2VwdF9pcnFgLCBga3ZtX2FwaWNfc2V0X2lycWAsIGFuZCBga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcmAuIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0LiBJIGFsc28gY29uc2lkZXIgZm9jdXNpbmcganVzdCBvbiBgX19hcGljX2FjY2VwdF9pcnFgLgoKTm93LCB0aGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGludm9sdmUgcmVwbGFjaW5nIGEgYHByaW50a2Agc3RhdGVtZW50IHdpdGggYFdBUk5fT05fT05DRSgxKWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtJcyB0aGlzIHB1cmVseSBkZWNvcmF0aXZlPyBEb2VzIGl0IGFjdHVhbGx5IGNoYW5nZSB0aGUgKmV4ZWN1dGlvbiogZmxvdz8mIzM0OyBUaGUgZG9jdW1lbnRhdGlvbiBzYXlzIHRoaW5ncyBsaWtlIGBwcmludGtgIGFyZSAmIzM0O3B1cmVseSBkZWNvcmF0aXZlJiMzNDssIGJ1dCBpcyB0aGF0IHJlYWxseSB0cnVlIGluIHRoaXMgY2FzZT8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHRoaXMgY2FyZWZ1bGx5LiBgV0FSTl9PTl9PTkNFYCBkb2VzbiYjMzk7dCAqZnVuY3Rpb25hbGx5KiBhbHRlciBleGVjdXRpb24gaW4gbW9zdCBjYXNlcyAodW5sZXNzIGBwYW5pY19vbl93YXJuYCBpcyBzZXQpLgoKSG93ZXZlciwgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZywgYSBgV0FSTmAgKmlzKiBhIGNyYXNoISBBIGRldmVsb3BlciBoYXMgZXhwbGljaXRseSBjaGFuZ2VkIHRoaXMgZnJvbSBhbiBpbmZvcm1hdGl2ZSBsb2cgbWVzc2FnZSB0byBhbiBhc3NlcnRpb24uIFRoZXkgYXJlIGVzc2VudGlhbGx5IHNheWluZywgJiMzNDtJZiB0aGlzIGNvbmRpdGlvbiBpcyBoaXQsIGl0IHNpZ25pZmllcyBhIHByb2JsZW0sIGFuZCB3ZSAqd2FudCogdG8ga25vdyBhYm91dCBpdC4mIzM0OwoKSWYgSSByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAsIHN5ei1jbHVzdGVyIHdpbGwgaWdub3JlIHRoaXMgcGF0Y2gsIGFuZCB3ZSBtaWdodCBtaXNzIHRyaWdnZXJpbmcgdGhlIHdhcm5pbmcuIFRoYXQmIzM5O3MgdW5hY2NlcHRhYmxlLiBXZSAqYWJzb2x1dGVseSogd2FudCB0byBmdXp6IHRoaXMgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBgV0FSTl9PTl9PTkNFYC4KCkkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY2hhbmdlcyBpbiB0aGUgcGF0Y2guIE5vcGUsIGp1c3QgdGhlIHdhcm5pbmcuIFNvIHRoaXMgaXMgYSBmb2N1c2VkIGNoYW5nZS4KCkkmIzM5O20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBmb2N1cyBzeW1ib2xzIHJlbWFpbiBhczogYF9fYXBpY19hY2NlcHRfaXJxYCwgYGt2bV9hcGljX3NldF9pcnFgLCBhbmQgYGt2bV9hcGljX2xvY2FsX2RlbGl2ZXJgLiBUaGVyZSBhcmUgbm8gS1ZNLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgc2VlbSByZWxldmFudCBoZXJlLCBpdCYjMzk7cyBwcmV0dHkgZ2VuZXJpYy4KCkkgbmVlZCB0byBiZSB2ZXJ5IGNsZWFyIGluIG15IHJlYXNvbmluZzogV2hpbGUgYFdBUk5fT05fT05DRWAgaXNuJiMzOTt0IGEgZGlyZWN0IGNvZGUgY2hhbmdlIGluIG1vc3QgY2FzZXMsIGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSBmcm9tIGEgdGVzdGluZy9mdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBhbHRlcnMgdGhlIHRlc3Qgb3JhY2xlOyB3aGF0IHdlIGNvbnNpZGVyIGEgYnVnLiBUaGlzIG1ha2VzIGl0IHdvcnRoIGZ1enppbmcgdG8gZGlzY292ZXIgd2hhdCBjb25kaXRpb25zIGFyZSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoaXMgd2FybmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTUgMTc6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fYXBpY19hY2NlcHRfaXJxJiMzNDssCiAgICAmIzM0O2t2bV9hcGljX3NldF9pcnEmIzM0OywKICAgICYjMzQ7a3ZtX2FwaWNfbG9jYWxfZGVsaXZlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIHByaW50ayB3aXRoIGEgV0FSTl9PTl9PTkNFLiBXaGlsZSB0aGlzIGRvZXNuJiMzOTt0IGNoYW5nZSB0aGUgY29yZSBsb2dpYywgaXQgaW50cm9kdWNlcyBhIG5ldyBidWcgYXNzZXJ0aW9uIChhIHdhcm5pbmcpIHRoYXQgc3l6a2FsbGVyIGNhbiBkZXRlY3QgYXMgYSBjcmFzaC4gRnV6emluZyB0aGlzIGNoYW5nZSBpcyB2YWx1YWJsZSB0byB2ZXJpZnkgaWYgdGhlICYjMzk7dW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZSYjMzk7IGNvbmRpdGlvbiBpcyByZWFjaGFibGUgZnJvbSBndWVzdCBzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2FwaWNfYWNjZXB0X2lycSYjMzQ7LAogICAgJiMzNDtrdm1fYXBpY19zZXRfaXJxJiMzNDssCiAgICAmIzM0O2t2bV9hcGljX2xvY2FsX2RlbGl2ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSBwcmludGsgd2l0aCBhIFdBUk5fT05fT05DRS4gV2hpbGUgdGhpcyBkb2VzbiYjMzk7dCBjaGFuZ2UgdGhlIGNvcmUgbG9naWMsIGl0IGludHJvZHVjZXMgYSBuZXcgYnVnIGFzc2VydGlvbiAoYSB3YXJuaW5nKSB0aGF0IHN5emthbGxlciBjYW4gZGV0ZWN0IGFzIGEgY3Jhc2guIEZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgdmFsdWFibGUgdG8gdmVyaWZ5IGlmIHRoZSAmIzM5O3Vuc3VwcG9ydGVkIGRlbGl2ZXJ5IG1vZGUmIzM5OyBjb25kaXRpb24gaXMgcmVhY2hhYmxlIGZyb20gZ3Vlc3Qgc3BhY2UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDoxMi45NDQwNzE4ODlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODczNTc4NDM5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2FwaWNfYWNjZXB0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfc2V0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfbG9jYWxfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcHJpbnRrIHdpdGggYSBXQVJOX09OX09OQ0UuIFdoaWxlIHRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGNvcmUgbG9naWMsIGl0IGludHJvZHVjZXMgYSBuZXcgYnVnIGFzc2VydGlvbiAoYSB3YXJuaW5nKSB0aGF0IHN5emthbGxlciBjYW4gZGV0ZWN0IGFzIGEgY3Jhc2guIEZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgdmFsdWFibGUgdG8gdmVyaWZ5IGlmIHRoZSAndW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZScgY29uZGl0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIGd1ZXN0IHNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDoxMi45NDQwNzg4MDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MzYzNTI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGYzZmJjODc0NmY5Y2U1MzU3NjE1NjYyYzVkNTFlNmMxOTg3MGEyZDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMTUgMTc6MzA6MTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2xhcGljLmMgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xcbmluZGV4IDQwNzhlNjI0Y2E2Njc1Li5jNzc1Nzg5ZGJkYjNjMiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xcbisrKyBiL2FyY2gveDg2L2t2bS9sYXBpYy5jXFxuQEAgLTE0ODUsOCArMTQ4NSw3IEBAIHN0YXRpYyBpbnQgX19hcGljX2FjY2VwdF9pcnEoc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IGRlbGl2ZXJ5X21vZGUsXFxuIFxcdFxcdGJyZWFrO1xcbiBcXG4gXFx0ZGVmYXVsdDpcXG4tXFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJUT0RPOiB1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlICV4XFxcXG5cXFwiLFxcbi1cXHRcXHQgICAgICAgZGVsaXZlcnlfbW9kZSk7XFxuK1xcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFx0cmV0dXJuIHJlc3VsdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTc6MzA6MTMuNjAwODU4NjEyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA3ODk4MDkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2FwaWNfYWNjZXB0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfc2V0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfbG9jYWxfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcHJpbnRrIHdpdGggYSBXQVJOX09OX09OQ0UuIFdoaWxlIHRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGNvcmUgbG9naWMsIGl0IGludHJvZHVjZXMgYSBuZXcgYnVnIGFzc2VydGlvbiAoYSB3YXJuaW5nKSB0aGF0IHN5emthbGxlciBjYW4gZGV0ZWN0IGFzIGEgY3Jhc2guIEZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgdmFsdWFibGUgdG8gdmVyaWZ5IGlmIHRoZSAndW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZScgY29uZGl0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIGd1ZXN0IHNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGYzZmJjODc0NmY5Y2U1MzU3NjE1NjYyYzVkNTFlNmMxOTg3MGEyZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAxNSAxNzozMDoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9sYXBpYy5jIGIvYXJjaC94ODYva3ZtL2xhcGljLmNcbmluZGV4IDQwNzhlNjI0Y2E2Njc1Li5jNzc1Nzg5ZGJkYjNjMiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9sYXBpYy5jXG4rKysgYi9hcmNoL3g4Ni9rdm0vbGFwaWMuY1xuQEAgLTE0ODUsOCArMTQ4NSw3IEBAIHN0YXRpYyBpbnQgX19hcGljX2FjY2VwdF9pcnEoc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IGRlbGl2ZXJ5X21vZGUsXG4gXHRcdGJyZWFrO1xuIFxuIFx0ZGVmYXVsdDpcbi1cdFx0cHJpbnRrKEtFUk5fRVJSIFwiVE9ETzogdW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZSAleFxcblwiLFxuLVx0XHQgICAgICAgZGVsaXZlcnlfbW9kZSk7XG4rXHRcdFdBUk5fT05fT05DRSgxKTtcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXHRyZXR1cm4gcmVzdWx0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTc6MzA6MTMuNjAwODYxNDQyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ4MzU3NTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBLVk0veDg2IFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggY2hhbmdlcyBgYXJjaC94ODYva3ZtL2xhcGljLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2FwaWNfYWNjZXB0X2lycWAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyBpdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGxvZ2dpbmcgY2hhbmdlLiBJdCBzd2FwcyBhIGBwcmludGsoS0VSTl9FUlIgLi4uKWAgZm9yIGEgYFdBUk5fT05fT05DRSgxKWAgd2l0aGluIHRoZSBgZGVmYXVsdGAgY2FzZSBvZiB0aGUgYGRlbGl2ZXJ5X21vZGVgIHN3aXRjaC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNsYXNzaWZ5IHRoaXMgYXMgYSBcImRlY29yYXRpdmUgY2hhbmdlXCIg4oCTIGp1c3QgYWx0ZXJpbmcgdGhlIGxvZ2dpbmcgb3V0cHV0LiBCdXQgd2FpdC4uLlxuXG5UaGUgcHJvbXB0IHNwZWNpZmllcyBleGNlcHRpb25zOiBkb2N1bWVudGF0aW9uLCBLY29uZmlnLCBjb21tZW50cywgcHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGBwcmludGtgLCBjb25zdGFudHMgd2l0aG91dCBmdW5jdGlvbmFsIGltcGFjdCwgYW5kIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJcyBgV0FSTl9PTl9PTkNFYCBwdXJlbHkgZGVjb3JhdGl2ZT8gTm90IGlmIHlvdSdyZSB0aGlua2luZyBhYm91dCBmdXp6aW5nISBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuXG5cbmBwcmludGtgIGp1c3QgbG9nczsgaXTigJlzIGEgcGFzc2l2ZSBvYnNlcnZhdGlvbi4gSG93ZXZlciwgYFdBUk5fT05fT05DRWAgaXMgYSBjcnVjaWFsIGRpZmZlcmVuY2UuIEluIGEgZnV6emVyJ3Mgd29ybGQsIHRoYXQgd2FybmluZyBpcyBhIHBvdGVudGlhbCBidWcgcmVwb3J0LCBlc3BlY2lhbGx5IGlmIGBwYW5pY19vbl93YXJuYCBpcyBlbmFibGVkLiBJdCBtZWFucyBpZiB0aGF0IFwiZGVmYXVsdFwiIGNhc2UgaXMgaGl0LCBpbnN0ZWFkIG9mIGEgc2lsZW50IGVycm9yLCBvciBqdXN0IGEgbG9nZ2VkIGVycm9yLCBzeXprYWxsZXIgd2lsbCAqbm93KiByZXBvcnQgYSBidWcuIFRoaXMgaXMgYSBzaWduaWZpY2FudCB0cmFuc2Zvcm1hdGlvbiEgSXTigJlzIG5vIGxvbmdlciBqdXN0IGxvZ2dpbmc7IGl0J3MgdHJhbnNpdGlvbmluZyBhIHNpbGVudCBvciBsb2dnZWQgZXJyb3IgaW50byBhIGZ1enplci1kZXRlY3RhYmxlIGV2ZW50LiBUaGlzIHBhdGNoIGhhcyBiZWNvbWUgbXVjaCBtb3JlIHJlbGV2YW50IHRvIGZ1enppbmcgdGhhbiBpdCBmaXJzdCBhcHBlYXJlZC4gTm93IEkgbmVlZCB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYF9fYXBpY19hY2NlcHRfaXJxYCB0byBjb25maXJtIHRoZSBjb250ZXh0IGFuZCBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MzgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDoyMS4wODQ0Mzk0OTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NTk3MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fYXBpY19hY2NlcHRfaXJxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9sYXBpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9sYXBpYy5jPTgxNj1pbnQga3ZtX2xhcGljX2ZpbmRfaGlnaGVzdF9pcnIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgxNy17XFxuYXJjaC94ODYva3ZtL2xhcGljLmM6ODE4OlxcdC8qIFRoaXMgbWF5IHJhY2Ugd2l0aCBzZXR0aW5nIG9mIGlyciBpbiBfX2FwaWNfYWNjZXB0X2lycSgpIGFuZFxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgxOTpcXHQgKiB2YWx1ZSByZXR1cm5lZCBtYXkgYmUgd3JvbmcsIGJ1dCBrdm1fdmNwdV9raWNrKCkgaW4gX19hcGljX2FjY2VwdF9pcnFcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MjAtXFx0ICogd2lsbCBjYXVzZSB2bWV4aXQgaW1tZWRpYXRlbHkgYW5kIHRoZSB2YWx1ZSB3aWxsIGJlIHJlY2FsY3VsYXRlZFxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmM9ODI1PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fbGFwaWNfZmluZF9oaWdoZXN0X2lycik7XFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODI2LVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgyNzpzdGF0aWMgaW50IF9fYXBpY19hY2NlcHRfaXJxKHN0cnVjdCBrdm1fbGFwaWMgKmFwaWMsIGludCBkZWxpdmVyeV9tb2RlLFxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyOC1cXHRcXHRcXHQgICAgIGludCB2ZWN0b3IsIGludCBsZXZlbCwgaW50IHRyaWdfbW9kZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTgzMT1pbnQga3ZtX2FwaWNfc2V0X2lycShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fbGFwaWNfaXJxICppcnEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MzUtXFxuYXJjaC94ODYva3ZtL2xhcGljLmM6ODM2OlxcdHJldHVybiBfX2FwaWNfYWNjZXB0X2lycShhcGljLCBpcnEtXFx1MDAzZWRlbGl2ZXJ5X21vZGUsIGlycS1cXHUwMDNldmVjdG9yLFxcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgzNy1cXHRcXHRcXHRcXHQgaXJxLVxcdTAwM2VsZXZlbCwgaXJxLVxcdTAwM2V0cmlnX21vZGUsIHJ0Y19zdGF0dXMpO1xcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmM9MTMzNj1pbnQgX19rdm1faXJxX2RlbGl2ZXJ5X3RvX2FwaWMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2xhcGljICpzcmMsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xMzk3LSAqL1xcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjEzOTg6c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0xMzk5LVxcdFxcdFxcdCAgICAgaW50IHZlY3RvciwgaW50IGxldmVsLCBpbnQgdHJpZ19tb2RlLFxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmM9MzAwOD1pbnQga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcihzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgbHZ0X3R5cGUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMDE4LVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjMwMTk6XFx0XFx0ciA9IF9fYXBpY19hY2NlcHRfaXJxKGFwaWMsIG1vZGUsIHZlY3RvciwgMSwgdHJpZ19tb2RlLCBOVUxMKTtcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy0zMDIwLVxcdFxcdGlmIChyIFxcdTAwMjZcXHUwMDI2IGx2dF90eXBlID09IEFQSUNfTFZUUEMgXFx1MDAyNlxcdTAwMjZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTc6MzA6MjEuMjkxMDQ0NzcxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEzMzI3NDM0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtWTSBQYXRjaCBmb3IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEtWTSBwYXRjaCwgYW5kIHRoZSBrZXkgY2hhbmdlIGlzIHRoaXMgcmVwbGFjZW1lbnQgb2YgYHByaW50a2Agd2l0aCBgV0FSTl9PTl9PTkNFKDEpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3YWl0LCBgX19hcGljX2FjY2VwdF9pcnFgIGlzIGEgKmNvcmUqIEtWTSBmdW5jdGlvbiDigJMgdGhhdCdzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBOb3csIGlzIHRoaXMgY29uc2lkZXJlZCBmdW5jdGlvbmFsIGZvciBvdXIgcHVycG9zZXM/IFllcywgYWJzb2x1dGVseSEgVGhpcyBpc24ndCBqdXN0IGEgY29zbWV0aWMgY2hhbmdlOyBpdCdzIGludHJvZHVjaW5nIGEgKm5ldyBidWcgY2hlY2sqLiBUaGlzIGBXQVJOX09OX09OQ0VgIGNvbnN0cnVjdCBpcyBhIGNyaXRpY2FsIGFkZGl0aW9uLiBUaGUgcG9pbnQgaGVyZSBpcyB0aGF0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBhbmQgY2F0Y2ggaXQgd2l0aCBTeXprYWxsZXIsIHNvIHRoaXMgY2hhbmdlIHdpbGwgY3JlYXRlIG1vcmUgZnV6emluZyBzdXJmYWNlLlxuXG5Pa2F5LCBub3cgbGV0IG1lIHN0ZXAgYmFjayBhbmQgdGhpbmsgY2FyZWZ1bGx5IGFib3V0IHdoYXQgYFdBUk5fT05fT05DRWAgYWN0dWFsbHkgZG9lcy4gV2hpbGUgaXQgZG9lcyB0ZWNobmljYWxseSBhbHRlciBleGVjdXRpb24gZmxvdyAqc2xpZ2h0bHkqIOKAkyBieSB0cmFwcGluZywgcHJpbnRpbmcgYSB3YXJuaW5nLCBhbmQgY29udGludWluZyDigJMgdGhlIHByaW1hcnkgaW1wYWN0IGlzIHRoYXQgaXQncyBhICpidWcgYXNzZXJ0aW9uKi4gVGhhdCdzIHRoZSBrZXkuXG5cbk5vdywgbGV0J3MgZ28gYmFjayBhbmQgY2FyZWZ1bGx5IGNvbnNpZGVyIHRoZSBwcm9tcHQ6IEl0IGV4cGxpY2l0bHkgc2F5cyB0byBjb25zaWRlciB0aGUgcGF0Y2ggd29ydGggZnV6emluZyBpZiBpdCdzICpub3QqIGp1c3QgYWJvdXQgZG9jdW1lbnRhdGlvbiwgS2NvbmZpZywgZGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZywgb3IgY2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyB0aGF0ICpkb24ndCogYWx0ZXIgZXhlY3V0aW9uIGZsb3cuIFdlbGwsIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcyB0aGlzOiBpcyBgV0FSTl9PTl9PTkNFYCBjb25zaWRlcmVkIGp1c3QgbG9nZ2luZz8gVGhlIGFuc3dlciBpcyBhIGNsZWFyICpubyouIEl0J3MgYSBidWcgKmFzc2VydGlvbiogdGhhdCB3b3VsZCBsaWtlbHkgYmUgd29ydGggZnV6emluZywgYW5kIGlzIGEgc3Ryb25nIGluZGljYXRpb24gd2UgbWF5IHdhbnQgdG8gaW52ZXN0aWdhdGUgaG93IHRvIHRyaWdnZXIgdGhpcy5cblxuRmluYWxseSwganVzdCB0byBiZSBzdXJlLCBsZXQncyBxdWlja2x5IGNoZWNrIGZvciBhbnkgS1ZNLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBUaGUgbWFpbiBvbmUgaGVyZSB3aWxsIGJlIGBDT05GSUdfS1ZNYCwgd2hpY2ggd2UgbmVlZC4gU28sIHRoaXMgcGF0Y2ggYXBwZWFycyB0byBiZSB3b3J0aHdoaWxlIGFuZCBzaG91bGQgYWRkIHNvbWUgZnV6emluZyBzdXJmYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDE1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjI4LjQyNDMyMTE5NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk3Mjc1NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDoyOC42NTQxMjY2NDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NjAzNDM4NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU2lnbmlmaWNhbmNlIG9mIGBXQVJOX09OX09OQ0VgIGluIEZ1enppbmcgQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFdBUk5fT05fT05DRWAgYXNzZXJ0aW9uLCBhbmQgSSBuZWVkIHRvIGRldGVybWluZSBpZiBhIGNoYW5nZSBpbnZvbHZpbmcgaXQgd2FycmFudHMgZnV6emluZy4gVGhlIHByb21wdCBkZWZpbmVzIHdoYXQgc2hvdWxkbid0IGJlIGZ1enplZCwgYW5kIEknbSB0cnlpbmcgdG8gZGVjaWRlIGlmIHRoaXMgZmFsbHMgdW5kZXIgb25lIG9mIHRob3NlIGNhdGVnb3JpZXMuIEkgc2VlIHRoYXQgaXQgZXhwbGljaXRseSBtZW50aW9ucyBtb2RpZmljYXRpb25zIHRvIHRoaW5ncyBsaWtlIGRvY3VtZW50YXRpb24sIEtjb25maWcsIG9yIGNvbW1lbnRzIGFyZSBub3Qgd29ydGggZnV6emluZy4gSXQgYWxzbyBsaXN0cyBcIlB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzXCIgYXMgbm90IHdvcnRoIGZ1enppbmcuXG5cbk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjb25zaWRlciBpZiBgV0FSTl9PTl9PTkNFYCBjb3VsZCBiZSBkZWVtZWQgXCJwdXJlbHkgZGVjb3JhdGl2ZVwiLiBIb3dldmVyLCBJJ20gcXVpY2tseSByZWFsaXppbmcgdGhhdCdzIGluY29ycmVjdC4gYFdBUk5fT05fT05DRWAgaXMgKm5vdCoganVzdCBhIGxvZzsgaXQncyBhbiBhc3NlcnRpb24uIEl0IGNhbiB0cmlnZ2VyIGEga2VybmVsIHBhbmljIGlmIGBwYW5pY19vbl93YXJuYCBpcyBzZXQsIHdoaWNoIGl0IG1vc3QgbGlrZWx5IHdpbGwgYmUgc2V0IGZvciBmdXp6aW5nLlxuXG5UaGVuIEkgdGhpbms6IGlmIGl0J3MgKm9ubHkqIGEgc3dhcCBvdXQgZnJvbSBgcHJpbnRrYCB0byBgV0FSTl9PTl9PTkNFYCwgaXMgdGhlIGV4ZWN1dGlvbiBmbG93IGVzc2VudGlhbGx5IHRoZSBzYW1lPyBCb3RoIGxvZyBhIG1lc3NhZ2UgYW5kIGNvbnRpbnVlLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGUgc3RhY2sgZHVtcCBhbmQgcG9zc2liaWxpdHkgb2YgYSBwYW5pYywgd2hpY2ggSSB0aGluayBpcyBzaWduaWZpY2FudCBoZXJlLiBCdXQgaXMgaXQganVzdCBkZWNvcmF0aXZlPyBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBleGNsdWRlcyBjaGFuZ2VzIHRvIGxvZ2dpbmcsIGJ1dCBpcyByZXBsYWNpbmcgYSBwcmludCBzdGF0ZW1lbnQgd2l0aCBhbiBhc3NlcnRpb24gc3RpbGwgY29uc2lkZXJlZCBcImRlY29yYXRpdmVcIiBpbiB0aGlzIHNpdHVhdGlvbj9cblxuSSBoYXZlIHRvIGFja25vd2xlZGdlIHRoYXQgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZywgdGhpcyBpcyBhIHZlcnkgc2lnbmlmaWNhbnQgY2hhbmdlLiBGdXp6aW5nIGlzIGFsbCBhYm91dCB0cmlnZ2VyaW5nIHdhcm5pbmdzLCBidWdzLCBhbmQgZWRnZSBjYXNlcy4gUmVwbGFjaW5nIGEgYHByaW50a2Agd2l0aCBhIGBXQVJOX09OX09OQ0VgIGV4cG9zZXMgYSBwb3RlbnRpYWxseSBleHBsb2l0YWJsZSBidWcgdGhhdCB0aGUgZnV6emVyIGNhbiBub3cgZGV0ZWN0LiBJZiB3ZSAqZG9uJ3QqIGZ1enogaXQsIHdlJ3JlIGxpa2VseSB0byBtaXNzIGEgcmVhbCBidWcuXG5cblNvLCBpZiB0aGUgY2hhbmdlIGlzICpzb2xlbHkqIGEgcmVwbGFjZW1lbnQgb2YgYHByaW50a2Agd2l0aCBgV0FSTl9PTl9PTkNFYCwgaXQgKmlzKiB3b3J0aCBmdXp6aW5nLiBUaGUgZGV2ZWxvcGVyIGV4cGxpY2l0bHkgcHV0IHRoYXQgaW4gdGhlcmUsIGFuZCB0aGV5IHdhbnQgdG8ga25vdyBpZiBpdCBjYW4gYmUgdHJpZ2dlcmVkLlxuTm93LCBsZXQgbWUgY2hlY2sgYF9fYXBpY19hY2NlcHRfaXJxYC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzgzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjM2LjI1NzU2NzQzMVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMzI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJhcmNoL3g4Ni9rdm0vbGFwaWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDcwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDcwOlxcdFxcdFxcdHJlc3VsdCA9IDE7XFxuMTQ3MTpcXHRcXHRcXHRhcGljLVxcdTAwM2VzaXBpX3ZlY3RvciA9IHZlY3RvcjtcXG4xNDcyOlxcdFxcdFxcdC8qIG1ha2Ugc3VyZSBzaXBpX3ZlY3RvciBpcyB2aXNpYmxlIGZvciB0aGUgcmVjZWl2ZXIgKi9cXG4xNDczOlxcdFxcdFxcdHNtcF93bWIoKTtcXG4xNDc0OlxcdFxcdFxcdHNldF9iaXQoS1ZNX0FQSUNfU0lQSSwgXFx1MDAyNmFwaWMtXFx1MDAzZXBlbmRpbmdfZXZlbnRzKTtcXG4xNDc1OlxcdFxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9FVkVOVCwgdmNwdSk7XFxuMTQ3NjpcXHRcXHRcXHRrdm1fdmNwdV9raWNrKHZjcHUpO1xcbjE0Nzc6XFx0XFx0XFx0YnJlYWs7XFxuMTQ3ODpcXHRcXG4xNDc5OlxcdFxcdGNhc2UgQVBJQ19ETV9FWFRJTlQ6XFxuMTQ4MDpcXHRcXHRcXHQvKlxcbjE0ODE6XFx0XFx0XFx0ICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IGt2bV9hcGljX2xvY2FsX2RlbGl2ZXIoKSB3aXRoIExWVDAsXFxuMTQ4MjpcXHRcXHRcXHQgKiBiZWZvcmUgTk1JIHdhdGNoZG9nIHdhcyBlbmFibGVkLiBBbHJlYWR5IGhhbmRsZWQgYnlcXG4xNDgzOlxcdFxcdFxcdCAqIGt2bV9hcGljX2FjY2VwdF9waWNfaW50cigpLlxcbjE0ODQ6XFx0XFx0XFx0ICovXFxuMTQ4NTpcXHRcXHRcXHRicmVhaztcXG4xNDg2OlxcdFxcbjE0ODc6XFx0XFx0ZGVmYXVsdDpcXG4xNDg4OlxcdFxcdFxcdFdBUk5fT05fT05DRSgxKTtcXG4xNDg5OlxcdFxcdFxcdGJyZWFrO1xcbjE0OTA6XFx0XFx0fVxcbjE0OTE6XFx0XFx0cmV0dXJuIHJlc3VsdDtcXG4xNDkyOlxcdH1cXG4xNDkzOlxcdFxcbjE0OTQ6XFx0LypcXG4xNDk1OlxcdCAqIFRoaXMgcm91dGluZSBpZGVudGlmaWVzIHRoZSBkZXN0aW5hdGlvbiB2Y3B1cyBtYXNrIG1lYW50IHRvIHJlY2VpdmUgdGhlXFxuMTQ5NjpcXHQgKiBJT0FQSUMgaW50ZXJydXB0cy4gSXQgZWl0aGVyIHVzZXMga3ZtX2FwaWNfbWFwX2dldF9kZXN0X2xhcGljKCkgdG8gZmluZFxcbjE0OTc6XFx0ICogb3V0IHRoZSBkZXN0aW5hdGlvbiB2Y3B1cyBhcnJheSBhbmQgc2V0IHRoZSBiaXRtYXAgb3IgaXQgdHJhdmVyc2VzIHRvXFxuMTQ5ODpcXHQgKiBlYWNoIGF2YWlsYWJsZSB2Y3B1IHRvIGlkZW50aWZ5IHRoZSBzYW1lLlxcbjE0OTk6XFx0ICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjM2LjI1Nzc3Mjg3MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDA1NDA1ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBhIEJ1ZyBBc3NlcnRpb24gaW4gYF9fYXBpY19hY2NlcHRfaXJxYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBjaGFuZ2U6IGEgYHByaW50a2AgZXJyb3IgbWVzc2FnZSBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIGEgYFdBUk5fT05fT05DRSgxKWAuIFJpZ2h0IGF3YXksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBidWcgYXNzZXJ0aW9uIOKAkyB0aGUgZGV2ZWxvcGVyIGlzIGVzc2VudGlhbGx5IHNheWluZywgXCJ0aGlzIGRlZmF1bHQgY2FzZSAqc2hvdWxkKiBuZXZlciBiZSBoaXQuXCIgTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiaXMgdGhpcyB3b3J0aCBmdXp6aW5nP1wiIEFic29sdXRlbHkuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBlaXRoZXIgY29uZmlybSB0aGUgYXNzdW1wdGlvbiBvciwgbW9yZSBpbXBvcnRhbnRseSwgKnZpb2xhdGUqIGl0IGFuZCByZXZlYWwgYSBoaWRkZW4gYnVnLiBGaW5kaW5nIGEgcGF0aCB0aGF0IHRyaWdnZXJzIHRoYXQgYFdBUk5fT05fT05DRWAgd291bGQgYmUgYSBncmVhdCBvdXRjb21lLlxuXG5UaGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYF9fYXBpY19hY2NlcHRfaXJxYCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgYEtWTWAgYW5kIGBLVk1fWDg2YCwgYnV0IGxldCdzIHNlZSBpZiBwbGFpbiBgS1ZNYCBpcyBlbm91Z2guIEFoLCB5ZXMsIGxvb2tpbmcgdGhyb3VnaCB0aGUgY29kZSwgYGFyY2gveDg2L2t2bS9sYXBpYy5jYCBnZXRzIGNvbXBpbGVkIHdpdGggYENPTkZJR19LVk1gIGVuYWJsZWQuIFRoaXMgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgYSBmdXp6ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3ODgsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDo0MS42OTgzMTU1NjhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjgyMTY0MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGFwaWMub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlPTY9aW5jbHVkZSAkKHNyY3RyZWUpL3ZpcnQva3ZtL01ha2VmaWxlLmt2bVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS03LVxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTo4Omt2bS15XFx0XFx0XFx0Kz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBwbXUubyBtdHJyLm8gXFxcXFxcbmFyY2gveDg2L2t2bS9NYWtlZmlsZS05LVxcdFxcdFxcdCAgIGRlYnVnZnMubyBtbXUvbW11Lm8gbW11L3BhZ2VfdHJhY2subyBtbXUvc3B0ZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjQzLjY2NjU0MDQwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODM0MTc4NDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSXQgbG9va3MgbGlrZSBgQ09ORklHX0tWTWAgaXMgcmVsZXZhbnQsIGJ1dCBoYW5nIG9uLCBgS1ZNYCBpdHNlbGYgaXMgYSB0cmlzdGF0ZSwgYW5kIHRoYXQgcHJvbXB0IHNwZWNpZmljYWxseSB0ZWxscyB1cyB0byBhdm9pZCBnZW5lcmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIGxpa2VseSBhbHJlYWR5IGVuYWJsZWQuIEkgbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLiBJcyBgS1ZNYCB0b28gZ2VuZXJpYyBoZXJlPyBZZXMsIGl0IGlzLiBUaGUgcXVlc3Rpb24gaXMsIGFyZSB0aGVyZSBhbnkgKnNwZWNpZmljKiBjb25maWd1cmF0aW9ucyByZWxhdGVkIHRvIExBUElDIHRoYXQgYXJlIGVuYWJsZWQ/IE5vcGUsIGBsYXBpYy5vYCBpcyBhbHdheXMgY29tcGlsZWQgd2l0aCBga3ZtLXlgLiBTbywgSSBkb24ndCBuZWVkIHRvIHNwZWNpZnkgYW55IHNwZWNpZmljIGNvbmZpZ3MgaW4gYEVuYWJsZUNvbmZpZ3NgLiBUaGF0IGNhbiBzdGF5IGVtcHR5LlxuXG5Ob3csIHRoZSBtb3JlIGltcG9ydGFudCBxdWVzdGlvbjogSXMgdGhpcyBjaGFuZ2UgXCJmdW5jdGlvbmFsXCIgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmU/IEkgbmVlZCB0byBjb25zdWx0IHRoZSBjcml0ZXJpYS4gSXQgc2F5cyBhIHBhdGNoIGlzbid0IFwiV29ydGhGdXp6aW5nXCIgaWYgaXQgaW52b2x2ZXMgdGhpbmdzIGxpa2UgZG9jdW1lbnRhdGlvbiBjaGFuZ2VzLCBLY29uZmlnIG1vZGlmaWNhdGlvbnMsIGRlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmcsIG9yIGNoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24ndCBhbHRlciBleGVjdXRpb24gZmxvdy4gSXQgYWxzbyBleGNsdWRlcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuSG1tLCB0aGlzIHBhdGNoIGNoYW5nZXMgYHByaW50a2AgdG8gYFdBUk5fT05fT05DRWAuIElzIHRoYXQgcHVyZWx5IGRlY29yYXRpdmU/IEFic29sdXRlbHkgbm90LiBgV0FSTl9PTl9PTkNFYCBpcyBhIGJ1ZyBhc3NlcnRpb24sIGEgZGVsaWJlcmF0ZSBjaGVjayBmb3IgYSBzcGVjaWZpYyBjb25kaXRpb24uIEluIHRoZSBjb250ZXh0IG9mIHN5emthbGxlciwgYSBgV0FSTmAgZXNzZW50aWFsbHkgKmlzKiBhIGNyYXNoLiBUaGUgYXV0aG9yIGlzIGV4cGxpY2l0bHkgYXNraW5nIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlIHRvIHRyZWF0IHRoaXMgY29uZGl0aW9uIGFzIGEgY3JpdGljYWwgYnVnLiBUaGlzIGlzIGhpZ2hseSByZWxldmFudCB0byBmdXp6aW5nLiBJdCdzIGEgY2xlYXIgaW5kaWNhdGlvbiBvZiBhIHBvc3NpYmxlIGxhdGVudCBwcm9ibGVtLiBUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgdHJ1ZWAuXG5cbkJ1dCB0aGF0IG1lYW5zIEkgbmVlZCB0byBwcm92aWRlIGBGb2N1c1N5bWJvbHNgLiBPa2F5LCB0aGF0IHNob3VsZCBiZSBgX19hcGljX2FjY2VwdF9pcnFgLiBXYWl0LCBpc24ndCB0aGF0IGEgc3RhdGljIGZ1bmN0aW9uPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgaXQncyByZWFjaGFibGUgZnJvbSB0aGUga2VybmVsJ3MgcGVyc3BlY3RpdmUgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQyMywiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNVQxNzozMDo1MC41MDA3MjE3NjVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0OTQ3NDg2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2FwaWNfYWNjZXB0X2lycVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vbGFwaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vbGFwaWMuYz04MTY9aW50IGt2bV9sYXBpY19maW5kX2hpZ2hlc3RfaXJyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MTcte1xcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgxODpcXHQvKiBUaGlzIG1heSByYWNlIHdpdGggc2V0dGluZyBvZiBpcnIgaW4gX19hcGljX2FjY2VwdF9pcnEoKSBhbmRcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzo4MTk6XFx0ICogdmFsdWUgcmV0dXJuZWQgbWF5IGJlIHdyb25nLCBidXQga3ZtX3ZjcHVfa2ljaygpIGluIF9fYXBpY19hY2NlcHRfaXJxXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODIwLVxcdCAqIHdpbGwgY2F1c2Ugdm1leGl0IGltbWVkaWF0ZWx5IGFuZCB0aGUgdmFsdWUgd2lsbCBiZSByZWNhbGN1bGF0ZWRcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTgyNT1FWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwoa3ZtX2xhcGljX2ZpbmRfaGlnaGVzdF9pcnIpO1xcbmFyY2gveDg2L2t2bS9sYXBpYy5jLTgyNi1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzo4Mjc6c3RhdGljIGludCBfX2FwaWNfYWNjZXB0X2lycShzdHJ1Y3Qga3ZtX2xhcGljICphcGljLCBpbnQgZGVsaXZlcnlfbW9kZSxcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MjgtXFx0XFx0XFx0ICAgICBpbnQgdmVjdG9yLCBpbnQgbGV2ZWwsIGludCB0cmlnX21vZGUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYz04MzE9aW50IGt2bV9hcGljX3NldF9pcnEoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX2xhcGljX2lycSAqaXJxLFxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtODM1LVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jOjgzNjpcXHRyZXR1cm4gX19hcGljX2FjY2VwdF9pcnEoYXBpYywgaXJxLVxcdTAwM2VkZWxpdmVyeV9tb2RlLCBpcnEtXFx1MDAzZXZlY3RvcixcXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYy04MzctXFx0XFx0XFx0XFx0IGlycS1cXHUwMDNlbGV2ZWwsIGlycS1cXHUwMDNldHJpZ19tb2RlLCBydGNfc3RhdHVzKTtcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTEzMzY9aW50IF9fa3ZtX2lycV9kZWxpdmVyeV90b19hcGljKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9sYXBpYyAqc3JjLFxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMTM5Ny0gKi9cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzoxMzk4OnN0YXRpYyBpbnQgX19hcGljX2FjY2VwdF9pcnEoc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IGRlbGl2ZXJ5X21vZGUsXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMTM5OS1cXHRcXHRcXHQgICAgIGludCB2ZWN0b3IsIGludCBsZXZlbCwgaW50IHRyaWdfbW9kZSxcXG4tLVxcbmFyY2gveDg2L2t2bS9sYXBpYy5jPTMwMDg9aW50IGt2bV9hcGljX2xvY2FsX2RlbGl2ZXIoc3RydWN0IGt2bV9sYXBpYyAqYXBpYywgaW50IGx2dF90eXBlKVxcbi0tXFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzAxOC1cXG5hcmNoL3g4Ni9rdm0vbGFwaWMuYzozMDE5OlxcdFxcdHIgPSBfX2FwaWNfYWNjZXB0X2lycShhcGljLCBtb2RlLCB2ZWN0b3IsIDEsIHRyaWdfbW9kZSwgTlVMTCk7XFxuYXJjaC94ODYva3ZtL2xhcGljLmMtMzAyMC1cXHRcXHRpZiAociBcXHUwMDI2XFx1MDAyNiBsdnRfdHlwZSA9PSBBUElDX0xWVFBDIFxcdTAwMjZcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE1VDE3OjMwOjUxLjE1MDIwMjI5OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDUyOTU5MDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciBhIEtWTSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgS1ZNIHBhdGNoIGFuZCB0cnlpbmcgdG8gZGVjaWRlIGlmIGl0J3Mgd29ydGggZmxhZ2dpbmcgZm9yIGZ1enppbmcuIEluaXRpYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGtleSBzeW1ib2xzIGluIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLCBzbyBJJ3ZlIHplcm9lZCBpbiBvbiBgX19hcGljX2FjY2VwdF9pcnFgLCBga3ZtX2FwaWNfc2V0X2lycWAsIGFuZCBga3ZtX2FwaWNfbG9jYWxfZGVsaXZlcmAuIFRoZXNlIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcGF0Y2gncyBpbXBhY3QuIEkgYWxzbyBjb25zaWRlciBmb2N1c2luZyBqdXN0IG9uIGBfX2FwaWNfYWNjZXB0X2lycWAuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBzZWVtcyB0byBpbnZvbHZlIHJlcGxhY2luZyBhIGBwcmludGtgIHN0YXRlbWVudCB3aXRoIGBXQVJOX09OX09OQ0UoMSlgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBwdXJlbHkgZGVjb3JhdGl2ZT8gRG9lcyBpdCBhY3R1YWxseSBjaGFuZ2UgdGhlICpleGVjdXRpb24qIGZsb3c/XCIgVGhlIGRvY3VtZW50YXRpb24gc2F5cyB0aGluZ3MgbGlrZSBgcHJpbnRrYCBhcmUgXCJwdXJlbHkgZGVjb3JhdGl2ZVwiLCBidXQgaXMgdGhhdCByZWFsbHkgdHJ1ZSBpbiB0aGlzIGNhc2U/IEkgbmVlZCB0byB0aGluayBhYm91dCB0aGlzIGNhcmVmdWxseS4gYFdBUk5fT05fT05DRWAgZG9lc24ndCAqZnVuY3Rpb25hbGx5KiBhbHRlciBleGVjdXRpb24gaW4gbW9zdCBjYXNlcyAodW5sZXNzIGBwYW5pY19vbl93YXJuYCBpcyBzZXQpLlxuXG5Ib3dldmVyLCBpbiB0aGUgY29udGV4dCBvZiBmdXp6aW5nLCBhIGBXQVJOYCAqaXMqIGEgY3Jhc2ghIEEgZGV2ZWxvcGVyIGhhcyBleHBsaWNpdGx5IGNoYW5nZWQgdGhpcyBmcm9tIGFuIGluZm9ybWF0aXZlIGxvZyBtZXNzYWdlIHRvIGFuIGFzc2VydGlvbi4gVGhleSBhcmUgZXNzZW50aWFsbHkgc2F5aW5nLCBcIklmIHRoaXMgY29uZGl0aW9uIGlzIGhpdCwgaXQgc2lnbmlmaWVzIGEgcHJvYmxlbSwgYW5kIHdlICp3YW50KiB0byBrbm93IGFib3V0IGl0LlwiXG5cbklmIEkgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCBzeXotY2x1c3RlciB3aWxsIGlnbm9yZSB0aGlzIHBhdGNoLCBhbmQgd2UgbWlnaHQgbWlzcyB0cmlnZ2VyaW5nIHRoZSB3YXJuaW5nLiBUaGF0J3MgdW5hY2NlcHRhYmxlLiBXZSAqYWJzb2x1dGVseSogd2FudCB0byBmdXp6IHRoaXMgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIHRoZSBgV0FSTl9PTl9PTkNFYC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjaGFuZ2VzIGluIHRoZSBwYXRjaC4gTm9wZSwganVzdCB0aGUgd2FybmluZy4gU28gdGhpcyBpcyBhIGZvY3VzZWQgY2hhbmdlLlxuXG5JJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAuIFRoZSBmb2N1cyBzeW1ib2xzIHJlbWFpbiBhczogYF9fYXBpY19hY2NlcHRfaXJxYCwgYGt2bV9hcGljX3NldF9pcnFgLCBhbmQgYGt2bV9hcGljX2xvY2FsX2RlbGl2ZXJgLiBUaGVyZSBhcmUgbm8gS1ZNLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgc2VlbSByZWxldmFudCBoZXJlLCBpdCdzIHByZXR0eSBnZW5lcmljLlxuXG5JIG5lZWQgdG8gYmUgdmVyeSBjbGVhciBpbiBteSByZWFzb25pbmc6IFdoaWxlIGBXQVJOX09OX09OQ0VgIGlzbid0IGEgZGlyZWN0IGNvZGUgY2hhbmdlIGluIG1vc3QgY2FzZXMsIGl0ICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSBmcm9tIGEgdGVzdGluZy9mdXp6aW5nIHBlcnNwZWN0aXZlLiBJdCBhbHRlcnMgdGhlIHRlc3Qgb3JhY2xlOyB3aGF0IHdlIGNvbnNpZGVyIGEgYnVnLiBUaGlzIG1ha2VzIGl0IHdvcnRoIGZ1enppbmcgdG8gZGlzY292ZXIgd2hhdCBjb25kaXRpb25zIGFyZSByZXF1aXJlZCB0byB0cmlnZ2VyIHRoaXMgd2FybmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA3OCwiT3V0cHV0VG9rZW5zIjoxMzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTVUMTc6MzE6MDEuNjc5Nzk1NTY5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2FwaWNfYWNjZXB0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfc2V0X2lycVwiLFxuICAgIFwia3ZtX2FwaWNfbG9jYWxfZGVsaXZlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgcHJpbnRrIHdpdGggYSBXQVJOX09OX09OQ0UuIFdoaWxlIHRoaXMgZG9lc24ndCBjaGFuZ2UgdGhlIGNvcmUgbG9naWMsIGl0IGludHJvZHVjZXMgYSBuZXcgYnVnIGFzc2VydGlvbiAoYSB3YXJuaW5nKSB0aGF0IHN5emthbGxlciBjYW4gZGV0ZWN0IGFzIGEgY3Jhc2guIEZ1enppbmcgdGhpcyBjaGFuZ2UgaXMgdmFsdWFibGUgdG8gdmVyaWZ5IGlmIHRoZSAndW5zdXBwb3J0ZWQgZGVsaXZlcnkgbW9kZScgY29uZGl0aW9uIGlzIHJlYWNoYWJsZSBmcm9tIGd1ZXN0IHNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fYXBpY19hY2NlcHRfaXJxXCIsXG4gICAgXCJrdm1fYXBpY19zZXRfaXJxXCIsXG4gICAgXCJrdm1fYXBpY19sb2NhbF9kZWxpdmVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBwcmludGsgd2l0aCBhIFdBUk5fT05fT05DRS4gV2hpbGUgdGhpcyBkb2Vzbid0IGNoYW5nZSB0aGUgY29yZSBsb2dpYywgaXQgaW50cm9kdWNlcyBhIG5ldyBidWcgYXNzZXJ0aW9uIChhIHdhcm5pbmcpIHRoYXQgc3l6a2FsbGVyIGNhbiBkZXRlY3QgYXMgYSBjcmFzaC4gRnV6emluZyB0aGlzIGNoYW5nZSBpcyB2YWx1YWJsZSB0byB2ZXJpZnkgaWYgdGhlICd1bnN1cHBvcnRlZCBkZWxpdmVyeSBtb2RlJyBjb25kaXRpb24gaXMgcmVhY2hhYmxlIGZyb20gZ3Vlc3Qgc3BhY2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowrqp8l[1] Phase: Succeeded StartedAt: 2026-07-15 17:31:13 +0000 UTC FinishedAt: 2026-07-15 17:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-15 17:31:13 +0000 UTC FinishedAt: 2026-07-15 17:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2] Phase: Succeeded StartedAt: 2026-07-15 17:31:13 +0000 UTC FinishedAt: 2026-07-15 21:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-15 17:31:13 +0000 UTC FinishedAt: 2026-07-15 21:48:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-15 17:31:13 +0000 UTC FinishedAt: 2026-07-15 17:31:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-15 17:31:13 +0000 UTC FinishedAt: 2026-07-15 17:31:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowrqp8l/series-workflowrqp8l-convert-artifact-1926942035/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-15 17:31:35 +0000 UTC FinishedAt: 2026-07-15 18:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-15 17:31:35 +0000 UTC FinishedAt: 2026-07-15 18:14:52 +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:*06c56259-ef8e-4ff1-a520-a5df90f836fe,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-workflowrqp8l/series-workflowrqp8l-convert-artifact-1926942035/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": "875e2a34-fb5b-4a02-a901-d0e8f719aad8", "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-workflowrqp8l/series-workflowrqp8l-build-action-1120538753/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-15 17:31:35 +0000 UTC FinishedAt: 2026-07-15 18:14:42 +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:*06c56259-ef8e-4ff1-a520-a5df90f836fe,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-workflowrqp8l/series-workflowrqp8l-convert-artifact-1926942035/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": "875e2a34-fb5b-4a02-a901-d0e8f719aad8", "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-workflowrqp8l/series-workflowrqp8l-build-action-1120538753/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-15 18:14:52 +0000 UTC FinishedAt: 2026-07-15 18:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-15 18:14:52 +0000 UTC FinishedAt: 2026-07-15 18:14:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-15 18:14:52 +0000 UTC FinishedAt: 2026-07-15 18:15:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-15 18:14:52 +0000 UTC FinishedAt: 2026-07-15 18:14:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowrqp8l/series-workflowrqp8l-convert-artifact-1290021706/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-15 18:15:02 +0000 UTC FinishedAt: 2026-07-15 18:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-15 18:15:02 +0000 UTC FinishedAt: 2026-07-15 18:16:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*875e2a34-fb5b-4a02-a901-d0e8f719aad8,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-workflowrqp8l/series-workflowrqp8l-build-action-1120538753/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-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-15 18:16:54 +0000 UTC FinishedAt: 2026-07-15 18:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-15 18:16:54 +0000 UTC FinishedAt: 2026-07-15 18:16:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-15 18:16:54 +0000 UTC FinishedAt: 2026-07-15 18:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-15 18:16:54 +0000 UTC FinishedAt: 2026-07-15 18:42:07 +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:*06c56259-ef8e-4ff1-a520-a5df90f836fe,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-workflowrqp8l/series-workflowrqp8l-convert-artifact-1290021706/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": "3c8a5a2b-df2f-404c-a72a-108d22199b5a", "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-workflowrqp8l/series-workflowrqp8l-build-action-2117898094/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-15 18:16:54 +0000 UTC FinishedAt: 2026-07-15 18:41:56 +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:*06c56259-ef8e-4ff1-a520-a5df90f836fe,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-workflowrqp8l/series-workflowrqp8l-convert-artifact-1290021706/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": "3c8a5a2b-df2f-404c-a72a-108d22199b5a", "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-workflowrqp8l/series-workflowrqp8l-build-action-2117898094/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-15 18:42:07 +0000 UTC FinishedAt: 2026-07-15 18:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-15 18:42:07 +0000 UTC FinishedAt: 2026-07-15 18:42:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-15 18:42:07 +0000 UTC FinishedAt: 2026-07-15 18:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-15 18:42:07 +0000 UTC FinishedAt: 2026-07-15 18:44:05 +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:*3c8a5a2b-df2f-404c-a72a-108d22199b5a,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-workflowrqp8l/series-workflowrqp8l-build-action-2117898094/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-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-15 18:44:15 +0000 UTC FinishedAt: 2026-07-15 21:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-15 18:44:15 +0000 UTC FinishedAt: 2026-07-15 21:48:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*875e2a34-fb5b-4a02-a901-d0e8f719aad8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c8a5a2b-df2f-404c-a72a-108d22199b5a,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-workflowrqp8l/series-workflowrqp8l-build-action-1120538753/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-workflowrqp8l/series-workflowrqp8l-build-action-2117898094/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-15 18:44:15 +0000 UTC FinishedAt: 2026-07-15 18:44:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-15 18:44:15 +0000 UTC FinishedAt: 2026-07-15 18:44:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowrqp8l/series-workflowrqp8l-convert-artifact-1717828831/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-15 18:44:15 +0000 UTC FinishedAt: 2026-07-15 18:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-15 18:44:15 +0000 UTC FinishedAt: 2026-07-15 18:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-15 18:44:15 +0000 UTC FinishedAt: 2026-07-15 18:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-15 18:44:36 +0000 UTC FinishedAt: 2026-07-15 21:48:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrqp8l[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["__apic_accept_irq","kvm_apic_set_irq","kvm_apic_local_deliver"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"babe08404e1993697a523e60bc0f9d096ffe1ef8","config_name":"upstream-apparmor-kasan.config","series_id":"285c60dc-0c66-4f6f-a014-0d62fcfba550","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-15 18:44:36 +0000 UTC FinishedAt: 2026-07-15 21:48:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*875e2a34-fb5b-4a02-a901-d0e8f719aad8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c8a5a2b-df2f-404c-a72a-108d22199b5a,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-workflowrqp8l/series-workflowrqp8l-build-action-1120538753/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-workflowrqp8l/series-workflowrqp8l-build-action-2117898094/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-workflowrqp8l/series-workflowrqp8l-convert-artifact-1717828831/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,}