Name: series-workflow5kdl5 Phase: Succeeded StartedAt: 2026-07-28 20:45:04 +0000 UTC FinishedAt: 2026-07-28 22:22:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[0] Phase: Succeeded StartedAt: 2026-07-28 20:45:04 +0000 UTC FinishedAt: 2026-07-28 21:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[0].run-triage Phase: Succeeded StartedAt: 2026-07-28 20:45:04 +0000 UTC FinishedAt: 2026-07-28 21:25:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0d33d21e47d9dc66f91e44da3fc9220c74d93df7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0d33d21e47d9dc66f91e44da3fc9220c74d93df7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "946cf8e5-ef1a-4a02-b62a-198bac69f330" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl_run", "kvm_arch_vcpu_ioctl", "kvm_inject_nmi" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2luamVjdF9ubWkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5NSSBpbmplY3Rpb24gbG9naWMgaW4gS1ZNIHg4Niwgc3BlY2lmaWNhbGx5IGluIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGV4ZWN1dGlvbiBsb29wIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChlLmcuLCBLVk1fUlVOLCBLVk1fTk1JKS4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE0NTJkNDY5ZDZlZWI1MDY4ZmI4MmZjY2MyMjM0MjU4YTZlMTVhYTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAyMToyNDoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDk2MGZmN2ZjZDhkYmEuLmQzNWY1ZmQzY2IxNjQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTc3MjQsNiAmIzQzOzc3MjQsOSBAQCBzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdFx0Y2FuX2luamVjdCA9IGZhbHNlO1xuIFx0XHRcdFdBUk5fT04oa3ZtX3g4Nl9jYWxsKG5taV9hbGxvd2VkKSh2Y3B1LCB0cnVlKSBcdTAwM2MgMCk7XG4gXHRcdH1cbiYjNDM7XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpXG4mIzQzO1x0XHRcdHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZy0tO1xuIFx0XHRpZiAodmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nKVxuIFx0XHRcdGt2bV94ODZfY2FsbChlbmFibGVfbm1pX3dpbmRvdykodmNwdSk7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2luamVjdF9ubWkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5NSSBpbmplY3Rpb24gbG9naWMgaW4gS1ZNIHg4Niwgc3BlY2lmaWNhbGx5IGluIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGV4ZWN1dGlvbiBsb29wIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChlLmcuLCBLVk1fUlVOLCBLVk1fTk1JKS4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE0NTJkNDY5ZDZlZWI1MDY4ZmI4MmZjY2MyMjM0MjU4YTZlMTVhYTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyOCAyMToyNDoxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuYwppbmRleCA5NjBmZjdmY2Q4ZGJhLi5kMzVmNWZkM2NiMTY0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC03NzI0LDYgJiM0Mzs3NzI0LDkgQEAgc3RhdGljIGludCBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJY2FuX2luamVjdCA9IGZhbHNlOwogCQkJV0FSTl9PTihrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIHRydWUpICZsdDsgMCk7CiAJCX0KJiM0MzsJCWlmICh2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nICZhbXA7JmFtcDsKJiM0MzsJCSAgICAoa3ZtX3g4Nl9jYWxsKHNldF92bm1pX3BlbmRpbmcpKHZjcHUpKSkKJiM0MzsJCQl2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nLS07CiAJCWlmICh2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nKQogCQkJa3ZtX3g4Nl9jYWxsKGVuYWJsZV9ubWlfd2luZG93KSh2Y3B1KTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBhIEtWTS94ODYgUGF0Y2gqKgoKQWxyaWdodCwgSSBzZWUgYSBwYXRjaCB0b3VjaGluZyBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSB4ODYgdmlydHVhbGl6YXRpb24gbG9naWMgbGl2ZXMgaW4gS1ZNLCBzbyBpdCYjMzk7cyBsaWtlbHkgYSBzaWduaWZpY2FudCBhcmVhLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgIGZ1bmN0aW9uLiBUaGF0IGZ1bmN0aW9uIGlzIHByZXR0eSBjcnVjaWFsOyBpdCYjMzk7cyB0aGUgZ2F0ZWtlZXBlciBmb3IgZGVsaXZlcmluZyBldmVudHMgdG8gdGhlIGd1ZXN0LiBJdCBzZWVtcyBsaWtlIHdlIGFyZSBhZGRpbmcgc29tZXRoaW5nIHdoaWNoIGRlYWxzIHdpdGggTk1JIGhhbmRsaW5nIGhlcmUuCgpUaGUgYWRkZWQgY29kZSBzbmlwcGV0OgoKYGBgYwoJCWlmICh2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nICZhbXA7JmFtcDsKCQkgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpCgkJCXZjcHUtJmd0O2FyY2gubm1pX3BlbmRpbmctLTsKYGBgCgpUaGlzIGxvb2tzIGxpa2UgYSBtZWNoYW5pc20gdG8gaGFuZGxlIHBlbmRpbmcgTk1JcyAoTm9uLU1hc2thYmxlIEludGVycnVwdHMpLiBUaGUgY29kZSBjaGVja3MgaWYgYG5taV9wZW5kaW5nYCBpcyBzZXQuIElmIHRoZXJlIGlzIGEgcGVuZGluZyBOTUksIGFuZCB0aGUgYHNldF92bm1pX3BlbmRpbmdgIGZ1bmN0aW9uIGlzIHN1Y2Nlc3NmdWxseSBjYWxsZWQuIEkmIzM5O20gaW5mZXJyaW5nIHRoaXMgYHNldF92bm1pX3BlbmRpbmdgIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIHByb3Blcmx5IGluamVjdCB0aGUgTk1JIGludG8gdGhlIHZDUFUmIzM5O3Mgc3RhdGUuIFRoZW4sIGlmIGluamVjdGlvbiBpcyBzdWNjZXNzZnVsLCB0aGUgYG5taV9wZW5kaW5nYCBjb3VudCBpcyBkZWNyZW1lbnRlZC4gSXQgbWFrZXMgc2Vuc2Ug4oCTIGFuIE5NSSBpcyBwcm9jZXNzZWQsIHNvIHRoZSBwZW5kaW5nIGNvdW50IGlzIHJlZHVjZWQuCgpUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYW4gaW1wcm92ZW1lbnQgdG8gdGhlIE5NSSBoYW5kbGluZyB3aXRoaW4gS1ZNL3g4Ni4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRleHQgb2YgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCAqd2h5KiB0aGlzIGNoYW5nZSBpcyBuZWNlc3NhcnkuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaW1wYWN0cz8gV2hhdCBpcyB0aGUgaW1wYWN0IG9uIG90aGVyIHBhcnRzIG9mIHRoZSB2aXJ0dWFsaXphdGlvbiBzdGFjaz8gVGhpcyBwYXRjaCBpcyBjZXJ0YWlubHkgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIG15IGV5ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTc1MTQ9c3RhdGljIHZvaWQga3ZtX2luamVjdF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03NTcxLSAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjc1NzI6c3RhdGljIGludCBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc1NzMtXHRcdFx0XHQgICAgICAgYm9vbCAqcmVxX2ltbWVkaWF0ZV9leGl0KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz03ODM2PXZvaWQgX19rdm1fdmNwdV91cGRhdGVfYXBpY3Yoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03ODYxLVx0ICogc3RpbGwgYWN0aXZlIHdoZW4gdGhlIGludGVycnVwdCBnb3QgYWNjZXB0ZWQuIE1ha2Ugc3VyZVxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4NjI6XHQgKiBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMoKSBpcyBjYWxsZWQgdG8gY2hlY2sgZm9yIHRoYXQuXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzg2My1cdCAqL1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04MDU0PXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgyMzktXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODI0MDpcdFx0ciA9IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyh2Y3B1LCBcdTAwMjZyZXFfaW1tZWRpYXRlX2V4aXQpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTgyNDEtXHRcdGlmIChyIFx1MDAzYyAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE0NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgYW5kIFN0cmF0ZWdpYyBBZGp1c3RtZW50cyoqCgpPa2F5LCBzbyBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYCBnZXRzIGNhbGxlZCBmcm9tIGB2Y3B1X2VudGVyX2d1ZXN0YC4gVGhhdCYjMzk7cyBhIHNvbGlkLCBmdW5jdGlvbmFsIHN0YXJ0aW5nIHBvaW50IOKAkyBJIGNhbiByZWFjaCBpdC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoaXMgcmVhY2hhYmlsaXR5LCBpcyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYCBhbmQgZm9jdXMgdGhlIGZ1enppbmcgb24gdGhhdCBmdW5jdGlvbjogYEZvY3VzU3ltYm9scz1bJiMzNDtrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMmIzM0O11gLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgYXZlbnVlIGZvciBleHBsb3JpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCkhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhhdCBmdW5jdGlvbiBhY3R1YWxseSBgc3RhdGljYD8gTGV0IG1lIGRvdWJsZS1jaGVjay4gWXVwLCBjb25maXJtZWQ6IGBzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgKnJlcV9pbW1lZGlhdGVfZXhpdClgLiBCZWNhdXNlIGl0JiMzOTtzIHN0YXRpYywgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSBpdCBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3Igbm90IGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKQW5kIHRoZSBjYWxsZXIsIGB2Y3B1X2VudGVyX2d1ZXN0YCwgaXMgYWxzbyBgc3RhdGljYC4gVGhpcyBpcyBhIGJpdCBvZiBhIHByb2JsZW0uIEl0IG1lYW5zIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdXB3YXJkcyBpbiB0aGUgY2FsbCBzdGFjayB0byBmaW5kIGEgKm5vbi1zdGF0aWMqIEFQSSBlbnRyeXBvaW50LCBzb21ldGhpbmcgdGhhdCBJIGNhbiBkaXJlY3RseSBtYW5pcHVsYXRlIGFuZCBjb250cm9sLiBJIG5lZWQgdG8gbW92ZSB1cCB0aGUgY2FsbCBzdGFjayB0byBzZWUgd2hhdCYjMzk7cyBjYWxsaW5nIGB2Y3B1X2VudGVyX2d1ZXN0YC4gVGltZSB0byB0cmFjZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y3B1X2VudGVyX2d1ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz01NDA9dm9pZCBrdm1fcmVxdWV1ZV9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbnIsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTU0Ni1cdCAqIGluamVjdGlvbiB3YXMgYmxvY2tlZCBieSBuZXN0ZWRfcnVuX3BlbmRpbmcuICBJbiB0aGF0IGNhc2UsIGhvd2V2ZXIsXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTQ3Olx0ICogdmNwdV9lbnRlcl9ndWVzdCgpIHJlcXVlc3RzIGFuIGltbWVkaWF0ZSBleGl0LCBhbmQgdGhlIGd1ZXN0XG5hcmNoL3g4Ni9rdm0veDg2LmMtNTQ4LVx0ICogc2hvdWxkbiYjMzk7dCBwcm9jZWVkIGZhciBlbm91Z2ggdG8gbmVlZCByZWluamVjdGlvbi5cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjAyNj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX3ZjcHVfZmx1c2hfdGxiX2N1cnJlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yMDMzLSAqIFNlcnZpY2UgXCYjMzQ7bG9jYWxcJiMzNDsgVExCIGZsdXNoIHJlcXVlc3RzLCB3aGljaCBhcmUgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgTU1VXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjAzNDogKiBjb250ZXh0LiAgSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgZXZlbnQgaGFuZGxpbmcgaW4gdmNwdV9lbnRlcl9ndWVzdCgpLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTIwMzUtICogVExCIGZsdXNoZXMgdGhhdCBhcmUgdGFyZ2V0ZWQgYXQgYW4gTU1VIGNvbnRleHQgYWxzbyBuZWVkIHRvIGJlIHNlcnZpY2VkXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTc4OTY9dm9pZCBfX2t2bV9zZXRfb3JfY2xlYXJfYXBpY3ZfaW5oaWJpdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTYtXHRcdCAqIEtpY2sgYWxsIHZDUFVzIGJlZm9yZSBzZXR0aW5nIGFwaWN2X2luaGliaXRfcmVhc29ucyB0byBhdm9pZFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc5MTc6XHRcdCAqIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgc2FuaXR5IGNoZWNrIFdBUk4gaW4gdmNwdV9lbnRlcl9ndWVzdCgpLlxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTgtXHRcdCAqIFRoaXMgdGFzayB3aWxsIHdhaXQgZm9yIGFsbCB2Q1BVcyB0byBhY2sgdGhlIGtpY2sgSVJRIGJlZm9yZVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03OTIwLVx0XHQgKiBibG9jayBvbiBhY3F1aXJpbmcgYXBpY3ZfdXBkYXRlX2xvY2sgc28gdGhhdCB2Q1BVcyBjYW4mIzM5O3RcbmFyY2gveDg2L2t2bS94ODYuYzo3OTIxOlx0XHQgKiByZWRvIHZjcHVfZW50ZXJfZ3Vlc3QoKSB3aXRob3V0IHNlZWluZyB0aGUgbmV3IGluaGliaXQgc3RhdGUuXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkyMi1cdFx0ICpcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA0MD1zdGF0aWMgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTMtICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODA1NDpzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTUte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04NjM0PXN0YXRpYyBpbnQgdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NjQ4LVx0XHRpZiAoa3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg2NDk6XHRcdFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODY1MC1cdFx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTM3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKlRyYWNpbmcgYHZjcHVfcnVuYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHZjcHVfcnVuYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdyDigJMgaXQmIzM5O3MgbG9jYWxseSBzY29wZWQgd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0LCBtZWFuaW5nIEkgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGltcGFjdGluZyBpdHMgYmVoYXZpb3IgZGlyZWN0bHkuIEdpdmVuIGl0cyBuYW1lLCBgdmNwdV9ydW5gIGlzIHByb2JhYmx5IHRoZSBjb3JlIGV4ZWN1dGlvbiBsb29wIGZvciBhIHZpcnR1YWwgQ1BVLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUuIFRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGF0IGV4ZWN1dGlvbiBwYXRoIGFuZCBnZXQgYSBzb2xpZCBncmFzcCBvZiBpdHMgcHVycG9zZS4gTGV0JiMzOTtzIHNlZSB3aGF0IG1ha2VzIHRoaXMgdGhpbmcgdGljay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y3B1X3J1biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MTU2OT1zdGF0aWMgdm9pZCBwdmNsb2NrX3VwZGF0ZV92bV9ndG9kX2NvcHkoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xNTg5LVx0XHRcdFx0XHUwMDI2XHUwMDI2ICFrYS1cdTAwM2ViYWNrd2FyZHNfdHNjX29ic2VydmVkXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTU5MDpcdFx0XHRcdFx1MDAyNlx1MDAyNiAha2EtXHUwMDNlYm9vdF92Y3B1X3J1bnNfb2xkX2t2bWNsb2NrO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTE1OTEtXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTI2MTU9c3RhdGljIHZvaWQga3ZtX3N0ZWFsX3RpbWVfc2V0X3ByZWVtcHRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjUtXHQgKiBhbiBpbnN0cnVjdGlvbiBib3VuZGFyeSBhbmQgd2lsbCBub3QgdHJpZ2dlciBndWVzdCBlbXVsYXRpb24gb2YgYW55XG5hcmNoL3g4Ni9rdm0veDg2LmM6MjYyNjpcdCAqIGtpbmQgKHNlZSB2Y3B1X3J1bikuICBWZW5kb3Igc3BlY2lmaWMgY29kZSBjb250cm9scyAoY29uc2VydmF0aXZlbHkpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjYyNy1cdCAqIHdoZW4gdGhpcyBpcyB0cnVlLCBmb3IgZXhhbXBsZSBhbGxvd2luZyB0aGUgdkNQVSB0byBiZSBtYXJrZWRcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA0MD1zdGF0aWMgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNDktICogQ2FsbGVkIHdpdGhpbiBrdm0tXHUwMDNlc3JjdSByZWFkIHNpZGUuXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODA1MDogKiBSZXR1cm5zIDEgdG8gbGV0IHZjcHVfcnVuKCkgY29udGludWUgdGhlIGd1ZXN0IGV4ZWN1dGlvbiBsb29wIHdpdGhvdXRcbmFyY2gveDg2L2t2bS94ODYuYy04MDUxLSAqIGV4aXRpbmcgdG8gdGhlIHVzZXJzcGFjZS4gIE90aGVyd2lzZSwgdGhlIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwNTQ9c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODM2OS1cbmFyY2gveDg2L2t2bS94ODYuYzo4MzcwOlx0XHRleGl0X2Zhc3RwYXRoID0ga3ZtX3g4Nl9jYWxsKHZjcHVfcnVuKSh2Y3B1LCBydW5fZmxhZ3MpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTgzNzEtXHRcdGlmIChsaWtlbHkoZXhpdF9mYXN0cGF0aCAhPSBFWElUX0ZBU1RQQVRIX1JFRU5URVJfR1VFU1QpKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NTA2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1MDc6c3RhdGljIGJvb2wga3ZtX3ZjcHVfcnVubmluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODUwOC17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTg1NTc9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV92Y3B1X2hhc19ldmVudHMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NTgtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU1OTppbnQga3ZtX2FyY2hfdmNwdV9ydW5uYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU2MC17XG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU2MTpcdHJldHVybiBrdm1fdmNwdV9ydW5uaW5nKHZjcHUpIHx8IHZjcHUtXHUwMDNlYXJjaC5wdi5wdl91bmhhbHRlZCB8fFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjItXHQgICAgICAga3ZtX3ZjcHVfaGFzX2V2ZW50cyh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODU2Nj1zdGF0aWMgaW5saW5lIGludCB2Y3B1X2Jsb2NrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU2OS1cbmFyY2gveDg2L2t2bS94ODYuYzo4NTcwOlx0aWYgKCFrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHZjcHUpKSB7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODU3MS1cdFx0Lypcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU5Ni1cdFx0ICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU5NzpcdFx0aWYgKCFrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHZjcHUpKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1OTgtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2MzMtLyogQ2FsbGVkIHdpdGhpbiBrdm0tXHUwMDNlc3JjdSByZWFkIHNpZGUuICAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg2MzQ6c3RhdGljIGludCB2Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODYzNS17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDctXHRcdHZjcHUtXHUwMDNlYXJjaC5hdF9pbnN0cnVjdGlvbl9ib3VuZGFyeSA9IGZhbHNlO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg2NDg6XHRcdGlmIChrdm1fdmNwdV9ydW5uaW5nKHZjcHUpKSB7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODY0OS1cdFx0XHRyID0gdmNwdV9lbnRlcl9ndWVzdCh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODcyMj1mYXN0cGF0aF90IGhhbmRsZV9mYXN0cGF0aF9obHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NzI5LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg3MzA6XHRpZiAoa3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSlcbmFyY2gveDg2L2t2bS94ODYuYy04NzMxLVx0XHRyZXR1cm4gRVhJVF9GQVNUUEFUSF9SRUVOVEVSX0dVRVNUO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04ODc2PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5ODAtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODk4MTpcdHIgPSB2Y3B1X3J1bih2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy04OTgyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMzYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0geDg2IE5NSSBJbmplY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhlIGVudHJ5IHBvaW50IGhlcmUgc2VlbXMgdG8gYmUgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZC4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIHNwZWNpZmljYWxseSBtZW50aW9ucyBjaGFuZ2VzIHRvIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLgoKQWxyaWdodCwgdGhlIHBhdGNoIGFkZHMgdGhpcyBiaXQgb2YgY29kZToKCmBgYGMKCQlpZiAodmNwdS0mZ3Q7YXJjaC5ubWlfcGVuZGluZyAmYW1wOyZhbXA7CgkJICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKQoJCQl2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nLS07CmBgYAoKVGhhdCYjMzk7cyBjbGVhcmx5IHJlbGF0ZWQgdG8gaGFuZGxpbmcgTm9uLU1hc2thYmxlIEludGVycnVwdCAoTk1JKSBpbmplY3Rpb24uIFNvIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGFuZCBmb2N1cyBzeW1ib2wuIE5vdywgYXJlIHRoZXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyB0aGF0IGFyZSBvZiBzaW1pbGFyIGltcG9ydGFuY2U/IFBlcmhhcHMgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2Agd2FycmFudHMgaW5jbHVzaW9uIGFzIHdlbGwsIHVubGVzcywgb2YgY291cnNlLCBpdCYjMzk7cyBpbmxpbmVkLiBJdCYjMzk7cyBtYXJrZWQgYXMgYHN0YXRpY2AsIHNvIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gdG8gY29uZmlybS4KCkxldCYjMzk7cyBkaXZlIGludG8gYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBjZW50ZXIgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz04ODQ3PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04ODc1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg4NzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS94ODYuYy04ODc3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA0MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyByZWxhdGVkIHRvIE5NSSBpbmplY3Rpb24gdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byB0aGlzIGxpbmUgb2YgaW52ZXN0aWdhdGlvbi4gSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gTk1JIGluamVjdGlvbiBpbiB0aGUgY29kZWJhc2UuIExldCBtZSBzcGVjaWZpY2FsbHkgY2hlY2sgYGt2bV92Y3B1X2lvY3RsX25taWAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgYSBmb2N1c2VkIGV4YW1pbmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fdmNwdV9pb2N0bF9ubWkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTI3NjA9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yNzg2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjI3ODc6c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3ODgte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zNDE2PWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3NC1cdGNhc2UgS1ZNX05NSToge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjM0NzU6XHRcdHIgPSBrdm1fdmNwdV9pb2N0bF9ubWkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3Ni1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1MTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gS1ZNIEludGVyYWN0aW9uKioKCk9rYXksIHNvIGBrdm1fdmNwdV9pb2N0bF9ubWlgIGlzIGEgc3RhdGljIGZ1bmN0aW9uOyBpdCYjMzk7cyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyLiBUaGUgbW9yZSBpbnRlcmVzdGluZyBlbnRyeSBwb2ludCBpcyBga3ZtX2FyY2hfdmNwdV9pb2N0bGDigJR5ZXMsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGdvb2Qgc3ltYm9sIHRvIGNvbmNlbnRyYXRlIG9uLiBBbmQsIHdoaWxlIEkmIzM5O20gYXQgaXQsIEkgc2hvdWxkIGFsc28gbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNlZW1zIGxpa2UgaXQgd291bGQgYmUgaW1wb3J0YW50LiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIGxldCBtZSBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gQWgsIHRoZSBwYXRjaCBpcyBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYCwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEFuZCBhcyBJIHN1c3BlY3RlZCwgS1ZNIHdpbGwgcmVxdWlyZSBgQ09ORklHX0tWTWAgdG8gZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzM6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NC1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODM6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4NC1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTQ6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA3LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA4OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDktXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE3OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTgtXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzA6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMzOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDcxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBkZWx2ZSBpbnRvIHRoaXMgY29uZmlndXJhdGlvbjoKCioqQW5hbHl6aW5nIHRoZSBLVk0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgS1ZNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY2hvaWNlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBLVk1gIGhhcyBhbnkgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcywgcGFja2FnZXMsIG9yIG90aGVyIHVuZGVybHlpbmcgY29tcG9uZW50cyB0aGF0IGBLVk1gIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gSWRlbnRpZnlpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBlbnN1cmluZyB0aGUgc3lzdGVtIGlzIGNvcnJlY3RseSBzZXQgdXAuIEkgbmVlZCB0byBrbm93IHRoZSBmdWxsIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9NTI9Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjU0Olx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctNTUtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9Njk9Y29uZmlnIEtWTV9XRVJST1Jcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03Ni1cdCMgdGhlIGtlcm5lbC13aWRlIFdFUlJPUj15LlxuYXJjaC94ODYva3ZtL0tjb25maWc6Nzc6XHRkZXBlbmRzIG9uIEtWTV9YODYgXHUwMDI2XHUwMDI2ICgoRVhQRVJUIFx1MDAyNlx1MDAyNiAhS0FTQU4pIHx8IFdFUlJPUilcbmFyY2gveDg2L2t2bS9LY29uZmlnLTc4LVx0aGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTgzPWNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4NTpcdGRlcGVuZHMgb24gRVhQRVJUXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4NjpcdGRlcGVuZHMgb24gS1ZNX1g4NiBcdTAwMjZcdTAwMjYgWDg2XzY0XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Ny1cdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTk2PWNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6OTg6XHRkZXBlbmRzIG9uIEtWTSBcdTAwMjZcdTAwMjYgSUEzMl9GRUFUX0NUTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTktXHRzZWxlY3QgWDg2X0ZSRUQgaWYgWDg2XzY0XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTA3PWNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwOTogICAgICAgIGRlcGVuZHMgb24gS1ZNX0lOVEVMIFx1MDAyNlx1MDAyNiBFWFBFUlRcbmFyY2gveDg2L2t2bS9LY29uZmlnLTExMC0gICAgICAgIGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O1NvZnR3YXJlIEd1YXJkIGVYdGVuc2lvbnMgKFNHWCkgVmlydHVhbGl6YXRpb25cJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEyNDpcdGRlcGVuZHMgb24gWDg2X1NHWCBcdTAwMjZcdTAwMjYgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMjUtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTM2LVx0ZGVmYXVsdCB5XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzc6XHRkZXBlbmRzIG9uIElOVEVMX1REWF9IT1NUXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzgtXHRzZWxlY3QgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNDY9Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ4Olx0ZGVwZW5kcyBvbiBLVk0gXHUwMDI2XHUwMDI2IChDUFVfU1VQX0FNRCB8fCBDUFVfU1VQX0hZR09OKVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ5LVx0aGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE1Nj1jb25maWcgS1ZNX0FNRF9TRVZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTgtXHRkZWZhdWx0IHlcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcdGRlcGVuZHMgb24gS1ZNX0FNRCBcdTAwMjZcdTAwMjYgWDg2XzY0XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNjA6XHRkZXBlbmRzIG9uIENSWVBUT19ERVZfU1BfUFNQIFx1MDAyNlx1MDAyNiAhKEtWTV9BTUQ9eSBcdTAwMjZcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE2MS1cdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE3Mz1jb25maWcgS1ZNX0lPQVBJQ1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NS1cdGRlZmF1bHQgeVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTc2Olx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzctXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTgzPWNvbmZpZyBLVk1fU01NXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg1LVx0ZGVmYXVsdCB5XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODY6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Ny1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOTQ9Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTY6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Ny1cdGRlZmF1bHQgeVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTIwOD1jb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MjEwOlx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTEtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE3PWNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTgtXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjA6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyMTpcdGRlcGVuZHMgb24gRVhQRVJUXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjItXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjMzPWNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MjM1Olx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzYtXHRyYW5nZSAxMDI0IDQwOTZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NDgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBhbmQgWDg2IEludGVncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBLVk0gY29kZSBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gVGhlIGRlcGVuZGVuY3kgb24gYFg4Nl9MT0NBTF9BUElDYCBpcyB0aGUgZmlyc3Qga2V5IGluZGljYXRvci4gVGhlbiwgYEtWTV9YODZgIGlzIHRoZSBleHBsaWNpdCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgS1ZNIG9uIHg4Niwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoYXQgYEtWTWAgaXMgYSB0cmlzdGF0ZSwgYW5kIGBLVk1fWDg2YCBpcyBhIGRlZl90cmlzdGF0ZS4gVGhhdCYjMzk7cyBnb29kIHRvIG5vdGUsIEkmIzM5O2xsIGp1c3QgaW5jbHVkZSBgS1ZNYCB0byBtYWtlIHN1cmUgSSBhbSBnZXR0aW5nIHRoZSBhcHByb3ByaWF0ZSBtb2R1bGVzLgoKTG9va2luZyBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIGxpa2UgdGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMgYXJlIHdpdGhpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBzdHJpa2VzIG1lIGFzIGEgZ29vZCBmb2N1cyBzeW1ib2wsIGFuZCBzaW1pbGFybHksIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBzaG91bGQgYmUgaW5mb3JtYXRpdmUuCgpJIHdvbmRlciB3aGF0IGVsc2UgdGhleSB0b3VjaGVkPyBBaGEsIHRoZSBwYXRjaCBpcyBhbHNvIG1vZGlmeWluZyBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4gTGV0IG1lIGNoZWNrIGlmIHRoYXQgZnVuY3Rpb24gaXMgaW5saW5lZC4gSXQmIzM5O3Mgc3RhdGljLCBzbyB0aGF0JiMzOTtzIGEgY2x1ZSwgYnV0IGl0JiMzOTtzIGEgZGVjZW50IHNpemUgd2hpY2ggbWFrZXMgaXQgdW5saWtlbHkuIExldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgY29kZSBvZiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIGludCBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTc1MTQ9c3RhdGljIHZvaWQga3ZtX2luamVjdF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03NTcxLSAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjc1NzI6c3RhdGljIGludCBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc1NzMtXHRcdFx0XHQgICAgICAgYm9vbCAqcmVxX2ltbWVkaWF0ZV9leGl0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY3MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBOTUkgSW5qZWN0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHNpbmNlIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgaW5qZWN0aW5nIE5NSXMsIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggYSBzdGF0aWMgZnVuY3Rpb24sIEkgc2hvdWxkIGZpcnN0IG1ha2Ugc3VyZSBpdCBkb2VzbiYjMzk7dCBldmVuIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBjb3VsZCBjb21wbGljYXRlIHRoaW5ncyBhIGJpdC4gTGV0JiMzOTtzIHNlZS4uLkkgdGhpbmsgSSBzaG91bGQgc3RhcnQgd2l0aCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgdG8gZ2V0IG15IGJlYXJpbmdzLCBidXQgd2FpdCBhIG1pbnV0ZS4uLiB0aGlzIGlzIGFib3V0IE5NSSBpbmplY3Rpb24gc3BlY2lmaWNhbGx5LCBpc24mIzM5O3QgaXQ/IE9rYXksIHJpZ2h0LiBTbywgaXMgdGhlcmUgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gd2l0aGluIHRoaXMgcGF0Y2ggdGhhdCBoYW5kbGVzIE5NSSBpbmplY3Rpb24gZGlyZWN0bHk/IEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgc2VlbiBga3ZtX3ZjcHVfaW9jdGxfbm1pYCBiZWZvcmUsIGJ1dCwgeWVwLCB0aGF0IG9uZSYjMzk7cyBzdGF0aWMuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZsb2F0aW5nIGFyb3VuZCByZWxhdGVkIHRvIE5NSXMgdGhhdCB0aGlzIGlzIGltcGFjdGluZy4gSSBuZWVkIHRvIGJlIHRob3JvdWdoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25taSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MTAxPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faG9zdCk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTE1OC1cbmFyY2gveDg2L2t2bS94ODYuYzoxNTk6c3RhdGljIHZvaWQgcHJvY2Vzc19ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy0xNjAtc3RhdGljIHZvaWQgc3RvcmVfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0yNjQ9Y29uc3Qgc3RydWN0IGt2bV9zdGF0c19kZXNjIGt2bV92Y3B1X3N0YXRzX2Rlc2NbXSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc5LVx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGlycV93aW5kb3dfZXhpdHMpLFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI4MDpcdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBubWlfd2luZG93X2V4aXRzKSxcbmFyY2gveDg2L2t2bS94ODYuYy0yODEtXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgbDFkX2ZsdXNoKSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjkwLVx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGlycV9pbmplY3Rpb25zKSxcbmFyY2gveDg2L2t2bS94ODYuYzoyOTE6XHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgbm1pX2luamVjdGlvbnMpLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI5Mi1cdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCByZXFfZXZlbnQpLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz02MjA9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKF9fa3ZtX2luamVjdF9lbXVsYXRlZF9wYWdlX2ZhdWx0KTtcbmFyY2gveDg2L2t2bS94ODYuYy02MjEtXG5hcmNoL3g4Ni9rdm0veDg2LmM6NjIyOnZvaWQga3ZtX2luamVjdF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTYyMy17XG5hcmNoL3g4Ni9rdm0veDg2LmM6NjI0Olx0YXRvbWljX2luYyhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubm1pX3F1ZXVlZCk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNjI1LVx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX05NSSwgdmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTI3NjA9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yNzg2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjI3ODc6c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3ODgte1xuYXJjaC94ODYva3ZtL3g4Ni5jOjI3ODk6XHRrdm1faW5qZWN0X25taSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy0yNzkwLVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0yOTYyPXN0YXRpYyB2b2lkIGt2bV92Y3B1X2lvY3RsX3g4Nl9nZXRfdmNwdV9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yOTY2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjI5Njc6XHRwcm9jZXNzX25taSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy0yOTY4LVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0zMDA1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjMwMDY6XHRldmVudHMtXHUwMDNlbm1pLmluamVjdGVkID0gdmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZDtcbmFyY2gveDg2L2t2bS94ODYuYzozMDA3Olx0ZXZlbnRzLVx1MDAzZW5taS5wZW5kaW5nID0ga3ZtX2dldF9ucl9wZW5kaW5nX25taXModmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MzAwODpcdGV2ZW50cy1cdTAwM2VubWkubWFza2VkID0ga3ZtX3g4Nl9jYWxsKGdldF9ubWlfbWFzaykodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAwOS1cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAxNC1cdGV2ZW50cy1cdTAwM2VzbWkucGVuZGluZyA9IHZjcHUtXHUwMDNlYXJjaC5zbWlfcGVuZGluZztcbmFyY2gveDg2L2t2bS94ODYuYzozMDE1Olx0ZXZlbnRzLVx1MDAzZXNtaS5zbW1faW5zaWRlX25taSA9XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAxNi1cdFx0ISEodmNwdS1cdTAwM2VhcmNoLmhmbGFncyBcdTAwMjYgSEZfU01NX0lOU0lERV9OTUlfTUFTSyk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTMwMzE9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA1Ny1cbmFyY2gveDg2L2t2bS94ODYuYzozMDU4Olx0cHJvY2Vzc19ubWkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA1OS1cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA4Ni1cbmFyY2gveDg2L2t2bS94ODYuYzozMDg3Olx0dmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZCA9IGV2ZW50cy1cdTAwM2VubWkuaW5qZWN0ZWQ7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA4OC1cdGlmIChldmVudHMtXHUwMDNlZmxhZ3MgXHUwMDI2IEtWTV9WQ1BVRVZFTlRfVkFMSURfTk1JX1BFTkRJTkcpIHtcbmFyY2gveDg2L2t2bS94ODYuYzozMDg5Olx0XHR2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgPSAwO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjMwOTA6XHRcdGF0b21pY19zZXQoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLm5taV9xdWV1ZWQsIGV2ZW50cy1cdTAwM2VubWkucGVuZGluZyk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA5MTpcdFx0aWYgKGV2ZW50cy1cdTAwM2VubWkucGVuZGluZylcbmFyY2gveDg2L2t2bS94ODYuYy0zMDkyLVx0XHRcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9OTUksIHZjcHUpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTMwOTMtXHR9XG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA5NDpcdGt2bV94ODZfY2FsbChzZXRfbm1pX21hc2spKHZjcHUsIGV2ZW50cy1cdTAwM2VubWkubWFza2VkKTtcbmFyY2gveDg2L2t2bS94ODYuYy0zMDk1LVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0zMTA5LVx0XHRpZiAoZXZlbnRzLVx1MDAzZXNtaS5zbW0pIHtcbmFyY2gveDg2L2t2bS94ODYuYzozMTEwOlx0XHRcdGlmIChldmVudHMtXHUwMDNlc21pLnNtbV9pbnNpZGVfbm1pKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTMxMTEtXHRcdFx0XHR2Y3B1LVx1MDAzZWFyY2guaGZsYWdzIHw9IEhGX1NNTV9JTlNJREVfTk1JX01BU0s7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTMxMTctXHRcdGlmIChldmVudHMtXHUwMDNlc21pLnNtbSB8fCBldmVudHMtXHUwMDNlc21pLnBlbmRpbmcgfHxcbmFyY2gveDg2L2t2bS94ODYuYzozMTE4Olx0XHQgICAgZXZlbnRzLVx1MDAzZXNtaS5zbW1faW5zaWRlX25taSlcbmFyY2gveDg2L2t2bS94ODYuYy0zMTE5LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zNDE2PWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3NC1cdGNhc2UgS1ZNX05NSToge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjM0NzU6XHRcdHIgPSBrdm1fdmNwdV9pb2N0bF9ubWkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3Ni1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTU3NDQ9c3RhdGljIHZvaWQgZW11bGF0b3Jfd3JpdGVfZ3ByKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LCB1bnNpZ25lZCByZWcsIHVsb25nIHZhbClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTc0OC1cbmFyY2gveDg2L2t2bS94ODYuYzo1NzQ5OnN0YXRpYyB2b2lkIGVtdWxhdG9yX3NldF9ubWlfbWFzayhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgYm9vbCBtYXNrZWQpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTc1MC17XG5hcmNoL3g4Ni9rdm0veDg2LmM6NTc1MTpcdGt2bV94ODZfY2FsbChzZXRfbm1pX21hc2spKGVtdWxfdG9fdmNwdShjdHh0KSwgbWFza2VkKTtcbmFyY2gveDg2L2t2bS94ODYuYy01NzUyLX1cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9NTgxND1zdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBlbXVsYXRlX29wcyA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTg1NC1cdC5ndWVzdF9jcHVpZF9pc19pbnRlbF9jb21wYXRpYmxlID0gZW11bGF0b3JfZ3Vlc3RfY3B1aWRfaXNfaW50ZWxfY29tcGF0aWJsZSxcbmFyY2gveDg2L2t2bS94ODYuYzo1ODU1Olx0LnNldF9ubWlfbWFzayAgICAgICAgPSBlbXVsYXRvcl9zZXRfbm1pX21hc2ssXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTg1Ni1cdC5pc19zbW0gICAgICAgICAgICAgID0gZW11bGF0b3JfaXNfc21tLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz03NTcyPXN0YXRpYyBpbnQga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzYxNC1cdFx0OyAvKiBzZWUgYWJvdmUgKi9cbmFyY2gveDg2L2t2bS94ODYuYzo3NjE1Olx0ZWxzZSBpZiAodmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZClcbmFyY2gveDg2L2t2bS94ODYuYzo3NjE2Olx0XHRrdm1feDg2X2NhbGwoaW5qZWN0X25taSkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzYxNy1cdGVsc2UgaWYgKHZjcHUtXHUwMDNlYXJjaC5pbnRlcnJ1cHQuaW5qZWN0ZWQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3MTQtXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzcxNTpcdGlmICh2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcpIHtcbmFyY2gveDg2L2t2bS94ODYuYzo3NzE2Olx0XHRyID0gY2FuX2luamVjdCA/IGt2bV94ODZfY2FsbChubWlfYWxsb3dlZCkodmNwdSwgdHJ1ZSkgOlxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3MTctXHRcdFx0XHQgLUVCVVNZO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03NzIwLVx0XHRpZiAocikge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjc3MjE6XHRcdFx0LS12Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmc7XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzcyMjpcdFx0XHR2Y3B1LVx1MDAzZWFyY2gubm1pX2luamVjdGVkID0gdHJ1ZTtcbmFyY2gveDg2L2t2bS94ODYuYzo3NzIzOlx0XHRcdGt2bV94ODZfY2FsbChpbmplY3Rfbm1pKSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy03NzI0LVx0XHRcdGNhbl9pbmplY3QgPSBmYWxzZTtcbmFyY2gveDg2L2t2bS94ODYuYzo3NzI1Olx0XHRcdFdBUk5fT04oa3ZtX3g4Nl9jYWxsKG5taV9hbGxvd2VkKSh2Y3B1LCB0cnVlKSBcdTAwM2MgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzcyNi1cdFx0fVxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3Mjc6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzcyODpcdFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3Mjk6XHRcdFx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nLS07XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzczMDpcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZylcbmFyY2gveDg2L2t2bS94ODYuYzo3NzMxOlx0XHRcdGt2bV94ODZfY2FsbChlbmFibGVfbm1pX3dpbmRvdykodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzczMi1cdH1cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzc4MC1cbmFyY2gveDg2L2t2bS94ODYuYzo3NzgxOnN0YXRpYyB2b2lkIHByb2Nlc3Nfbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS94ODYuYy03NzgyLXtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzc5NC1cdCAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjc3OTU6XHRpZiAoa3ZtX3g4Nl9jYWxsKGdldF9ubWlfbWFzaykodmNwdSkgfHwgdmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZClcbmFyY2gveDg2L2t2bS94ODYuYy03Nzk2LVx0XHRsaW1pdCA9IDE7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDEtXHQgKiBBZGp1c3QgdGhlIGxpbWl0IHRvIGFjY291bnQgZm9yIHBlbmRpbmcgdmlydHVhbCBOTUlzLCB3aGljaCBhcmVuJiMzOTt0XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgwMjpcdCAqIHRyYWNrZWQgaW4gdmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nLlxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDMtXHQgKi9cbmFyY2gveDg2L2t2bS94ODYuYzo3ODA0Olx0aWYgKGt2bV94ODZfY2FsbChpc192bm1pX3BlbmRpbmcpKHZjcHUpKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDUtXHRcdGxpbWl0LS07XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgwNi1cbmFyY2gveDg2L2t2bS94ODYuYzo3ODA3Olx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nICYjNDM7PSBhdG9taWNfeGNoZyhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubm1pX3F1ZXVlZCwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgwODpcdHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZyA9IG1pbih2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcsIGxpbWl0KTtcbmFyY2gveDg2L2t2bS94ODYuYy03ODA5LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTA6XHRpZiAodmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nIFx1MDAyNlx1MDAyNlxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTE6XHQgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgxMjpcdFx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nLS07XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgxMy1cbmFyY2gveDg2L2t2bS94ODYuYzo3ODE0Olx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZylcbmFyY2gveDg2L2t2bS94ODYuYy03ODE1LVx0XHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfRVZFTlQsIHZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03ODE4LS8qIFJldHVybiB0b3RhbCBudW1iZXIgb2YgTk1JcyBwZW5kaW5nIGluamVjdGlvbiB0byB0aGUgVk0gKi9cbmFyY2gveDg2L2t2bS94ODYuYzo3ODE5OmludCBrdm1fZ2V0X25yX3BlbmRpbmdfbm1pcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgyMC17XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgyMTpcdHJldHVybiB2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgJiM0MztcbmFyY2gveDg2L2t2bS94ODYuYzo3ODIyOlx0ICAgICAgIGt2bV94ODZfY2FsbChpc192bm1pX3BlbmRpbmcpKHZjcHUpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MjMtfVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04MDU0PXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgxNTQtXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX05NSSwgdmNwdSkpXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODE1NTpcdFx0XHRwcm9jZXNzX25taSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy04MTU2LVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9JT0FQSUNfRU9JX0VYSVQsIHZjcHUpKSB7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTg1MTM9Ym9vbCBrdm1fdmNwdV9oYXNfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODUyNS1cdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfTk1JLCB2Y3B1KSB8fFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1MjY6XHQgICAgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZyBcdTAwMjZcdTAwMjZcbmFyY2gveDg2L2t2bS94ODYuYzo4NTI3Olx0ICAgICBrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIGZhbHNlKSkpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODUyOC1cdFx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTkyNzY9c3RhdGljIGludCBzeW5jX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy05MjkzLSNkZWZpbmUgUEVSRl9NRURJQVRFRF9QTVVfTVNHIFxcXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTI5NDpcdFwmIzM0O0ZhaWxlZCB0byBlbmFibGUgbWVkaWF0ZWQgdlBNVSwgdHJ5IGRpc2FibGluZyBzeXN0ZW0gd2lkZSBwZXJmIGV2ZW50cyBhbmQgbm1pX3dhdGNoZG9nLlxcblwmIzM0O1xuYXJjaC94ODYva3ZtL3g4Ni5jLTkyOTUtXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTk1MjQ9dm9pZCBrdm1fdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTU1NS1cdHZjcHUtXHUwMDNlYXJjaC5zbWlfY291bnQgPSAwO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjk1NTY6XHRhdG9taWNfc2V0KFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5ubWlfcXVldWVkLCAwKTtcbmFyY2gveDg2L2t2bS94ODYuYzo5NTU3Olx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nID0gMDtcbmFyY2gveDg2L2t2bS94ODYuYzo5NTU4Olx0dmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZCA9IGZhbHNlO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTk1NTktXHRrdm1fY2xlYXJfaW50ZXJydXB0X3F1ZXVlKHZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjgzMQoJCQkJCQkJb3V0cHV0OiAxNTMKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS1ZNIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgYWZ0ZXIgc29tZSByZXZpZXcsIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiB0aGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgZm9yIGZ1enppbmcgd2l0aGluIHRoZSBLVk0gaHlwZXJ2aXNvci4gSSYjMzk7bSBmZWVsaW5nIGNvbmZpZGVudCBhYm91dCBga3ZtX2luamVjdF9ubWlgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLiBUaGV5IGFsbCBsb29rIGxpa2UgZXhjZWxsZW50IGZvY3VzIHN5bWJvbHMgZm9yIGluaXRpYWwgZnV6emluZyBlZmZvcnRzLiBJJiMzOTt2ZSBub3RlZCB0aGF0IGBrdm1fZ2V0X25yX3BlbmRpbmdfbm1pc2AgaXMgYWxzbyBub24tc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZywgYnV0IEkmIzM5O2xsIGtlZXAgdGhlIGZvY3VzIG9uIHRoZSBpbml0aWFsIHRocmVlLgoKQSBxdWljayByZXZpZXcgc3VnZ2VzdHMgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgZ2V0cyBjYWxsZWQgZnJvbSBgdmNwdV9lbnRlcl9ndWVzdGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGB2Y3B1X3J1bmAsIGFuZCBmaW5hbGx5LCBgdmNwdV9ydW5gIGlzIGNhbGxlZCBieSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGlzIGNvbmZpcm1zIHRoYXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIHZlcnkgaW1wb3J0YW50IGVudHJ5IHBvaW50LCBwcm9iYWJseSAqdGhlKiBtYWluIG9uZSwgYW5kIEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSB0aGF0LiBga3ZtX2luamVjdF9ubWlgIGlzIGFsc28gY3JpdGljYWwsIGdpdmVuIHRoZSBuYW1lLgoKRmluYWxseSwgSSYjMzk7bSB2ZXJpZnlpbmcgdGhhdCB0aGUgYEtWTWAgY29uZmlndXJhdGlvbiBpcyB0aGUgcmlnaHQgb25lIHRvIGVuYWJsZSBLVk0gZnVuY3Rpb25hbGl0eS4gWWVzLCBgS1ZNYCBpcyBpbmRlZWQgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiwgc28gSSBjYW4gdXNlIHRoYXQgd2l0aCBjb25maWRlbmNlIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuCgpTbywgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdDoKCiogICAqKldvcnRoRnV6emluZyoqOiBgdHJ1ZWAgKFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0KQoqICAgKipGb2N1c1N5bWJvbHMqKjogYFsmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7LCAmIzM0O2t2bV9pbmplY3Rfbm1pJiMzNDtdYCAodGhlc2UgYXJlIG15IG1haW4gdGFyZ2V0cykKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7S1ZNJiMzNDtdYCAodGhlIGNvcmUgS1ZNIGNvbmZpZ3VyYXRpb24gZmxhZykKClRpbWUgdG8gd3JpdGUgdGhlIHJlc3BvbnNlIGFuZCBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsJiMzNDssCiAgICAmIzM0O2t2bV9pbmplY3Rfbm1pJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOTUkgaW5qZWN0aW9uIGxvZ2ljIGluIEtWTSB4ODYsIHNwZWNpZmljYWxseSBpbiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBleGVjdXRpb24gbG9vcCB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoZS5nLiwgS1ZNX1JVTiwgS1ZNX05NSSkuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2luamVjdF9ubWkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5NSSBpbmplY3Rpb24gbG9naWMgaW4gS1ZNIHg4Niwgc3BlY2lmaWNhbGx5IGluIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGV4ZWN1dGlvbiBsb29wIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChlLmcuLCBLVk1fUlVOLCBLVk1fTk1JKS4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjExLjI2MjIyNzk0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4MDgzMzU0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIixcbiAgICBcImt2bV9pbmplY3Rfbm1pXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5NSSBpbmplY3Rpb24gbG9naWMgaW4gS1ZNIHg4Niwgc3BlY2lmaWNhbGx5IGluIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGV4ZWN1dGlvbiBsb29wIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChlLmcuLCBLVk1fUlVOLCBLVk1fTk1JKS4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoxMS4yNjIyNDAxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMjk2NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTQ1MmQ0NjlkNmVlYjUwNjhmYjgyZmNjYzIyMzQyNThhNmUxNWFhMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyOCAyMToyNDoxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCA5NjBmZjdmY2Q4ZGJhLi5kMzVmNWZkM2NiMTY0IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbkBAIC03NzI0LDYgKzc3MjQsOSBAQCBzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdFxcdGNhbl9pbmplY3QgPSBmYWxzZTtcXG4gXFx0XFx0XFx0V0FSTl9PTihrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIHRydWUpIFxcdTAwM2MgMCk7XFxuIFxcdFxcdH1cXG4rXFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxcbitcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nLS07XFxuIFxcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nKVxcbiBcXHRcXHRcXHRrdm1feDg2X2NhbGwoZW5hYmxlX25taV93aW5kb3cpKHZjcHUpO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjExLjczNDUzMzgwMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQzMzM2MDIwMzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1faW5qZWN0X25taVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOTUkgaW5qZWN0aW9uIGxvZ2ljIGluIEtWTSB4ODYsIHNwZWNpZmljYWxseSBpbiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBleGVjdXRpb24gbG9vcCB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoZS5nLiwgS1ZNX1JVTiwgS1ZNX05NSSkuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTQ1MmQ0NjlkNmVlYjUwNjhmYjgyZmNjYzIyMzQyNThhNmUxNWFhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDIxOjI0OjEwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCA5NjBmZjdmY2Q4ZGJhLi5kMzVmNWZkM2NiMTY0IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC03NzI0LDYgKzc3MjQsOSBAQCBzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdFx0Y2FuX2luamVjdCA9IGZhbHNlO1xuIFx0XHRcdFdBUk5fT04oa3ZtX3g4Nl9jYWxsKG5taV9hbGxvd2VkKSh2Y3B1LCB0cnVlKSBcdTAwM2MgMCk7XG4gXHRcdH1cbitcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZyBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxuK1x0XHRcdHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZy0tO1xuIFx0XHRpZiAodmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nKVxuIFx0XHRcdGt2bV94ODZfY2FsbChlbmFibGVfbm1pX3dpbmRvdykodmNwdSk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoxMS43MzQ1MzU3NTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA2NDUwMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIGEgS1ZNL3g4NiBQYXRjaCoqXG5cbkFscmlnaHQsIEkgc2VlIGEgcGF0Y2ggdG91Y2hpbmcgYGFyY2gveDg2L2t2bS94ODYuY2AuIFRoYXQncyB3aGVyZSB0aGUgY29yZSB4ODYgdmlydHVhbGl6YXRpb24gbG9naWMgbGl2ZXMgaW4gS1ZNLCBzbyBpdCdzIGxpa2VseSBhIHNpZ25pZmljYW50IGFyZWEuIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgZnVuY3Rpb24uIFRoYXQgZnVuY3Rpb24gaXMgcHJldHR5IGNydWNpYWw7IGl0J3MgdGhlIGdhdGVrZWVwZXIgZm9yIGRlbGl2ZXJpbmcgZXZlbnRzIHRvIHRoZSBndWVzdC4gSXQgc2VlbXMgbGlrZSB3ZSBhcmUgYWRkaW5nIHNvbWV0aGluZyB3aGljaCBkZWFscyB3aXRoIE5NSSBoYW5kbGluZyBoZXJlLlxuXG5UaGUgYWRkZWQgY29kZSBzbmlwcGV0OlxuXG5gYGBjXG5cdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZyBcdTAwMjZcdTAwMjZcblx0XHQgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpXG5cdFx0XHR2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmctLTtcbmBgYFxuXG5UaGlzIGxvb2tzIGxpa2UgYSBtZWNoYW5pc20gdG8gaGFuZGxlIHBlbmRpbmcgTk1JcyAoTm9uLU1hc2thYmxlIEludGVycnVwdHMpLiBUaGUgY29kZSBjaGVja3MgaWYgYG5taV9wZW5kaW5nYCBpcyBzZXQuIElmIHRoZXJlIGlzIGEgcGVuZGluZyBOTUksIGFuZCB0aGUgYHNldF92bm1pX3BlbmRpbmdgIGZ1bmN0aW9uIGlzIHN1Y2Nlc3NmdWxseSBjYWxsZWQuIEknbSBpbmZlcnJpbmcgdGhpcyBgc2V0X3ZubWlfcGVuZGluZ2AgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gcHJvcGVybHkgaW5qZWN0IHRoZSBOTUkgaW50byB0aGUgdkNQVSdzIHN0YXRlLiBUaGVuLCBpZiBpbmplY3Rpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlIGBubWlfcGVuZGluZ2AgY291bnQgaXMgZGVjcmVtZW50ZWQuIEl0IG1ha2VzIHNlbnNlIOKAkyBhbiBOTUkgaXMgcHJvY2Vzc2VkLCBzbyB0aGUgcGVuZGluZyBjb3VudCBpcyByZWR1Y2VkLlxuXG5UaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYW4gaW1wcm92ZW1lbnQgdG8gdGhlIE5NSSBoYW5kbGluZyB3aXRoaW4gS1ZNL3g4Ni4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dCBvZiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoeSogdGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5LiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdHM/IFdoYXQgaXMgdGhlIGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgdmlydHVhbGl6YXRpb24gc3RhY2s/IFRoaXMgcGF0Y2ggaXMgY2VydGFpbmx5IHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBteSBleWUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoxNi4yNDA5OTEwNzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzNzk5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ODYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9NzUxND1zdGF0aWMgdm9pZCBrdm1faW5qZWN0X2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzU3MS0gKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzU3MjpzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc1NzMtXFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgKnJlcV9pbW1lZGlhdGVfZXhpdClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz03ODM2PXZvaWQgX19rdm1fdmNwdV91cGRhdGVfYXBpY3Yoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4NjEtXFx0ICogc3RpbGwgYWN0aXZlIHdoZW4gdGhlIGludGVycnVwdCBnb3QgYWNjZXB0ZWQuIE1ha2Ugc3VyZVxcbmFyY2gveDg2L2t2bS94ODYuYzo3ODYyOlxcdCAqIGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cygpIGlzIGNhbGxlZCB0byBjaGVjayBmb3IgdGhhdC5cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzg2My1cXHQgKi9cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04MDU0PXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODIzOS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODI0MDpcXHRcXHRyID0ga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzKHZjcHUsIFxcdTAwMjZyZXFfaW1tZWRpYXRlX2V4aXQpO1xcbmFyY2gveDg2L2t2bS94ODYuYy04MjQxLVxcdFxcdGlmIChyIFxcdTAwM2MgMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoxNi4yODczNzg4NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjYzMjU5ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBhbmQgU3RyYXRlZ2ljIEFkanVzdG1lbnRzKipcblxuT2theSwgc28gYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgZ2V0cyBjYWxsZWQgZnJvbSBgdmNwdV9lbnRlcl9ndWVzdGAuIFRoYXQncyBhIHNvbGlkLCBmdW5jdGlvbmFsIHN0YXJ0aW5nIHBvaW50IOKAkyBJIGNhbiByZWFjaCBpdC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoaXMgcmVhY2hhYmlsaXR5LCBpcyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYCBhbmQgZm9jdXMgdGhlIGZ1enppbmcgb24gdGhhdCBmdW5jdGlvbjogYEZvY3VzU3ltYm9scz1bXCJrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNcIl1gLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgYXZlbnVlIGZvciBleHBsb3JpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuSG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGF0IGZ1bmN0aW9uIGFjdHVhbGx5IGBzdGF0aWNgPyBMZXQgbWUgZG91YmxlLWNoZWNrLiBZdXAsIGNvbmZpcm1lZDogYHN0YXRpYyBpbnQga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCAqcmVxX2ltbWVkaWF0ZV9leGl0KWAuIEJlY2F1c2UgaXQncyBzdGF0aWMsIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3Igbm90IGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLlxuXG5BbmQgdGhlIGNhbGxlciwgYHZjcHVfZW50ZXJfZ3Vlc3RgLCBpcyBhbHNvIGBzdGF0aWNgLiBUaGlzIGlzIGEgYml0IG9mIGEgcHJvYmxlbS4gSXQgbWVhbnMgSSdsbCBuZWVkIHRvIHRyYWNlIHVwd2FyZHMgaW4gdGhlIGNhbGwgc3RhY2sgdG8gZmluZCBhICpub24tc3RhdGljKiBBUEkgZW50cnlwb2ludCwgc29tZXRoaW5nIHRoYXQgSSBjYW4gZGlyZWN0bHkgbWFuaXB1bGF0ZSBhbmQgY29udHJvbC4gSSBuZWVkIHRvIG1vdmUgdXAgdGhlIGNhbGwgc3RhY2sgdG8gc2VlIHdoYXQncyBjYWxsaW5nIGB2Y3B1X2VudGVyX2d1ZXN0YC4gVGltZSB0byB0cmFjZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzE0NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoyMC45NTA2NDIxODNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzOTIyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9lbnRlcl9ndWVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTU0MD12b2lkIGt2bV9yZXF1ZXVlX2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBucixcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy01NDYtXFx0ICogaW5qZWN0aW9uIHdhcyBibG9ja2VkIGJ5IG5lc3RlZF9ydW5fcGVuZGluZy4gIEluIHRoYXQgY2FzZSwgaG93ZXZlcixcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTQ3OlxcdCAqIHZjcHVfZW50ZXJfZ3Vlc3QoKSByZXF1ZXN0cyBhbiBpbW1lZGlhdGUgZXhpdCwgYW5kIHRoZSBndWVzdFxcbmFyY2gveDg2L2t2bS94ODYuYy01NDgtXFx0ICogc2hvdWxkbid0IHByb2NlZWQgZmFyIGVub3VnaCB0byBuZWVkIHJlaW5qZWN0aW9uLlxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTIwMjY9c3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X2ZsdXNoX3RsYl9jdXJyZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yMDMzLSAqIFNlcnZpY2UgXFxcImxvY2FsXFxcIiBUTEIgZmx1c2ggcmVxdWVzdHMsIHdoaWNoIGFyZSBzcGVjaWZpYyB0byB0aGUgY3VycmVudCBNTVVcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjAzNDogKiBjb250ZXh0LiAgSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgZXZlbnQgaGFuZGxpbmcgaW4gdmNwdV9lbnRlcl9ndWVzdCgpLFxcbmFyY2gveDg2L2t2bS94ODYuYy0yMDM1LSAqIFRMQiBmbHVzaGVzIHRoYXQgYXJlIHRhcmdldGVkIGF0IGFuIE1NVSBjb250ZXh0IGFsc28gbmVlZCB0byBiZSBzZXJ2aWNlZFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTc4OTY9dm9pZCBfX2t2bV9zZXRfb3JfY2xlYXJfYXBpY3ZfaW5oaWJpdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxNi1cXHRcXHQgKiBLaWNrIGFsbCB2Q1BVcyBiZWZvcmUgc2V0dGluZyBhcGljdl9pbmhpYml0X3JlYXNvbnMgdG8gYXZvaWRcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzkxNzpcXHRcXHQgKiBmYWxzZSBwb3NpdGl2ZXMgaW4gdGhlIHNhbml0eSBjaGVjayBXQVJOIGluIHZjcHVfZW50ZXJfZ3Vlc3QoKS5cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxOC1cXHRcXHQgKiBUaGlzIHRhc2sgd2lsbCB3YWl0IGZvciBhbGwgdkNQVXMgdG8gYWNrIHRoZSBraWNrIElSUSBiZWZvcmVcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy03OTIwLVxcdFxcdCAqIGJsb2NrIG9uIGFjcXVpcmluZyBhcGljdl91cGRhdGVfbG9jayBzbyB0aGF0IHZDUFVzIGNhbid0XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc5MjE6XFx0XFx0ICogcmVkbyB2Y3B1X2VudGVyX2d1ZXN0KCkgd2l0aG91dCBzZWVpbmcgdGhlIG5ldyBpbmhpYml0IHN0YXRlLlxcbmFyY2gveDg2L2t2bS94ODYuYy03OTIyLVxcdFxcdCAqXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA0MD1zdGF0aWMgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODA1My0gKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODA1NDpzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy04MDU1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NjM0PXN0YXRpYyBpbnQgdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDgtXFx0XFx0aWYgKGt2bV92Y3B1X3J1bm5pbmcodmNwdSkpIHtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODY0OTpcXHRcXHRcXHRyID0gdmNwdV9lbnRlcl9ndWVzdCh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODY1MC1cXHRcXHR9IGVsc2Uge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoyMC45OTcwNDgxNDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTE1Njg2MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqVHJhY2luZyBgdmNwdV9ydW5gKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHZjcHVfcnVuYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQncyBnb29kIHRvIGtub3cg4oCTIGl0J3MgbG9jYWxseSBzY29wZWQgd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0LCBtZWFuaW5nIEkgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBleHRlcm5hbCBkZXBlbmRlbmNpZXMgaW1wYWN0aW5nIGl0cyBiZWhhdmlvciBkaXJlY3RseS4gR2l2ZW4gaXRzIG5hbWUsIGB2Y3B1X3J1bmAgaXMgcHJvYmFibHkgdGhlIGNvcmUgZXhlY3V0aW9uIGxvb3AgZm9yIGEgdmlydHVhbCBDUFUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZS4gVGltZSB0byBzdGFydCB0cmFjaW5nIHRoYXQgZXhlY3V0aW9uIHBhdGggYW5kIGdldCBhIHNvbGlkIGdyYXNwIG9mIGl0cyBwdXJwb3NlLiBMZXQncyBzZWUgd2hhdCBtYWtlcyB0aGlzIHRoaW5nIHRpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoyMy45MTI3Mzc1NTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzNTIyMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0xNTY5PXN0YXRpYyB2b2lkIHB2Y2xvY2tfdXBkYXRlX3ZtX2d0b2RfY29weShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU4OS1cXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAha2EtXFx1MDAzZWJhY2t3YXJkc190c2Nfb2JzZXJ2ZWRcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTU5MDpcXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAha2EtXFx1MDAzZWJvb3RfdmNwdV9ydW5zX29sZF9rdm1jbG9jaztcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU5MS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNjE1PXN0YXRpYyB2b2lkIGt2bV9zdGVhbF90aW1lX3NldF9wcmVlbXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjUtXFx0ICogYW4gaW5zdHJ1Y3Rpb24gYm91bmRhcnkgYW5kIHdpbGwgbm90IHRyaWdnZXIgZ3Vlc3QgZW11bGF0aW9uIG9mIGFueVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNjI2OlxcdCAqIGtpbmQgKHNlZSB2Y3B1X3J1bikuICBWZW5kb3Igc3BlY2lmaWMgY29kZSBjb250cm9scyAoY29uc2VydmF0aXZlbHkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjctXFx0ICogd2hlbiB0aGlzIGlzIHRydWUsIGZvciBleGFtcGxlIGFsbG93aW5nIHRoZSB2Q1BVIHRvIGJlIG1hcmtlZFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwNDA9c3RhdGljIHZvaWQga3ZtX3ZjcHVfcmVsb2FkX2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNDktICogQ2FsbGVkIHdpdGhpbiBrdm0tXFx1MDAzZXNyY3UgcmVhZCBzaWRlLlxcbmFyY2gveDg2L2t2bS94ODYuYzo4MDUwOiAqIFJldHVybnMgMSB0byBsZXQgdmNwdV9ydW4oKSBjb250aW51ZSB0aGUgZ3Vlc3QgZXhlY3V0aW9uIGxvb3Agd2l0aG91dFxcbmFyY2gveDg2L2t2bS94ODYuYy04MDUxLSAqIGV4aXRpbmcgdG8gdGhlIHVzZXJzcGFjZS4gIE90aGVyd2lzZSwgdGhlIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA1ND1zdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgzNjktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjgzNzA6XFx0XFx0ZXhpdF9mYXN0cGF0aCA9IGt2bV94ODZfY2FsbCh2Y3B1X3J1bikodmNwdSwgcnVuX2ZsYWdzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODM3MS1cXHRcXHRpZiAobGlrZWx5KGV4aXRfZmFzdHBhdGggIT0gRVhJVF9GQVNUUEFUSF9SRUVOVEVSX0dVRVNUKSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTA2LVxcbmFyY2gveDg2L2t2bS94ODYuYzo4NTA3OnN0YXRpYyBib29sIGt2bV92Y3B1X3J1bm5pbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTA4LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NTU3PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmNwdV9oYXNfZXZlbnRzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU1OC1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU1OTppbnQga3ZtX2FyY2hfdmNwdV9ydW5uYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjAte1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NTYxOlxcdHJldHVybiBrdm1fdmNwdV9ydW5uaW5nKHZjcHUpIHx8IHZjcHUtXFx1MDAzZWFyY2gucHYucHZfdW5oYWx0ZWQgfHxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU2Mi1cXHQgICAgICAga3ZtX3ZjcHVfaGFzX2V2ZW50cyh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NTY2PXN0YXRpYyBpbmxpbmUgaW50IHZjcHVfYmxvY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1NzA6XFx0aWYgKCFrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NzEtXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTk2LVxcdFxcdCAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NTk3OlxcdFxcdGlmICgha3ZtX2FyY2hfdmNwdV9ydW5uYWJsZSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU5OC1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NjMzLS8qIENhbGxlZCB3aXRoaW4ga3ZtLVxcdTAwM2VzcmN1IHJlYWQgc2lkZS4gICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg2MzQ6c3RhdGljIGludCB2Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2MzUte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDctXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5hdF9pbnN0cnVjdGlvbl9ib3VuZGFyeSA9IGZhbHNlO1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NjQ4OlxcdFxcdGlmIChrdm1fdmNwdV9ydW5uaW5nKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDktXFx0XFx0XFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODcyMj1mYXN0cGF0aF90IGhhbmRsZV9mYXN0cGF0aF9obHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg3MjktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg3MzA6XFx0aWYgKGt2bV92Y3B1X3J1bm5pbmcodmNwdSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg3MzEtXFx0XFx0cmV0dXJuIEVYSVRfRkFTVFBBVEhfUkVFTlRFUl9HVUVTVDtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04ODc2PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODk4MC1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODk4MTpcXHRyID0gdmNwdV9ydW4odmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5ODItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjIzLjk2MTA5ODQ4NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4OTc2NTA3OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0geDg2IE5NSSBJbmplY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgZW50cnkgcG9pbnQgaGVyZSBzZWVtcyB0byBiZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIGtleSBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY2hhbmdlcyB0byBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC5cblxuQWxyaWdodCwgdGhlIHBhdGNoIGFkZHMgdGhpcyBiaXQgb2YgY29kZTpcblxuYGBgY1xuXHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXHUwMDI2XHUwMDI2XG5cdFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxuXHRcdFx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nLS07XG5gYGBcblxuVGhhdCdzIGNsZWFybHkgcmVsYXRlZCB0byBoYW5kbGluZyBOb24tTWFza2FibGUgSW50ZXJydXB0IChOTUkpIGluamVjdGlvbi4gU28gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgYW5kIGZvY3VzIHN5bWJvbC4gTm93LCBhcmUgdGhlcmUgYW55ICpvdGhlciogZnVuY3Rpb25zIHRoYXQgYXJlIG9mIHNpbWlsYXIgaW1wb3J0YW5jZT8gUGVyaGFwcyBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYCB3YXJyYW50cyBpbmNsdXNpb24gYXMgd2VsbCwgdW5sZXNzLCBvZiBjb3Vyc2UsIGl0J3MgaW5saW5lZC4gSXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIHNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiB0byBjb25maXJtLlxuXG5MZXQncyBkaXZlIGludG8gYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGNlbnRlciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzNiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoyOC44NTg3NTQwN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5MDg2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz04ODQ3PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg4NzUtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg4NzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODg3Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjI4LjkwNTY2OTIzOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTg1NTg3NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyByZWxhdGVkIHRvIE5NSSBpbmplY3Rpb24gdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byB0aGlzIGxpbmUgb2YgaW52ZXN0aWdhdGlvbi4gSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gTk1JIGluamVjdGlvbiBpbiB0aGUgY29kZWJhc2UuIExldCBtZSBzcGVjaWZpY2FsbHkgY2hlY2sgYGt2bV92Y3B1X2lvY3RsX25taWAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgYSBmb2N1c2VkIGV4YW1pbmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDQzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6MzEuODkxMjYwMTcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDgyNjM1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fdmNwdV9pb2N0bF9ubWlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0yNzYwPXN0YXRpYyBpbnQga3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzg2LVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNzg3OnN0YXRpYyBpbnQga3ZtX3ZjcHVfaW9jdGxfbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc4OC17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MzQxNj1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3NC1cXHRjYXNlIEtWTV9OTUk6IHtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzQ3NTpcXHRcXHRyID0ga3ZtX3ZjcHVfaW9jdGxfbm1pKHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zNDc2LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDozMS45MzYwOTE1NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQ2MzgzNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEtWTSBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHNvIGBrdm1fdmNwdV9pb2N0bF9ubWlgIGlzIGEgc3RhdGljIGZ1bmN0aW9uOyBpdCdzIGxpa2VseSBhbiBpbnRlcm5hbCBoZWxwZXIuIFRoZSBtb3JlIGludGVyZXN0aW5nIGVudHJ5IHBvaW50IGlzIGBrdm1fYXJjaF92Y3B1X2lvY3RsYOKAlHllcywgdGhhdCdzIGRlZmluaXRlbHkgYSBnb29kIHN5bWJvbCB0byBjb25jZW50cmF0ZSBvbi4gQW5kLCB3aGlsZSBJJ20gYXQgaXQsIEkgc2hvdWxkIGFsc28gbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNlZW1zIGxpa2UgaXQgd291bGQgYmUgaW1wb3J0YW50LiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIGxldCBtZSBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBBaCwgdGhlIHBhdGNoIGlzIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLCBzbyBJJ20gZGVhbGluZyB3aXRoIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBBbmQgYXMgSSBzdXNwZWN0ZWQsIEtWTSB3aWxsIHJlcXVpcmUgYENPTkZJR19LVk1gIHRvIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDozNS44ODI0OTI2NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwODg4MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzM6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzQtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgzOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA4OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNzpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMzOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjM0LVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6MzUuOTMzMzg2MTIzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzAyNDMwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhpcyBjb25maWd1cmF0aW9uOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgS1ZNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY2hvaWNlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBLVk1gIGhhcyBhbnkgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcywgcGFja2FnZXMsIG9yIG90aGVyIHVuZGVybHlpbmcgY29tcG9uZW50cyB0aGF0IGBLVk1gIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gSWRlbnRpZnlpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBlbnN1cmluZyB0aGUgc3lzdGVtIGlzIGNvcnJlY3RseSBzZXQgdXAuIEkgbmVlZCB0byBrbm93IHRoZSBmdWxsIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDcxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6MzkuMDAzNjMyNzU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQxNTMzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTUyPWNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjU0OlxcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01NS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz02OT1jb25maWcgS1ZNX1dFUlJPUlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzYtXFx0IyB0aGUga2VybmVsLXdpZGUgV0VSUk9SPXkuXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFxcdTAwMjZcXHUwMDI2ICgoRVhQRVJUIFxcdTAwMjZcXHUwMDI2ICFLQVNBTikgfHwgV0VSUk9SKVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTc4LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTgzPWNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg1OlxcdGRlcGVuZHMgb24gRVhQRVJUXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg3LVxcdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9OTY9Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk4OlxcdGRlcGVuZHMgb24gS1ZNIFxcdTAwMjZcXHUwMDI2IElBMzJfRkVBVF9DVExcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05OS1cXHRzZWxlY3QgWDg2X0ZSRUQgaWYgWDg2XzY0XFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwOTogICAgICAgIGRlcGVuZHMgb24gS1ZNX0lOVEVMIFxcdTAwMjZcXHUwMDI2IEVYUEVSVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTExMC0gICAgICAgIGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiU29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMjQ6XFx0ZGVwZW5kcyBvbiBYODZfU0dYIFxcdTAwMjZcXHUwMDI2IEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyNS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNi1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzc6XFx0ZGVwZW5kcyBvbiBJTlRFTF9URFhfSE9TVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzOC1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE0Nj1jb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0ODpcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTU2PWNvbmZpZyBLVk1fQU1EX1NFVlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU4LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcXHRkZXBlbmRzIG9uIEtWTV9BTUQgXFx1MDAyNlxcdTAwMjYgWDg2XzY0XFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTYwOlxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXFx1MDAyNlxcdTAwMjYgIShLVk1fQU1EPXkgXFx1MDAyNlxcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNjEtXFx0c2VsZWN0IEFSQ0hfSEFTX0NDX1BMQVRGT1JNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNzM9Y29uZmlnIEtWTV9JT0FQSUNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NS1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTc3LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4Mz1jb25maWcgS1ZNX1NNTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg1LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4NjpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODctXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTk0PWNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk3LVxcdGRlZmF1bHQgeVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA4PWNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxMDpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE3PWNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE4LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE5OlxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjIwOlxcdGRlcGVuZHMgb24gS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyMTpcXHRkZXBlbmRzIG9uIEVYUEVSVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyMi1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzM9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzNTpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzYtXFx0cmFuZ2UgMTAyNCA0MDk2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjM5LjA1MTA1NDY4M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDMzMjAxMTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gYW5kIFg4NiBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEtWTSBjb2RlIGFuZCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQncyB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gVGhlIGRlcGVuZGVuY3kgb24gYFg4Nl9MT0NBTF9BUElDYCBpcyB0aGUgZmlyc3Qga2V5IGluZGljYXRvci4gVGhlbiwgYEtWTV9YODZgIGlzIHRoZSBleHBsaWNpdCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgS1ZNIG9uIHg4Niwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoYXQgYEtWTWAgaXMgYSB0cmlzdGF0ZSwgYW5kIGBLVk1fWDg2YCBpcyBhIGRlZl90cmlzdGF0ZS4gVGhhdCdzIGdvb2QgdG8gbm90ZSwgSSdsbCBqdXN0IGluY2x1ZGUgYEtWTWAgdG8gbWFrZSBzdXJlIEkgYW0gZ2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlcy5cblxuTG9va2luZyBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIGxpa2UgdGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMgYXJlIHdpdGhpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBzdHJpa2VzIG1lIGFzIGEgZ29vZCBmb2N1cyBzeW1ib2wsIGFuZCBzaW1pbGFybHksIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBzaG91bGQgYmUgaW5mb3JtYXRpdmUuXG5cbkkgd29uZGVyIHdoYXQgZWxzZSB0aGV5IHRvdWNoZWQ/IEFoYSwgdGhlIHBhdGNoIGlzIGFsc28gbW9kaWZ5aW5nIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBMZXQgbWUgY2hlY2sgaWYgdGhhdCBmdW5jdGlvbiBpcyBpbmxpbmVkLiBJdCdzIHN0YXRpYywgc28gdGhhdCdzIGEgY2x1ZSwgYnV0IGl0J3MgYSBkZWNlbnQgc2l6ZSB3aGljaCBtYWtlcyBpdCB1bmxpa2VseS4gTGV0IG1lIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIG9mIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk0OCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDo0NC4wODQyNjA0MjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDI5MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YXRpYyBpbnQga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ODYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9NzUxND1zdGF0aWMgdm9pZCBrdm1faW5qZWN0X2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzU3MS0gKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzU3MjpzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc1NzMtXFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgKnJlcV9pbW1lZGlhdGVfZXhpdClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6NDQuMTMxNjk0MDM1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NTExNjI0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gTk1JIEluamVjdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgc2luY2UgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBpbmplY3RpbmcgTk1JcywgYW5kIGl0J3MgZGVhbGluZyB3aXRoIGEgc3RhdGljIGZ1bmN0aW9uLCBJIHNob3VsZCBmaXJzdCBtYWtlIHN1cmUgaXQgZG9lc24ndCBldmVuIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBjb3VsZCBjb21wbGljYXRlIHRoaW5ncyBhIGJpdC4gTGV0J3Mgc2VlLi4uSSB0aGluayBJIHNob3VsZCBzdGFydCB3aXRoIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCB0byBnZXQgbXkgYmVhcmluZ3MsIGJ1dCB3YWl0IGEgbWludXRlLi4uIHRoaXMgaXMgYWJvdXQgTk1JIGluamVjdGlvbiBzcGVjaWZpY2FsbHksIGlzbid0IGl0PyBPa2F5LCByaWdodC4gU28sIGlzIHRoZXJlIGEgZGVkaWNhdGVkIGZ1bmN0aW9uIHdpdGhpbiB0aGlzIHBhdGNoIHRoYXQgaGFuZGxlcyBOTUkgaW5qZWN0aW9uIGRpcmVjdGx5PyBJJ20gcHJldHR5IHN1cmUgSSd2ZSBzZWVuIGBrdm1fdmNwdV9pb2N0bF9ubWlgIGJlZm9yZSwgYnV0LCB5ZXAsIHRoYXQgb25lJ3Mgc3RhdGljLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZsb2F0aW5nIGFyb3VuZCByZWxhdGVkIHRvIE5NSXMgdGhhdCB0aGlzIGlzIGltcGFjdGluZy4gSSBuZWVkIHRvIGJlIHRob3JvdWdoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjcxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjQ4LjA4Mjg1OTAyOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0MzgyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm1pXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ODYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9MTAxPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faG9zdCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU4LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxNTk6c3RhdGljIHZvaWQgcHJvY2Vzc19ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTYwLXN0YXRpYyB2b2lkIHN0b3JlX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNjQ9Y29uc3Qgc3RydWN0IGt2bV9zdGF0c19kZXNjIGt2bV92Y3B1X3N0YXRzX2Rlc2NbXSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzktXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGlycV93aW5kb3dfZXhpdHMpLFxcbmFyY2gveDg2L2t2bS94ODYuYzoyODA6XFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIG5taV93aW5kb3dfZXhpdHMpLFxcbmFyY2gveDg2L2t2bS94ODYuYy0yODEtXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGwxZF9mbHVzaCksXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjkwLVxcdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBpcnFfaW5qZWN0aW9ucyksXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI5MTpcXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgbm1pX2luamVjdGlvbnMpLFxcbmFyY2gveDg2L2t2bS94ODYuYy0yOTItXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIHJlcV9ldmVudCksXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NjIwPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChfX2t2bV9pbmplY3RfZW11bGF0ZWRfcGFnZV9mYXVsdCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTYyMS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NjIyOnZvaWQga3ZtX2luamVjdF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy02MjMte1xcbmFyY2gveDg2L2t2bS94ODYuYzo2MjQ6XFx0YXRvbWljX2luYyhcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5ubWlfcXVldWVkKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjI1LVxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9OTUksIHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTI3NjA9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3ODYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI3ODc6c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzg4LXtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6Mjc4OTpcXHRrdm1faW5qZWN0X25taSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc5MC1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yOTYyPXN0YXRpYyB2b2lkIGt2bV92Y3B1X2lvY3RsX3g4Nl9nZXRfdmNwdV9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI5NjYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI5Njc6XFx0cHJvY2Vzc19ubWkodmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI5NjgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAwNS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzAwNjpcXHRldmVudHMtXFx1MDAzZW5taS5pbmplY3RlZCA9IHZjcHUtXFx1MDAzZWFyY2gubm1pX2luamVjdGVkO1xcbmFyY2gveDg2L2t2bS94ODYuYzozMDA3OlxcdGV2ZW50cy1cXHUwMDNlbm1pLnBlbmRpbmcgPSBrdm1fZ2V0X25yX3BlbmRpbmdfbm1pcyh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzAwODpcXHRldmVudHMtXFx1MDAzZW5taS5tYXNrZWQgPSBrdm1feDg2X2NhbGwoZ2V0X25taV9tYXNrKSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAwOS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMDE0LVxcdGV2ZW50cy1cXHUwMDNlc21pLnBlbmRpbmcgPSB2Y3B1LVxcdTAwM2VhcmNoLnNtaV9wZW5kaW5nO1xcbmFyY2gveDg2L2t2bS94ODYuYzozMDE1OlxcdGV2ZW50cy1cXHUwMDNlc21pLnNtbV9pbnNpZGVfbm1pID1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAxNi1cXHRcXHQhISh2Y3B1LVxcdTAwM2VhcmNoLmhmbGFncyBcXHUwMDI2IEhGX1NNTV9JTlNJREVfTk1JX01BU0spO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTMwMzE9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMDU3LVxcbmFyY2gveDg2L2t2bS94ODYuYzozMDU4OlxcdHByb2Nlc3Nfbm1pKHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zMDU5LVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTMwODYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjMwODc6XFx0dmNwdS1cXHUwMDNlYXJjaC5ubWlfaW5qZWN0ZWQgPSBldmVudHMtXFx1MDAzZW5taS5pbmplY3RlZDtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA4OC1cXHRpZiAoZXZlbnRzLVxcdTAwM2VmbGFncyBcXHUwMDI2IEtWTV9WQ1BVRVZFTlRfVkFMSURfTk1JX1BFTkRJTkcpIHtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA4OTpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nID0gMDtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA5MDpcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLm5taV9xdWV1ZWQsIGV2ZW50cy1cXHUwMDNlbm1pLnBlbmRpbmcpO1xcbmFyY2gveDg2L2t2bS94ODYuYzozMDkxOlxcdFxcdGlmIChldmVudHMtXFx1MDAzZW5taS5wZW5kaW5nKVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMDkyLVxcdFxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9OTUksIHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zMDkzLVxcdH1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA5NDpcXHRrdm1feDg2X2NhbGwoc2V0X25taV9tYXNrKSh2Y3B1LCBldmVudHMtXFx1MDAzZW5taS5tYXNrZWQpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zMDk1LVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTMxMDktXFx0XFx0aWYgKGV2ZW50cy1cXHUwMDNlc21pLnNtbSkge1xcbmFyY2gveDg2L2t2bS94ODYuYzozMTEwOlxcdFxcdFxcdGlmIChldmVudHMtXFx1MDAzZXNtaS5zbW1faW5zaWRlX25taSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzExMS1cXHRcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmhmbGFncyB8PSBIRl9TTU1fSU5TSURFX05NSV9NQVNLO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTMxMTctXFx0XFx0aWYgKGV2ZW50cy1cXHUwMDNlc21pLnNtbSB8fCBldmVudHMtXFx1MDAzZXNtaS5wZW5kaW5nIHx8XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjMxMTg6XFx0XFx0ICAgIGV2ZW50cy1cXHUwMDNlc21pLnNtbV9pbnNpZGVfbm1pKVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMTE5LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTM0MTY9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTM0NzQtXFx0Y2FzZSBLVk1fTk1JOiB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjM0NzU6XFx0XFx0ciA9IGt2bV92Y3B1X2lvY3RsX25taSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3Ni1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz01NzQ0PXN0YXRpYyB2b2lkIGVtdWxhdG9yX3dyaXRlX2dwcihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgdW5zaWduZWQgcmVnLCB1bG9uZyB2YWwpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTc0OC1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTc0OTpzdGF0aWMgdm9pZCBlbXVsYXRvcl9zZXRfbm1pX21hc2soc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsIGJvb2wgbWFza2VkKVxcbmFyY2gveDg2L2t2bS94ODYuYy01NzUwLXtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTc1MTpcXHRrdm1feDg2X2NhbGwoc2V0X25taV9tYXNrKShlbXVsX3RvX3ZjcHUoY3R4dCksIG1hc2tlZCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTU3NTItfVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTU4MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgZW11bGF0ZV9vcHMgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTg1NC1cXHQuZ3Vlc3RfY3B1aWRfaXNfaW50ZWxfY29tcGF0aWJsZSA9IGVtdWxhdG9yX2d1ZXN0X2NwdWlkX2lzX2ludGVsX2NvbXBhdGlibGUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjU4NTU6XFx0LnNldF9ubWlfbWFzayAgICAgICAgPSBlbXVsYXRvcl9zZXRfbm1pX21hc2ssXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTU4NTYtXFx0LmlzX3NtbSAgICAgICAgICAgICAgPSBlbXVsYXRvcl9pc19zbW0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NzU3Mj1zdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzYxNC1cXHRcXHQ7IC8qIHNlZSBhYm92ZSAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzo3NjE1OlxcdGVsc2UgaWYgKHZjcHUtXFx1MDAzZWFyY2gubm1pX2luamVjdGVkKVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NjE2OlxcdFxcdGt2bV94ODZfY2FsbChpbmplY3Rfbm1pKSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzYxNy1cXHRlbHNlIGlmICh2Y3B1LVxcdTAwM2VhcmNoLmludGVycnVwdC5pbmplY3RlZClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy03NzE0LVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NzE1OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3MTY6XFx0XFx0ciA9IGNhbl9pbmplY3QgPyBrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIHRydWUpIDpcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzcxNy1cXHRcXHRcXHRcXHQgLUVCVVNZO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3MjAtXFx0XFx0aWYgKHIpIHtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzcyMTpcXHRcXHRcXHQtLXZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmc7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3MjI6XFx0XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5ubWlfaW5qZWN0ZWQgPSB0cnVlO1xcbmFyY2gveDg2L2t2bS94ODYuYzo3NzIzOlxcdFxcdFxcdGt2bV94ODZfY2FsbChpbmplY3Rfbm1pKSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzcyNC1cXHRcXHRcXHRjYW5faW5qZWN0ID0gZmFsc2U7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3MjU6XFx0XFx0XFx0V0FSTl9PTihrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIHRydWUpIFxcdTAwM2MgMCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3MjYtXFx0XFx0fVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NzI3OlxcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3Mjg6XFx0XFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NzI5OlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmctLTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzczMDpcXHRcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5ubWlfcGVuZGluZylcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzczMTpcXHRcXHRcXHRrdm1feDg2X2NhbGwoZW5hYmxlX25taV93aW5kb3cpKHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy03NzMyLVxcdH1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy03NzgwLVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NzgxOnN0YXRpYyB2b2lkIHByb2Nlc3Nfbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzc4Mi17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzc5NC1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6Nzc5NTpcXHRpZiAoa3ZtX3g4Nl9jYWxsKGdldF9ubWlfbWFzaykodmNwdSkgfHwgdmNwdS1cXHUwMDNlYXJjaC5ubWlfaW5qZWN0ZWQpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3OTYtXFx0XFx0bGltaXQgPSAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDEtXFx0ICogQWRqdXN0IHRoZSBsaW1pdCB0byBhY2NvdW50IGZvciBwZW5kaW5nIHZpcnR1YWwgTk1Jcywgd2hpY2ggYXJlbid0XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MDI6XFx0ICogdHJhY2tlZCBpbiB2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nLlxcbmFyY2gveDg2L2t2bS94ODYuYy03ODAzLVxcdCAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzo3ODA0OlxcdGlmIChrdm1feDg2X2NhbGwoaXNfdm5taV9wZW5kaW5nKSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgwNS1cXHRcXHRsaW1pdC0tO1xcbmFyY2gveDg2L2t2bS94ODYuYy03ODA2LVxcbmFyY2gveDg2L2t2bS94ODYuYzo3ODA3OlxcdHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgKz0gYXRvbWljX3hjaGcoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gubm1pX3F1ZXVlZCwgMCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MDg6XFx0dmNwdS1cXHUwMDNlYXJjaC5ubWlfcGVuZGluZyA9IG1pbih2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nLCBsaW1pdCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTA6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgxMTpcXHQgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTI6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5ubWlfcGVuZGluZy0tO1xcbmFyY2gveDg2L2t2bS94ODYuYy03ODEzLVxcbmFyY2gveDg2L2t2bS94ODYuYzo3ODE0OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nKVxcbmFyY2gveDg2L2t2bS94ODYuYy03ODE1LVxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9FVkVOVCwgdmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgxOC0vKiBSZXR1cm4gdG90YWwgbnVtYmVyIG9mIE5NSXMgcGVuZGluZyBpbmplY3Rpb24gdG8gdGhlIFZNICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTk6aW50IGt2bV9nZXRfbnJfcGVuZGluZ19ubWlzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgyMC17XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MjE6XFx0cmV0dXJuIHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgK1xcbmFyY2gveDg2L2t2bS94ODYuYzo3ODIyOlxcdCAgICAgICBrdm1feDg2X2NhbGwoaXNfdm5taV9wZW5kaW5nKSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgyMy19XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA1ND1zdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgxNTQtXFx0XFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfTk1JLCB2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODE1NTpcXHRcXHRcXHRwcm9jZXNzX25taSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODE1Ni1cXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9JT0FQSUNfRU9JX0VYSVQsIHZjcHUpKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODUxMz1ib29sIGt2bV92Y3B1X2hhc19ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1MjUtXFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9OTUksIHZjcHUpIHx8XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1MjY6XFx0ICAgICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1Mjc6XFx0ICAgICBrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIGZhbHNlKSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1MjgtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9OTI3Nj1zdGF0aWMgaW50IHN5bmNfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTI5My0jZGVmaW5lIFBFUkZfTUVESUFURURfUE1VX01TRyBcXFxcXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjkyOTQ6XFx0XFxcIkZhaWxlZCB0byBlbmFibGUgbWVkaWF0ZWQgdlBNVSwgdHJ5IGRpc2FibGluZyBzeXN0ZW0gd2lkZSBwZXJmIGV2ZW50cyBhbmQgbm1pX3dhdGNoZG9nLlxcXFxuXFxcIlxcbmFyY2gveDg2L2t2bS94ODYuYy05Mjk1LVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTk1MjQ9dm9pZCBrdm1fdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy05NTU1LVxcdHZjcHUtXFx1MDAzZWFyY2guc21pX2NvdW50ID0gMDtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTU1NjpcXHRhdG9taWNfc2V0KFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLm5taV9xdWV1ZWQsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYzo5NTU3OlxcdHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgPSAwO1xcbmFyY2gveDg2L2t2bS94ODYuYzo5NTU4OlxcdHZjcHUtXFx1MDAzZWFyY2gubm1pX2luamVjdGVkID0gZmFsc2U7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTk1NTktXFx0a3ZtX2NsZWFyX2ludGVycnVwdF9xdWV1ZSh2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6NDguMTI5MzA1Njg3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4NDYwMDA0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS1ZNIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBhZnRlciBzb21lIHJldmlldywgSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIHdpdGhpbiB0aGUgS1ZNIGh5cGVydmlzb3IuIEknbSBmZWVsaW5nIGNvbmZpZGVudCBhYm91dCBga3ZtX2luamVjdF9ubWlgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLiBUaGV5IGFsbCBsb29rIGxpa2UgZXhjZWxsZW50IGZvY3VzIHN5bWJvbHMgZm9yIGluaXRpYWwgZnV6emluZyBlZmZvcnRzLiBJJ3ZlIG5vdGVkIHRoYXQgYGt2bV9nZXRfbnJfcGVuZGluZ19ubWlzYCBpcyBhbHNvIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLCBidXQgSSdsbCBrZWVwIHRoZSBmb2N1cyBvbiB0aGUgaW5pdGlhbCB0aHJlZS5cblxuQSBxdWljayByZXZpZXcgc3VnZ2VzdHMgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgZ2V0cyBjYWxsZWQgZnJvbSBgdmNwdV9lbnRlcl9ndWVzdGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGB2Y3B1X3J1bmAsIGFuZCBmaW5hbGx5LCBgdmNwdV9ydW5gIGlzIGNhbGxlZCBieSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGlzIGNvbmZpcm1zIHRoYXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIHZlcnkgaW1wb3J0YW50IGVudHJ5IHBvaW50LCBwcm9iYWJseSAqdGhlKiBtYWluIG9uZSwgYW5kIEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSB0aGF0LiBga3ZtX2luamVjdF9ubWlgIGlzIGFsc28gY3JpdGljYWwsIGdpdmVuIHRoZSBuYW1lLlxuXG5GaW5hbGx5LCBJJ20gdmVyaWZ5aW5nIHRoYXQgdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gaXMgdGhlIHJpZ2h0IG9uZSB0byBlbmFibGUgS1ZNIGZ1bmN0aW9uYWxpdHkuIFllcywgYEtWTWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24sIHNvIEkgY2FuIHVzZSB0aGF0IHdpdGggY29uZmlkZW5jZSBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLlxuXG5TbywgaGVyZSdzIHdoYXQgSSd2ZSBnb3Q6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiBgdHJ1ZWAgKFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0KVxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3J1blwiLCBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIiwgXCJrdm1faW5qZWN0X25taVwiXWAgKHRoZXNlIGFyZSBteSBtYWluIHRhcmdldHMpXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJLVk1cIl1gICh0aGUgY29yZSBLVk0gY29uZmlndXJhdGlvbiBmbGFnKVxuXG5UaW1lIHRvIHdyaXRlIHRoZSByZXNwb25zZSBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgzMSwiT3V0cHV0VG9rZW5zIjoxNTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6NTQuOTc1MzA5MzM1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUyNDA5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1faW5qZWN0X25taVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOTUkgaW5qZWN0aW9uIGxvZ2ljIGluIEtWTSB4ODYsIHNwZWNpZmljYWxseSBpbiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBleGVjdXRpb24gbG9vcCB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoZS5nLiwgS1ZNX1JVTiwgS1ZNX05NSSkuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3J1blwiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bFwiLFxuICAgIFwia3ZtX2luamVjdF9ubWlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTk1JIGluamVjdGlvbiBsb2dpYyBpbiBLVk0geDg2LCBzcGVjaWZpY2FsbHkgaW4gYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gZXhlY3V0aW9uIGxvb3AgdGhhdCBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgKGUuZy4sIEtWTV9SVU4sIEtWTV9OTUkpLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow5kdl5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-28 20:45:04 +0000 UTC FinishedAt: 2026-07-28 21:24:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0d33d21e47d9dc66f91e44da3fc9220c74d93df7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0d33d21e47d9dc66f91e44da3fc9220c74d93df7", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "946cf8e5-ef1a-4a02-b62a-198bac69f330" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_arch_vcpu_ioctl_run", "kvm_arch_vcpu_ioctl", "kvm_inject_nmi" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2luamVjdF9ubWkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5NSSBpbmplY3Rpb24gbG9naWMgaW4gS1ZNIHg4Niwgc3BlY2lmaWNhbGx5IGluIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGV4ZWN1dGlvbiBsb29wIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChlLmcuLCBLVk1fUlVOLCBLVk1fTk1JKS4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDE0NTJkNDY5ZDZlZWI1MDY4ZmI4MmZjY2MyMjM0MjU4YTZlMTVhYTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyOCAyMToyNDoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbmluZGV4IDk2MGZmN2ZjZDhkYmEuLmQzNWY1ZmQzY2IxNjQgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS94ODYuY1xuQEAgLTc3MjQsNiAmIzQzOzc3MjQsOSBAQCBzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdFx0Y2FuX2luamVjdCA9IGZhbHNlO1xuIFx0XHRcdFdBUk5fT04oa3ZtX3g4Nl9jYWxsKG5taV9hbGxvd2VkKSh2Y3B1LCB0cnVlKSBcdTAwM2MgMCk7XG4gXHRcdH1cbiYjNDM7XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpXG4mIzQzO1x0XHRcdHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZy0tO1xuIFx0XHRpZiAodmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nKVxuIFx0XHRcdGt2bV94ODZfY2FsbChlbmFibGVfbm1pX3dpbmRvdykodmNwdSk7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2luamVjdF9ubWkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5NSSBpbmplY3Rpb24gbG9naWMgaW4gS1ZNIHg4Niwgc3BlY2lmaWNhbGx5IGluIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGV4ZWN1dGlvbiBsb29wIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChlLmcuLCBLVk1fUlVOLCBLVk1fTk1JKS4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE0NTJkNDY5ZDZlZWI1MDY4ZmI4MmZjY2MyMjM0MjU4YTZlMTVhYTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1bCAyOCAyMToyNDoxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94ODYuYwppbmRleCA5NjBmZjdmY2Q4ZGJhLi5kMzVmNWZkM2NiMTY0IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC03NzI0LDYgJiM0Mzs3NzI0LDkgQEAgc3RhdGljIGludCBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQkJY2FuX2luamVjdCA9IGZhbHNlOwogCQkJV0FSTl9PTihrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIHRydWUpICZsdDsgMCk7CiAJCX0KJiM0MzsJCWlmICh2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nICZhbXA7JmFtcDsKJiM0MzsJCSAgICAoa3ZtX3g4Nl9jYWxsKHNldF92bm1pX3BlbmRpbmcpKHZjcHUpKSkKJiM0MzsJCQl2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nLS07CiAJCWlmICh2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nKQogCQkJa3ZtX3g4Nl9jYWxsKGVuYWJsZV9ubWlfd2luZG93KSh2Y3B1KTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMTgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBhIEtWTS94ODYgUGF0Y2gqKgoKQWxyaWdodCwgSSBzZWUgYSBwYXRjaCB0b3VjaGluZyBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSB4ODYgdmlydHVhbGl6YXRpb24gbG9naWMgbGl2ZXMgaW4gS1ZNLCBzbyBpdCYjMzk7cyBsaWtlbHkgYSBzaWduaWZpY2FudCBhcmVhLiBTcGVjaWZpY2FsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgIGZ1bmN0aW9uLiBUaGF0IGZ1bmN0aW9uIGlzIHByZXR0eSBjcnVjaWFsOyBpdCYjMzk7cyB0aGUgZ2F0ZWtlZXBlciBmb3IgZGVsaXZlcmluZyBldmVudHMgdG8gdGhlIGd1ZXN0LiBJdCBzZWVtcyBsaWtlIHdlIGFyZSBhZGRpbmcgc29tZXRoaW5nIHdoaWNoIGRlYWxzIHdpdGggTk1JIGhhbmRsaW5nIGhlcmUuCgpUaGUgYWRkZWQgY29kZSBzbmlwcGV0OgoKYGBgYwoJCWlmICh2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nICZhbXA7JmFtcDsKCQkgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpCgkJCXZjcHUtJmd0O2FyY2gubm1pX3BlbmRpbmctLTsKYGBgCgpUaGlzIGxvb2tzIGxpa2UgYSBtZWNoYW5pc20gdG8gaGFuZGxlIHBlbmRpbmcgTk1JcyAoTm9uLU1hc2thYmxlIEludGVycnVwdHMpLiBUaGUgY29kZSBjaGVja3MgaWYgYG5taV9wZW5kaW5nYCBpcyBzZXQuIElmIHRoZXJlIGlzIGEgcGVuZGluZyBOTUksIGFuZCB0aGUgYHNldF92bm1pX3BlbmRpbmdgIGZ1bmN0aW9uIGlzIHN1Y2Nlc3NmdWxseSBjYWxsZWQuIEkmIzM5O20gaW5mZXJyaW5nIHRoaXMgYHNldF92bm1pX3BlbmRpbmdgIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIHByb3Blcmx5IGluamVjdCB0aGUgTk1JIGludG8gdGhlIHZDUFUmIzM5O3Mgc3RhdGUuIFRoZW4sIGlmIGluamVjdGlvbiBpcyBzdWNjZXNzZnVsLCB0aGUgYG5taV9wZW5kaW5nYCBjb3VudCBpcyBkZWNyZW1lbnRlZC4gSXQgbWFrZXMgc2Vuc2Ug4oCTIGFuIE5NSSBpcyBwcm9jZXNzZWQsIHNvIHRoZSBwZW5kaW5nIGNvdW50IGlzIHJlZHVjZWQuCgpUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYW4gaW1wcm92ZW1lbnQgdG8gdGhlIE5NSSBoYW5kbGluZyB3aXRoaW4gS1ZNL3g4Ni4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvbnRleHQgb2YgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgdG8gdW5kZXJzdGFuZCB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCAqd2h5KiB0aGlzIGNoYW5nZSBpcyBuZWNlc3NhcnkuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgaW1wYWN0cz8gV2hhdCBpcyB0aGUgaW1wYWN0IG9uIG90aGVyIHBhcnRzIG9mIHRoZSB2aXJ0dWFsaXphdGlvbiBzdGFjaz8gVGhpcyBwYXRjaCBpcyBjZXJ0YWlubHkgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIG15IGV5ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTc1MTQ9c3RhdGljIHZvaWQga3ZtX2luamVjdF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03NTcxLSAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjc1NzI6c3RhdGljIGludCBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc1NzMtXHRcdFx0XHQgICAgICAgYm9vbCAqcmVxX2ltbWVkaWF0ZV9leGl0KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz03ODM2PXZvaWQgX19rdm1fdmNwdV91cGRhdGVfYXBpY3Yoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03ODYxLVx0ICogc3RpbGwgYWN0aXZlIHdoZW4gdGhlIGludGVycnVwdCBnb3QgYWNjZXB0ZWQuIE1ha2Ugc3VyZVxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4NjI6XHQgKiBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMoKSBpcyBjYWxsZWQgdG8gY2hlY2sgZm9yIHRoYXQuXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzg2My1cdCAqL1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04MDU0PXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgyMzktXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODI0MDpcdFx0ciA9IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyh2Y3B1LCBcdTAwMjZyZXFfaW1tZWRpYXRlX2V4aXQpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTgyNDEtXHRcdGlmIChyIFx1MDAzYyAwKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzE0NwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgYW5kIFN0cmF0ZWdpYyBBZGp1c3RtZW50cyoqCgpPa2F5LCBzbyBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYCBnZXRzIGNhbGxlZCBmcm9tIGB2Y3B1X2VudGVyX2d1ZXN0YC4gVGhhdCYjMzk7cyBhIHNvbGlkLCBmdW5jdGlvbmFsIHN0YXJ0aW5nIHBvaW50IOKAkyBJIGNhbiByZWFjaCBpdC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoaXMgcmVhY2hhYmlsaXR5LCBpcyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYCBhbmQgZm9jdXMgdGhlIGZ1enppbmcgb24gdGhhdCBmdW5jdGlvbjogYEZvY3VzU3ltYm9scz1bJiMzNDtrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMmIzM0O11gLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgYXZlbnVlIGZvciBleHBsb3JpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCkhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhhdCBmdW5jdGlvbiBhY3R1YWxseSBgc3RhdGljYD8gTGV0IG1lIGRvdWJsZS1jaGVjay4gWXVwLCBjb25maXJtZWQ6IGBzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgKnJlcV9pbW1lZGlhdGVfZXhpdClgLiBCZWNhdXNlIGl0JiMzOTtzIHN0YXRpYywgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSBpdCBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3Igbm90IGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLgoKQW5kIHRoZSBjYWxsZXIsIGB2Y3B1X2VudGVyX2d1ZXN0YCwgaXMgYWxzbyBgc3RhdGljYC4gVGhpcyBpcyBhIGJpdCBvZiBhIHByb2JsZW0uIEl0IG1lYW5zIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdXB3YXJkcyBpbiB0aGUgY2FsbCBzdGFjayB0byBmaW5kIGEgKm5vbi1zdGF0aWMqIEFQSSBlbnRyeXBvaW50LCBzb21ldGhpbmcgdGhhdCBJIGNhbiBkaXJlY3RseSBtYW5pcHVsYXRlIGFuZCBjb250cm9sLiBJIG5lZWQgdG8gbW92ZSB1cCB0aGUgY2FsbCBzdGFjayB0byBzZWUgd2hhdCYjMzk7cyBjYWxsaW5nIGB2Y3B1X2VudGVyX2d1ZXN0YC4gVGltZSB0byB0cmFjZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y3B1X2VudGVyX2d1ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz01NDA9dm9pZCBrdm1fcmVxdWV1ZV9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbnIsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTU0Ni1cdCAqIGluamVjdGlvbiB3YXMgYmxvY2tlZCBieSBuZXN0ZWRfcnVuX3BlbmRpbmcuICBJbiB0aGF0IGNhc2UsIGhvd2V2ZXIsXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTQ3Olx0ICogdmNwdV9lbnRlcl9ndWVzdCgpIHJlcXVlc3RzIGFuIGltbWVkaWF0ZSBleGl0LCBhbmQgdGhlIGd1ZXN0XG5hcmNoL3g4Ni9rdm0veDg2LmMtNTQ4LVx0ICogc2hvdWxkbiYjMzk7dCBwcm9jZWVkIGZhciBlbm91Z2ggdG8gbmVlZCByZWluamVjdGlvbi5cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9MjAyNj1zdGF0aWMgaW5saW5lIHZvaWQga3ZtX3ZjcHVfZmx1c2hfdGxiX2N1cnJlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yMDMzLSAqIFNlcnZpY2UgXCYjMzQ7bG9jYWxcJiMzNDsgVExCIGZsdXNoIHJlcXVlc3RzLCB3aGljaCBhcmUgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgTU1VXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjAzNDogKiBjb250ZXh0LiAgSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgZXZlbnQgaGFuZGxpbmcgaW4gdmNwdV9lbnRlcl9ndWVzdCgpLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTIwMzUtICogVExCIGZsdXNoZXMgdGhhdCBhcmUgdGFyZ2V0ZWQgYXQgYW4gTU1VIGNvbnRleHQgYWxzbyBuZWVkIHRvIGJlIHNlcnZpY2VkXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTc4OTY9dm9pZCBfX2t2bV9zZXRfb3JfY2xlYXJfYXBpY3ZfaW5oaWJpdChzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTYtXHRcdCAqIEtpY2sgYWxsIHZDUFVzIGJlZm9yZSBzZXR0aW5nIGFwaWN2X2luaGliaXRfcmVhc29ucyB0byBhdm9pZFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc5MTc6XHRcdCAqIGZhbHNlIHBvc2l0aXZlcyBpbiB0aGUgc2FuaXR5IGNoZWNrIFdBUk4gaW4gdmNwdV9lbnRlcl9ndWVzdCgpLlxuYXJjaC94ODYva3ZtL3g4Ni5jLTc5MTgtXHRcdCAqIFRoaXMgdGFzayB3aWxsIHdhaXQgZm9yIGFsbCB2Q1BVcyB0byBhY2sgdGhlIGtpY2sgSVJRIGJlZm9yZVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03OTIwLVx0XHQgKiBibG9jayBvbiBhY3F1aXJpbmcgYXBpY3ZfdXBkYXRlX2xvY2sgc28gdGhhdCB2Q1BVcyBjYW4mIzM5O3RcbmFyY2gveDg2L2t2bS94ODYuYzo3OTIxOlx0XHQgKiByZWRvIHZjcHVfZW50ZXJfZ3Vlc3QoKSB3aXRob3V0IHNlZWluZyB0aGUgbmV3IGluaGliaXQgc3RhdGUuXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkyMi1cdFx0ICpcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA0MD1zdGF0aWMgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTMtICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODA1NDpzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNTUte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04NjM0PXN0YXRpYyBpbnQgdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NjQ4LVx0XHRpZiAoa3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSkge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg2NDk6XHRcdFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODY1MC1cdFx0fSBlbHNlIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTM3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKlRyYWNpbmcgYHZjcHVfcnVuYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHZjcHVfcnVuYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdyDigJMgaXQmIzM5O3MgbG9jYWxseSBzY29wZWQgd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0LCBtZWFuaW5nIEkgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIGltcGFjdGluZyBpdHMgYmVoYXZpb3IgZGlyZWN0bHkuIEdpdmVuIGl0cyBuYW1lLCBgdmNwdV9ydW5gIGlzIHByb2JhYmx5IHRoZSBjb3JlIGV4ZWN1dGlvbiBsb29wIGZvciBhIHZpcnR1YWwgQ1BVLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGNvZGUuIFRpbWUgdG8gc3RhcnQgdHJhY2luZyB0aGF0IGV4ZWN1dGlvbiBwYXRoIGFuZCBnZXQgYSBzb2xpZCBncmFzcCBvZiBpdHMgcHVycG9zZS4gTGV0JiMzOTtzIHNlZSB3aGF0IG1ha2VzIHRoaXMgdGhpbmcgdGljay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2Y3B1X3J1biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MTU2OT1zdGF0aWMgdm9pZCBwdmNsb2NrX3VwZGF0ZV92bV9ndG9kX2NvcHkoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0xNTg5LVx0XHRcdFx0XHUwMDI2XHUwMDI2ICFrYS1cdTAwM2ViYWNrd2FyZHNfdHNjX29ic2VydmVkXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTU5MDpcdFx0XHRcdFx1MDAyNlx1MDAyNiAha2EtXHUwMDNlYm9vdF92Y3B1X3J1bnNfb2xkX2t2bWNsb2NrO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTE1OTEtXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTI2MTU9c3RhdGljIHZvaWQga3ZtX3N0ZWFsX3RpbWVfc2V0X3ByZWVtcHRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjUtXHQgKiBhbiBpbnN0cnVjdGlvbiBib3VuZGFyeSBhbmQgd2lsbCBub3QgdHJpZ2dlciBndWVzdCBlbXVsYXRpb24gb2YgYW55XG5hcmNoL3g4Ni9rdm0veDg2LmM6MjYyNjpcdCAqIGtpbmQgKHNlZSB2Y3B1X3J1bikuICBWZW5kb3Igc3BlY2lmaWMgY29kZSBjb250cm9scyAoY29uc2VydmF0aXZlbHkpXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjYyNy1cdCAqIHdoZW4gdGhpcyBpcyB0cnVlLCBmb3IgZXhhbXBsZSBhbGxvd2luZyB0aGUgdkNQVSB0byBiZSBtYXJrZWRcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA0MD1zdGF0aWMgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNDktICogQ2FsbGVkIHdpdGhpbiBrdm0tXHUwMDNlc3JjdSByZWFkIHNpZGUuXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODA1MDogKiBSZXR1cm5zIDEgdG8gbGV0IHZjcHVfcnVuKCkgY29udGludWUgdGhlIGd1ZXN0IGV4ZWN1dGlvbiBsb29wIHdpdGhvdXRcbmFyY2gveDg2L2t2bS94ODYuYy04MDUxLSAqIGV4aXRpbmcgdG8gdGhlIHVzZXJzcGFjZS4gIE90aGVyd2lzZSwgdGhlIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwNTQ9c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODM2OS1cbmFyY2gveDg2L2t2bS94ODYuYzo4MzcwOlx0XHRleGl0X2Zhc3RwYXRoID0ga3ZtX3g4Nl9jYWxsKHZjcHVfcnVuKSh2Y3B1LCBydW5fZmxhZ3MpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTgzNzEtXHRcdGlmIChsaWtlbHkoZXhpdF9mYXN0cGF0aCAhPSBFWElUX0ZBU1RQQVRIX1JFRU5URVJfR1VFU1QpKVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NTA2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1MDc6c3RhdGljIGJvb2wga3ZtX3ZjcHVfcnVubmluZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODUwOC17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTg1NTc9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKGt2bV92Y3B1X2hhc19ldmVudHMpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NTgtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU1OTppbnQga3ZtX2FyY2hfdmNwdV9ydW5uYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU2MC17XG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU2MTpcdHJldHVybiBrdm1fdmNwdV9ydW5uaW5nKHZjcHUpIHx8IHZjcHUtXHUwMDNlYXJjaC5wdi5wdl91bmhhbHRlZCB8fFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjItXHQgICAgICAga3ZtX3ZjcHVfaGFzX2V2ZW50cyh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODU2Nj1zdGF0aWMgaW5saW5lIGludCB2Y3B1X2Jsb2NrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU2OS1cbmFyY2gveDg2L2t2bS94ODYuYzo4NTcwOlx0aWYgKCFrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHZjcHUpKSB7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODU3MS1cdFx0Lypcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU5Ni1cdFx0ICovXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU5NzpcdFx0aWYgKCFrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHZjcHUpKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1OTgtXHRcdFx0cmV0dXJuIDE7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2MzMtLyogQ2FsbGVkIHdpdGhpbiBrdm0tXHUwMDNlc3JjdSByZWFkIHNpZGUuICAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg2MzQ6c3RhdGljIGludCB2Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODYzNS17XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDctXHRcdHZjcHUtXHUwMDNlYXJjaC5hdF9pbnN0cnVjdGlvbl9ib3VuZGFyeSA9IGZhbHNlO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjg2NDg6XHRcdGlmIChrdm1fdmNwdV9ydW5uaW5nKHZjcHUpKSB7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODY0OS1cdFx0XHRyID0gdmNwdV9lbnRlcl9ndWVzdCh2Y3B1KTtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODcyMj1mYXN0cGF0aF90IGhhbmRsZV9mYXN0cGF0aF9obHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04NzI5LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg3MzA6XHRpZiAoa3ZtX3ZjcHVfcnVubmluZyh2Y3B1KSlcbmFyY2gveDg2L2t2bS94ODYuYy04NzMxLVx0XHRyZXR1cm4gRVhJVF9GQVNUUEFUSF9SRUVOVEVSX0dVRVNUO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04ODc2PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5ODAtXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODk4MTpcdHIgPSB2Y3B1X3J1bih2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy04OTgyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzMzYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0geDg2IE5NSSBJbmplY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhlIGVudHJ5IHBvaW50IGhlcmUgc2VlbXMgdG8gYmUgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIga2V5IGZ1bmN0aW9ucyB0aGF0IGFyZSBtb2RpZmllZC4gVGhlIHBhdGNoIGRlc2NyaXB0aW9uIHNwZWNpZmljYWxseSBtZW50aW9ucyBjaGFuZ2VzIHRvIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLgoKQWxyaWdodCwgdGhlIHBhdGNoIGFkZHMgdGhpcyBiaXQgb2YgY29kZToKCmBgYGMKCQlpZiAodmNwdS0mZ3Q7YXJjaC5ubWlfcGVuZGluZyAmYW1wOyZhbXA7CgkJICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKQoJCQl2Y3B1LSZndDthcmNoLm5taV9wZW5kaW5nLS07CmBgYAoKVGhhdCYjMzk7cyBjbGVhcmx5IHJlbGF0ZWQgdG8gaGFuZGxpbmcgTm9uLU1hc2thYmxlIEludGVycnVwdCAoTk1JKSBpbmplY3Rpb24uIFNvIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGFuZCBmb2N1cyBzeW1ib2wuIE5vdywgYXJlIHRoZXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyB0aGF0IGFyZSBvZiBzaW1pbGFyIGltcG9ydGFuY2U/IFBlcmhhcHMgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2Agd2FycmFudHMgaW5jbHVzaW9uIGFzIHdlbGwsIHVubGVzcywgb2YgY291cnNlLCBpdCYjMzk7cyBpbmxpbmVkLiBJdCYjMzk7cyBtYXJrZWQgYXMgYHN0YXRpY2AsIHNvIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gdG8gY29uZmlybS4KCkxldCYjMzk7cyBkaXZlIGludG8gYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBjZW50ZXIgbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYz04ODQ3PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy04ODc1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjg4NzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS94ODYuYy04ODc3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzA0MwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gaGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyByZWxhdGVkIHRvIE5NSSBpbmplY3Rpb24gdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byB0aGlzIGxpbmUgb2YgaW52ZXN0aWdhdGlvbi4gSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gTk1JIGluamVjdGlvbiBpbiB0aGUgY29kZWJhc2UuIExldCBtZSBzcGVjaWZpY2FsbHkgY2hlY2sgYGt2bV92Y3B1X2lvY3RsX25taWAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgYSBmb2N1c2VkIGV4YW1pbmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fdmNwdV9pb2N0bF9ubWkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTI3NjA9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yNzg2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjI3ODc6c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3ODgte1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zNDE2PWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3NC1cdGNhc2UgS1ZNX05NSToge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjM0NzU6XHRcdHIgPSBrdm1fdmNwdV9pb2N0bF9ubWkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3Ni1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1MTcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gS1ZNIEludGVyYWN0aW9uKioKCk9rYXksIHNvIGBrdm1fdmNwdV9pb2N0bF9ubWlgIGlzIGEgc3RhdGljIGZ1bmN0aW9uOyBpdCYjMzk7cyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyLiBUaGUgbW9yZSBpbnRlcmVzdGluZyBlbnRyeSBwb2ludCBpcyBga3ZtX2FyY2hfdmNwdV9pb2N0bGDigJR5ZXMsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIGdvb2Qgc3ltYm9sIHRvIGNvbmNlbnRyYXRlIG9uLiBBbmQsIHdoaWxlIEkmIzM5O20gYXQgaXQsIEkgc2hvdWxkIGFsc28gbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNlZW1zIGxpa2UgaXQgd291bGQgYmUgaW1wb3J0YW50LiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIGxldCBtZSBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gQWgsIHRoZSBwYXRjaCBpcyBpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYCwgc28gSSYjMzk7bSBkZWFsaW5nIHdpdGggdGhlIHg4NiBhcmNoaXRlY3R1cmUuIEFuZCBhcyBJIHN1c3BlY3RlZCwgS1ZNIHdpbGwgcmVxdWlyZSBgQ09ORklHX0tWTWAgdG8gZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtWTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7S2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXHRib29sIFwmIzM0O0NvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVx0Ym9vbCBcJiMzNDtFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFwmIzM0O0NoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVx0Ym9vbCBcJiMzNDtJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzM6Y29uZmlnIEtWTV9JT0FQSUNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NC1cdGJvb2wgXCYjMzQ7SS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODM6Y29uZmlnIEtWTV9TTU1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4NC1cdGJvb2wgXCYjMzQ7U3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTQ6Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjA3LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA4OmNvbmZpZyBLVk1fWEVOXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDktXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE3OmNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTgtXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzA6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVx0Ym9vbFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMzOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDcxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBkZWx2ZSBpbnRvIHRoaXMgY29uZmlndXJhdGlvbjoKCioqQW5hbHl6aW5nIHRoZSBLVk0gQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgS1ZNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY2hvaWNlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBLVk1gIGhhcyBhbnkgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcywgcGFja2FnZXMsIG9yIG90aGVyIHVuZGVybHlpbmcgY29tcG9uZW50cyB0aGF0IGBLVk1gIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gSWRlbnRpZnlpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBlbnN1cmluZyB0aGUgc3lzdGVtIGlzIGNvcnJlY3RseSBzZXQgdXAuIEkgbmVlZCB0byBrbm93IHRoZSBmdWxsIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9NTI9Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjU0Olx0ZGVwZW5kcyBvbiBYODZfTE9DQUxfQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctNTUtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9Njk9Y29uZmlnIEtWTV9XRVJST1Jcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03Ni1cdCMgdGhlIGtlcm5lbC13aWRlIFdFUlJPUj15LlxuYXJjaC94ODYva3ZtL0tjb25maWc6Nzc6XHRkZXBlbmRzIG9uIEtWTV9YODYgXHUwMDI2XHUwMDI2ICgoRVhQRVJUIFx1MDAyNlx1MDAyNiAhS0FTQU4pIHx8IFdFUlJPUilcbmFyY2gveDg2L2t2bS9LY29uZmlnLTc4LVx0aGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTgzPWNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4NTpcdGRlcGVuZHMgb24gRVhQRVJUXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4NjpcdGRlcGVuZHMgb24gS1ZNX1g4NiBcdTAwMjZcdTAwMjYgWDg2XzY0XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Ny1cdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTk2PWNvbmZpZyBLVk1fSU5URUxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6OTg6XHRkZXBlbmRzIG9uIEtWTSBcdTAwMjZcdTAwMjYgSUEzMl9GRUFUX0NUTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTktXHRzZWxlY3QgWDg2X0ZSRUQgaWYgWDg2XzY0XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTA3PWNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwOTogICAgICAgIGRlcGVuZHMgb24gS1ZNX0lOVEVMIFx1MDAyNlx1MDAyNiBFWFBFUlRcbmFyY2gveDg2L2t2bS9LY29uZmlnLTExMC0gICAgICAgIGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMjMtXHRib29sIFwmIzM0O1NvZnR3YXJlIEd1YXJkIGVYdGVuc2lvbnMgKFNHWCkgVmlydHVhbGl6YXRpb25cJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEyNDpcdGRlcGVuZHMgb24gWDg2X1NHWCBcdTAwMjZcdTAwMjYgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMjUtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTM2LVx0ZGVmYXVsdCB5XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzc6XHRkZXBlbmRzIG9uIElOVEVMX1REWF9IT1NUXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzgtXHRzZWxlY3QgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNDY9Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ4Olx0ZGVwZW5kcyBvbiBLVk0gXHUwMDI2XHUwMDI2IChDUFVfU1VQX0FNRCB8fCBDUFVfU1VQX0hZR09OKVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ5LVx0aGVscFxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE1Nj1jb25maWcgS1ZNX0FNRF9TRVZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTgtXHRkZWZhdWx0IHlcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcdGRlcGVuZHMgb24gS1ZNX0FNRCBcdTAwMjZcdTAwMjYgWDg2XzY0XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNjA6XHRkZXBlbmRzIG9uIENSWVBUT19ERVZfU1BfUFNQIFx1MDAyNlx1MDAyNiAhKEtWTV9BTUQ9eSBcdTAwMjZcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE2MS1cdHNlbGVjdCBBUkNIX0hBU19DQ19QTEFURk9STVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTE3Mz1jb25maWcgS1ZNX0lPQVBJQ1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NS1cdGRlZmF1bHQgeVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTc2Olx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzctXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MTgzPWNvbmZpZyBLVk1fU01NXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg1LVx0ZGVmYXVsdCB5XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODY6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Ny1cdGhlbHBcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOTQ9Y29uZmlnIEtWTV9IWVBFUlZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXCYjMzQ7XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTY6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Ny1cdGRlZmF1bHQgeVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTIwOD1jb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MjEwOlx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTEtXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE3PWNvbmZpZyBLVk1fUFJPVkVfTU1VXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTgtXHRib29sIFwmIzM0O1Byb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcJiMzNDtcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjA6XHRkZXBlbmRzIG9uIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyMTpcdGRlcGVuZHMgb24gRVhQRVJUXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjItXHRoZWxwXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWc9MjMzPWNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXHRpbnQgXCYjMzQ7TWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFwmIzM0O1xuYXJjaC94ODYva3ZtL0tjb25maWc6MjM1Olx0ZGVwZW5kcyBvbiBLVk1fWDg2XG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzYtXHRyYW5nZSAxMDI0IDQwOTZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NDgKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEtWTSBhbmQgWDg2IEludGVncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBLVk0gY29kZSBhbmQgaXQmIzM5O3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBpdCYjMzk7cyB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gVGhlIGRlcGVuZGVuY3kgb24gYFg4Nl9MT0NBTF9BUElDYCBpcyB0aGUgZmlyc3Qga2V5IGluZGljYXRvci4gVGhlbiwgYEtWTV9YODZgIGlzIHRoZSBleHBsaWNpdCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgS1ZNIG9uIHg4Niwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoYXQgYEtWTWAgaXMgYSB0cmlzdGF0ZSwgYW5kIGBLVk1fWDg2YCBpcyBhIGRlZl90cmlzdGF0ZS4gVGhhdCYjMzk7cyBnb29kIHRvIG5vdGUsIEkmIzM5O2xsIGp1c3QgaW5jbHVkZSBgS1ZNYCB0byBtYWtlIHN1cmUgSSBhbSBnZXR0aW5nIHRoZSBhcHByb3ByaWF0ZSBtb2R1bGVzLgoKTG9va2luZyBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIGxpa2UgdGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMgYXJlIHdpdGhpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBzdHJpa2VzIG1lIGFzIGEgZ29vZCBmb2N1cyBzeW1ib2wsIGFuZCBzaW1pbGFybHksIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBzaG91bGQgYmUgaW5mb3JtYXRpdmUuCgpJIHdvbmRlciB3aGF0IGVsc2UgdGhleSB0b3VjaGVkPyBBaGEsIHRoZSBwYXRjaCBpcyBhbHNvIG1vZGlmeWluZyBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4gTGV0IG1lIGNoZWNrIGlmIHRoYXQgZnVuY3Rpb24gaXMgaW5saW5lZC4gSXQmIzM5O3Mgc3RhdGljLCBzbyB0aGF0JiMzOTtzIGEgY2x1ZSwgYnV0IGl0JiMzOTtzIGEgZGVjZW50IHNpemUgd2hpY2ggbWFrZXMgaXQgdW5saWtlbHkuIExldCBtZSB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgY29kZSBvZiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjggMjE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIGludCBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTc1MTQ9c3RhdGljIHZvaWQga3ZtX2luamVjdF9leGNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03NTcxLSAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjc1NzI6c3RhdGljIGludCBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc1NzMtXHRcdFx0XHQgICAgICAgYm9vbCAqcmVxX2ltbWVkaWF0ZV9leGl0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY3MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDEwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBOTUkgSW5qZWN0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHNpbmNlIHRoaXMgc2VlbXMgdG8gYmUgYWJvdXQgaW5qZWN0aW5nIE5NSXMsIGFuZCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggYSBzdGF0aWMgZnVuY3Rpb24sIEkgc2hvdWxkIGZpcnN0IG1ha2Ugc3VyZSBpdCBkb2VzbiYjMzk7dCBldmVuIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBjb3VsZCBjb21wbGljYXRlIHRoaW5ncyBhIGJpdC4gTGV0JiMzOTtzIHNlZS4uLkkgdGhpbmsgSSBzaG91bGQgc3RhcnQgd2l0aCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gIGFuZCBga3ZtX2FyY2hfdmNwdV9pb2N0bGAgdG8gZ2V0IG15IGJlYXJpbmdzLCBidXQgd2FpdCBhIG1pbnV0ZS4uLiB0aGlzIGlzIGFib3V0IE5NSSBpbmplY3Rpb24gc3BlY2lmaWNhbGx5LCBpc24mIzM5O3QgaXQ/IE9rYXksIHJpZ2h0LiBTbywgaXMgdGhlcmUgYSBkZWRpY2F0ZWQgZnVuY3Rpb24gd2l0aGluIHRoaXMgcGF0Y2ggdGhhdCBoYW5kbGVzIE5NSSBpbmplY3Rpb24gZGlyZWN0bHk/IEkmIzM5O20gcHJldHR5IHN1cmUgSSYjMzk7dmUgc2VlbiBga3ZtX3ZjcHVfaW9jdGxfbm1pYCBiZWZvcmUsIGJ1dCwgeWVwLCB0aGF0IG9uZSYjMzk7cyBzdGF0aWMuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZsb2F0aW5nIGFyb3VuZCByZWxhdGVkIHRvIE5NSXMgdGhhdCB0aGlzIGlzIGltcGFjdGluZy4gSSBuZWVkIHRvIGJlIHRob3JvdWdoIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25taSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS94ODYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MTAxPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faG9zdCk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTE1OC1cbmFyY2gveDg2L2t2bS94ODYuYzoxNTk6c3RhdGljIHZvaWQgcHJvY2Vzc19ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy0xNjAtc3RhdGljIHZvaWQgc3RvcmVfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0yNjQ9Y29uc3Qgc3RydWN0IGt2bV9zdGF0c19kZXNjIGt2bV92Y3B1X3N0YXRzX2Rlc2NbXSA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc5LVx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGlycV93aW5kb3dfZXhpdHMpLFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI4MDpcdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBubWlfd2luZG93X2V4aXRzKSxcbmFyY2gveDg2L2t2bS94ODYuYy0yODEtXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgbDFkX2ZsdXNoKSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjkwLVx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGlycV9pbmplY3Rpb25zKSxcbmFyY2gveDg2L2t2bS94ODYuYzoyOTE6XHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgbm1pX2luamVjdGlvbnMpLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI5Mi1cdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCByZXFfZXZlbnQpLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz02MjA9RVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMKF9fa3ZtX2luamVjdF9lbXVsYXRlZF9wYWdlX2ZhdWx0KTtcbmFyY2gveDg2L2t2bS94ODYuYy02MjEtXG5hcmNoL3g4Ni9rdm0veDg2LmM6NjIyOnZvaWQga3ZtX2luamVjdF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTYyMy17XG5hcmNoL3g4Ni9rdm0veDg2LmM6NjI0Olx0YXRvbWljX2luYyhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubm1pX3F1ZXVlZCk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNjI1LVx0a3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX05NSSwgdmNwdSk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTI3NjA9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yNzg2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjI3ODc6c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3ODgte1xuYXJjaC94ODYva3ZtL3g4Ni5jOjI3ODk6XHRrdm1faW5qZWN0X25taSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy0yNzkwLVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0yOTYyPXN0YXRpYyB2b2lkIGt2bV92Y3B1X2lvY3RsX3g4Nl9nZXRfdmNwdV9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0yOTY2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjI5Njc6XHRwcm9jZXNzX25taSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy0yOTY4LVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0zMDA1LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjMwMDY6XHRldmVudHMtXHUwMDNlbm1pLmluamVjdGVkID0gdmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZDtcbmFyY2gveDg2L2t2bS94ODYuYzozMDA3Olx0ZXZlbnRzLVx1MDAzZW5taS5wZW5kaW5nID0ga3ZtX2dldF9ucl9wZW5kaW5nX25taXModmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MzAwODpcdGV2ZW50cy1cdTAwM2VubWkubWFza2VkID0ga3ZtX3g4Nl9jYWxsKGdldF9ubWlfbWFzaykodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAwOS1cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAxNC1cdGV2ZW50cy1cdTAwM2VzbWkucGVuZGluZyA9IHZjcHUtXHUwMDNlYXJjaC5zbWlfcGVuZGluZztcbmFyY2gveDg2L2t2bS94ODYuYzozMDE1Olx0ZXZlbnRzLVx1MDAzZXNtaS5zbW1faW5zaWRlX25taSA9XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAxNi1cdFx0ISEodmNwdS1cdTAwM2VhcmNoLmhmbGFncyBcdTAwMjYgSEZfU01NX0lOU0lERV9OTUlfTUFTSyk7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTMwMzE9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA1Ny1cbmFyY2gveDg2L2t2bS94ODYuYzozMDU4Olx0cHJvY2Vzc19ubWkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA1OS1cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA4Ni1cbmFyY2gveDg2L2t2bS94ODYuYzozMDg3Olx0dmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZCA9IGV2ZW50cy1cdTAwM2VubWkuaW5qZWN0ZWQ7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA4OC1cdGlmIChldmVudHMtXHUwMDNlZmxhZ3MgXHUwMDI2IEtWTV9WQ1BVRVZFTlRfVkFMSURfTk1JX1BFTkRJTkcpIHtcbmFyY2gveDg2L2t2bS94ODYuYzozMDg5Olx0XHR2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgPSAwO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjMwOTA6XHRcdGF0b21pY19zZXQoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLm5taV9xdWV1ZWQsIGV2ZW50cy1cdTAwM2VubWkucGVuZGluZyk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA5MTpcdFx0aWYgKGV2ZW50cy1cdTAwM2VubWkucGVuZGluZylcbmFyY2gveDg2L2t2bS94ODYuYy0zMDkyLVx0XHRcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9OTUksIHZjcHUpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTMwOTMtXHR9XG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA5NDpcdGt2bV94ODZfY2FsbChzZXRfbm1pX21hc2spKHZjcHUsIGV2ZW50cy1cdTAwM2VubWkubWFza2VkKTtcbmFyY2gveDg2L2t2bS94ODYuYy0zMDk1LVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0zMTA5LVx0XHRpZiAoZXZlbnRzLVx1MDAzZXNtaS5zbW0pIHtcbmFyY2gveDg2L2t2bS94ODYuYzozMTEwOlx0XHRcdGlmIChldmVudHMtXHUwMDNlc21pLnNtbV9pbnNpZGVfbm1pKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTMxMTEtXHRcdFx0XHR2Y3B1LVx1MDAzZWFyY2guaGZsYWdzIHw9IEhGX1NNTV9JTlNJREVfTk1JX01BU0s7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTMxMTctXHRcdGlmIChldmVudHMtXHUwMDNlc21pLnNtbSB8fCBldmVudHMtXHUwMDNlc21pLnBlbmRpbmcgfHxcbmFyY2gveDg2L2t2bS94ODYuYzozMTE4Olx0XHQgICAgZXZlbnRzLVx1MDAzZXNtaS5zbW1faW5zaWRlX25taSlcbmFyY2gveDg2L2t2bS94ODYuYy0zMTE5LVx0XHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYz0zNDE2PWxvbmcga3ZtX2FyY2hfdmNwdV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3NC1cdGNhc2UgS1ZNX05NSToge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjM0NzU6XHRcdHIgPSBrdm1fdmNwdV9pb2N0bF9ubWkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3Ni1cdFx0YnJlYWs7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTU3NDQ9c3RhdGljIHZvaWQgZW11bGF0b3Jfd3JpdGVfZ3ByKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0LCB1bnNpZ25lZCByZWcsIHVsb25nIHZhbClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTc0OC1cbmFyY2gveDg2L2t2bS94ODYuYzo1NzQ5OnN0YXRpYyB2b2lkIGVtdWxhdG9yX3NldF9ubWlfbWFzayhzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgYm9vbCBtYXNrZWQpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTc1MC17XG5hcmNoL3g4Ni9rdm0veDg2LmM6NTc1MTpcdGt2bV94ODZfY2FsbChzZXRfbm1pX21hc2spKGVtdWxfdG9fdmNwdShjdHh0KSwgbWFza2VkKTtcbmFyY2gveDg2L2t2bS94ODYuYy01NzUyLX1cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmM9NTgxND1zdGF0aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBlbXVsYXRlX29wcyA9IHtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTg1NC1cdC5ndWVzdF9jcHVpZF9pc19pbnRlbF9jb21wYXRpYmxlID0gZW11bGF0b3JfZ3Vlc3RfY3B1aWRfaXNfaW50ZWxfY29tcGF0aWJsZSxcbmFyY2gveDg2L2t2bS94ODYuYzo1ODU1Olx0LnNldF9ubWlfbWFzayAgICAgICAgPSBlbXVsYXRvcl9zZXRfbm1pX21hc2ssXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTg1Ni1cdC5pc19zbW0gICAgICAgICAgICAgID0gZW11bGF0b3JfaXNfc21tLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz03NTcyPXN0YXRpYyBpbnQga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzYxNC1cdFx0OyAvKiBzZWUgYWJvdmUgKi9cbmFyY2gveDg2L2t2bS94ODYuYzo3NjE1Olx0ZWxzZSBpZiAodmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZClcbmFyY2gveDg2L2t2bS94ODYuYzo3NjE2Olx0XHRrdm1feDg2X2NhbGwoaW5qZWN0X25taSkodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzYxNy1cdGVsc2UgaWYgKHZjcHUtXHUwMDNlYXJjaC5pbnRlcnJ1cHQuaW5qZWN0ZWQpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3MTQtXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzcxNTpcdGlmICh2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcpIHtcbmFyY2gveDg2L2t2bS94ODYuYzo3NzE2Olx0XHRyID0gY2FuX2luamVjdCA/IGt2bV94ODZfY2FsbChubWlfYWxsb3dlZCkodmNwdSwgdHJ1ZSkgOlxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3MTctXHRcdFx0XHQgLUVCVVNZO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03NzIwLVx0XHRpZiAocikge1xuYXJjaC94ODYva3ZtL3g4Ni5jOjc3MjE6XHRcdFx0LS12Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmc7XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzcyMjpcdFx0XHR2Y3B1LVx1MDAzZWFyY2gubm1pX2luamVjdGVkID0gdHJ1ZTtcbmFyY2gveDg2L2t2bS94ODYuYzo3NzIzOlx0XHRcdGt2bV94ODZfY2FsbChpbmplY3Rfbm1pKSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy03NzI0LVx0XHRcdGNhbl9pbmplY3QgPSBmYWxzZTtcbmFyY2gveDg2L2t2bS94ODYuYzo3NzI1Olx0XHRcdFdBUk5fT04oa3ZtX3g4Nl9jYWxsKG5taV9hbGxvd2VkKSh2Y3B1LCB0cnVlKSBcdTAwM2MgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzcyNi1cdFx0fVxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3Mjc6XHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXHUwMDI2XHUwMDI2XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzcyODpcdFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3Mjk6XHRcdFx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nLS07XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzczMDpcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZylcbmFyY2gveDg2L2t2bS94ODYuYzo3NzMxOlx0XHRcdGt2bV94ODZfY2FsbChlbmFibGVfbm1pX3dpbmRvdykodmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzczMi1cdH1cbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzc4MC1cbmFyY2gveDg2L2t2bS94ODYuYzo3NzgxOnN0YXRpYyB2b2lkIHByb2Nlc3Nfbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbmFyY2gveDg2L2t2bS94ODYuYy03NzgyLXtcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzc5NC1cdCAqL1xuYXJjaC94ODYva3ZtL3g4Ni5jOjc3OTU6XHRpZiAoa3ZtX3g4Nl9jYWxsKGdldF9ubWlfbWFzaykodmNwdSkgfHwgdmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZClcbmFyY2gveDg2L2t2bS94ODYuYy03Nzk2LVx0XHRsaW1pdCA9IDE7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDEtXHQgKiBBZGp1c3QgdGhlIGxpbWl0IHRvIGFjY291bnQgZm9yIHBlbmRpbmcgdmlydHVhbCBOTUlzLCB3aGljaCBhcmVuJiMzOTt0XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgwMjpcdCAqIHRyYWNrZWQgaW4gdmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nLlxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDMtXHQgKi9cbmFyY2gveDg2L2t2bS94ODYuYzo3ODA0Olx0aWYgKGt2bV94ODZfY2FsbChpc192bm1pX3BlbmRpbmcpKHZjcHUpKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDUtXHRcdGxpbWl0LS07XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgwNi1cbmFyY2gveDg2L2t2bS94ODYuYzo3ODA3Olx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nICYjNDM7PSBhdG9taWNfeGNoZyhcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gubm1pX3F1ZXVlZCwgMCk7XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgwODpcdHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZyA9IG1pbih2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcsIGxpbWl0KTtcbmFyY2gveDg2L2t2bS94ODYuYy03ODA5LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTA6XHRpZiAodmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nIFx1MDAyNlx1MDAyNlxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTE6XHQgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgxMjpcdFx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nLS07XG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgxMy1cbmFyY2gveDg2L2t2bS94ODYuYzo3ODE0Olx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZylcbmFyY2gveDg2L2t2bS94ODYuYy03ODE1LVx0XHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfRVZFTlQsIHZjcHUpO1xuLS1cbmFyY2gveDg2L2t2bS94ODYuYy03ODE4LS8qIFJldHVybiB0b3RhbCBudW1iZXIgb2YgTk1JcyBwZW5kaW5nIGluamVjdGlvbiB0byB0aGUgVk0gKi9cbmFyY2gveDg2L2t2bS94ODYuYzo3ODE5OmludCBrdm1fZ2V0X25yX3BlbmRpbmdfbm1pcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgyMC17XG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgyMTpcdHJldHVybiB2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgJiM0MztcbmFyY2gveDg2L2t2bS94ODYuYzo3ODIyOlx0ICAgICAgIGt2bV94ODZfY2FsbChpc192bm1pX3BlbmRpbmcpKHZjcHUpO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MjMtfVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYz04MDU0PXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTgxNTQtXHRcdGlmIChrdm1fY2hlY2tfcmVxdWVzdChLVk1fUkVRX05NSSwgdmNwdSkpXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODE1NTpcdFx0XHRwcm9jZXNzX25taSh2Y3B1KTtcbmFyY2gveDg2L2t2bS94ODYuYy04MTU2LVx0XHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9JT0FQSUNfRU9JX0VYSVQsIHZjcHUpKSB7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTg1MTM9Ym9vbCBrdm1fdmNwdV9oYXNfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODUyNS1cdGlmIChrdm1fdGVzdF9yZXF1ZXN0KEtWTV9SRVFfTk1JLCB2Y3B1KSB8fFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1MjY6XHQgICAgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZyBcdTAwMjZcdTAwMjZcbmFyY2gveDg2L2t2bS94ODYuYzo4NTI3Olx0ICAgICBrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIGZhbHNlKSkpXG5hcmNoL3g4Ni9rdm0veDg2LmMtODUyOC1cdFx0cmV0dXJuIHRydWU7XG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTkyNzY9c3RhdGljIGludCBzeW5jX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy05MjkzLSNkZWZpbmUgUEVSRl9NRURJQVRFRF9QTVVfTVNHIFxcXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTI5NDpcdFwmIzM0O0ZhaWxlZCB0byBlbmFibGUgbWVkaWF0ZWQgdlBNVSwgdHJ5IGRpc2FibGluZyBzeXN0ZW0gd2lkZSBwZXJmIGV2ZW50cyBhbmQgbm1pX3dhdGNoZG9nLlxcblwmIzM0O1xuYXJjaC94ODYva3ZtL3g4Ni5jLTkyOTUtXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTk1MjQ9dm9pZCBrdm1fdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudClcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTU1NS1cdHZjcHUtXHUwMDNlYXJjaC5zbWlfY291bnQgPSAwO1xuYXJjaC94ODYva3ZtL3g4Ni5jOjk1NTY6XHRhdG9taWNfc2V0KFx1MDAyNnZjcHUtXHUwMDNlYXJjaC5ubWlfcXVldWVkLCAwKTtcbmFyY2gveDg2L2t2bS94ODYuYzo5NTU3Olx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nID0gMDtcbmFyY2gveDg2L2t2bS94ODYuYzo5NTU4Olx0dmNwdS1cdTAwM2VhcmNoLm5taV9pbmplY3RlZCA9IGZhbHNlO1xuYXJjaC94ODYva3ZtL3g4Ni5jLTk1NTktXHRrdm1fY2xlYXJfaW50ZXJydXB0X3F1ZXVlKHZjcHUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOCAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjgzMQoJCQkJCQkJb3V0cHV0OiAxNTMKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS1ZNIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgYWZ0ZXIgc29tZSByZXZpZXcsIEkmIzM5O3ZlIHplcm9lZCBpbiBvbiB0aGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgZm9yIGZ1enppbmcgd2l0aGluIHRoZSBLVk0gaHlwZXJ2aXNvci4gSSYjMzk7bSBmZWVsaW5nIGNvbmZpZGVudCBhYm91dCBga3ZtX2luamVjdF9ubWlgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLiBUaGV5IGFsbCBsb29rIGxpa2UgZXhjZWxsZW50IGZvY3VzIHN5bWJvbHMgZm9yIGluaXRpYWwgZnV6emluZyBlZmZvcnRzLiBJJiMzOTt2ZSBub3RlZCB0aGF0IGBrdm1fZ2V0X25yX3BlbmRpbmdfbm1pc2AgaXMgYWxzbyBub24tc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZywgYnV0IEkmIzM5O2xsIGtlZXAgdGhlIGZvY3VzIG9uIHRoZSBpbml0aWFsIHRocmVlLgoKQSBxdWljayByZXZpZXcgc3VnZ2VzdHMgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgZ2V0cyBjYWxsZWQgZnJvbSBgdmNwdV9lbnRlcl9ndWVzdGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGB2Y3B1X3J1bmAsIGFuZCBmaW5hbGx5LCBgdmNwdV9ydW5gIGlzIGNhbGxlZCBieSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGlzIGNvbmZpcm1zIHRoYXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIHZlcnkgaW1wb3J0YW50IGVudHJ5IHBvaW50LCBwcm9iYWJseSAqdGhlKiBtYWluIG9uZSwgYW5kIEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSB0aGF0LiBga3ZtX2luamVjdF9ubWlgIGlzIGFsc28gY3JpdGljYWwsIGdpdmVuIHRoZSBuYW1lLgoKRmluYWxseSwgSSYjMzk7bSB2ZXJpZnlpbmcgdGhhdCB0aGUgYEtWTWAgY29uZmlndXJhdGlvbiBpcyB0aGUgcmlnaHQgb25lIHRvIGVuYWJsZSBLVk0gZnVuY3Rpb25hbGl0eS4gWWVzLCBgS1ZNYCBpcyBpbmRlZWQgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiwgc28gSSBjYW4gdXNlIHRoYXQgd2l0aCBjb25maWRlbmNlIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuCgpTbywgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdDoKCiogICAqKldvcnRoRnV6emluZyoqOiBgdHJ1ZWAgKFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0KQoqICAgKipGb2N1c1N5bWJvbHMqKjogYFsmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssICYjMzQ7a3ZtX2FyY2hfdmNwdV9pb2N0bCYjMzQ7LCAmIzM0O2t2bV9pbmplY3Rfbm1pJiMzNDtdYCAodGhlc2UgYXJlIG15IG1haW4gdGFyZ2V0cykKKiAgICoqRW5hYmxlQ29uZmlncyoqOiBgWyYjMzQ7S1ZNJiMzNDtdYCAodGhlIGNvcmUgS1ZNIGNvbmZpZ3VyYXRpb24gZmxhZykKClRpbWUgdG8gd3JpdGUgdGhlIHJlc3BvbnNlIGFuZCBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI4IDIxOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsX3J1biYjMzQ7LAogICAgJiMzNDtrdm1fYXJjaF92Y3B1X2lvY3RsJiMzNDssCiAgICAmIzM0O2t2bV9pbmplY3Rfbm1pJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOTUkgaW5qZWN0aW9uIGxvZ2ljIGluIEtWTSB4ODYsIHNwZWNpZmljYWxseSBpbiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBleGVjdXRpb24gbG9vcCB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoZS5nLiwgS1ZNX1JVTiwgS1ZNX05NSSkuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuJiMzNDssCiAgICAmIzM0O2t2bV9hcmNoX3ZjcHVfaW9jdGwmIzM0OywKICAgICYjMzQ7a3ZtX2luamVjdF9ubWkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5NSSBpbmplY3Rpb24gbG9naWMgaW4gS1ZNIHg4Niwgc3BlY2lmaWNhbGx5IGluIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGV4ZWN1dGlvbiBsb29wIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChlLmcuLCBLVk1fUlVOLCBLVk1fTk1JKS4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjExLjI2MjIyNzk0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4MDgzMzU0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIixcbiAgICBcImt2bV9pbmplY3Rfbm1pXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIE5NSSBpbmplY3Rpb24gbG9naWMgaW4gS1ZNIHg4Niwgc3BlY2lmaWNhbGx5IGluIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgS1ZNIGV4ZWN1dGlvbiBsb29wIHRoYXQgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIChlLmcuLCBLVk1fUlVOLCBLVk1fTk1JKS4gSXQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgdnVsbmVyYWJpbGl0aWVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoxMS4yNjIyNDAxNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMjk2NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTQ1MmQ0NjlkNmVlYjUwNjhmYjgyZmNjYzIyMzQyNThhNmUxNWFhMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAyOCAyMToyNDoxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0veDg2LmMgYi9hcmNoL3g4Ni9rdm0veDg2LmNcXG5pbmRleCA5NjBmZjdmY2Q4ZGJhLi5kMzVmNWZkM2NiMTY0IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS94ODYuY1xcbisrKyBiL2FyY2gveDg2L2t2bS94ODYuY1xcbkBAIC03NzI0LDYgKzc3MjQsOSBAQCBzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuIFxcdFxcdFxcdGNhbl9pbmplY3QgPSBmYWxzZTtcXG4gXFx0XFx0XFx0V0FSTl9PTihrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIHRydWUpIFxcdTAwM2MgMCk7XFxuIFxcdFxcdH1cXG4rXFx0XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxcbitcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nLS07XFxuIFxcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nKVxcbiBcXHRcXHRcXHRrdm1feDg2X2NhbGwoZW5hYmxlX25taV93aW5kb3cpKHZjcHUpO1xcbiBcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjExLjczNDUzMzgwMVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQzMzM2MDIwMzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1faW5qZWN0X25taVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOTUkgaW5qZWN0aW9uIGxvZ2ljIGluIEtWTSB4ODYsIHNwZWNpZmljYWxseSBpbiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBleGVjdXRpb24gbG9vcCB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoZS5nLiwgS1ZNX1JVTiwgS1ZNX05NSSkuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTQ1MmQ0NjlkNmVlYjUwNjhmYjgyZmNjYzIyMzQyNThhNmUxNWFhMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDI4IDIxOjI0OjEwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jXG5pbmRleCA5NjBmZjdmY2Q4ZGJhLi5kMzVmNWZkM2NiMTY0IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jXG4rKysgYi9hcmNoL3g4Ni9rdm0veDg2LmNcbkBAIC03NzI0LDYgKzc3MjQsOSBAQCBzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXG4gXHRcdFx0Y2FuX2luamVjdCA9IGZhbHNlO1xuIFx0XHRcdFdBUk5fT04oa3ZtX3g4Nl9jYWxsKG5taV9hbGxvd2VkKSh2Y3B1LCB0cnVlKSBcdTAwM2MgMCk7XG4gXHRcdH1cbitcdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZyBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxuK1x0XHRcdHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZy0tO1xuIFx0XHRpZiAodmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nKVxuIFx0XHRcdGt2bV94ODZfY2FsbChlbmFibGVfbm1pX3dpbmRvdykodmNwdSk7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoxMS43MzQ1MzU3NTFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA2NDUwMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIGEgS1ZNL3g4NiBQYXRjaCoqXG5cbkFscmlnaHQsIEkgc2VlIGEgcGF0Y2ggdG91Y2hpbmcgYGFyY2gveDg2L2t2bS94ODYuY2AuIFRoYXQncyB3aGVyZSB0aGUgY29yZSB4ODYgdmlydHVhbGl6YXRpb24gbG9naWMgbGl2ZXMgaW4gS1ZNLCBzbyBpdCdzIGxpa2VseSBhIHNpZ25pZmljYW50IGFyZWEuIFNwZWNpZmljYWxseSwgdGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgZnVuY3Rpb24uIFRoYXQgZnVuY3Rpb24gaXMgcHJldHR5IGNydWNpYWw7IGl0J3MgdGhlIGdhdGVrZWVwZXIgZm9yIGRlbGl2ZXJpbmcgZXZlbnRzIHRvIHRoZSBndWVzdC4gSXQgc2VlbXMgbGlrZSB3ZSBhcmUgYWRkaW5nIHNvbWV0aGluZyB3aGljaCBkZWFscyB3aXRoIE5NSSBoYW5kbGluZyBoZXJlLlxuXG5UaGUgYWRkZWQgY29kZSBzbmlwcGV0OlxuXG5gYGBjXG5cdFx0aWYgKHZjcHUtXHUwMDNlYXJjaC5ubWlfcGVuZGluZyBcdTAwMjZcdTAwMjZcblx0XHQgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpXG5cdFx0XHR2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmctLTtcbmBgYFxuXG5UaGlzIGxvb2tzIGxpa2UgYSBtZWNoYW5pc20gdG8gaGFuZGxlIHBlbmRpbmcgTk1JcyAoTm9uLU1hc2thYmxlIEludGVycnVwdHMpLiBUaGUgY29kZSBjaGVja3MgaWYgYG5taV9wZW5kaW5nYCBpcyBzZXQuIElmIHRoZXJlIGlzIGEgcGVuZGluZyBOTUksIGFuZCB0aGUgYHNldF92bm1pX3BlbmRpbmdgIGZ1bmN0aW9uIGlzIHN1Y2Nlc3NmdWxseSBjYWxsZWQuIEknbSBpbmZlcnJpbmcgdGhpcyBgc2V0X3ZubWlfcGVuZGluZ2AgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gcHJvcGVybHkgaW5qZWN0IHRoZSBOTUkgaW50byB0aGUgdkNQVSdzIHN0YXRlLiBUaGVuLCBpZiBpbmplY3Rpb24gaXMgc3VjY2Vzc2Z1bCwgdGhlIGBubWlfcGVuZGluZ2AgY291bnQgaXMgZGVjcmVtZW50ZWQuIEl0IG1ha2VzIHNlbnNlIOKAkyBhbiBOTUkgaXMgcHJvY2Vzc2VkLCBzbyB0aGUgcGVuZGluZyBjb3VudCBpcyByZWR1Y2VkLlxuXG5UaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSDigJMgYW4gaW1wcm92ZW1lbnQgdG8gdGhlIE5NSSBoYW5kbGluZyB3aXRoaW4gS1ZNL3g4Ni4gSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29udGV4dCBvZiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgKndoeSogdGhpcyBjaGFuZ2UgaXMgbmVjZXNzYXJ5LiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGltcGFjdHM/IFdoYXQgaXMgdGhlIGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgdmlydHVhbGl6YXRpb24gc3RhY2s/IFRoaXMgcGF0Y2ggaXMgY2VydGFpbmx5IHNvbWV0aGluZyBJIG5lZWQgdG8ga2VlcCBteSBleWUgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMTgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoxNi4yNDA5OTEwNzRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzNzk5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ODYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9NzUxND1zdGF0aWMgdm9pZCBrdm1faW5qZWN0X2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzU3MS0gKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzU3MjpzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc1NzMtXFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgKnJlcV9pbW1lZGlhdGVfZXhpdClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz03ODM2PXZvaWQgX19rdm1fdmNwdV91cGRhdGVfYXBpY3Yoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4NjEtXFx0ICogc3RpbGwgYWN0aXZlIHdoZW4gdGhlIGludGVycnVwdCBnb3QgYWNjZXB0ZWQuIE1ha2Ugc3VyZVxcbmFyY2gveDg2L2t2bS94ODYuYzo3ODYyOlxcdCAqIGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cygpIGlzIGNhbGxlZCB0byBjaGVjayBmb3IgdGhhdC5cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzg2My1cXHQgKi9cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04MDU0PXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODIzOS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODI0MDpcXHRcXHRyID0ga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzKHZjcHUsIFxcdTAwMjZyZXFfaW1tZWRpYXRlX2V4aXQpO1xcbmFyY2gveDg2L2t2bS94ODYuYy04MjQxLVxcdFxcdGlmIChyIFxcdTAwM2MgMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoxNi4yODczNzg4NjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjYzMjU5ODAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBhbmQgU3RyYXRlZ2ljIEFkanVzdG1lbnRzKipcblxuT2theSwgc28gYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgZ2V0cyBjYWxsZWQgZnJvbSBgdmNwdV9lbnRlcl9ndWVzdGAuIFRoYXQncyBhIHNvbGlkLCBmdW5jdGlvbmFsIHN0YXJ0aW5nIHBvaW50IOKAkyBJIGNhbiByZWFjaCBpdC4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoaXMgcmVhY2hhYmlsaXR5LCBpcyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYCBhbmQgZm9jdXMgdGhlIGZ1enppbmcgb24gdGhhdCBmdW5jdGlvbjogYEZvY3VzU3ltYm9scz1bXCJrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNcIl1gLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgYXZlbnVlIGZvciBleHBsb3JpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuSG9sZCBvbiBhIHNlY29uZC4uLiBpcyB0aGF0IGZ1bmN0aW9uIGFjdHVhbGx5IGBzdGF0aWNgPyBMZXQgbWUgZG91YmxlLWNoZWNrLiBZdXAsIGNvbmZpcm1lZDogYHN0YXRpYyBpbnQga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCAqcmVxX2ltbWVkaWF0ZV9leGl0KWAuIEJlY2F1c2UgaXQncyBzdGF0aWMsIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSBpdCBtaWdodCBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciwgb3Igbm90IGhhdmUgYSB1bmlxdWUgc3ltYm9sIGFkZHJlc3MsIHdoaWNoIGNvbXBsaWNhdGVzIHRoaW5ncy4gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kLlxuXG5BbmQgdGhlIGNhbGxlciwgYHZjcHVfZW50ZXJfZ3Vlc3RgLCBpcyBhbHNvIGBzdGF0aWNgLiBUaGlzIGlzIGEgYml0IG9mIGEgcHJvYmxlbS4gSXQgbWVhbnMgSSdsbCBuZWVkIHRvIHRyYWNlIHVwd2FyZHMgaW4gdGhlIGNhbGwgc3RhY2sgdG8gZmluZCBhICpub24tc3RhdGljKiBBUEkgZW50cnlwb2ludCwgc29tZXRoaW5nIHRoYXQgSSBjYW4gZGlyZWN0bHkgbWFuaXB1bGF0ZSBhbmQgY29udHJvbC4gSSBuZWVkIHRvIG1vdmUgdXAgdGhlIGNhbGwgc3RhY2sgdG8gc2VlIHdoYXQncyBjYWxsaW5nIGB2Y3B1X2VudGVyX2d1ZXN0YC4gVGltZSB0byB0cmFjZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzE0NywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoyMC45NTA2NDIxODNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzOTIyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9lbnRlcl9ndWVzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTU0MD12b2lkIGt2bV9yZXF1ZXVlX2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGludCBucixcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy01NDYtXFx0ICogaW5qZWN0aW9uIHdhcyBibG9ja2VkIGJ5IG5lc3RlZF9ydW5fcGVuZGluZy4gIEluIHRoYXQgY2FzZSwgaG93ZXZlcixcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTQ3OlxcdCAqIHZjcHVfZW50ZXJfZ3Vlc3QoKSByZXF1ZXN0cyBhbiBpbW1lZGlhdGUgZXhpdCwgYW5kIHRoZSBndWVzdFxcbmFyY2gveDg2L2t2bS94ODYuYy01NDgtXFx0ICogc2hvdWxkbid0IHByb2NlZWQgZmFyIGVub3VnaCB0byBuZWVkIHJlaW5qZWN0aW9uLlxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTIwMjY9c3RhdGljIGlubGluZSB2b2lkIGt2bV92Y3B1X2ZsdXNoX3RsYl9jdXJyZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yMDMzLSAqIFNlcnZpY2UgXFxcImxvY2FsXFxcIiBUTEIgZmx1c2ggcmVxdWVzdHMsIHdoaWNoIGFyZSBzcGVjaWZpYyB0byB0aGUgY3VycmVudCBNTVVcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjAzNDogKiBjb250ZXh0LiAgSW4gYWRkaXRpb24gdG8gdGhlIGdlbmVyaWMgZXZlbnQgaGFuZGxpbmcgaW4gdmNwdV9lbnRlcl9ndWVzdCgpLFxcbmFyY2gveDg2L2t2bS94ODYuYy0yMDM1LSAqIFRMQiBmbHVzaGVzIHRoYXQgYXJlIHRhcmdldGVkIGF0IGFuIE1NVSBjb250ZXh0IGFsc28gbmVlZCB0byBiZSBzZXJ2aWNlZFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTc4OTY9dm9pZCBfX2t2bV9zZXRfb3JfY2xlYXJfYXBpY3ZfaW5oaWJpdChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxNi1cXHRcXHQgKiBLaWNrIGFsbCB2Q1BVcyBiZWZvcmUgc2V0dGluZyBhcGljdl9pbmhpYml0X3JlYXNvbnMgdG8gYXZvaWRcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzkxNzpcXHRcXHQgKiBmYWxzZSBwb3NpdGl2ZXMgaW4gdGhlIHNhbml0eSBjaGVjayBXQVJOIGluIHZjcHVfZW50ZXJfZ3Vlc3QoKS5cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzkxOC1cXHRcXHQgKiBUaGlzIHRhc2sgd2lsbCB3YWl0IGZvciBhbGwgdkNQVXMgdG8gYWNrIHRoZSBraWNrIElSUSBiZWZvcmVcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy03OTIwLVxcdFxcdCAqIGJsb2NrIG9uIGFjcXVpcmluZyBhcGljdl91cGRhdGVfbG9jayBzbyB0aGF0IHZDUFVzIGNhbid0XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc5MjE6XFx0XFx0ICogcmVkbyB2Y3B1X2VudGVyX2d1ZXN0KCkgd2l0aG91dCBzZWVpbmcgdGhlIG5ldyBpbmhpYml0IHN0YXRlLlxcbmFyY2gveDg2L2t2bS94ODYuYy03OTIyLVxcdFxcdCAqXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA0MD1zdGF0aWMgdm9pZCBrdm1fdmNwdV9yZWxvYWRfYXBpY19hY2Nlc3NfcGFnZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODA1My0gKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODA1NDpzdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy04MDU1LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NjM0PXN0YXRpYyBpbnQgdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDgtXFx0XFx0aWYgKGt2bV92Y3B1X3J1bm5pbmcodmNwdSkpIHtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODY0OTpcXHRcXHRcXHRyID0gdmNwdV9lbnRlcl9ndWVzdCh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODY1MC1cXHRcXHR9IGVsc2Uge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoyMC45OTcwNDgxNDJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTE1Njg2MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqVHJhY2luZyBgdmNwdV9ydW5gKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHZjcHVfcnVuYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIGl0J3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQncyBnb29kIHRvIGtub3cg4oCTIGl0J3MgbG9jYWxseSBzY29wZWQgd2l0aGluIGl0cyBjb21waWxhdGlvbiB1bml0LCBtZWFuaW5nIEkgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBleHRlcm5hbCBkZXBlbmRlbmNpZXMgaW1wYWN0aW5nIGl0cyBiZWhhdmlvciBkaXJlY3RseS4gR2l2ZW4gaXRzIG5hbWUsIGB2Y3B1X3J1bmAgaXMgcHJvYmFibHkgdGhlIGNvcmUgZXhlY3V0aW9uIGxvb3AgZm9yIGEgdmlydHVhbCBDUFUuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29kZS4gVGltZSB0byBzdGFydCB0cmFjaW5nIHRoYXQgZXhlY3V0aW9uIHBhdGggYW5kIGdldCBhIHNvbGlkIGdyYXNwIG9mIGl0cyBwdXJwb3NlLiBMZXQncyBzZWUgd2hhdCBtYWtlcyB0aGlzIHRoaW5nIHRpY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1MzcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoyMy45MTI3Mzc1NTVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzNTIyMTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmNwdV9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0xNTY5PXN0YXRpYyB2b2lkIHB2Y2xvY2tfdXBkYXRlX3ZtX2d0b2RfY29weShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU4OS1cXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAha2EtXFx1MDAzZWJhY2t3YXJkc190c2Nfb2JzZXJ2ZWRcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MTU5MDpcXHRcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAha2EtXFx1MDAzZWJvb3RfdmNwdV9ydW5zX29sZF9rdm1jbG9jaztcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU5MS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNjE1PXN0YXRpYyB2b2lkIGt2bV9zdGVhbF90aW1lX3NldF9wcmVlbXB0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjUtXFx0ICogYW4gaW5zdHJ1Y3Rpb24gYm91bmRhcnkgYW5kIHdpbGwgbm90IHRyaWdnZXIgZ3Vlc3QgZW11bGF0aW9uIG9mIGFueVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNjI2OlxcdCAqIGtpbmQgKHNlZSB2Y3B1X3J1bikuICBWZW5kb3Igc3BlY2lmaWMgY29kZSBjb250cm9scyAoY29uc2VydmF0aXZlbHkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI2MjctXFx0ICogd2hlbiB0aGlzIGlzIHRydWUsIGZvciBleGFtcGxlIGFsbG93aW5nIHRoZSB2Q1BVIHRvIGJlIG1hcmtlZFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwNDA9c3RhdGljIHZvaWQga3ZtX3ZjcHVfcmVsb2FkX2FwaWNfYWNjZXNzX3BhZ2Uoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgwNDktICogQ2FsbGVkIHdpdGhpbiBrdm0tXFx1MDAzZXNyY3UgcmVhZCBzaWRlLlxcbmFyY2gveDg2L2t2bS94ODYuYzo4MDUwOiAqIFJldHVybnMgMSB0byBsZXQgdmNwdV9ydW4oKSBjb250aW51ZSB0aGUgZ3Vlc3QgZXhlY3V0aW9uIGxvb3Agd2l0aG91dFxcbmFyY2gveDg2L2t2bS94ODYuYy04MDUxLSAqIGV4aXRpbmcgdG8gdGhlIHVzZXJzcGFjZS4gIE90aGVyd2lzZSwgdGhlIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA1ND1zdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgzNjktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjgzNzA6XFx0XFx0ZXhpdF9mYXN0cGF0aCA9IGt2bV94ODZfY2FsbCh2Y3B1X3J1bikodmNwdSwgcnVuX2ZsYWdzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODM3MS1cXHRcXHRpZiAobGlrZWx5KGV4aXRfZmFzdHBhdGggIT0gRVhJVF9GQVNUUEFUSF9SRUVOVEVSX0dVRVNUKSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTA2LVxcbmFyY2gveDg2L2t2bS94ODYuYzo4NTA3OnN0YXRpYyBib29sIGt2bV92Y3B1X3J1bm5pbmcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTA4LXtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NTU3PUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fdmNwdV9oYXNfZXZlbnRzKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU1OC1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODU1OTppbnQga3ZtX2FyY2hfdmNwdV9ydW5uYWJsZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjAte1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NTYxOlxcdHJldHVybiBrdm1fdmNwdV9ydW5uaW5nKHZjcHUpIHx8IHZjcHUtXFx1MDAzZWFyY2gucHYucHZfdW5oYWx0ZWQgfHxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU2Mi1cXHQgICAgICAga3ZtX3ZjcHVfaGFzX2V2ZW50cyh2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04NTY2PXN0YXRpYyBpbmxpbmUgaW50IHZjcHVfYmxvY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NjktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1NzA6XFx0aWYgKCFrdm1fYXJjaF92Y3B1X3J1bm5hYmxlKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1NzEtXFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NTk2LVxcdFxcdCAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NTk3OlxcdFxcdGlmICgha3ZtX2FyY2hfdmNwdV9ydW5uYWJsZSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODU5OC1cXHRcXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy04NjMzLS8qIENhbGxlZCB3aXRoaW4ga3ZtLVxcdTAwM2VzcmN1IHJlYWQgc2lkZS4gICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg2MzQ6c3RhdGljIGludCB2Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2MzUte1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDctXFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5hdF9pbnN0cnVjdGlvbl9ib3VuZGFyeSA9IGZhbHNlO1xcbmFyY2gveDg2L2t2bS94ODYuYzo4NjQ4OlxcdFxcdGlmIChrdm1fdmNwdV9ydW5uaW5nKHZjcHUpKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg2NDktXFx0XFx0XFx0ciA9IHZjcHVfZW50ZXJfZ3Vlc3QodmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODcyMj1mYXN0cGF0aF90IGhhbmRsZV9mYXN0cGF0aF9obHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg3MjktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg3MzA6XFx0aWYgKGt2bV92Y3B1X3J1bm5pbmcodmNwdSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg3MzEtXFx0XFx0cmV0dXJuIEVYSVRfRkFTVFBBVEhfUkVFTlRFUl9HVUVTVDtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04ODc2PWludCBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODk4MC1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODk4MTpcXHRyID0gdmNwdV9ydW4odmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg5ODItXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjIzLjk2MTA5ODQ4NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4OTc2NTA3OTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0geDg2IE5NSSBJbmplY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGUgZW50cnkgcG9pbnQgaGVyZSBzZWVtcyB0byBiZSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIGtleSBmdW5jdGlvbnMgdGhhdCBhcmUgbW9kaWZpZWQuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY2hhbmdlcyB0byBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC5cblxuQWxyaWdodCwgdGhlIHBhdGNoIGFkZHMgdGhpcyBiaXQgb2YgY29kZTpcblxuYGBgY1xuXHRcdGlmICh2Y3B1LVx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXHUwMDI2XHUwMDI2XG5cdFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxuXHRcdFx0dmNwdS1cdTAwM2VhcmNoLm5taV9wZW5kaW5nLS07XG5gYGBcblxuVGhhdCdzIGNsZWFybHkgcmVsYXRlZCB0byBoYW5kbGluZyBOb24tTWFza2FibGUgSW50ZXJydXB0IChOTUkpIGluamVjdGlvbi4gU28gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgYW5kIGZvY3VzIHN5bWJvbC4gTm93LCBhcmUgdGhlcmUgYW55ICpvdGhlciogZnVuY3Rpb25zIHRoYXQgYXJlIG9mIHNpbWlsYXIgaW1wb3J0YW5jZT8gUGVyaGFwcyBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYCB3YXJyYW50cyBpbmNsdXNpb24gYXMgd2VsbCwgdW5sZXNzLCBvZiBjb3Vyc2UsIGl0J3MgaW5saW5lZC4gSXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIHNvIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiB0byBjb25maXJtLlxuXG5MZXQncyBkaXZlIGludG8gYGFyY2gveDg2L2t2bS94ODYuY2AgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGNlbnRlciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzNiwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDoyOC44NTg3NTQwN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5MDg2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz04ODQ3PXN0YXRpYyBpbnQga3ZtX3g4Nl92Y3B1X3ByZV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg4NzUtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg4NzY6aW50IGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODg3Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjI4LjkwNTY2OTIzOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTg1NTg3NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyByZWxhdGVkIHRvIE5NSSBpbmplY3Rpb24gdGhhdCBjb3VsZCBiZSByZWxldmFudCB0byB0aGlzIGxpbmUgb2YgaW52ZXN0aWdhdGlvbi4gSSBzaG91bGQgc3RhcnQgYnkgbG9va2luZyBmb3Igb3RoZXIgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gTk1JIGluamVjdGlvbiBpbiB0aGUgY29kZWJhc2UuIExldCBtZSBzcGVjaWZpY2FsbHkgY2hlY2sgYGt2bV92Y3B1X2lvY3RsX25taWAgaW4gYGFyY2gveDg2L2t2bS94ODYuY2AuIFRoYXQgc2VlbXMgbGlrZSBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgYSBmb2N1c2VkIGV4YW1pbmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDQzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6MzEuODkxMjYwMTcxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDgyNjM1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fdmNwdV9pb2N0bF9ubWlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0yNzYwPXN0YXRpYyBpbnQga3ZtX3ZjcHVfaW9jdGxfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzg2LVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNzg3OnN0YXRpYyBpbnQga3ZtX3ZjcHVfaW9jdGxfbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc4OC17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9MzQxNj1sb25nIGt2bV9hcmNoX3ZjcHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3NC1cXHRjYXNlIEtWTV9OTUk6IHtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzQ3NTpcXHRcXHRyID0ga3ZtX3ZjcHVfaW9jdGxfbm1pKHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zNDc2LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDozMS45MzYwOTE1NloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQ2MzgzNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEtWTSBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHNvIGBrdm1fdmNwdV9pb2N0bF9ubWlgIGlzIGEgc3RhdGljIGZ1bmN0aW9uOyBpdCdzIGxpa2VseSBhbiBpbnRlcm5hbCBoZWxwZXIuIFRoZSBtb3JlIGludGVyZXN0aW5nIGVudHJ5IHBvaW50IGlzIGBrdm1fYXJjaF92Y3B1X2lvY3RsYOKAlHllcywgdGhhdCdzIGRlZmluaXRlbHkgYSBnb29kIHN5bWJvbCB0byBjb25jZW50cmF0ZSBvbi4gQW5kLCB3aGlsZSBJJ20gYXQgaXQsIEkgc2hvdWxkIGFsc28gbG9vayBhdCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGF0IHNlZW1zIGxpa2UgaXQgd291bGQgYmUgaW1wb3J0YW50LiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIGxldCBtZSBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBBaCwgdGhlIHBhdGNoIGlzIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgLCBzbyBJJ20gZGVhbGluZyB3aXRoIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLiBBbmQgYXMgSSBzdXNwZWN0ZWQsIEtWTSB3aWxsIHJlcXVpcmUgYENPTkZJR19LVk1gIHRvIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDozNS44ODI0OTI2NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwODg4MDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzM6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzQtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgzOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA4OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNzpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMzOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjM0LVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6MzUuOTMzMzg2MTIzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNzAyNDMwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIGRlbHZlIGludG8gdGhpcyBjb25maWd1cmF0aW9uOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgS1ZNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGFzc2VzcyB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgY2hvaWNlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIGBLVk1gIGhhcyBhbnkgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIHRoYXQgSSBzaG91bGQgYmUgYXdhcmUgb2YuIEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcywgcGFja2FnZXMsIG9yIG90aGVyIHVuZGVybHlpbmcgY29tcG9uZW50cyB0aGF0IGBLVk1gIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseT8gSWRlbnRpZnlpbmcgdGhvc2UgZGVwZW5kZW5jaWVzIGlzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpbiBlbnN1cmluZyB0aGUgc3lzdGVtIGlzIGNvcnJlY3RseSBzZXQgdXAuIEkgbmVlZCB0byBrbm93IHRoZSBmdWxsIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDcxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6MzkuMDAzNjMyNzU0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzQxNTMzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9LY29uZmlnPTUyPWNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjU0OlxcdGRlcGVuZHMgb24gWDg2X0xPQ0FMX0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01NS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz02OT1jb25maWcgS1ZNX1dFUlJPUlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzYtXFx0IyB0aGUga2VybmVsLXdpZGUgV0VSUk9SPXkuXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFxcdTAwMjZcXHUwMDI2ICgoRVhQRVJUIFxcdTAwMjZcXHUwMDI2ICFLQVNBTikgfHwgV0VSUk9SKVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTc4LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTgzPWNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjg1OlxcdGRlcGVuZHMgb24gRVhQRVJUXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2IFxcdTAwMjZcXHUwMDI2IFg4Nl82NFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg3LVxcdHNlbGVjdCBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9OTY9Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk4OlxcdGRlcGVuZHMgb24gS1ZNIFxcdTAwMjZcXHUwMDI2IElBMzJfRkVBVF9DVExcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05OS1cXHRzZWxlY3QgWDg2X0ZSRUQgaWYgWDg2XzY0XFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMDc9Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwOTogICAgICAgIGRlcGVuZHMgb24gS1ZNX0lOVEVMIFxcdTAwMjZcXHUwMDI2IEVYUEVSVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTExMC0gICAgICAgIGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMjMtXFx0Ym9vbCBcXFwiU29mdHdhcmUgR3VhcmQgZVh0ZW5zaW9ucyAoU0dYKSBWaXJ0dWFsaXphdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMjQ6XFx0ZGVwZW5kcyBvbiBYODZfU0dYIFxcdTAwMjZcXHUwMDI2IEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEyNS1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMzQ9Y29uZmlnIEtWTV9JTlRFTF9URFhcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNi1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzc6XFx0ZGVwZW5kcyBvbiBJTlRFTF9URFhfSE9TVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzOC1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfTUVNT1JZX0FUVFJJQlVURVNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE0Nj1jb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0ODpcXHRkZXBlbmRzIG9uIEtWTSBcXHUwMDI2XFx1MDAyNiAoQ1BVX1NVUF9BTUQgfHwgQ1BVX1NVUF9IWUdPTilcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDktXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTU2PWNvbmZpZyBLVk1fQU1EX1NFVlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU4LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1OTpcXHRkZXBlbmRzIG9uIEtWTV9BTUQgXFx1MDAyNlxcdTAwMjYgWDg2XzY0XFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTYwOlxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9TUF9QU1AgXFx1MDAyNlxcdTAwMjYgIShLVk1fQU1EPXkgXFx1MDAyNlxcdTAwMjYgQ1JZUFRPX0RFVl9DQ1BfREQ9bSlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNjEtXFx0c2VsZWN0IEFSQ0hfSEFTX0NDX1BMQVRGT1JNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xNzM9Y29uZmlnIEtWTV9JT0FQSUNcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3NS1cXHRkZWZhdWx0IHlcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTc3LVxcdGhlbHBcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4Mz1jb25maWcgS1ZNX1NNTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg1LVxcdGRlZmF1bHQgeVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4NjpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODctXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTk0PWNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTY6XFx0ZGVwZW5kcyBvbiBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk3LVxcdGRlZmF1bHQgeVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjA4PWNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxMDpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTEtXFx0aGVscFxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MjE3PWNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE4LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE5OlxcdGRlcGVuZHMgb24gREVCVUdfS0VSTkVMXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjIwOlxcdGRlcGVuZHMgb24gS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIyMTpcXHRkZXBlbmRzIG9uIEVYUEVSVFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyMi1cXHRoZWxwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMzM9Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzQtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzNTpcXHRkZXBlbmRzIG9uIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzYtXFx0cmFuZ2UgMTAyNCA0MDk2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjM5LjA1MTA1NDY4M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDMzMjAxMTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk0gYW5kIFg4NiBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIEtWTSBjb2RlIGFuZCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQncyB0aWdodGx5IGNvdXBsZWQgd2l0aCB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gVGhlIGRlcGVuZGVuY3kgb24gYFg4Nl9MT0NBTF9BUElDYCBpcyB0aGUgZmlyc3Qga2V5IGluZGljYXRvci4gVGhlbiwgYEtWTV9YODZgIGlzIHRoZSBleHBsaWNpdCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgS1ZNIG9uIHg4Niwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgc2VlIHRoYXQgYEtWTWAgaXMgYSB0cmlzdGF0ZSwgYW5kIGBLVk1fWDg2YCBpcyBhIGRlZl90cmlzdGF0ZS4gVGhhdCdzIGdvb2QgdG8gbm90ZSwgSSdsbCBqdXN0IGluY2x1ZGUgYEtWTWAgdG8gbWFrZSBzdXJlIEkgYW0gZ2V0dGluZyB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlcy5cblxuTG9va2luZyBhdCB0aGUgcGF0Y2gsIGl0IHNlZW1zIGxpa2UgdGhlIG1lYXQgb2YgdGhlIGNoYW5nZXMgYXJlIHdpdGhpbiBgYXJjaC94ODYva3ZtL3g4Ni5jYC4gSSBuZWVkIHRvIHplcm8gaW4gb24gc3BlY2lmaWMgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiB0aGUgbW9kaWZpY2F0aW9ucy4gYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBzdHJpa2VzIG1lIGFzIGEgZ29vZCBmb2N1cyBzeW1ib2wsIGFuZCBzaW1pbGFybHksIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCBzaG91bGQgYmUgaW5mb3JtYXRpdmUuXG5cbkkgd29uZGVyIHdoYXQgZWxzZSB0aGV5IHRvdWNoZWQ/IEFoYSwgdGhlIHBhdGNoIGlzIGFsc28gbW9kaWZ5aW5nIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLiBMZXQgbWUgY2hlY2sgaWYgdGhhdCBmdW5jdGlvbiBpcyBpbmxpbmVkLiBJdCdzIHN0YXRpYywgc28gdGhhdCdzIGEgY2x1ZSwgYnV0IGl0J3MgYSBkZWNlbnQgc2l6ZSB3aGljaCBtYWtlcyBpdCB1bmxpa2VseS4gTGV0IG1lIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBjb2RlIG9mIGBrdm1fY2hlY2tfYW5kX2luamVjdF9ldmVudHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk0OCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOFQyMToyNDo0NC4wODQyNjA0MjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NDI5MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YXRpYyBpbnQga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ODYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9NzUxND1zdGF0aWMgdm9pZCBrdm1faW5qZWN0X2V4Y2VwdGlvbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzU3MS0gKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzU3MjpzdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc1NzMtXFx0XFx0XFx0XFx0ICAgICAgIGJvb2wgKnJlcV9pbW1lZGlhdGVfZXhpdClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6NDQuMTMxNjk0MDM1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NTExNjI0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gTk1JIEluamVjdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgc2luY2UgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBpbmplY3RpbmcgTk1JcywgYW5kIGl0J3MgZGVhbGluZyB3aXRoIGEgc3RhdGljIGZ1bmN0aW9uLCBJIHNob3VsZCBmaXJzdCBtYWtlIHN1cmUgaXQgZG9lc24ndCBldmVuIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhhdCBjb3VsZCBjb21wbGljYXRlIHRoaW5ncyBhIGJpdC4gTGV0J3Mgc2VlLi4uSSB0aGluayBJIHNob3VsZCBzdGFydCB3aXRoIGBrdm1fYXJjaF92Y3B1X2lvY3RsX3J1bmAgYW5kIGBrdm1fYXJjaF92Y3B1X2lvY3RsYCB0byBnZXQgbXkgYmVhcmluZ3MsIGJ1dCB3YWl0IGEgbWludXRlLi4uIHRoaXMgaXMgYWJvdXQgTk1JIGluamVjdGlvbiBzcGVjaWZpY2FsbHksIGlzbid0IGl0PyBPa2F5LCByaWdodC4gU28sIGlzIHRoZXJlIGEgZGVkaWNhdGVkIGZ1bmN0aW9uIHdpdGhpbiB0aGlzIHBhdGNoIHRoYXQgaGFuZGxlcyBOTUkgaW5qZWN0aW9uIGRpcmVjdGx5PyBJJ20gcHJldHR5IHN1cmUgSSd2ZSBzZWVuIGBrdm1fdmNwdV9pb2N0bF9ubWlgIGJlZm9yZSwgYnV0LCB5ZXAsIHRoYXQgb25lJ3Mgc3RhdGljLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGZsb2F0aW5nIGFyb3VuZCByZWxhdGVkIHRvIE5NSXMgdGhhdCB0aGlzIGlzIGltcGFjdGluZy4gSSBuZWVkIHRvIGJlIHRob3JvdWdoIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjcxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI4VDIxOjI0OjQ4LjA4Mjg1OTAyOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY0MzgyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibm1pXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS94ODYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0veDg2LmM9MTAxPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1faG9zdCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTU4LVxcbmFyY2gveDg2L2t2bS94ODYuYzoxNTk6c3RhdGljIHZvaWQgcHJvY2Vzc19ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMTYwLXN0YXRpYyB2b2lkIHN0b3JlX3JlZ3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yNjQ9Y29uc3Qgc3RydWN0IGt2bV9zdGF0c19kZXNjIGt2bV92Y3B1X3N0YXRzX2Rlc2NbXSA9IHtcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzktXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGlycV93aW5kb3dfZXhpdHMpLFxcbmFyY2gveDg2L2t2bS94ODYuYzoyODA6XFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIG5taV93aW5kb3dfZXhpdHMpLFxcbmFyY2gveDg2L2t2bS94ODYuYy0yODEtXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIGwxZF9mbHVzaCksXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjkwLVxcdFNUQVRTX0RFU0NfQ09VTlRFUihWQ1BVLCBpcnFfaW5qZWN0aW9ucyksXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI5MTpcXHRTVEFUU19ERVNDX0NPVU5URVIoVkNQVSwgbm1pX2luamVjdGlvbnMpLFxcbmFyY2gveDg2L2t2bS94ODYuYy0yOTItXFx0U1RBVFNfREVTQ19DT1VOVEVSKFZDUFUsIHJlcV9ldmVudCksXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NjIwPUVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChfX2t2bV9pbmplY3RfZW11bGF0ZWRfcGFnZV9mYXVsdCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTYyMS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NjIyOnZvaWQga3ZtX2luamVjdF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy02MjMte1xcbmFyY2gveDg2L2t2bS94ODYuYzo2MjQ6XFx0YXRvbWljX2luYyhcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC5ubWlfcXVldWVkKTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNjI1LVxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9OTUksIHZjcHUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTI3NjA9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI3ODYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI3ODc6c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF9ubWkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS94ODYuYy0yNzg4LXtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6Mjc4OTpcXHRrdm1faW5qZWN0X25taSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjc5MC1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz0yOTYyPXN0YXRpYyB2b2lkIGt2bV92Y3B1X2lvY3RsX3g4Nl9nZXRfdmNwdV9ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI5NjYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjI5Njc6XFx0cHJvY2Vzc19ubWkodmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI5NjgtXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAwNS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzAwNjpcXHRldmVudHMtXFx1MDAzZW5taS5pbmplY3RlZCA9IHZjcHUtXFx1MDAzZWFyY2gubm1pX2luamVjdGVkO1xcbmFyY2gveDg2L2t2bS94ODYuYzozMDA3OlxcdGV2ZW50cy1cXHUwMDNlbm1pLnBlbmRpbmcgPSBrdm1fZ2V0X25yX3BlbmRpbmdfbm1pcyh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzAwODpcXHRldmVudHMtXFx1MDAzZW5taS5tYXNrZWQgPSBrdm1feDg2X2NhbGwoZ2V0X25taV9tYXNrKSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAwOS1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMDE0LVxcdGV2ZW50cy1cXHUwMDNlc21pLnBlbmRpbmcgPSB2Y3B1LVxcdTAwM2VhcmNoLnNtaV9wZW5kaW5nO1xcbmFyY2gveDg2L2t2bS94ODYuYzozMDE1OlxcdGV2ZW50cy1cXHUwMDNlc21pLnNtbV9pbnNpZGVfbm1pID1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzAxNi1cXHRcXHQhISh2Y3B1LVxcdTAwM2VhcmNoLmhmbGFncyBcXHUwMDI2IEhGX1NNTV9JTlNJREVfTk1JX01BU0spO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTMwMzE9c3RhdGljIGludCBrdm1fdmNwdV9pb2N0bF94ODZfc2V0X3ZjcHVfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMDU3LVxcbmFyY2gveDg2L2t2bS94ODYuYzozMDU4OlxcdHByb2Nlc3Nfbm1pKHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zMDU5LVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTMwODYtXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjMwODc6XFx0dmNwdS1cXHUwMDNlYXJjaC5ubWlfaW5qZWN0ZWQgPSBldmVudHMtXFx1MDAzZW5taS5pbmplY3RlZDtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzA4OC1cXHRpZiAoZXZlbnRzLVxcdTAwM2VmbGFncyBcXHUwMDI2IEtWTV9WQ1BVRVZFTlRfVkFMSURfTk1JX1BFTkRJTkcpIHtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA4OTpcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nID0gMDtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA5MDpcXHRcXHRhdG9taWNfc2V0KFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLm5taV9xdWV1ZWQsIGV2ZW50cy1cXHUwMDNlbm1pLnBlbmRpbmcpO1xcbmFyY2gveDg2L2t2bS94ODYuYzozMDkxOlxcdFxcdGlmIChldmVudHMtXFx1MDAzZW5taS5wZW5kaW5nKVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMDkyLVxcdFxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9OTUksIHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zMDkzLVxcdH1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzA5NDpcXHRrdm1feDg2X2NhbGwoc2V0X25taV9tYXNrKSh2Y3B1LCBldmVudHMtXFx1MDAzZW5taS5tYXNrZWQpO1xcbmFyY2gveDg2L2t2bS94ODYuYy0zMDk1LVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTMxMDktXFx0XFx0aWYgKGV2ZW50cy1cXHUwMDNlc21pLnNtbSkge1xcbmFyY2gveDg2L2t2bS94ODYuYzozMTEwOlxcdFxcdFxcdGlmIChldmVudHMtXFx1MDAzZXNtaS5zbW1faW5zaWRlX25taSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzExMS1cXHRcXHRcXHRcXHR2Y3B1LVxcdTAwM2VhcmNoLmhmbGFncyB8PSBIRl9TTU1fSU5TSURFX05NSV9NQVNLO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTMxMTctXFx0XFx0aWYgKGV2ZW50cy1cXHUwMDNlc21pLnNtbSB8fCBldmVudHMtXFx1MDAzZXNtaS5wZW5kaW5nIHx8XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjMxMTg6XFx0XFx0ICAgIGV2ZW50cy1cXHUwMDNlc21pLnNtbV9pbnNpZGVfbm1pKVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMTE5LVxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTM0MTY9bG9uZyBrdm1fYXJjaF92Y3B1X2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTM0NzQtXFx0Y2FzZSBLVk1fTk1JOiB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjM0NzU6XFx0XFx0ciA9IGt2bV92Y3B1X2lvY3RsX25taSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzQ3Ni1cXHRcXHRicmVhaztcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz01NzQ0PXN0YXRpYyB2b2lkIGVtdWxhdG9yX3dyaXRlX2dwcihzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCwgdW5zaWduZWQgcmVnLCB1bG9uZyB2YWwpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTc0OC1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTc0OTpzdGF0aWMgdm9pZCBlbXVsYXRvcl9zZXRfbm1pX21hc2soc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQsIGJvb2wgbWFza2VkKVxcbmFyY2gveDg2L2t2bS94ODYuYy01NzUwLXtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NTc1MTpcXHRrdm1feDg2X2NhbGwoc2V0X25taV9tYXNrKShlbXVsX3RvX3ZjcHUoY3R4dCksIG1hc2tlZCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTU3NTItfVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTU4MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgZW11bGF0ZV9vcHMgPSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNTg1NC1cXHQuZ3Vlc3RfY3B1aWRfaXNfaW50ZWxfY29tcGF0aWJsZSA9IGVtdWxhdG9yX2d1ZXN0X2NwdWlkX2lzX2ludGVsX2NvbXBhdGlibGUsXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjU4NTU6XFx0LnNldF9ubWlfbWFzayAgICAgICAgPSBlbXVsYXRvcl9zZXRfbm1pX21hc2ssXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTU4NTYtXFx0LmlzX3NtbSAgICAgICAgICAgICAgPSBlbXVsYXRvcl9pc19zbW0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9NzU3Mj1zdGF0aWMgaW50IGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50cyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzYxNC1cXHRcXHQ7IC8qIHNlZSBhYm92ZSAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzo3NjE1OlxcdGVsc2UgaWYgKHZjcHUtXFx1MDAzZWFyY2gubm1pX2luamVjdGVkKVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NjE2OlxcdFxcdGt2bV94ODZfY2FsbChpbmplY3Rfbm1pKSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzYxNy1cXHRlbHNlIGlmICh2Y3B1LVxcdTAwM2VhcmNoLmludGVycnVwdC5pbmplY3RlZClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy03NzE0LVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NzE1OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nKSB7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3MTY6XFx0XFx0ciA9IGNhbl9pbmplY3QgPyBrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIHRydWUpIDpcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzcxNy1cXHRcXHRcXHRcXHQgLUVCVVNZO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3MjAtXFx0XFx0aWYgKHIpIHtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzcyMTpcXHRcXHRcXHQtLXZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmc7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3MjI6XFx0XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5ubWlfaW5qZWN0ZWQgPSB0cnVlO1xcbmFyY2gveDg2L2t2bS94ODYuYzo3NzIzOlxcdFxcdFxcdGt2bV94ODZfY2FsbChpbmplY3Rfbm1pKSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzcyNC1cXHRcXHRcXHRjYW5faW5qZWN0ID0gZmFsc2U7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3MjU6XFx0XFx0XFx0V0FSTl9PTihrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIHRydWUpIFxcdTAwM2MgMCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3MjYtXFx0XFx0fVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NzI3OlxcdFxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc3Mjg6XFx0XFx0ICAgIChrdm1feDg2X2NhbGwoc2V0X3ZubWlfcGVuZGluZykodmNwdSkpKVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NzI5OlxcdFxcdFxcdHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmctLTtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzczMDpcXHRcXHRpZiAodmNwdS1cXHUwMDNlYXJjaC5ubWlfcGVuZGluZylcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzczMTpcXHRcXHRcXHRrdm1feDg2X2NhbGwoZW5hYmxlX25taV93aW5kb3cpKHZjcHUpO1xcbmFyY2gveDg2L2t2bS94ODYuYy03NzMyLVxcdH1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy03NzgwLVxcbmFyY2gveDg2L2t2bS94ODYuYzo3NzgxOnN0YXRpYyB2b2lkIHByb2Nlc3Nfbm1pKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzc4Mi17XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzc5NC1cXHQgKi9cXG5hcmNoL3g4Ni9rdm0veDg2LmM6Nzc5NTpcXHRpZiAoa3ZtX3g4Nl9jYWxsKGdldF9ubWlfbWFzaykodmNwdSkgfHwgdmNwdS1cXHUwMDNlYXJjaC5ubWlfaW5qZWN0ZWQpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc3OTYtXFx0XFx0bGltaXQgPSAxO1xcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDEtXFx0ICogQWRqdXN0IHRoZSBsaW1pdCB0byBhY2NvdW50IGZvciBwZW5kaW5nIHZpcnR1YWwgTk1Jcywgd2hpY2ggYXJlbid0XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MDI6XFx0ICogdHJhY2tlZCBpbiB2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nLlxcbmFyY2gveDg2L2t2bS94ODYuYy03ODAzLVxcdCAqL1xcbmFyY2gveDg2L2t2bS94ODYuYzo3ODA0OlxcdGlmIChrdm1feDg2X2NhbGwoaXNfdm5taV9wZW5kaW5nKSh2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgwNS1cXHRcXHRsaW1pdC0tO1xcbmFyY2gveDg2L2t2bS94ODYuYy03ODA2LVxcbmFyY2gveDg2L2t2bS94ODYuYzo3ODA3OlxcdHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgKz0gYXRvbWljX3hjaGcoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gubm1pX3F1ZXVlZCwgMCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MDg6XFx0dmNwdS1cXHUwMDNlYXJjaC5ubWlfcGVuZGluZyA9IG1pbih2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nLCBsaW1pdCk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTc4MDktXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTA6XFx0aWYgKHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL3g4Ni9rdm0veDg2LmM6NzgxMTpcXHQgICAgKGt2bV94ODZfY2FsbChzZXRfdm5taV9wZW5kaW5nKSh2Y3B1KSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTI6XFx0XFx0dmNwdS1cXHUwMDNlYXJjaC5ubWlfcGVuZGluZy0tO1xcbmFyY2gveDg2L2t2bS94ODYuYy03ODEzLVxcbmFyY2gveDg2L2t2bS94ODYuYzo3ODE0OlxcdGlmICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nKVxcbmFyY2gveDg2L2t2bS94ODYuYy03ODE1LVxcdFxcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9FVkVOVCwgdmNwdSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgxOC0vKiBSZXR1cm4gdG90YWwgbnVtYmVyIG9mIE5NSXMgcGVuZGluZyBpbmplY3Rpb24gdG8gdGhlIFZNICovXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MTk6aW50IGt2bV9nZXRfbnJfcGVuZGluZ19ubWlzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgyMC17XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjc4MjE6XFx0cmV0dXJuIHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgK1xcbmFyY2gveDg2L2t2bS94ODYuYzo3ODIyOlxcdCAgICAgICBrdm1feDg2X2NhbGwoaXNfdm5taV9wZW5kaW5nKSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtNzgyMy19XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODA1ND1zdGF0aWMgaW50IHZjcHVfZW50ZXJfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgxNTQtXFx0XFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfTk1JLCB2Y3B1KSlcXG5hcmNoL3g4Ni9rdm0veDg2LmM6ODE1NTpcXHRcXHRcXHRwcm9jZXNzX25taSh2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0veDg2LmMtODE1Ni1cXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9JT0FQSUNfRU9JX0VYSVQsIHZjcHUpKSB7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9ODUxMz1ib29sIGt2bV92Y3B1X2hhc19ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1MjUtXFx0aWYgKGt2bV90ZXN0X3JlcXVlc3QoS1ZNX1JFUV9OTUksIHZjcHUpIHx8XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1MjY6XFx0ICAgICh2Y3B1LVxcdTAwM2VhcmNoLm5taV9wZW5kaW5nIFxcdTAwMjZcXHUwMDI2XFxuYXJjaC94ODYva3ZtL3g4Ni5jOjg1Mjc6XFx0ICAgICBrdm1feDg2X2NhbGwobm1pX2FsbG93ZWQpKHZjcHUsIGZhbHNlKSkpXFxuYXJjaC94ODYva3ZtL3g4Ni5jLTg1MjgtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmM9OTI3Nj1zdGF0aWMgaW50IHN5bmNfcmVncyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtOTI5My0jZGVmaW5lIFBFUkZfTUVESUFURURfUE1VX01TRyBcXFxcXFxuYXJjaC94ODYva3ZtL3g4Ni5jOjkyOTQ6XFx0XFxcIkZhaWxlZCB0byBlbmFibGUgbWVkaWF0ZWQgdlBNVSwgdHJ5IGRpc2FibGluZyBzeXN0ZW0gd2lkZSBwZXJmIGV2ZW50cyBhbmQgbm1pX3dhdGNoZG9nLlxcXFxuXFxcIlxcbmFyY2gveDg2L2t2bS94ODYuYy05Mjk1LVxcbi0tXFxuYXJjaC94ODYva3ZtL3g4Ni5jPTk1MjQ9dm9pZCBrdm1fdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudClcXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYy05NTU1LVxcdHZjcHUtXFx1MDAzZWFyY2guc21pX2NvdW50ID0gMDtcXG5hcmNoL3g4Ni9rdm0veDg2LmM6OTU1NjpcXHRhdG9taWNfc2V0KFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLm5taV9xdWV1ZWQsIDApO1xcbmFyY2gveDg2L2t2bS94ODYuYzo5NTU3OlxcdHZjcHUtXFx1MDAzZWFyY2gubm1pX3BlbmRpbmcgPSAwO1xcbmFyY2gveDg2L2t2bS94ODYuYzo5NTU4OlxcdHZjcHUtXFx1MDAzZWFyY2gubm1pX2luamVjdGVkID0gZmFsc2U7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTk1NTktXFx0a3ZtX2NsZWFyX2ludGVycnVwdF9xdWV1ZSh2Y3B1KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6NDguMTI5MzA1Njg3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4NDYwMDA0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgS1ZNIEZ1enppbmcgU3RyYXRlZ3kqKlxuXG5Pa2F5LCBhZnRlciBzb21lIHJldmlldywgSSd2ZSB6ZXJvZWQgaW4gb24gdGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIHdpdGhpbiB0aGUgS1ZNIGh5cGVydmlzb3IuIEknbSBmZWVsaW5nIGNvbmZpZGVudCBhYm91dCBga3ZtX2luamVjdF9ubWlgLCBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLCBhbmQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxgLiBUaGV5IGFsbCBsb29rIGxpa2UgZXhjZWxsZW50IGZvY3VzIHN5bWJvbHMgZm9yIGluaXRpYWwgZnV6emluZyBlZmZvcnRzLiBJJ3ZlIG5vdGVkIHRoYXQgYGt2bV9nZXRfbnJfcGVuZGluZ19ubWlzYCBpcyBhbHNvIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLCBidXQgSSdsbCBrZWVwIHRoZSBmb2N1cyBvbiB0aGUgaW5pdGlhbCB0aHJlZS5cblxuQSBxdWljayByZXZpZXcgc3VnZ2VzdHMgYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AgZ2V0cyBjYWxsZWQgZnJvbSBgdmNwdV9lbnRlcl9ndWVzdGAsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGJ5IGB2Y3B1X3J1bmAsIGFuZCBmaW5hbGx5LCBgdmNwdV9ydW5gIGlzIGNhbGxlZCBieSBga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW5gLiBUaGlzIGNvbmZpcm1zIHRoYXQgYGt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuYCBpcyBhIHZlcnkgaW1wb3J0YW50IGVudHJ5IHBvaW50LCBwcm9iYWJseSAqdGhlKiBtYWluIG9uZSwgYW5kIEkgc2hvdWxkIGRlZmluaXRlbHkgaW5jbHVkZSB0aGF0LiBga3ZtX2luamVjdF9ubWlgIGlzIGFsc28gY3JpdGljYWwsIGdpdmVuIHRoZSBuYW1lLlxuXG5GaW5hbGx5LCBJJ20gdmVyaWZ5aW5nIHRoYXQgdGhlIGBLVk1gIGNvbmZpZ3VyYXRpb24gaXMgdGhlIHJpZ2h0IG9uZSB0byBlbmFibGUgS1ZNIGZ1bmN0aW9uYWxpdHkuIFllcywgYEtWTWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24sIHNvIEkgY2FuIHVzZSB0aGF0IHdpdGggY29uZmlkZW5jZSBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLlxuXG5TbywgaGVyZSdzIHdoYXQgSSd2ZSBnb3Q6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiBgdHJ1ZWAgKFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0KVxuKiAgICoqRm9jdXNTeW1ib2xzKio6IGBbXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3J1blwiLCBcImt2bV9hcmNoX3ZjcHVfaW9jdGxcIiwgXCJrdm1faW5qZWN0X25taVwiXWAgKHRoZXNlIGFyZSBteSBtYWluIHRhcmdldHMpXG4qICAgKipFbmFibGVDb25maWdzKio6IGBbXCJLVk1cIl1gICh0aGUgY29yZSBLVk0gY29uZmlndXJhdGlvbiBmbGFnKVxuXG5UaW1lIHRvIHdyaXRlIHRoZSByZXNwb25zZSBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjgzMSwiT3V0cHV0VG9rZW5zIjoxNTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjhUMjE6MjQ6NTQuOTc1MzA5MzM1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTUyNDA5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9hcmNoX3ZjcHVfaW9jdGxfcnVuXCIsXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsXCIsXG4gICAgXCJrdm1faW5qZWN0X25taVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOTUkgaW5qZWN0aW9uIGxvZ2ljIGluIEtWTSB4ODYsIHNwZWNpZmljYWxseSBpbiBga3ZtX2NoZWNrX2FuZF9pbmplY3RfZXZlbnRzYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEtWTSBleGVjdXRpb24gbG9vcCB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyAoZS5nLiwgS1ZNX1JVTiwgS1ZNX05NSSkuIEl0IHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIHZ1bG5lcmFiaWxpdGllcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fYXJjaF92Y3B1X2lvY3RsX3J1blwiLFxuICAgIFwia3ZtX2FyY2hfdmNwdV9pb2N0bFwiLFxuICAgIFwia3ZtX2luamVjdF9ubWlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgTk1JIGluamVjdGlvbiBsb2dpYyBpbiBLVk0geDg2LCBzcGVjaWZpY2FsbHkgaW4gYGt2bV9jaGVja19hbmRfaW5qZWN0X2V2ZW50c2AuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBLVk0gZXhlY3V0aW9uIGxvb3AgdGhhdCBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgKGUuZy4sIEtWTV9SVU4sIEtWTV9OTUkpLiBJdCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciB2dWxuZXJhYmlsaXRpZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow5kdl5[1] Phase: Succeeded StartedAt: 2026-07-28 21:25:06 +0000 UTC FinishedAt: 2026-07-28 21:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-28 21:25:06 +0000 UTC FinishedAt: 2026-07-28 21:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2] Phase: Succeeded StartedAt: 2026-07-28 21:25:06 +0000 UTC FinishedAt: 2026-07-28 22:22:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-28 21:25:06 +0000 UTC FinishedAt: 2026-07-28 22:22:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-28 21:25:06 +0000 UTC FinishedAt: 2026-07-28 21:25:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-28 21:25:06 +0000 UTC FinishedAt: 2026-07-28 21:25:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow5kdl5/series-workflow5kdl5-convert-artifact-3178765675/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-28 21:25:16 +0000 UTC FinishedAt: 2026-07-28 21:51:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-28 21:25:16 +0000 UTC FinishedAt: 2026-07-28 21:51:17 +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:*9c1dba0b-0b59-4bb7-8f9b-d0f64d1b6883,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-workflow5kdl5/series-workflow5kdl5-convert-artifact-3178765675/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": "1f790f24-f2ef-4716-945f-2698ba5c933f", "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-workflow5kdl5/series-workflow5kdl5-build-action-2224722281/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-28 21:25:16 +0000 UTC FinishedAt: 2026-07-28 21:50:55 +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:*9c1dba0b-0b59-4bb7-8f9b-d0f64d1b6883,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-workflow5kdl5/series-workflow5kdl5-convert-artifact-3178765675/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": "1f790f24-f2ef-4716-945f-2698ba5c933f", "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-workflow5kdl5/series-workflow5kdl5-build-action-2224722281/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-28 21:51:17 +0000 UTC FinishedAt: 2026-07-28 21:51:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-28 21:51:17 +0000 UTC FinishedAt: 2026-07-28 21:51:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-28 21:51:17 +0000 UTC FinishedAt: 2026-07-28 21:51:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-28 21:51:17 +0000 UTC FinishedAt: 2026-07-28 21:51:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow5kdl5/series-workflow5kdl5-convert-artifact-982810434/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-28 21:51:27 +0000 UTC FinishedAt: 2026-07-28 22:22:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-28 21:51:27 +0000 UTC FinishedAt: 2026-07-28 22:22:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1f790f24-f2ef-4716-945f-2698ba5c933f,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-workflow5kdl5/series-workflow5kdl5-build-action-2224722281/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": false },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-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-07-28 22:22:39 +0000 UTC FinishedAt: 2026-07-28 22:22:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5kdl5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_arch_vcpu_ioctl_run","kvm_arch_vcpu_ioctl","kvm_inject_nmi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d33d21e47d9dc66f91e44da3fc9220c74d93df7","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"946cf8e5-ef1a-4a02-b62a-198bac69f330","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-07-28 22:22:39 +0000 UTC FinishedAt: 2026-07-28 22:22:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}