Name: series-workflowzl88x Phase: Succeeded StartedAt: 2026-07-08 12:43:37 +0000 UTC FinishedAt: 2026-07-08 13:55:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[0] Phase: Succeeded StartedAt: 2026-07-08 12:43:37 +0000 UTC FinishedAt: 2026-07-08 13:00:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 12:43:37 +0000 UTC FinishedAt: 2026-07-08 13:00:07 +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": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_INTEL_TDX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_INTEL_TDX" ], "series_id": "a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "tdx_td_init", "tdx_vm_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9JTlRFTF9URFgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0ZHhfdGRfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZHhfdm1faW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIG9mIEtWTSBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSBieSB1cGRhdGluZyB0aGUgQ1BVSUQgZW50cnkgY291bnQgaW4gYHRkeF90ZF9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTI6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZGE0ODYzMDI5NzA1MDUwN2JiYjUyYzA2NjBkZGQwYzBjZGU1YWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxMjo1ODoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuaW5kZXggZmZlOWQwZGI1OGM1OWIuLmI2NThiMDNlNzc1MDg4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuQEAgLTI4MDIsNiAmIzQzOzI4MDIsMTIgQEAgc3RhdGljIGludCB0ZHhfdGRfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdGR4X2NtZCAqY21kKVxuIFx0aWYgKElTX0VSUihpbml0X3ZtKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoaW5pdF92bSk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBVc2UgdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCwgYXMgdXNlcl9kYXRhLVx1MDAzZWNwdWlkLm5lbnQgbWF5IGhhdmVcbiYjNDM7XHQgKiBjaGFuZ2VkLlxuJiM0MztcdCAqL1xuJiM0MztcdGluaXRfdm0tXHUwMDNlY3B1aWQubmVudCA9IG5yX3VzZXJfZW50cmllcztcbiYjNDM7XG4gXHRpZiAobWVtY2hyX2ludihpbml0X3ZtLVx1MDAzZXJlc2VydmVkLCAwLCBzaXplb2YoaW5pdF92bS1cdTAwM2VyZXNlcnZlZCkpKSB7XG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdGdvdG8gb3V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9JTlRFTF9URFgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0ZHhfdGRfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZHhfdm1faW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIG9mIEtWTSBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSBieSB1cGRhdGluZyB0aGUgQ1BVSUQgZW50cnkgY291bnQgaW4gYHRkeF90ZF9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDRkYTQ4NjMwMjk3MDUwNTA3YmJiNTJjMDY2MGRkZDBjMGNkZTVhZGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDEyOjU4OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC90ZHguYyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmMKaW5kZXggZmZlOWQwZGI1OGM1OWIuLmI2NThiMDNlNzc1MDg4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmMKQEAgLTI4MDIsNiAmIzQzOzI4MDIsMTIgQEAgc3RhdGljIGludCB0ZHhfdGRfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdGR4X2NtZCAqY21kKQogCWlmIChJU19FUlIoaW5pdF92bSkpCiAJCXJldHVybiBQVFJfRVJSKGluaXRfdm0pOwogCiYjNDM7CS8qCiYjNDM7CSAqIFVzZSB0aGUgdmFsaWRhdGVkIGVudHJ5IGNvdW50LCBhcyB1c2VyX2RhdGEtJmd0O2NwdWlkLm5lbnQgbWF5IGhhdmUKJiM0MzsJICogY2hhbmdlZC4KJiM0MzsJICovCiYjNDM7CWluaXRfdm0tJmd0O2NwdWlkLm5lbnQgPSBucl91c2VyX2VudHJpZXM7CiYjNDM7CiAJaWYgKG1lbWNocl9pbnYoaW5pdF92bS0mZ3Q7cmVzZXJ2ZWQsIDAsIHNpemVvZihpbml0X3ZtLSZndDtyZXNlcnZlZCkpKSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTA1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVERYIEluaXRpYWxpemF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgYXJjaC94ODYva3ZtL3ZteC90ZHguY2AuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGludHJvZHVjaW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBpbiB0aGUgS1ZNIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGUgYWRkaXRpb24gb2YgYGluaXRfdm0tJmd0O2NwdWlkLm5lbnQgPSBucl91c2VyX2VudHJpZXM7YCB3aXRoaW4gdGhlIGB0ZHhfdGRfaW5pdCgpYCBmdW5jdGlvbi4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgVERYLCBgbmVudGAgbGlrZWx5IHJlZmVycyB0byB0aGUgbnVtYmVyIG9mIGVudHJpZXMsIHByZXN1bWFibHkgcmVsYXRlZCB0byBDUFVJRCBkYXRhLCB0aGF0IGFyZSBiZWluZyBzZXQgdXAgZm9yIHRoZSB1c2VyIHNwYWNlLiBUaGUgYXNzaWdubWVudCBzdWdnZXN0cyB0aGF0IHRoZSBudW1iZXIgb2YgdXNlci1kZWZpbmVkIENQVUlEIGVudHJpZXMgKGBucl91c2VyX2VudHJpZXNgKSBpcyBiZWluZyBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFRoaXMgY2hhbmdlIHdhcnJhbnRzIGEgY2xvc2VyIGluc3BlY3Rpb24gb2YgYHRkeF90ZF9pbml0KClgIGl0c2VsZiB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgYXNzaWdubWVudCwgZXNwZWNpYWxseSB0aGUgaW50ZXJhY3Rpb24gd2l0aCBleGlzdGluZyBzdHJ1Y3R1cmVzIGFuZCB0aGUgb3ZlcmFsbCBURFggYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBzcGVjaWZpYyB2YWx1ZSBpcyBiZWluZyBzZXQgYXQgdGhpcyBwb2ludCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGhvdyBpdCBhZmZlY3RzIHRoZSBjb250cm9sIGZsb3cgZG93biB0aGUgbGluZS4gV2hhdCYjMzk7cyB0aGUgaW1wYWN0IG9uIHRoZSBzZWN1cml0eSBib3VuZGFyeSwgcGVyZm9ybWFuY2UgYW5kIHRoZSBvdmVyYWxsIFZNPyBUaGlzIGlzIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2gsIGFuZCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RkeF90ZF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC90ZHguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI0MDY9c3RhdGljIGludCBzZXR1cF90ZHBhcmFtcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB0ZF9wYXJhbXMgKnRkX3BhcmFtcyxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI0NDktXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjI0NTA6c3RhdGljIGludCBfX3RkeF90ZF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHRkX3BhcmFtcyAqdGRfcGFyYW1zLFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNDUxLVx0XHRcdCB1NjQgKnNlYW1jYWxsX2Vycilcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI3NzI9REVGSU5FX0NMQVNTKHRkeF92bV9zdGF0ZV9ndWFyZCwgdGR4X3ZtX3N0YXRlX2d1YXJkX3QsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNzc1LVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyNzc2OnN0YXRpYyBpbnQgdGR4X3RkX2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3RkeF9jbWQgKmNtZClcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjc3Ny17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yODMwLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyODMxOlx0cmV0ID0gX190ZHhfdGRfaW5pdChrdm0sIHRkX3BhcmFtcywgXHUwMDI2Y21kLVx1MDAzZWh3X2Vycm9yKTtcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjgzMi1cdGlmIChyZXQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0yOTI0PWludCB0ZHhfdm1faW9jdGwoc3RydWN0IGt2bSAqa3ZtLCB2b2lkIF9fdXNlciAqYXJncClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI5NDEtXHRjYXNlIEtWTV9URFhfSU5JVF9WTTpcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6Mjk0MjpcdFx0ciA9IHRkeF90ZF9pbml0KGt2bSwgXHUwMDI2dGR4X2NtZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI5NDMtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIFREWCBJbml0aWFsaXphdGlvbiBQYXRoKioKCkFscmlnaHQsIHNvIGB0ZHhfdGRfaW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSBURFggaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gQW5kIHdoZXJlIGRvZXMgaXQgZ2V0IGNhbGxlZD8gQWgsIHJpZ2h0LCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgdGR4X3ZtX2lvY3RsYCBzcGVjaWZpY2FsbHkgd2hlbiBLVk0gcmVjZWl2ZXMgdGhlIGBLVk1fVERYX0lOSVRfVk1gIGlvY3RsIHJlcXVlc3QuIFRoYXQmIzM5O3MgYSBkaXJlY3QgS1ZNIGlvY3RsIHBhdGgsIHNvIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGVudHJ5LiBObyBhbWJpZ3VpdHkgdGhlcmUuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdG8gYXNrIGlzIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGhhdmUgdG8gYmUgZW5hYmxlZCB0byBhbGxvdyBmb3IgS1ZNIFREWC4gV2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbnMgc3BlY2lmaWNhbGx5IGxpZ2h0IHVwIHRoaXMgY29kZSBwYXRoPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBjb25maWcgb3B0aW9ucyB0byBnZXQgYSBzZW5zZSBmb3IgaG93IGl0JiMzOTtzIGVuYWJsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gVGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTI6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX1REWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqRGl2aW5nIGludG8gS1ZNIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gS1ZNIG9uIHg4NiwgcHJvYmFibHkgYSBmZWF0dXJlIG9yIHNldHRpbmcuIE15IGZpcnN0IGluc3RpbmN0LCBhbmQgdGhlIHJpZ2h0IG9uZSBpbiB0aGlzIGNhc2UsIGlzIHRvIGNoZWNrIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgS1ZNIG9uIHg4Ni4gSSYjMzk7bSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgYGFyY2gveDg2L2t2bS9LY29uZmlnYC4gVGhpcyBmaWxlICpzaG91bGQqIGhvbGQgdGhlIG1ham9yaXR5IG9mIHRoZSBLY29uZmlnIG9wdGlvbnMgdGhhdCBjb250cm9sIHdoaWNoIEtWTSBmZWF0dXJlcyBhcmUgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBJdOKAmXMgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIGtub2JzIHJlbGF0ZWQgdG8gdGhlIEtWTSB4ODYgaW1wbGVtZW50YXRpb24uIEJ5IGV4YW1pbmluZyB0aGF0IEtjb25maWcgZmlsZSwgSSYjMzk7bGwgcXVpY2tseSBnZXQgYW4gb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBwb3NzaWJsZSBhbmQgd2hhdCBtaWdodCBuZWVkIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBLVk0geDg2IGFuYWx5c2lzLiBMZXTigJlzIHNlZSB3aGF0IGdvb2RpZXMgYXJlIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElOVEVMX1REWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yIGFzIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBLY29uZmlnIGZvciBLVk0vVk1YIG9uIHg4NioqCgpPa2F5LCBzbyB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gY2hlY2sgYGFyY2gveDg2L2t2bS92bXgvS2NvbmZpZ2AuIFJpZ2h0IGF3YXksIG15IG1pbmQganVtcHMgdG8gYSBmZXcgdGhpbmdzLiBJIGtub3cgdGhpcyBmaWxlIGlzIGdvaW5nIHRvIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIG1vZHVsZSByZWxhdGVkIHRvIEludGVsJiMzOTtzIFZpcnR1YWwgTWFjaGluZSBFeHRlbnNpb25zIChWTVgpIG9uIHg4NiBwcm9jZXNzb3JzLgoKTXkgZmlyc3QgdGhvdWdodDogKndoYXQgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zIGhlcmU/KiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBmbGFncyB0aGF0IGNvbnRyb2w6CgoqICAgKipFbmFibGluZy9EaXNhYmxpbmcgS1ZNL1ZNWCBzdXBwb3J0IGluIGdlbmVyYWwuKiogSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGEgdG9wLWxldmVsIGBDT05GSUdfS1ZNX0lOVEVMYCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IGdhdGVzIHRoZSBlbnRpcmUgbW9kdWxlLiBJZiBJIHNlZSBpdCBlbmFibGVkIEkgdGhlbiBuZWVkIHRvIGRldGVybWluZSBob3cgdGhlIGJ1aWxkIGNhbiBiZSBjb25maWd1cmVkIChkaXJlY3RseSBvciBhcyBhIG1vZHVsZSkuCiogICAqKkZlYXR1cmUgRmxhZ3M6KiogSSYjMzk7bSBpbnRlcmVzdGVkIGluIGFueSBmaW5lLWdyYWluZWQgb3B0aW9ucyByZWxhdGVkIHRvIHNwZWNpZmljIFZNWCBmZWF0dXJlcy4gVGhpbmdzIGxpa2UgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQsIEVQVCAoRXh0ZW5kZWQgUGFnZSBUYWJsZXMpIG9wdGltaXphdGlvbiwgVk0tZXhpdCBoYW5kbGluZywgYW55IHNwZWNpYWwgZmxhZ3MgZm9yIG5ld2VyIGhhcmR3YXJlLCBvciBldmVuIHRoaW5ncyBsaWtlIEludGVsIFByb2Nlc3NvciBUcmFjZSAoSVBUKSBpbnRlZ3JhdGlvbiBpZiByZWxldmFudC4gSSYjMzk7ZCBiZSBsb29raW5nIHRvIHNlZSB3aGF0IGdyYW51bGFyaXR5IG9mIGNvbnRyb2wgdGhlIGtlcm5lbCBwcm92aWRlcyB0byB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IuCiogICAqKkRlcGVuZGVuY2llczoqKiBJ4oCZbSBjdXJpb3VzIGFib3V0IHdoYXQgb3RoZXIgS2NvbmZpZyBvcHRpb25zIHRoaXMgZmlsZSBkZXBlbmRzIG9uLiBEb2VzIGl0IGhhdmUgYW55IHJlbGF0aW9uc2hpcHMgdG8gZ2VuZXJhbCB4ODYgY29uZmlndXJhdGlvbiwgbWVtb3J5IG1hbmFnZW1lbnQgb3B0aW9ucywgb3Igc2VjdXJpdHkgZmVhdHVyZXM/IFVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGhlbHBzIHRyYWNlIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgdGhlIHZhcmlvdXMgb3B0aW9ucyBhcmUgY29tYmluZWQuCiogICAqKkRvY3VtZW50YXRpb246KiogSSAqaG9wZSogdGhlcmUgYXJlIGRlY2VudCBjb21tZW50cyBpbiB0aGUgYEtjb25maWdgIGZpbGUgaXRzZWxmLiBDb25jaXNlIGV4cGxhbmF0aW9ucyBvZiBlYWNoIG9wdGlvbiwgd2hhdCB0aGV5IGRvLCBhbmQgYW55IHBvdGVudGlhbCBjYXZlYXRzIG9yIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBhcmUgZXNzZW50aWFsLCBlc3BlY2lhbGx5IGZvciBzb21ldGhpbmcgYXMgY29tcGxleCBhcyB2aXJ0dWFsaXphdGlvbi4KClVsdGltYXRlbHksIEkmIzM5O20gaGVyZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBvcnRpb24gb2YgdGhlIGtlcm5lbCBpcyAqY29uZmlndXJlZCouIEFueSBtb2RpZmljYXRpb25zIEkgbWlnaHQgbmVlZCB0byBtYWtlLCBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhpcyBmaWxlIGluc2lkZSBhbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9Nj1zb3VyY2UgXCYjMzQ7dmlydC9rdm0vS2NvbmZpZ1wmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWctNy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjg6bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctOS1cdGJvb2wgXCYjMzQ7VmlydHVhbGl6YXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEyMjpjb25maWcgWDg2X1NHWF9LVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7U29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpdDoKCioqRXhhbWluaW5nIHRoZSBURFggSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKUmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoIGlzIGBLVk1fSU5URUxfVERYYC4gIFRoaXMgbWVhbnMgdGhlIHN5c3RlbSYjMzk7cyBzZXQgdXAgZm9yIEludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXIg4oCTIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGdldHMgcmVhZHkgZm9yIFREWCwgc28gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gYHRkeF90ZF9pbml0KClgLiBUaGlzIGZ1bmN0aW9uIGlzIG9idmlvdXNseSB0aGUgY3J1Y2lhbCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHN1Yi1yb3V0aW5lcyBhbmQgb3RoZXIgcmVsYXRlZCBvcGVyYXRpb25zIGludm9sdmVkLCBhcyB0aGlzIGZ1bmN0aW9uIHdpbGwgbW9zdCBsaWtlbHkgaW52b2x2ZSBvdGhlciBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNvbXBvbmVudHMuIFRoaXMgZXhwbG9yYXRpb24gb2YgYHRkeF90ZF9pbml0KClgIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXkgc3RlcHMgaW4gY29uZmlndXJpbmcgVERYIGZvciB1c2UgaW4gS1ZNLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZHhfdGRfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdGR4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC90ZHguYz0yNDA2PXN0YXRpYyBpbnQgc2V0dXBfdGRwYXJhbXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdGRfcGFyYW1zICp0ZF9wYXJhbXMsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNDQ5LVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyNDUwOnN0YXRpYyBpbnQgX190ZHhfdGRfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB0ZF9wYXJhbXMgKnRkX3BhcmFtcyxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjQ1MS1cdFx0XHQgdTY0ICpzZWFtY2FsbF9lcnIpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0yNzcyPURFRklORV9DTEFTUyh0ZHhfdm1fc3RhdGVfZ3VhcmQsIHRkeF92bV9zdGF0ZV9ndWFyZF90LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjc3NS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6Mjc3NjpzdGF0aWMgaW50IHRkeF90ZF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV90ZHhfY21kICpjbWQpXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI3Nzcte1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjgzMC1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjgzMTpcdHJldCA9IF9fdGR4X3RkX2luaXQoa3ZtLCB0ZF9wYXJhbXMsIFx1MDAyNmNtZC1cdTAwM2Vod19lcnJvcik7XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI4MzItXHRpZiAocmV0KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjkyND1pbnQgdGR4X3ZtX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yOTQxLVx0Y2FzZSBLVk1fVERYX0lOSVRfVk06XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjI5NDI6XHRcdHIgPSB0ZHhfdGRfaW5pdChrdm0sIFx1MDAyNnRkeF9jbWQpO1xuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yOTQzLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEyNQoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAzMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBURFggSW5pdGlhbGl6YXRpb24gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGB0ZHhfdGRfaW5pdGAgZnVuY3Rpb24uIEkgc2hvdWxkIHByb2JhYmx5IHJlLWV4YW1pbmUgdGhlIHBhdGNoIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuIAoKSSBzZWUgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZTogdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCBpcyBub3cgYmVpbmcgdXNlZCB0byBzZXQgYGluaXRfdm0tJmd0O2NwdWlkLm5lbnRgLiBUaGlzIGlzIGludGVyZXN0aW5nOyB0aGUgY29tbWVudCBwb2ludHMgb3V0IHRoYXQgYHVzZXJfZGF0YS0mZ3Q7Y3B1aWQubmVudGAgbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkIHNvbWV3aGVyZSBlbHNlLiBTbywgdGhpcyBlbnN1cmVzIHdlJiMzOTtyZSB3b3JraW5nIHdpdGggdGhlIGNvcnJlY3QgYW5kIHZhbGlkYXRlZCBlbnRyeSBjb3VudCB3aGVuIGluaXRpYWxpemluZyB0aGUgVk0uIFRoYXQmIzM5O3MgYSBzZW5zaWJsZSBhcHByb2FjaCB0byBtYWludGFpbiBkYXRhIGludGVncml0eS4KCkZ1bmN0aW9uYWxseSwgSSBrbm93IHRoaXMgcGF0aCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgYHRkeF92bV9pb2N0bGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aGVuIGhhbmRsaW5nIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgc2VlbXMgbGlrZSBhIGNsZWFuIHBhdGguIE15IG1lbnRhbCBtYXAgb2YgVERYIGNvZGUgdGVsbHMgbWUgdGhhdCBgdGR4X3ZtX2lvY3RsYCBpcyBpbmRlZWQgYSBnb29kIGVudHJ5IHBvaW50IHRvIHN0YXJ0IHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyBpdOKAmXMgdGhlIGdhdGV3YXkgZm9yIEtWTSBpb2N0bHMgcmVsYXRlZCB0byBURFgsIGFuZCBgdGR4X3RkX2luaXRgIGlzIGEga2V5IGNvbXBvbmVudCBkdXJpbmcgdGhlIFREWCBWTSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgZGlyZWN0IHBhdGguIEkmIzM5O2xsIGFsc28gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgYEtWTV9JTlRFTF9URFhgIGFuZCBob3cgdGhhdCByZWxhdGVzIHRvIHRoaXMgY29kZSBwYXRoLiBJIHNob3VsZCBhbHNvIGludmVzdGlnYXRlIGB0ZHhfdGRfaW5pdGAgaW4gbW9yZSBkZXRhaWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGR4X3RkX2luaXQmIzM0OywKICAgICYjMzQ7dGR4X3ZtX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBvZiBLVk0gVERYIChUcnVzdCBEb21haW4gRXh0ZW5zaW9ucykgYnkgdXBkYXRpbmcgdGhlIENQVUlEIGVudHJ5IGNvdW50IGluIGB0ZHhfdGRfaW5pdGAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9URFhfSU5JVF9WTWAgaW9jdGwuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGR4X3RkX2luaXQmIzM0OywKICAgICYjMzQ7dGR4X3ZtX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBvZiBLVk0gVERYIChUcnVzdCBEb21haW4gRXh0ZW5zaW9ucykgYnkgdXBkYXRpbmcgdGhlIENQVUlEIGVudHJ5IGNvdW50IGluIGB0ZHhfdGRfaW5pdGAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9URFhfSU5JVF9WTWAgaW9jdGwuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMTI6NTg6MTcuMDQ2ODQ0NTM1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg3OTY3MjIwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0lOVEVMX1REWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRkeF90ZF9pbml0XCIsXG4gICAgXCJ0ZHhfdm1faW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gbG9naWMgb2YgS1ZNIFREWCAoVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMpIGJ5IHVwZGF0aW5nIHRoZSBDUFVJRCBlbnRyeSBjb3VudCBpbiBgdGR4X3RkX2luaXRgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBLVk1fVERYX0lOSVRfVk1gIGlvY3RsLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTI6NTg6MTcuMDQ2ODUyMzE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTM2OTAyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ZGE0ODYzMDI5NzA1MDUwN2JiYjUyYzA2NjBkZGQwYzBjZGU1YWRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDggMTI6NTg6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC90ZHguYyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmNcXG5pbmRleCBmZmU5ZDBkYjU4YzU5Yi4uYjY1OGIwM2U3NzUwODggMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmNcXG5AQCAtMjgwMiw2ICsyODAyLDEyIEBAIHN0YXRpYyBpbnQgdGR4X3RkX2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3RkeF9jbWQgKmNtZClcXG4gXFx0aWYgKElTX0VSUihpbml0X3ZtKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoaW5pdF92bSk7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBVc2UgdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCwgYXMgdXNlcl9kYXRhLVxcdTAwM2VjcHVpZC5uZW50IG1heSBoYXZlXFxuK1xcdCAqIGNoYW5nZWQuXFxuK1xcdCAqL1xcbitcXHRpbml0X3ZtLVxcdTAwM2VjcHVpZC5uZW50ID0gbnJfdXNlcl9lbnRyaWVzO1xcbitcXG4gXFx0aWYgKG1lbWNocl9pbnYoaW5pdF92bS1cXHUwMDNlcmVzZXJ2ZWQsIDAsIHNpemVvZihpbml0X3ZtLVxcdTAwM2VyZXNlcnZlZCkpKSB7XFxuIFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIFxcdFxcdGdvdG8gb3V0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1ODoxNy43MDE4NjUxMzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MTQxNjkwNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9JTlRFTF9URFhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0ZHhfdGRfaW5pdFwiLFxuICAgIFwidGR4X3ZtX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIG9mIEtWTSBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSBieSB1cGRhdGluZyB0aGUgQ1BVSUQgZW50cnkgY291bnQgaW4gYHRkeF90ZF9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGRhNDg2MzAyOTcwNTA1MDdiYmI1MmMwNjYwZGRkMGMwY2RlNWFkZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTI6NTg6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuaW5kZXggZmZlOWQwZGI1OGM1OWIuLmI2NThiMDNlNzc1MDg4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuKysrIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuQEAgLTI4MDIsNiArMjgwMiwxMiBAQCBzdGF0aWMgaW50IHRkeF90ZF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV90ZHhfY21kICpjbWQpXG4gXHRpZiAoSVNfRVJSKGluaXRfdm0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihpbml0X3ZtKTtcbiBcbitcdC8qXG4rXHQgKiBVc2UgdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCwgYXMgdXNlcl9kYXRhLVx1MDAzZWNwdWlkLm5lbnQgbWF5IGhhdmVcbitcdCAqIGNoYW5nZWQuXG4rXHQgKi9cbitcdGluaXRfdm0tXHUwMDNlY3B1aWQubmVudCA9IG5yX3VzZXJfZW50cmllcztcbitcbiBcdGlmIChtZW1jaHJfaW52KGluaXRfdm0tXHUwMDNlcmVzZXJ2ZWQsIDAsIHNpemVvZihpbml0X3ZtLVx1MDAzZXJlc2VydmVkKSkpIHtcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1ODoxNy43MDE4NjgzNTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUxNTkyNzgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFREWCBJbml0aWFsaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBpbnRyb2R1Y2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIEtWTSBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyBpbml0aWFsaXphdGlvbi4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGBpbml0X3ZtLVx1MDAzZWNwdWlkLm5lbnQgPSBucl91c2VyX2VudHJpZXM7YCB3aXRoaW4gdGhlIGB0ZHhfdGRfaW5pdCgpYCBmdW5jdGlvbi5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBURFgsIGBuZW50YCBsaWtlbHkgcmVmZXJzIHRvIHRoZSBudW1iZXIgb2YgZW50cmllcywgcHJlc3VtYWJseSByZWxhdGVkIHRvIENQVUlEIGRhdGEsIHRoYXQgYXJlIGJlaW5nIHNldCB1cCBmb3IgdGhlIHVzZXIgc3BhY2UuIFRoZSBhc3NpZ25tZW50IHN1Z2dlc3RzIHRoYXQgdGhlIG51bWJlciBvZiB1c2VyLWRlZmluZWQgQ1BVSUQgZW50cmllcyAoYG5yX3VzZXJfZW50cmllc2ApIGlzIGJlaW5nIGRpcmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gVGhpcyBjaGFuZ2Ugd2FycmFudHMgYSBjbG9zZXIgaW5zcGVjdGlvbiBvZiBgdGR4X3RkX2luaXQoKWAgaXRzZWxmIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhc3NpZ25tZW50LCBlc3BlY2lhbGx5IHRoZSBpbnRlcmFjdGlvbiB3aXRoIGV4aXN0aW5nIHN0cnVjdHVyZXMgYW5kIHRoZSBvdmVyYWxsIFREWCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIHNwZWNpZmljIHZhbHVlIGlzIGJlaW5nIHNldCBhdCB0aGlzIHBvaW50IGluIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgaG93IGl0IGFmZmVjdHMgdGhlIGNvbnRyb2wgZmxvdyBkb3duIHRoZSBsaW5lLiBXaGF0J3MgdGhlIGltcGFjdCBvbiB0aGUgc2VjdXJpdHkgYm91bmRhcnksIHBlcmZvcm1hbmNlIGFuZCB0aGUgb3ZlcmFsbCBWTT8gVGhpcyBpcyB0aGUgY29yZSBvZiB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU4OjMwLjIxNzc5OTEyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjIxMjgyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZHhfdGRfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3RkeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjQwNj1zdGF0aWMgaW50IHNldHVwX3RkcGFyYW1zKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHRkX3BhcmFtcyAqdGRfcGFyYW1zLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNDQ5LVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjQ1MDpzdGF0aWMgaW50IF9fdGR4X3RkX2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdGRfcGFyYW1zICp0ZF9wYXJhbXMsXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNDUxLVxcdFxcdFxcdCB1NjQgKnNlYW1jYWxsX2VycilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9Mjc3Mj1ERUZJTkVfQ0xBU1ModGR4X3ZtX3N0YXRlX2d1YXJkLCB0ZHhfdm1fc3RhdGVfZ3VhcmRfdCxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjc3NS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjI3NzY6c3RhdGljIGludCB0ZHhfdGRfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdGR4X2NtZCAqY21kKVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjc3Ny17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI4MzAtXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyODMxOlxcdHJldCA9IF9fdGR4X3RkX2luaXQoa3ZtLCB0ZF9wYXJhbXMsIFxcdTAwMjZjbWQtXFx1MDAzZWh3X2Vycm9yKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI4MzItXFx0aWYgKHJldClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjkyND1pbnQgdGR4X3ZtX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI5NDEtXFx0Y2FzZSBLVk1fVERYX0lOSVRfVk06XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyOTQyOlxcdFxcdHIgPSB0ZHhfdGRfaW5pdChrdm0sIFxcdTAwMjZ0ZHhfY21kKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI5NDMtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU4OjMwLjM0NDAxODg3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyODExNTQyNjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgVERYIEluaXRpYWxpemF0aW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgdGR4X3RkX2luaXRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgVERYIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEFuZCB3aGVyZSBkb2VzIGl0IGdldCBjYWxsZWQ/IEFoLCByaWdodCwgaXQncyBjYWxsZWQgZnJvbSBgdGR4X3ZtX2lvY3RsYCBzcGVjaWZpY2FsbHkgd2hlbiBLVk0gcmVjZWl2ZXMgdGhlIGBLVk1fVERYX0lOSVRfVk1gIGlvY3RsIHJlcXVlc3QuIFRoYXQncyBhIGRpcmVjdCBLVk0gaW9jdGwgcGF0aCwgc28gdGhhdCdzIGRlZmluaXRlbHkgYSBwb2ludCBvZiBlbnRyeS4gTm8gYW1iaWd1aXR5IHRoZXJlLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdG8gYXNrIGlzIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGhhdmUgdG8gYmUgZW5hYmxlZCB0byBhbGxvdyBmb3IgS1ZNIFREWC4gV2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbnMgc3BlY2lmaWNhbGx5IGxpZ2h0IHVwIHRoaXMgY29kZSBwYXRoPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBjb25maWcgb3B0aW9ucyB0byBnZXQgYSBzZW5zZSBmb3IgaG93IGl0J3MgZW5hYmxlZC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1ODo1My4xNTU1NjU3MTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU2NTkxNjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fVERYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU4OjUzLjI0MTIzNjc4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0NjUwMDk2ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqRGl2aW5nIGludG8gS1ZNIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byBLVk0gb24geDg2LCBwcm9iYWJseSBhIGZlYXR1cmUgb3Igc2V0dGluZy4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgcmlnaHQgb25lIGluIHRoaXMgY2FzZSwgaXMgdG8gY2hlY2sgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBLVk0gb24geDg2LiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AuIFRoaXMgZmlsZSAqc2hvdWxkKiBob2xkIHRoZSBtYWpvcml0eSBvZiB0aGUgS2NvbmZpZyBvcHRpb25zIHRoYXQgY29udHJvbCB3aGljaCBLVk0gZmVhdHVyZXMgYXJlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gSXTigJlzIHRoZSBjZW50cmFsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBrbm9icyByZWxhdGVkIHRvIHRoZSBLVk0geDg2IGltcGxlbWVudGF0aW9uLiBCeSBleGFtaW5pbmcgdGhhdCBLY29uZmlnIGZpbGUsIEknbGwgcXVpY2tseSBnZXQgYW4gb3ZlcnZpZXcgb2Ygd2hhdCdzIHBvc3NpYmxlIGFuZCB3aGF0IG1pZ2h0IG5lZWQgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBJdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgaW4tZGVwdGggS1ZNIHg4NiBhbmFseXNpcy4gTGV04oCZcyBzZWUgd2hhdCBnb29kaWVzIGFyZSBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE4OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU5OjA3Ljg5MTMzNzgyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzY0MTg5NDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTlRFTF9URFhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTI6NTk6MDguMDI3NzY1NzYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjE4NjMyNzMwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJ2QgYmUgbG9va2luZyBmb3IgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgS2NvbmZpZyBmb3IgS1ZNL1ZNWCBvbiB4ODYqKlxuXG5Pa2F5LCBzbyB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gY2hlY2sgYGFyY2gveDg2L2t2bS92bXgvS2NvbmZpZ2AuIFJpZ2h0IGF3YXksIG15IG1pbmQganVtcHMgdG8gYSBmZXcgdGhpbmdzLiBJIGtub3cgdGhpcyBmaWxlIGlzIGdvaW5nIHRvIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIG1vZHVsZSByZWxhdGVkIHRvIEludGVsJ3MgVmlydHVhbCBNYWNoaW5lIEV4dGVuc2lvbnMgKFZNWCkgb24geDg2IHByb2Nlc3NvcnMuXG5cbk15IGZpcnN0IHRob3VnaHQ6ICp3aGF0IGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBoZXJlPyogSSdsbCBiZSBsb29raW5nIGZvciBmbGFncyB0aGF0IGNvbnRyb2w6XG5cbiogICAqKkVuYWJsaW5nL0Rpc2FibGluZyBLVk0vVk1YIHN1cHBvcnQgaW4gZ2VuZXJhbC4qKiBJJ2QgZXhwZWN0IHRvIHNlZSBhIHRvcC1sZXZlbCBgQ09ORklHX0tWTV9JTlRFTGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgdGhhdCBnYXRlcyB0aGUgZW50aXJlIG1vZHVsZS4gSWYgSSBzZWUgaXQgZW5hYmxlZCBJIHRoZW4gbmVlZCB0byBkZXRlcm1pbmUgaG93IHRoZSBidWlsZCBjYW4gYmUgY29uZmlndXJlZCAoZGlyZWN0bHkgb3IgYXMgYSBtb2R1bGUpLlxuKiAgICoqRmVhdHVyZSBGbGFnczoqKiBJJ20gaW50ZXJlc3RlZCBpbiBhbnkgZmluZS1ncmFpbmVkIG9wdGlvbnMgcmVsYXRlZCB0byBzcGVjaWZpYyBWTVggZmVhdHVyZXMuIFRoaW5ncyBsaWtlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LCBFUFQgKEV4dGVuZGVkIFBhZ2UgVGFibGVzKSBvcHRpbWl6YXRpb24sIFZNLWV4aXQgaGFuZGxpbmcsIGFueSBzcGVjaWFsIGZsYWdzIGZvciBuZXdlciBoYXJkd2FyZSwgb3IgZXZlbiB0aGluZ3MgbGlrZSBJbnRlbCBQcm9jZXNzb3IgVHJhY2UgKElQVCkgaW50ZWdyYXRpb24gaWYgcmVsZXZhbnQuIEknZCBiZSBsb29raW5nIHRvIHNlZSB3aGF0IGdyYW51bGFyaXR5IG9mIGNvbnRyb2wgdGhlIGtlcm5lbCBwcm92aWRlcyB0byB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogSeKAmW0gY3VyaW91cyBhYm91dCB3aGF0IG90aGVyIEtjb25maWcgb3B0aW9ucyB0aGlzIGZpbGUgZGVwZW5kcyBvbi4gRG9lcyBpdCBoYXZlIGFueSByZWxhdGlvbnNoaXBzIHRvIGdlbmVyYWwgeDg2IGNvbmZpZ3VyYXRpb24sIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGlvbnMsIG9yIHNlY3VyaXR5IGZlYXR1cmVzPyBVbmRlcnN0YW5kaW5nIGRlcGVuZGVuY2llcyBoZWxwcyB0cmFjZSB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IHRoZSB2YXJpb3VzIG9wdGlvbnMgYXJlIGNvbWJpbmVkLlxuKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBJICpob3BlKiB0aGVyZSBhcmUgZGVjZW50IGNvbW1lbnRzIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpdHNlbGYuIENvbmNpc2UgZXhwbGFuYXRpb25zIG9mIGVhY2ggb3B0aW9uLCB3aGF0IHRoZXkgZG8sIGFuZCBhbnkgcG90ZW50aWFsIGNhdmVhdHMgb3IgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGFyZSBlc3NlbnRpYWwsIGVzcGVjaWFsbHkgZm9yIHNvbWV0aGluZyBhcyBjb21wbGV4IGFzIHZpcnR1YWxpemF0aW9uLlxuXG5VbHRpbWF0ZWx5LCBJJ20gaGVyZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBvcnRpb24gb2YgdGhlIGtlcm5lbCBpcyAqY29uZmlndXJlZCouIEFueSBtb2RpZmljYXRpb25zIEkgbWlnaHQgbmVlZCB0byBtYWtlLCBJJ2xsIG5lZWQgdG8ga25vdyB0aGlzIGZpbGUgaW5zaWRlIGFuZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1OToyOS44OTEwNDIxNzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NTAwOTcxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTY9c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTctXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODptZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctOS1cXHRib29sIFxcXCJWaXJ0dWFsaXphdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMjI6Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTIzLVxcdGJvb2wgXFxcIlNvZnR3YXJlIEd1YXJkIGVYdGVuc2lvbnMgKFNHWCkgVmlydHVhbGl6YXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1OTozMC40MzYwNTkyMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0MTYwMDcwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipFeGFtaW5pbmcgdGhlIFREWCBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cblJpZ2h0LCB0aGUgY29uZmlndXJhdGlvbiBJJ20gd29ya2luZyB3aXRoIGlzIGBLVk1fSU5URUxfVERYYC4gIFRoaXMgbWVhbnMgdGhlIHN5c3RlbSdzIHNldCB1cCBmb3IgSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMuIE15IG5leHQgc3RlcCBpcyBjbGVhciDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gZ2V0cyByZWFkeSBmb3IgVERYLCBzbyBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGB0ZHhfdGRfaW5pdCgpYC4gVGhpcyBmdW5jdGlvbiBpcyBvYnZpb3VzbHkgdGhlIGNydWNpYWwgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBzdWItcm91dGluZXMgYW5kIG90aGVyIHJlbGF0ZWQgb3BlcmF0aW9ucyBpbnZvbHZlZCwgYXMgdGhpcyBmdW5jdGlvbiB3aWxsIG1vc3QgbGlrZWx5IGludm9sdmUgb3RoZXIgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjb21wb25lbnRzLiBUaGlzIGV4cGxvcmF0aW9uIG9mIGB0ZHhfdGRfaW5pdCgpYCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUga2V5IHN0ZXBzIGluIGNvbmZpZ3VyaW5nIFREWCBmb3IgdXNlIGluIEtWTS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU5OjQxLjg1MjA2OTg3MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgzOTU5NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGR4X3RkX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC90ZHguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI0MDY9c3RhdGljIGludCBzZXR1cF90ZHBhcmFtcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB0ZF9wYXJhbXMgKnRkX3BhcmFtcyxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjQ0OS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjI0NTA6c3RhdGljIGludCBfX3RkeF90ZF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHRkX3BhcmFtcyAqdGRfcGFyYW1zLFxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjQ1MS1cXHRcXHRcXHQgdTY0ICpzZWFtY2FsbF9lcnIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI3NzI9REVGSU5FX0NMQVNTKHRkeF92bV9zdGF0ZV9ndWFyZCwgdGR4X3ZtX3N0YXRlX2d1YXJkX3QsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI3NzUtXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyNzc2OnN0YXRpYyBpbnQgdGR4X3RkX2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3RkeF9jbWQgKmNtZClcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI3Nzcte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yODMwLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjgzMTpcXHRyZXQgPSBfX3RkeF90ZF9pbml0KGt2bSwgdGRfcGFyYW1zLCBcXHUwMDI2Y21kLVxcdTAwM2Vod19lcnJvcik7XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yODMyLVxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI5MjQ9aW50IHRkeF92bV9pb2N0bChzdHJ1Y3Qga3ZtICprdm0sIHZvaWQgX191c2VyICphcmdwKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yOTQxLVxcdGNhc2UgS1ZNX1REWF9JTklUX1ZNOlxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6Mjk0MjpcXHRcXHRyID0gdGR4X3RkX2luaXQoa3ZtLCBcXHUwMDI2dGR4X2NtZCk7XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yOTQzLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1OTo0MS45NTA0NzM5NDZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM3MjAwNzIwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBURFggSW5pdGlhbGl6YXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBgdGR4X3RkX2luaXRgIGZ1bmN0aW9uLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIHRoZSBwYXRjaCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBcblxuSSBzZWUgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZTogdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCBpcyBub3cgYmVpbmcgdXNlZCB0byBzZXQgYGluaXRfdm0tXHUwMDNlY3B1aWQubmVudGAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IHRoZSBjb21tZW50IHBvaW50cyBvdXQgdGhhdCBgdXNlcl9kYXRhLVx1MDAzZWNwdWlkLm5lbnRgIG1pZ2h0IGhhdmUgYmVlbiBtb2RpZmllZCBzb21ld2hlcmUgZWxzZS4gU28sIHRoaXMgZW5zdXJlcyB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIGNvcnJlY3QgYW5kIHZhbGlkYXRlZCBlbnRyeSBjb3VudCB3aGVuIGluaXRpYWxpemluZyB0aGUgVk0uIFRoYXQncyBhIHNlbnNpYmxlIGFwcHJvYWNoIHRvIG1haW50YWluIGRhdGEgaW50ZWdyaXR5LlxuXG5GdW5jdGlvbmFsbHksIEkga25vdyB0aGlzIHBhdGggaXMgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIGB0ZHhfdm1faW9jdGxgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBoYW5kbGluZyB0aGUgYEtWTV9URFhfSU5JVF9WTWAgaW9jdGwuIEl0IHNlZW1zIGxpa2UgYSBjbGVhbiBwYXRoLiBNeSBtZW50YWwgbWFwIG9mIFREWCBjb2RlIHRlbGxzIG1lIHRoYXQgYHRkeF92bV9pb2N0bGAgaXMgaW5kZWVkIGEgZ29vZCBlbnRyeSBwb2ludCB0byBzdGFydCB0cmFjaW5nIHRoZSBleGVjdXRpb24gZmxvdywgYXMgaXTigJlzIHRoZSBnYXRld2F5IGZvciBLVk0gaW9jdGxzIHJlbGF0ZWQgdG8gVERYLCBhbmQgYHRkeF90ZF9pbml0YCBpcyBhIGtleSBjb21wb25lbnQgZHVyaW5nIHRoZSBURFggVk0gaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgZGlyZWN0IHBhdGguIEknbGwgYWxzbyBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBvZiBgS1ZNX0lOVEVMX1REWGAgYW5kIGhvdyB0aGF0IHJlbGF0ZXMgdG8gdGhpcyBjb2RlIHBhdGguIEkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgYHRkeF90ZF9pbml0YCBpbiBtb3JlIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEyNSwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTI6NTk6NTUuNjcwNTUxMjkxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyOTk3ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fSU5URUxfVERYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGR4X3RkX2luaXRcIixcbiAgICBcInRkeF92bV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBvZiBLVk0gVERYIChUcnVzdCBEb21haW4gRXh0ZW5zaW9ucykgYnkgdXBkYXRpbmcgdGhlIENQVUlEIGVudHJ5IGNvdW50IGluIGB0ZHhfdGRfaW5pdGAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9URFhfSU5JVF9WTWAgaW9jdGwuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9JTlRFTF9URFhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0ZHhfdGRfaW5pdFwiLFxuICAgIFwidGR4X3ZtX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIG9mIEtWTSBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSBieSB1cGRhdGluZyB0aGUgQ1BVSUQgZW50cnkgY291bnQgaW4gYHRkeF90ZF9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowzl88x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 12:43:37 +0000 UTC FinishedAt: 2026-07-08 12:59:57 +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": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_INTEL_TDX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_INTEL_TDX" ], "series_id": "a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "tdx_td_init", "tdx_vm_ioctl" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9JTlRFTF9URFgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0ZHhfdGRfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZHhfdm1faW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIG9mIEtWTSBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSBieSB1cGRhdGluZyB0aGUgQ1BVSUQgZW50cnkgY291bnQgaW4gYHRkeF90ZF9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTI6NTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0ZGE0ODYzMDI5NzA1MDUwN2JiYjUyYzA2NjBkZGQwYzBjZGU1YWRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxMjo1ODoxNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuaW5kZXggZmZlOWQwZGI1OGM1OWIuLmI2NThiMDNlNzc1MDg4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuQEAgLTI4MDIsNiAmIzQzOzI4MDIsMTIgQEAgc3RhdGljIGludCB0ZHhfdGRfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdGR4X2NtZCAqY21kKVxuIFx0aWYgKElTX0VSUihpbml0X3ZtKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoaW5pdF92bSk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBVc2UgdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCwgYXMgdXNlcl9kYXRhLVx1MDAzZWNwdWlkLm5lbnQgbWF5IGhhdmVcbiYjNDM7XHQgKiBjaGFuZ2VkLlxuJiM0MztcdCAqL1xuJiM0MztcdGluaXRfdm0tXHUwMDNlY3B1aWQubmVudCA9IG5yX3VzZXJfZW50cmllcztcbiYjNDM7XG4gXHRpZiAobWVtY2hyX2ludihpbml0X3ZtLVx1MDAzZXJlc2VydmVkLCAwLCBzaXplb2YoaW5pdF92bS1cdTAwM2VyZXNlcnZlZCkpKSB7XG4gXHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdGdvdG8gb3V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9JTlRFTF9URFgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0ZHhfdGRfaW5pdCYjMzQ7LAogICAgJiMzNDt0ZHhfdm1faW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIG9mIEtWTSBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSBieSB1cGRhdGluZyB0aGUgQ1BVSUQgZW50cnkgY291bnQgaW4gYHRkeF90ZF9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDRkYTQ4NjMwMjk3MDUwNTA3YmJiNTJjMDY2MGRkZDBjMGNkZTVhZGQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDEyOjU4OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC90ZHguYyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmMKaW5kZXggZmZlOWQwZGI1OGM1OWIuLmI2NThiMDNlNzc1MDg4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmMKQEAgLTI4MDIsNiAmIzQzOzI4MDIsMTIgQEAgc3RhdGljIGludCB0ZHhfdGRfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdGR4X2NtZCAqY21kKQogCWlmIChJU19FUlIoaW5pdF92bSkpCiAJCXJldHVybiBQVFJfRVJSKGluaXRfdm0pOwogCiYjNDM7CS8qCiYjNDM7CSAqIFVzZSB0aGUgdmFsaWRhdGVkIGVudHJ5IGNvdW50LCBhcyB1c2VyX2RhdGEtJmd0O2NwdWlkLm5lbnQgbWF5IGhhdmUKJiM0MzsJICogY2hhbmdlZC4KJiM0MzsJICovCiYjNDM7CWluaXRfdm0tJmd0O2NwdWlkLm5lbnQgPSBucl91c2VyX2VudHJpZXM7CiYjNDM7CiAJaWYgKG1lbWNocl9pbnYoaW5pdF92bS0mZ3Q7cmVzZXJ2ZWQsIDAsIHNpemVvZihpbml0X3ZtLSZndDtyZXNlcnZlZCkpKSB7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTA1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVERYIEluaXRpYWxpemF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgYXJjaC94ODYva3ZtL3ZteC90ZHguY2AuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IGl0JiMzOTtzIGludHJvZHVjaW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBpbiB0aGUgS1ZNIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIGluaXRpYWxpemF0aW9uLiBJIHNlZSB0aGUgYWRkaXRpb24gb2YgYGluaXRfdm0tJmd0O2NwdWlkLm5lbnQgPSBucl91c2VyX2VudHJpZXM7YCB3aXRoaW4gdGhlIGB0ZHhfdGRfaW5pdCgpYCBmdW5jdGlvbi4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgVERYLCBgbmVudGAgbGlrZWx5IHJlZmVycyB0byB0aGUgbnVtYmVyIG9mIGVudHJpZXMsIHByZXN1bWFibHkgcmVsYXRlZCB0byBDUFVJRCBkYXRhLCB0aGF0IGFyZSBiZWluZyBzZXQgdXAgZm9yIHRoZSB1c2VyIHNwYWNlLiBUaGUgYXNzaWdubWVudCBzdWdnZXN0cyB0aGF0IHRoZSBudW1iZXIgb2YgdXNlci1kZWZpbmVkIENQVUlEIGVudHJpZXMgKGBucl91c2VyX2VudHJpZXNgKSBpcyBiZWluZyBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFRoaXMgY2hhbmdlIHdhcnJhbnRzIGEgY2xvc2VyIGluc3BlY3Rpb24gb2YgYHRkeF90ZF9pbml0KClgIGl0c2VsZiB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0IGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgYXNzaWdubWVudCwgZXNwZWNpYWxseSB0aGUgaW50ZXJhY3Rpb24gd2l0aCBleGlzdGluZyBzdHJ1Y3R1cmVzIGFuZCB0aGUgb3ZlcmFsbCBURFggYXJjaGl0ZWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBzcGVjaWZpYyB2YWx1ZSBpcyBiZWluZyBzZXQgYXQgdGhpcyBwb2ludCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGhvdyBpdCBhZmZlY3RzIHRoZSBjb250cm9sIGZsb3cgZG93biB0aGUgbGluZS4gV2hhdCYjMzk7cyB0aGUgaW1wYWN0IG9uIHRoZSBzZWN1cml0eSBib3VuZGFyeSwgcGVyZm9ybWFuY2UgYW5kIHRoZSBvdmVyYWxsIFZNPyBUaGlzIGlzIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2gsIGFuZCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RkeF90ZF9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC90ZHguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI0MDY9c3RhdGljIGludCBzZXR1cF90ZHBhcmFtcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB0ZF9wYXJhbXMgKnRkX3BhcmFtcyxcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI0NDktXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjI0NTA6c3RhdGljIGludCBfX3RkeF90ZF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHRkX3BhcmFtcyAqdGRfcGFyYW1zLFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNDUxLVx0XHRcdCB1NjQgKnNlYW1jYWxsX2Vycilcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI3NzI9REVGSU5FX0NMQVNTKHRkeF92bV9zdGF0ZV9ndWFyZCwgdGR4X3ZtX3N0YXRlX2d1YXJkX3QsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNzc1LVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyNzc2OnN0YXRpYyBpbnQgdGR4X3RkX2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3RkeF9jbWQgKmNtZClcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjc3Ny17XG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yODMwLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyODMxOlx0cmV0ID0gX190ZHhfdGRfaW5pdChrdm0sIHRkX3BhcmFtcywgXHUwMDI2Y21kLVx1MDAzZWh3X2Vycm9yKTtcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjgzMi1cdGlmIChyZXQpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0yOTI0PWludCB0ZHhfdm1faW9jdGwoc3RydWN0IGt2bSAqa3ZtLCB2b2lkIF9fdXNlciAqYXJncClcbi0tXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI5NDEtXHRjYXNlIEtWTV9URFhfSU5JVF9WTTpcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6Mjk0MjpcdFx0ciA9IHRkeF90ZF9pbml0KGt2bSwgXHUwMDI2dGR4X2NtZCk7XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI5NDMtXHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIFREWCBJbml0aWFsaXphdGlvbiBQYXRoKioKCkFscmlnaHQsIHNvIGB0ZHhfdGRfaW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIHRoZSBURFggaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gQW5kIHdoZXJlIGRvZXMgaXQgZ2V0IGNhbGxlZD8gQWgsIHJpZ2h0LCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgdGR4X3ZtX2lvY3RsYCBzcGVjaWZpY2FsbHkgd2hlbiBLVk0gcmVjZWl2ZXMgdGhlIGBLVk1fVERYX0lOSVRfVk1gIGlvY3RsIHJlcXVlc3QuIFRoYXQmIzM5O3MgYSBkaXJlY3QgS1ZNIGlvY3RsIHBhdGgsIHNvIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGVudHJ5LiBObyBhbWJpZ3VpdHkgdGhlcmUuCgpOb3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdG8gYXNrIGlzIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGhhdmUgdG8gYmUgZW5hYmxlZCB0byBhbGxvdyBmb3IgS1ZNIFREWC4gV2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbnMgc3BlY2lmaWNhbGx5IGxpZ2h0IHVwIHRoaXMgY29kZSBwYXRoPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBjb25maWcgb3B0aW9ucyB0byBnZXQgYSBzZW5zZSBmb3IgaG93IGl0JiMzOTtzIGVuYWJsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gVGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTI6NTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNX1REWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxODkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqRGl2aW5nIGludG8gS1ZNIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gS1ZNIG9uIHg4NiwgcHJvYmFibHkgYSBmZWF0dXJlIG9yIHNldHRpbmcuIE15IGZpcnN0IGluc3RpbmN0LCBhbmQgdGhlIHJpZ2h0IG9uZSBpbiB0aGlzIGNhc2UsIGlzIHRvIGNoZWNrIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgS1ZNIG9uIHg4Ni4gSSYjMzk7bSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgYGFyY2gveDg2L2t2bS9LY29uZmlnYC4gVGhpcyBmaWxlICpzaG91bGQqIGhvbGQgdGhlIG1ham9yaXR5IG9mIHRoZSBLY29uZmlnIG9wdGlvbnMgdGhhdCBjb250cm9sIHdoaWNoIEtWTSBmZWF0dXJlcyBhcmUgY29tcGlsZWQgaW50byB0aGUga2VybmVsLiBJdOKAmXMgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIGtub2JzIHJlbGF0ZWQgdG8gdGhlIEtWTSB4ODYgaW1wbGVtZW50YXRpb24uIEJ5IGV4YW1pbmluZyB0aGF0IEtjb25maWcgZmlsZSwgSSYjMzk7bGwgcXVpY2tseSBnZXQgYW4gb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBwb3NzaWJsZSBhbmQgd2hhdCBtaWdodCBuZWVkIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBLVk0geDg2IGFuYWx5c2lzLiBMZXTigJlzIHNlZSB3aGF0IGdvb2RpZXMgYXJlIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElOVEVMX1REWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTIKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yIGFzIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBLY29uZmlnIGZvciBLVk0vVk1YIG9uIHg4NioqCgpPa2F5LCBzbyB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gY2hlY2sgYGFyY2gveDg2L2t2bS92bXgvS2NvbmZpZ2AuIFJpZ2h0IGF3YXksIG15IG1pbmQganVtcHMgdG8gYSBmZXcgdGhpbmdzLiBJIGtub3cgdGhpcyBmaWxlIGlzIGdvaW5nIHRvIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIG1vZHVsZSByZWxhdGVkIHRvIEludGVsJiMzOTtzIFZpcnR1YWwgTWFjaGluZSBFeHRlbnNpb25zIChWTVgpIG9uIHg4NiBwcm9jZXNzb3JzLgoKTXkgZmlyc3QgdGhvdWdodDogKndoYXQgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zIGhlcmU/KiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBmbGFncyB0aGF0IGNvbnRyb2w6CgoqICAgKipFbmFibGluZy9EaXNhYmxpbmcgS1ZNL1ZNWCBzdXBwb3J0IGluIGdlbmVyYWwuKiogSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGEgdG9wLWxldmVsIGBDT05GSUdfS1ZNX0lOVEVMYCBvciBzb21ldGhpbmcgc2ltaWxhciB0aGF0IGdhdGVzIHRoZSBlbnRpcmUgbW9kdWxlLiBJZiBJIHNlZSBpdCBlbmFibGVkIEkgdGhlbiBuZWVkIHRvIGRldGVybWluZSBob3cgdGhlIGJ1aWxkIGNhbiBiZSBjb25maWd1cmVkIChkaXJlY3RseSBvciBhcyBhIG1vZHVsZSkuCiogICAqKkZlYXR1cmUgRmxhZ3M6KiogSSYjMzk7bSBpbnRlcmVzdGVkIGluIGFueSBmaW5lLWdyYWluZWQgb3B0aW9ucyByZWxhdGVkIHRvIHNwZWNpZmljIFZNWCBmZWF0dXJlcy4gVGhpbmdzIGxpa2UgbmVzdGVkIHZpcnR1YWxpemF0aW9uIHN1cHBvcnQsIEVQVCAoRXh0ZW5kZWQgUGFnZSBUYWJsZXMpIG9wdGltaXphdGlvbiwgVk0tZXhpdCBoYW5kbGluZywgYW55IHNwZWNpYWwgZmxhZ3MgZm9yIG5ld2VyIGhhcmR3YXJlLCBvciBldmVuIHRoaW5ncyBsaWtlIEludGVsIFByb2Nlc3NvciBUcmFjZSAoSVBUKSBpbnRlZ3JhdGlvbiBpZiByZWxldmFudC4gSSYjMzk7ZCBiZSBsb29raW5nIHRvIHNlZSB3aGF0IGdyYW51bGFyaXR5IG9mIGNvbnRyb2wgdGhlIGtlcm5lbCBwcm92aWRlcyB0byB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IuCiogICAqKkRlcGVuZGVuY2llczoqKiBJ4oCZbSBjdXJpb3VzIGFib3V0IHdoYXQgb3RoZXIgS2NvbmZpZyBvcHRpb25zIHRoaXMgZmlsZSBkZXBlbmRzIG9uLiBEb2VzIGl0IGhhdmUgYW55IHJlbGF0aW9uc2hpcHMgdG8gZ2VuZXJhbCB4ODYgY29uZmlndXJhdGlvbiwgbWVtb3J5IG1hbmFnZW1lbnQgb3B0aW9ucywgb3Igc2VjdXJpdHkgZmVhdHVyZXM/IFVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGhlbHBzIHRyYWNlIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgdGhlIHZhcmlvdXMgb3B0aW9ucyBhcmUgY29tYmluZWQuCiogICAqKkRvY3VtZW50YXRpb246KiogSSAqaG9wZSogdGhlcmUgYXJlIGRlY2VudCBjb21tZW50cyBpbiB0aGUgYEtjb25maWdgIGZpbGUgaXRzZWxmLiBDb25jaXNlIGV4cGxhbmF0aW9ucyBvZiBlYWNoIG9wdGlvbiwgd2hhdCB0aGV5IGRvLCBhbmQgYW55IHBvdGVudGlhbCBjYXZlYXRzIG9yIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBhcmUgZXNzZW50aWFsLCBlc3BlY2lhbGx5IGZvciBzb21ldGhpbmcgYXMgY29tcGxleCBhcyB2aXJ0dWFsaXphdGlvbi4KClVsdGltYXRlbHksIEkmIzM5O20gaGVyZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBvcnRpb24gb2YgdGhlIGtlcm5lbCBpcyAqY29uZmlndXJlZCouIEFueSBtb2RpZmljYXRpb25zIEkgbWlnaHQgbmVlZCB0byBtYWtlLCBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhpcyBmaWxlIGluc2lkZSBhbmQgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9Nj1zb3VyY2UgXCYjMzQ7dmlydC9rdm0vS2NvbmZpZ1wmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWctNy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjg6bWVudWNvbmZpZyBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctOS1cdGJvb2wgXCYjMzQ7VmlydHVhbGl6YXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEyMjpjb25maWcgWDg2X1NHWF9LVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7U29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzI6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NC1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA3OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMwLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMyOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMjo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Mjk3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7bSB0aGlua2luZyBhYm91dCBpdDoKCioqRXhhbWluaW5nIHRoZSBURFggSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKUmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoIGlzIGBLVk1fSU5URUxfVERYYC4gIFRoaXMgbWVhbnMgdGhlIHN5c3RlbSYjMzk7cyBzZXQgdXAgZm9yIEludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zLiBNeSBuZXh0IHN0ZXAgaXMgY2xlYXIg4oCTIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGdldHMgcmVhZHkgZm9yIFREWCwgc28gSSYjMzk7bSBnb2luZyB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gYHRkeF90ZF9pbml0KClgLiBUaGlzIGZ1bmN0aW9uIGlzIG9idmlvdXNseSB0aGUgY3J1Y2lhbCBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgZnVuY3Rpb24gYW5kIHVuZGVyc3RhbmQgdGhlIHN1Yi1yb3V0aW5lcyBhbmQgb3RoZXIgcmVsYXRlZCBvcGVyYXRpb25zIGludm9sdmVkLCBhcyB0aGlzIGZ1bmN0aW9uIHdpbGwgbW9zdCBsaWtlbHkgaW52b2x2ZSBvdGhlciBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNvbXBvbmVudHMuIFRoaXMgZXhwbG9yYXRpb24gb2YgYHRkeF90ZF9pbml0KClgIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBrZXkgc3RlcHMgaW4gY29uZmlndXJpbmcgVERYIGZvciB1c2UgaW4gS1ZNLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMjo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZHhfdGRfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS92bXgvdGR4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3ZteC90ZHguYz0yNDA2PXN0YXRpYyBpbnQgc2V0dXBfdGRwYXJhbXMoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdGRfcGFyYW1zICp0ZF9wYXJhbXMsXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNDQ5LVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyNDUwOnN0YXRpYyBpbnQgX190ZHhfdGRfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB0ZF9wYXJhbXMgKnRkX3BhcmFtcyxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjQ1MS1cdFx0XHQgdTY0ICpzZWFtY2FsbF9lcnIpXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYz0yNzcyPURFRklORV9DTEFTUyh0ZHhfdm1fc3RhdGVfZ3VhcmQsIHRkeF92bV9zdGF0ZV9ndWFyZF90LFxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjc3NS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6Mjc3NjpzdGF0aWMgaW50IHRkeF90ZF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV90ZHhfY21kICpjbWQpXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI3Nzcte1xuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjgzMC1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjgzMTpcdHJldCA9IF9fdGR4X3RkX2luaXQoa3ZtLCB0ZF9wYXJhbXMsIFx1MDAyNmNtZC1cdTAwM2Vod19lcnJvcik7XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI4MzItXHRpZiAocmV0KVxuLS1cbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjkyND1pbnQgdGR4X3ZtX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yOTQxLVx0Y2FzZSBLVk1fVERYX0lOSVRfVk06XG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjI5NDI6XHRcdHIgPSB0ZHhfdGRfaW5pdChrdm0sIFx1MDAyNnRkeF9jbWQpO1xuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yOTQzLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTI6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjEyNQoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAzMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBURFggSW5pdGlhbGl6YXRpb24gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIGB0ZHhfdGRfaW5pdGAgZnVuY3Rpb24uIEkgc2hvdWxkIHByb2JhYmx5IHJlLWV4YW1pbmUgdGhlIHBhdGNoIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UuIAoKSSBzZWUgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZTogdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCBpcyBub3cgYmVpbmcgdXNlZCB0byBzZXQgYGluaXRfdm0tJmd0O2NwdWlkLm5lbnRgLiBUaGlzIGlzIGludGVyZXN0aW5nOyB0aGUgY29tbWVudCBwb2ludHMgb3V0IHRoYXQgYHVzZXJfZGF0YS0mZ3Q7Y3B1aWQubmVudGAgbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkIHNvbWV3aGVyZSBlbHNlLiBTbywgdGhpcyBlbnN1cmVzIHdlJiMzOTtyZSB3b3JraW5nIHdpdGggdGhlIGNvcnJlY3QgYW5kIHZhbGlkYXRlZCBlbnRyeSBjb3VudCB3aGVuIGluaXRpYWxpemluZyB0aGUgVk0uIFRoYXQmIzM5O3MgYSBzZW5zaWJsZSBhcHByb2FjaCB0byBtYWludGFpbiBkYXRhIGludGVncml0eS4KCkZ1bmN0aW9uYWxseSwgSSBrbm93IHRoaXMgcGF0aCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgYHRkeF92bV9pb2N0bGAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aGVuIGhhbmRsaW5nIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgc2VlbXMgbGlrZSBhIGNsZWFuIHBhdGguIE15IG1lbnRhbCBtYXAgb2YgVERYIGNvZGUgdGVsbHMgbWUgdGhhdCBgdGR4X3ZtX2lvY3RsYCBpcyBpbmRlZWQgYSBnb29kIGVudHJ5IHBvaW50IHRvIHN0YXJ0IHRyYWNpbmcgdGhlIGV4ZWN1dGlvbiBmbG93LCBhcyBpdOKAmXMgdGhlIGdhdGV3YXkgZm9yIEtWTSBpb2N0bHMgcmVsYXRlZCB0byBURFgsIGFuZCBgdGR4X3RkX2luaXRgIGlzIGEga2V5IGNvbXBvbmVudCBkdXJpbmcgdGhlIFREWCBWTSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgZGlyZWN0IHBhdGguIEkmIzM5O2xsIGFsc28gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgYEtWTV9JTlRFTF9URFhgIGFuZCBob3cgdGhhdCByZWxhdGVzIHRvIHRoaXMgY29kZSBwYXRoLiBJIHNob3VsZCBhbHNvIGludmVzdGlnYXRlIGB0ZHhfdGRfaW5pdGAgaW4gbW9yZSBkZXRhaWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDEyOjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGR4X3RkX2luaXQmIzM0OywKICAgICYjMzQ7dGR4X3ZtX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBvZiBLVk0gVERYIChUcnVzdCBEb21haW4gRXh0ZW5zaW9ucykgYnkgdXBkYXRpbmcgdGhlIENQVUlEIGVudHJ5IGNvdW50IGluIGB0ZHhfdGRfaW5pdGAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9URFhfSU5JVF9WTWAgaW9jdGwuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fSU5URUxfVERYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGR4X3RkX2luaXQmIzM0OywKICAgICYjMzQ7dGR4X3ZtX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBvZiBLVk0gVERYIChUcnVzdCBEb21haW4gRXh0ZW5zaW9ucykgYnkgdXBkYXRpbmcgdGhlIENQVUlEIGVudHJ5IGNvdW50IGluIGB0ZHhfdGRfaW5pdGAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9URFhfSU5JVF9WTWAgaW9jdGwuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDhUMTI6NTg6MTcuMDQ2ODQ0NTM1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg3OTY3MjIwNzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0lOVEVMX1REWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRkeF90ZF9pbml0XCIsXG4gICAgXCJ0ZHhfdm1faW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gbG9naWMgb2YgS1ZNIFREWCAoVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMpIGJ5IHVwZGF0aW5nIHRoZSBDUFVJRCBlbnRyeSBjb3VudCBpbiBgdGR4X3RkX2luaXRgLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIGBLVk1fVERYX0lOSVRfVk1gIGlvY3RsLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTI6NTg6MTcuMDQ2ODUyMzE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTM2OTAyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0ZGE0ODYzMDI5NzA1MDUwN2JiYjUyYzA2NjBkZGQwYzBjZGU1YWRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDggMTI6NTg6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC90ZHguYyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmNcXG5pbmRleCBmZmU5ZDBkYjU4YzU5Yi4uYjY1OGIwM2U3NzUwODggMTAwNjQ0XFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xcbisrKyBiL2FyY2gveDg2L2t2bS92bXgvdGR4LmNcXG5AQCAtMjgwMiw2ICsyODAyLDEyIEBAIHN0YXRpYyBpbnQgdGR4X3RkX2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3RkeF9jbWQgKmNtZClcXG4gXFx0aWYgKElTX0VSUihpbml0X3ZtKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoaW5pdF92bSk7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBVc2UgdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCwgYXMgdXNlcl9kYXRhLVxcdTAwM2VjcHVpZC5uZW50IG1heSBoYXZlXFxuK1xcdCAqIGNoYW5nZWQuXFxuK1xcdCAqL1xcbitcXHRpbml0X3ZtLVxcdTAwM2VjcHVpZC5uZW50ID0gbnJfdXNlcl9lbnRyaWVzO1xcbitcXG4gXFx0aWYgKG1lbWNocl9pbnYoaW5pdF92bS1cXHUwMDNlcmVzZXJ2ZWQsIDAsIHNpemVvZihpbml0X3ZtLVxcdTAwM2VyZXNlcnZlZCkpKSB7XFxuIFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIFxcdFxcdGdvdG8gb3V0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1ODoxNy43MDE4NjUxMzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MTQxNjkwNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9JTlRFTF9URFhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0ZHhfdGRfaW5pdFwiLFxuICAgIFwidGR4X3ZtX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIG9mIEtWTSBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSBieSB1cGRhdGluZyB0aGUgQ1BVSUQgZW50cnkgY291bnQgaW4gYHRkeF90ZF9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNGRhNDg2MzAyOTcwNTA1MDdiYmI1MmMwNjYwZGRkMGMwY2RlNWFkZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTI6NTg6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14L3RkeC5jIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuaW5kZXggZmZlOWQwZGI1OGM1OWIuLmI2NThiMDNlNzc1MDg4IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuKysrIGIvYXJjaC94ODYva3ZtL3ZteC90ZHguY1xuQEAgLTI4MDIsNiArMjgwMiwxMiBAQCBzdGF0aWMgaW50IHRkeF90ZF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV90ZHhfY21kICpjbWQpXG4gXHRpZiAoSVNfRVJSKGluaXRfdm0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihpbml0X3ZtKTtcbiBcbitcdC8qXG4rXHQgKiBVc2UgdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCwgYXMgdXNlcl9kYXRhLVx1MDAzZWNwdWlkLm5lbnQgbWF5IGhhdmVcbitcdCAqIGNoYW5nZWQuXG4rXHQgKi9cbitcdGluaXRfdm0tXHUwMDNlY3B1aWQubmVudCA9IG5yX3VzZXJfZW50cmllcztcbitcbiBcdGlmIChtZW1jaHJfaW52KGluaXRfdm0tXHUwMDNlcmVzZXJ2ZWQsIDAsIHNpemVvZihpbml0X3ZtLVx1MDAzZXJlc2VydmVkKSkpIHtcbiBcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0Z290byBvdXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1ODoxNy43MDE4NjgzNTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUxNTkyNzgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFREWCBJbml0aWFsaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBhcmNoL3g4Ni9rdm0vdm14L3RkeC5jYC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBpbnRyb2R1Y2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIEtWTSBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyBpbml0aWFsaXphdGlvbi4gSSBzZWUgdGhlIGFkZGl0aW9uIG9mIGBpbml0X3ZtLVx1MDAzZWNwdWlkLm5lbnQgPSBucl91c2VyX2VudHJpZXM7YCB3aXRoaW4gdGhlIGB0ZHhfdGRfaW5pdCgpYCBmdW5jdGlvbi5cblxuR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiBURFgsIGBuZW50YCBsaWtlbHkgcmVmZXJzIHRvIHRoZSBudW1iZXIgb2YgZW50cmllcywgcHJlc3VtYWJseSByZWxhdGVkIHRvIENQVUlEIGRhdGEsIHRoYXQgYXJlIGJlaW5nIHNldCB1cCBmb3IgdGhlIHVzZXIgc3BhY2UuIFRoZSBhc3NpZ25tZW50IHN1Z2dlc3RzIHRoYXQgdGhlIG51bWJlciBvZiB1c2VyLWRlZmluZWQgQ1BVSUQgZW50cmllcyAoYG5yX3VzZXJfZW50cmllc2ApIGlzIGJlaW5nIGRpcmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gVGhpcyBjaGFuZ2Ugd2FycmFudHMgYSBjbG9zZXIgaW5zcGVjdGlvbiBvZiBgdGR4X3RkX2luaXQoKWAgaXRzZWxmIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQgYW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBhc3NpZ25tZW50LCBlc3BlY2lhbGx5IHRoZSBpbnRlcmFjdGlvbiB3aXRoIGV4aXN0aW5nIHN0cnVjdHVyZXMgYW5kIHRoZSBvdmVyYWxsIFREWCBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIHNwZWNpZmljIHZhbHVlIGlzIGJlaW5nIHNldCBhdCB0aGlzIHBvaW50IGluIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgaG93IGl0IGFmZmVjdHMgdGhlIGNvbnRyb2wgZmxvdyBkb3duIHRoZSBsaW5lLiBXaGF0J3MgdGhlIGltcGFjdCBvbiB0aGUgc2VjdXJpdHkgYm91bmRhcnksIHBlcmZvcm1hbmNlIGFuZCB0aGUgb3ZlcmFsbCBWTT8gVGhpcyBpcyB0aGUgY29yZSBvZiB0aGlzIHBhdGNoLCBhbmQgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwNSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU4OjMwLjIxNzc5OTEyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjIxMjgyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0ZHhfdGRfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3RkeC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjQwNj1zdGF0aWMgaW50IHNldHVwX3RkcGFyYW1zKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHRkX3BhcmFtcyAqdGRfcGFyYW1zLFxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNDQ5LVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjQ1MDpzdGF0aWMgaW50IF9fdGR4X3RkX2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3QgdGRfcGFyYW1zICp0ZF9wYXJhbXMsXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yNDUxLVxcdFxcdFxcdCB1NjQgKnNlYW1jYWxsX2VycilcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9Mjc3Mj1ERUZJTkVfQ0xBU1ModGR4X3ZtX3N0YXRlX2d1YXJkLCB0ZHhfdm1fc3RhdGVfZ3VhcmRfdCxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjc3NS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjI3NzY6c3RhdGljIGludCB0ZHhfdGRfaW5pdChzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1fdGR4X2NtZCAqY21kKVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjc3Ny17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI4MzAtXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyODMxOlxcdHJldCA9IF9fdGR4X3RkX2luaXQoa3ZtLCB0ZF9wYXJhbXMsIFxcdTAwMjZjbWQtXFx1MDAzZWh3X2Vycm9yKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI4MzItXFx0aWYgKHJldClcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM9MjkyND1pbnQgdGR4X3ZtX2lvY3RsKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI5NDEtXFx0Y2FzZSBLVk1fVERYX0lOSVRfVk06XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyOTQyOlxcdFxcdHIgPSB0ZHhfdGRfaW5pdChrdm0sIFxcdTAwMjZ0ZHhfY21kKTtcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI5NDMtXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU4OjMwLjM0NDAxODg3NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIyODExNTQyNjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgVERYIEluaXRpYWxpemF0aW9uIFBhdGgqKlxuXG5BbHJpZ2h0LCBzbyBgdGR4X3RkX2luaXRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiB0aGUgVERYIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIEFuZCB3aGVyZSBkb2VzIGl0IGdldCBjYWxsZWQ/IEFoLCByaWdodCwgaXQncyBjYWxsZWQgZnJvbSBgdGR4X3ZtX2lvY3RsYCBzcGVjaWZpY2FsbHkgd2hlbiBLVk0gcmVjZWl2ZXMgdGhlIGBLVk1fVERYX0lOSVRfVk1gIGlvY3RsIHJlcXVlc3QuIFRoYXQncyBhIGRpcmVjdCBLVk0gaW9jdGwgcGF0aCwgc28gdGhhdCdzIGRlZmluaXRlbHkgYSBwb2ludCBvZiBlbnRyeS4gTm8gYW1iaWd1aXR5IHRoZXJlLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gdG8gYXNrIGlzIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIGhhdmUgdG8gYmUgZW5hYmxlZCB0byBhbGxvdyBmb3IgS1ZNIFREWC4gV2hhdCBrZXJuZWwgY29uZmlndXJhdGlvbnMgc3BlY2lmaWNhbGx5IGxpZ2h0IHVwIHRoaXMgY29kZSBwYXRoPyBJIG5lZWQgdG8gY2hlY2sgdGhlIGtlcm5lbCBjb25maWcgb3B0aW9ucyB0byBnZXQgYSBzZW5zZSBmb3IgaG93IGl0J3MgZW5hYmxlZC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlndXJhdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1ODo1My4xNTU1NjU3MTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODU2NTkxNjMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fVERYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU4OjUzLjI0MTIzNjc4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0NjUwMDk2ODI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqRGl2aW5nIGludG8gS1ZNIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byBLVk0gb24geDg2LCBwcm9iYWJseSBhIGZlYXR1cmUgb3Igc2V0dGluZy4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgcmlnaHQgb25lIGluIHRoaXMgY2FzZSwgaXMgdG8gY2hlY2sgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBLVk0gb24geDg2LiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AuIFRoaXMgZmlsZSAqc2hvdWxkKiBob2xkIHRoZSBtYWpvcml0eSBvZiB0aGUgS2NvbmZpZyBvcHRpb25zIHRoYXQgY29udHJvbCB3aGljaCBLVk0gZmVhdHVyZXMgYXJlIGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gSXTigJlzIHRoZSBjZW50cmFsIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBrbm9icyByZWxhdGVkIHRvIHRoZSBLVk0geDg2IGltcGxlbWVudGF0aW9uLiBCeSBleGFtaW5pbmcgdGhhdCBLY29uZmlnIGZpbGUsIEknbGwgcXVpY2tseSBnZXQgYW4gb3ZlcnZpZXcgb2Ygd2hhdCdzIHBvc3NpYmxlIGFuZCB3aGF0IG1pZ2h0IG5lZWQgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBJdCdzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgaW4tZGVwdGggS1ZNIHg4NiBhbmFseXNpcy4gTGV04oCZcyBzZWUgd2hhdCBnb29kaWVzIGFyZSBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE4OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU5OjA3Ljg5MTMzNzgyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzY0MTg5NDgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTlRFTF9URFhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTI6NTk6MDguMDI3NzY1NzYzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjE4NjMyNzMwODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgZm9jdXNpbmcgb24gd2hhdCBJJ2QgYmUgbG9va2luZyBmb3IgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgS2NvbmZpZyBmb3IgS1ZNL1ZNWCBvbiB4ODYqKlxuXG5Pa2F5LCBzbyB0aGUgaW5zdHJ1Y3Rpb24gaXMgdG8gY2hlY2sgYGFyY2gveDg2L2t2bS92bXgvS2NvbmZpZ2AuIFJpZ2h0IGF3YXksIG15IG1pbmQganVtcHMgdG8gYSBmZXcgdGhpbmdzLiBJIGtub3cgdGhpcyBmaWxlIGlzIGdvaW5nIHRvIGJlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBLVk0gKEtlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUpIG1vZHVsZSByZWxhdGVkIHRvIEludGVsJ3MgVmlydHVhbCBNYWNoaW5lIEV4dGVuc2lvbnMgKFZNWCkgb24geDg2IHByb2Nlc3NvcnMuXG5cbk15IGZpcnN0IHRob3VnaHQ6ICp3aGF0IGFyZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBoZXJlPyogSSdsbCBiZSBsb29raW5nIGZvciBmbGFncyB0aGF0IGNvbnRyb2w6XG5cbiogICAqKkVuYWJsaW5nL0Rpc2FibGluZyBLVk0vVk1YIHN1cHBvcnQgaW4gZ2VuZXJhbC4qKiBJJ2QgZXhwZWN0IHRvIHNlZSBhIHRvcC1sZXZlbCBgQ09ORklHX0tWTV9JTlRFTGAgb3Igc29tZXRoaW5nIHNpbWlsYXIgdGhhdCBnYXRlcyB0aGUgZW50aXJlIG1vZHVsZS4gSWYgSSBzZWUgaXQgZW5hYmxlZCBJIHRoZW4gbmVlZCB0byBkZXRlcm1pbmUgaG93IHRoZSBidWlsZCBjYW4gYmUgY29uZmlndXJlZCAoZGlyZWN0bHkgb3IgYXMgYSBtb2R1bGUpLlxuKiAgICoqRmVhdHVyZSBGbGFnczoqKiBJJ20gaW50ZXJlc3RlZCBpbiBhbnkgZmluZS1ncmFpbmVkIG9wdGlvbnMgcmVsYXRlZCB0byBzcGVjaWZpYyBWTVggZmVhdHVyZXMuIFRoaW5ncyBsaWtlIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiBzdXBwb3J0LCBFUFQgKEV4dGVuZGVkIFBhZ2UgVGFibGVzKSBvcHRpbWl6YXRpb24sIFZNLWV4aXQgaGFuZGxpbmcsIGFueSBzcGVjaWFsIGZsYWdzIGZvciBuZXdlciBoYXJkd2FyZSwgb3IgZXZlbiB0aGluZ3MgbGlrZSBJbnRlbCBQcm9jZXNzb3IgVHJhY2UgKElQVCkgaW50ZWdyYXRpb24gaWYgcmVsZXZhbnQuIEknZCBiZSBsb29raW5nIHRvIHNlZSB3aGF0IGdyYW51bGFyaXR5IG9mIGNvbnRyb2wgdGhlIGtlcm5lbCBwcm92aWRlcyB0byB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogSeKAmW0gY3VyaW91cyBhYm91dCB3aGF0IG90aGVyIEtjb25maWcgb3B0aW9ucyB0aGlzIGZpbGUgZGVwZW5kcyBvbi4gRG9lcyBpdCBoYXZlIGFueSByZWxhdGlvbnNoaXBzIHRvIGdlbmVyYWwgeDg2IGNvbmZpZ3VyYXRpb24sIG1lbW9yeSBtYW5hZ2VtZW50IG9wdGlvbnMsIG9yIHNlY3VyaXR5IGZlYXR1cmVzPyBVbmRlcnN0YW5kaW5nIGRlcGVuZGVuY2llcyBoZWxwcyB0cmFjZSB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IHRoZSB2YXJpb3VzIG9wdGlvbnMgYXJlIGNvbWJpbmVkLlxuKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBJICpob3BlKiB0aGVyZSBhcmUgZGVjZW50IGNvbW1lbnRzIGluIHRoZSBgS2NvbmZpZ2AgZmlsZSBpdHNlbGYuIENvbmNpc2UgZXhwbGFuYXRpb25zIG9mIGVhY2ggb3B0aW9uLCB3aGF0IHRoZXkgZG8sIGFuZCBhbnkgcG90ZW50aWFsIGNhdmVhdHMgb3IgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zIGFyZSBlc3NlbnRpYWwsIGVzcGVjaWFsbHkgZm9yIHNvbWV0aGluZyBhcyBjb21wbGV4IGFzIHZpcnR1YWxpemF0aW9uLlxuXG5VbHRpbWF0ZWx5LCBJJ20gaGVyZSB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHBvcnRpb24gb2YgdGhlIGtlcm5lbCBpcyAqY29uZmlndXJlZCouIEFueSBtb2RpZmljYXRpb25zIEkgbWlnaHQgbmVlZCB0byBtYWtlLCBJJ2xsIG5lZWQgdG8ga25vdyB0aGlzIGZpbGUgaW5zaWRlIGFuZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1OToyOS44OTEwNDIxNzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0NTAwOTcxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTY9c291cmNlIFxcXCJ2aXJ0L2t2bS9LY29uZmlnXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTctXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODptZW51Y29uZmlnIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctOS1cXHRib29sIFxcXCJWaXJ0dWFsaXphdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMjI6Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTIzLVxcdGJvb2wgXFxcIlNvZnR3YXJlIEd1YXJkIGVYdGVuc2lvbnMgKFNHWCkgVmlydHVhbGl6YXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1OTozMC40MzYwNTkyMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0MTYwMDcwODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipFeGFtaW5pbmcgdGhlIFREWCBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cblJpZ2h0LCB0aGUgY29uZmlndXJhdGlvbiBJJ20gd29ya2luZyB3aXRoIGlzIGBLVk1fSU5URUxfVERYYC4gIFRoaXMgbWVhbnMgdGhlIHN5c3RlbSdzIHNldCB1cCBmb3IgSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMuIE15IG5leHQgc3RlcCBpcyBjbGVhciDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gZ2V0cyByZWFkeSBmb3IgVERYLCBzbyBJJ20gZ29pbmcgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGB0ZHhfdGRfaW5pdCgpYC4gVGhpcyBmdW5jdGlvbiBpcyBvYnZpb3VzbHkgdGhlIGNydWNpYWwgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBzdWItcm91dGluZXMgYW5kIG90aGVyIHJlbGF0ZWQgb3BlcmF0aW9ucyBpbnZvbHZlZCwgYXMgdGhpcyBmdW5jdGlvbiB3aWxsIG1vc3QgbGlrZWx5IGludm9sdmUgb3RoZXIgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbCBjb21wb25lbnRzLiBUaGlzIGV4cGxvcmF0aW9uIG9mIGB0ZHhfdGRfaW5pdCgpYCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUga2V5IHN0ZXBzIGluIGNvbmZpZ3VyaW5nIFREWCBmb3IgdXNlIGluIEtWTS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI5NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDEyOjU5OjQxLjg1MjA2OTg3MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTgzOTU5NTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGR4X3RkX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3ZteC90ZHguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI0MDY9c3RhdGljIGludCBzZXR1cF90ZHBhcmFtcyhzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCB0ZF9wYXJhbXMgKnRkX3BhcmFtcyxcXG4tLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjQ0OS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jOjI0NTA6c3RhdGljIGludCBfX3RkeF90ZF9pbml0KHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IHRkX3BhcmFtcyAqdGRfcGFyYW1zLFxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmMtMjQ1MS1cXHRcXHRcXHQgdTY0ICpzZWFtY2FsbF9lcnIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI3NzI9REVGSU5FX0NMQVNTKHRkeF92bV9zdGF0ZV9ndWFyZCwgdGR4X3ZtX3N0YXRlX2d1YXJkX3QsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI3NzUtXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYzoyNzc2OnN0YXRpYyBpbnQgdGR4X3RkX2luaXQoc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX3RkeF9jbWQgKmNtZClcXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jLTI3Nzcte1xcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yODMwLVxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6MjgzMTpcXHRyZXQgPSBfX3RkeF90ZF9pbml0KGt2bSwgdGRfcGFyYW1zLCBcXHUwMDI2Y21kLVxcdTAwM2Vod19lcnJvcik7XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yODMyLVxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vdm14L3RkeC5jPTI5MjQ9aW50IHRkeF92bV9pb2N0bChzdHJ1Y3Qga3ZtICprdm0sIHZvaWQgX191c2VyICphcmdwKVxcbi0tXFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yOTQxLVxcdGNhc2UgS1ZNX1REWF9JTklUX1ZNOlxcbmFyY2gveDg2L2t2bS92bXgvdGR4LmM6Mjk0MjpcXHRcXHRyID0gdGR4X3RkX2luaXQoa3ZtLCBcXHUwMDI2dGR4X2NtZCk7XFxuYXJjaC94ODYva3ZtL3ZteC90ZHguYy0yOTQzLVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMjo1OTo0MS45NTA0NzM5NDZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM3MjAwNzIwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBURFggSW5pdGlhbGl6YXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBgdGR4X3RkX2luaXRgIGZ1bmN0aW9uLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIHRoZSBwYXRjaCB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLiBcblxuSSBzZWUgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZTogdGhlIHZhbGlkYXRlZCBlbnRyeSBjb3VudCBpcyBub3cgYmVpbmcgdXNlZCB0byBzZXQgYGluaXRfdm0tXHUwMDNlY3B1aWQubmVudGAuIFRoaXMgaXMgaW50ZXJlc3Rpbmc7IHRoZSBjb21tZW50IHBvaW50cyBvdXQgdGhhdCBgdXNlcl9kYXRhLVx1MDAzZWNwdWlkLm5lbnRgIG1pZ2h0IGhhdmUgYmVlbiBtb2RpZmllZCBzb21ld2hlcmUgZWxzZS4gU28sIHRoaXMgZW5zdXJlcyB3ZSdyZSB3b3JraW5nIHdpdGggdGhlIGNvcnJlY3QgYW5kIHZhbGlkYXRlZCBlbnRyeSBjb3VudCB3aGVuIGluaXRpYWxpemluZyB0aGUgVk0uIFRoYXQncyBhIHNlbnNpYmxlIGFwcHJvYWNoIHRvIG1haW50YWluIGRhdGEgaW50ZWdyaXR5LlxuXG5GdW5jdGlvbmFsbHksIEkga25vdyB0aGlzIHBhdGggaXMgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIGB0ZHhfdm1faW9jdGxgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBoYW5kbGluZyB0aGUgYEtWTV9URFhfSU5JVF9WTWAgaW9jdGwuIEl0IHNlZW1zIGxpa2UgYSBjbGVhbiBwYXRoLiBNeSBtZW50YWwgbWFwIG9mIFREWCBjb2RlIHRlbGxzIG1lIHRoYXQgYHRkeF92bV9pb2N0bGAgaXMgaW5kZWVkIGEgZ29vZCBlbnRyeSBwb2ludCB0byBzdGFydCB0cmFjaW5nIHRoZSBleGVjdXRpb24gZmxvdywgYXMgaXTigJlzIHRoZSBnYXRld2F5IGZvciBLVk0gaW9jdGxzIHJlbGF0ZWQgdG8gVERYLCBhbmQgYHRkeF90ZF9pbml0YCBpcyBhIGtleSBjb21wb25lbnQgZHVyaW5nIHRoZSBURFggVk0gaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgZGlyZWN0IHBhdGguIEknbGwgYWxzbyBkb3VibGUtY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBvZiBgS1ZNX0lOVEVMX1REWGAgYW5kIGhvdyB0aGF0IHJlbGF0ZXMgdG8gdGhpcyBjb2RlIHBhdGguIEkgc2hvdWxkIGFsc28gaW52ZXN0aWdhdGUgYHRkeF90ZF9pbml0YCBpbiBtb3JlIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEyNSwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTI6NTk6NTUuNjcwNTUxMjkxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcyOTk3ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fSU5URUxfVERYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGR4X3RkX2luaXRcIixcbiAgICBcInRkeF92bV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBsb2dpYyBvZiBLVk0gVERYIChUcnVzdCBEb21haW4gRXh0ZW5zaW9ucykgYnkgdXBkYXRpbmcgdGhlIENQVUlEIGVudHJ5IGNvdW50IGluIGB0ZHhfdGRfaW5pdGAuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgYEtWTV9URFhfSU5JVF9WTWAgaW9jdGwuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9JTlRFTF9URFhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0ZHhfdGRfaW5pdFwiLFxuICAgIFwidGR4X3ZtX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGxvZ2ljIG9mIEtWTSBURFggKFRydXN0IERvbWFpbiBFeHRlbnNpb25zKSBieSB1cGRhdGluZyB0aGUgQ1BVSUQgZW50cnkgY291bnQgaW4gYHRkeF90ZF9pbml0YC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBgS1ZNX1REWF9JTklUX1ZNYCBpb2N0bC4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowzl88x[1] Phase: Succeeded StartedAt: 2026-07-08 13:00:07 +0000 UTC FinishedAt: 2026-07-08 13:00:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 13:00:07 +0000 UTC FinishedAt: 2026-07-08 13:00:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2] Phase: Succeeded StartedAt: 2026-07-08 13:00:07 +0000 UTC FinishedAt: 2026-07-08 13:55:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 13:00:07 +0000 UTC FinishedAt: 2026-07-08 13:55:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:00:07 +0000 UTC FinishedAt: 2026-07-08 13:00:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:00:07 +0000 UTC FinishedAt: 2026-07-08 13:00:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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-workflowzl88x/series-workflowzl88x-convert-artifact-1910117404/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:00:17 +0000 UTC FinishedAt: 2026-07-08 13:22:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:00:17 +0000 UTC FinishedAt: 2026-07-08 13:22:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bb904c01-118c-472a-8e22-a5a5831094de,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-workflowzl88x/series-workflowzl88x-convert-artifact-1910117404/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": "d9d642e6-a8a0-47ff-a22e-ab6580da6d43", "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-workflowzl88x/series-workflowzl88x-build-action-4035230282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:00:17 +0000 UTC FinishedAt: 2026-07-08 13:22:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bb904c01-118c-472a-8e22-a5a5831094de,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-workflowzl88x/series-workflowzl88x-convert-artifact-1910117404/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": "d9d642e6-a8a0-47ff-a22e-ab6580da6d43", "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-workflowzl88x/series-workflowzl88x-build-action-4035230282/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:22:26 +0000 UTC FinishedAt: 2026-07-08 13:22:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:22:26 +0000 UTC FinishedAt: 2026-07-08 13:22:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:22:26 +0000 UTC FinishedAt: 2026-07-08 13:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:22:26 +0000 UTC FinishedAt: 2026-07-08 13:22:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-workflowzl88x/series-workflowzl88x-convert-artifact-3067573083/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:22:36 +0000 UTC FinishedAt: 2026-07-08 13:24:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:22:36 +0000 UTC FinishedAt: 2026-07-08 13:24:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d9d642e6-a8a0-47ff-a22e-ab6580da6d43,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-workflowzl88x/series-workflowzl88x-build-action-4035230282/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-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:24:52 +0000 UTC FinishedAt: 2026-07-08 13:24:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:24:52 +0000 UTC FinishedAt: 2026-07-08 13:24:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:24:52 +0000 UTC FinishedAt: 2026-07-08 13:49:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:24:52 +0000 UTC FinishedAt: 2026-07-08 13:49:47 +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:*bb904c01-118c-472a-8e22-a5a5831094de,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-workflowzl88x/series-workflowzl88x-convert-artifact-3067573083/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": "98cd23eb-fd78-4b7f-b93e-7a58396432bb", "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-workflowzl88x/series-workflowzl88x-build-action-3104512511/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:24:52 +0000 UTC FinishedAt: 2026-07-08 13:49:37 +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:*bb904c01-118c-472a-8e22-a5a5831094de,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-workflowzl88x/series-workflowzl88x-convert-artifact-3067573083/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": "98cd23eb-fd78-4b7f-b93e-7a58396432bb", "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-workflowzl88x/series-workflowzl88x-build-action-3104512511/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:49:47 +0000 UTC FinishedAt: 2026-07-08 13:49:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:49:47 +0000 UTC FinishedAt: 2026-07-08 13:49:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:49:47 +0000 UTC FinishedAt: 2026-07-08 13:51:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:49:47 +0000 UTC FinishedAt: 2026-07-08 13:51:46 +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:*98cd23eb-fd78-4b7f-b93e-7a58396432bb,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-workflowzl88x/series-workflowzl88x-build-action-3104512511/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-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:51:56 +0000 UTC FinishedAt: 2026-07-08 13:55:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:51:56 +0000 UTC FinishedAt: 2026-07-08 13:55:10 +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":["tdx_td_init","tdx_vm_ioctl"],"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:*d9d642e6-a8a0-47ff-a22e-ab6580da6d43,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*98cd23eb-fd78-4b7f-b93e-7a58396432bb,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-workflowzl88x/series-workflowzl88x-build-action-4035230282/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-workflowzl88x/series-workflowzl88x-build-action-3104512511/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:51:56 +0000 UTC FinishedAt: 2026-07-08 13:52:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:51:56 +0000 UTC FinishedAt: 2026-07-08 13:52:02 +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":["tdx_td_init","tdx_vm_ioctl"],"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-workflowzl88x/series-workflowzl88x-convert-artifact-3879367764/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:51:56 +0000 UTC FinishedAt: 2026-07-08 13:51:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:51:56 +0000 UTC FinishedAt: 2026-07-08 13:51:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:51:56 +0000 UTC FinishedAt: 2026-07-08 13:51:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:52:06 +0000 UTC FinishedAt: 2026-07-08 13:55:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzl88x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"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":["tdx_td_init","tdx_vm_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_INTEL_TDX"],"series_id":"a0e12d6e-ad9b-4298-8ad6-0f831e2b71f0","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-08 13:52:06 +0000 UTC FinishedAt: 2026-07-08 13:54:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d9d642e6-a8a0-47ff-a22e-ab6580da6d43,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*98cd23eb-fd78-4b7f-b93e-7a58396432bb,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-workflowzl88x/series-workflowzl88x-build-action-4035230282/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-workflowzl88x/series-workflowzl88x-build-action-3104512511/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-workflowzl88x/series-workflowzl88x-convert-artifact-3879367764/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,}