Name: series-workflowvfvpb Phase: Succeeded StartedAt: 2026-08-27 11:43:46 +0000 UTC FinishedAt: 2026-08-27 16:27:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[0] Phase: Succeeded StartedAt: 2026-08-27 11:43:46 +0000 UTC FinishedAt: 2026-08-27 12:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 11:43:46 +0000 UTC FinishedAt: 2026-08-27 12:50:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "e228f19f-0bb7-440a-8944-001a60e148c8" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_vm_ioctl_register_coalesced_mmio" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXHUwMDNlc2l6ZWAgYW5kIGB6b25lLVx1MDAzZWFkZHIgJiM0Mzsgem9uZS1cdTAwM2VzaXplYCBpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKClgLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBvciBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgcmVzdWx0IGZyb20gaW50ZWdlciBvdmVyZmxvdy4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaXplIGFuZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIHRvIHRoZSBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU8gaW9jdGwgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBidWcgaW4gY29yZSBLVk0gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQwYmFhMWYyZmY2NTNhODQwM2IxYTczZTUxM2JiZGU2OWZlZjc2NjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxMjo0NTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jIGIvdmlydC9rdm0vY29hbGVzY2VkX21taW8uY1xuaW5kZXggNmIxZDkwMTYxMDk5OC4uZmNhZGJmNmVlNmM5ZSAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcbkBAIC0xMjgsNiAmIzQzOzEyOCw5IEBAIGludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxuIFx0aWYgKHpvbmUtXHUwMDNlcGlvICE9IDEgXHUwMDI2XHUwMDI2IHpvbmUtXHUwMDNlcGlvICE9IDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmICh6b25lLVx1MDAzZXNpemUgXHUwMDNlIElOVF9NQVggfHwgem9uZS1cdTAwM2VhZGRyICYjNDM7IHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2Mgem9uZS1cdTAwM2VhZGRyKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb19kZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIWRldilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2l6ZSBhbmQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayB0byB0aGUgS1ZNX1JFR0lTVEVSX0NPQUxFU0NFRF9NTUlPIGlvY3RsIGhhbmRsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgYnVnIGluIGNvcmUgS1ZNIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMGJhYTFmMmZmNjUzYTg0MDNiMWE3M2U1MTNiYmRlNjlmZWY3NjYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjcgMTI6NDU6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jIGIvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYwppbmRleCA2YjFkOTAxNjEwOTk4Li5mY2FkYmY2ZWU2YzllIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jCiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMKQEAgLTEyOCw2ICYjNDM7MTI4LDkgQEAgaW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sCiAJaWYgKHpvbmUtJmd0O3BpbyAhPSAxICZhbXA7JmFtcDsgem9uZS0mZ3Q7cGlvICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWlmICh6b25lLSZndDtzaXplICZndDsgSU5UX01BWCB8fCB6b25lLSZndDthZGRyICYjNDM7IHpvbmUtJmd0O3NpemUgJmx0OyB6b25lLSZndDthZGRyKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb19kZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJaWYgKCFkZXYpCiAJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI2CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIENvYWxlc2NlZCBNTUlPIFJlZ2lzdHJhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgYWRkaW5nIGEgc2l6ZSBjaGVjayBpbnRvIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW9gIHdpdGhpbiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AuIEltbWVkaWF0ZWx5LCBteSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcg4oCTIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGdvb2QsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogYmVoaW5kIGl0LiBJdCBsb29rcyBsaWtlIHRoZSBjaGVjayBpcyBgem9uZS0mZ3Q7c2l6ZSAmZ3Q7IElOVF9NQVggfHwgem9uZS0mZ3Q7YWRkciAmIzQzOyB6b25lLSZndDtzaXplICZsdDsgem9uZS0mZ3Q7YWRkcmAuIEkgc2VlIHdoYXQgdGhleSYjMzk7cmUgZG9pbmc6IHByZXZlbnRpbmcgaW50ZWdlciBvdmVyZmxvdyBhbmQgZGV0ZWN0aW5nIGEgbmVnYXRpdmUgc2l6ZSBkdXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBvZiBjb2FsZXNjZWQgTU1JTyByZWdpb25zIHdpdGhpbiBLVk0uIFRoaXMgaXMgYSBzb2xpZCBhcHByb2FjaCB0byBoYXJkZW5pbmcgdGhlIGNvZGUuIEdvdHRhIGtlZXAgdGhvc2UgY29ybmVyIGNhc2VzIGluIG1pbmQuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgZmFtaWxpYXJpemUgbXlzZWxmIGFnYWluIHdpdGggYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AgaXRzZWxmLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGU7IGl04oCZcyB0aGUgaW9jdGwgaGFuZGxlciBmb3IgS1ZNLiBBbHJpZ2h0LCB0aW1lIHRvIHRyYWNlIGRvd24gd2hlcmUgZWxzZSB0aGlzIGlzIHVzZWQgaW4gdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0vY29hbGVzY2VkX21taW8uYz0xMTY9dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYy0xMjEtXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jOjEyMjppbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMtMTIzLVx0XHRcdFx0XHQgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MjMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIG15IGNvZGUgYXMgdGhlIGV4cGVydCBJIGFtOgoKKipUcmFjaW5nIHRoZSBGdW5jdGlvbiBDYWxscyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlJiMzOTtzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmJlaW5nIHVzZWQqPyYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gS25vd2luZyB0aGUgY2FsbCBsb2NhdGlvbnMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gaGVyZSwgc2VlIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIHNwZWNpZmljIGJsb2NrIG9mIGNvZGUgdG8gZXhlY3V0ZS4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIGlzIHRoZSBiZXN0IHdheSB0byBncmFzcCBpdHMgb3ZlcmFsbCBiZWhhdmlvdXIuIExldOKAmXMgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jPTExNj12b2lkIGt2bV9jb2FsZXNjZWRfbW1pb19mcmVlKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMS1cbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmM6MTIyOmludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYy0xMjMtXHRcdFx0XHRcdCBzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgKnpvbmUpXG4tLVxudmlydC9rdm0vY29hbGVzY2VkX21taW8uaD0yNj12b2lkIGt2bV9jb2FsZXNjZWRfbW1pb19mcmVlKHN0cnVjdCBrdm0gKmt2bSk7XG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5oOjI3OmludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uaC0yOC1cdFx0XHRcdFx0c3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTUxNjc9c3RhdGljIGxvbmcga3ZtX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTI1MC1cdFx0XHRnb3RvIG91dDtcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTI1MTpcdFx0ciA9IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhrdm0sIFx1MDAyNnpvbmUpO1xudmlydC9rdm0va3ZtX21haW4uYy01MjUyLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTgzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1ZNIElvY3RsIENhbGwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHNvbWV0aGluZyBjb21pbmcgZnJvbSBga3ZtX3ZtX2lvY3RsYCB3aXRoaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBjb3JlIEtWTSBpb2N0bCDigJMgZGVmaW5pdGVseSBzb21ldGhpbmcgaW1wb3J0YW50IHRvIHBlcmZvcm1hbmNlIG9yIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBLVk0gaHlwZXJ2aXNvci4gTXkgZ3V0IGZlZWxpbmcsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBpcyB0aGF0IHRoaXMgaW9jdGwgaXMgbGlrZWx5IGBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU9gLiBUbyBjb25maXJtLCBJIHNob3VsZCB6ZXJvIGluIG9uIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhcm91bmQgbGluZSA1MjUxLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZGV0YWlscyBvbiB0aGUgaW9jdGwgaW4gcXVlc3Rpb24gYW5kIGl0cyBhc3NvY2lhdGVkIHBhcmFtZXRlcnMgb3IgYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUyNDA6XHRcdFx0ciA9IGt2bV92bV9pb2N0bF9jbGVhcl9kaXJ0eV9sb2coa3ZtLCBcdTAwMjZsb2cpO1xuNTI0MTpcdFx0XHRicmVhaztcbjUyNDI6XHRcdH1cbjUyNDM6XHQjZW5kaWZcbjUyNDQ6XHQjaWZkZWYgQ09ORklHX0tWTV9NTUlPXG41MjQ1Olx0XHRjYXNlIEtWTV9SRUdJU1RFUl9DT0FMRVNDRURfTU1JTzoge1xuNTI0NjpcdFx0XHRzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgem9uZTtcbjUyNDc6XHRcbjUyNDg6XHRcdFx0ciA9IC1FRkFVTFQ7XG41MjQ5Olx0XHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZ6b25lLCBhcmdwLCBzaXplb2Yoem9uZSkpKVxuNTI1MDpcdFx0XHRcdGdvdG8gb3V0O1xuNTI1MTpcdFx0XHRyID0ga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKGt2bSwgXHUwMDI2em9uZSk7XG41MjUyOlx0XHRcdGJyZWFrO1xuNTI1MzpcdFx0fVxuNTI1NDpcdFx0Y2FzZSBLVk1fVU5SRUdJU1RFUl9DT0FMRVNDRURfTU1JTzoge1xuNTI1NTpcdFx0XHRzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgem9uZTtcbjUyNTY6XHRcbjUyNTc6XHRcdFx0ciA9IC1FRkFVTFQ7XG41MjU4Olx0XHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZ6b25lLCBhcmdwLCBzaXplb2Yoem9uZSkpKVxuNTI1OTpcdFx0XHRcdGdvdG8gb3V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBNTUlPIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgZm9jdXMgaXMgYENPTkZJR19LVk1fTU1JT2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHRoZSBicm9hZGVyIGNvbnRleHQuIFdoZXJlICppcyogdGhpcyBkZWZpbmVkPyBJIG5lZWQgdG8gdHJhY2UgaXRzIG9yaWdpbnMgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gTW9yZSBpbXBvcnRhbnRseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gRG9lcyBpdCByZWx5IG9uIG90aGVyIHNldHRpbmdzIGJlaW5nIGVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBlbmFibGluZyBpdCwgb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgd2lsbCB3b3JrPyBUaGlzIGtpbmQgb2YgZGVwZW5kZW5jeSBhbmFseXNpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHN5c3RlbSBpbXBsaWNhdGlvbnMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fTU1JTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc2Vhc29uZWQgZXhwZXJ0OgoKKipLVk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgdGhpcyBsb29rcyBsaWtlIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF04oCZcyBwcm9iYWJseSBiZWluZyBkZXRlcm1pbmVkIGJ5IHRoZSBLVk0gc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYHZpcnQva3ZtL0tjb25maWdgLiBBbmQsIGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSBhbmQgdGhlIGNvbnRleHQsIEnigJltIGJldHRpbmcgdGhlIHJlbGV2YW50IHNlY3Rpb24gaXMgc29tZXdoZXJlIGFyb3VuZCBsaW5lIDQzLiBUaW1lIHRvIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDt2aXJ0L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzNTpcdCAgICAgICBzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR1xuICAzNjpcdFxuICAzNzpcdCMgQWxsb3cgZW5hYmxpbmcgYm90aCB0aGUgZGlydHkgYml0bWFwIGFuZCBkaXJ0eSByaW5nLiBPbmx5IGFyY2hpdGVjdHVyZXNcbiAgMzg6XHQjIHRoYXQgbmVlZCB0byBkaXJ0eSBtZW1vcnkgb3V0c2lkZSBvZiBhIHZDUFUgY29udGV4dCBzaG91bGQgc2VsZWN0IHRoaXMuXG4gIDM5Olx0Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcbiAgNDA6XHRcdGJvb2xcbiAgNDE6XHRcdGRlcGVuZHMgb24gSEFWRV9LVk1fRElSVFlfUklOR1xuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBLVk1fTU1JT1xuICA0NDpcdCAgICAgICBib29sXG4gIDQ1Olx0XG4gIDQ2Olx0Y29uZmlnIEtWTV9BU1lOQ19QRlxuICA0NzpcdCAgICAgICBib29sXG4gIDQ4Olx0XG4gIDQ5Olx0IyBUb2dnbGUgdG8gc3dpdGNoIGJldHdlZW4gZGlyZWN0IG5vdGlmaWNhdGlvbiBhbmQgYmF0Y2ggam9iXG4gIDUwOlx0Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG4gIDUxOlx0ICAgICAgIGJvb2xcbiAgNTI6XHRcbiAgNTM6XHRjb25maWcgSEFWRV9LVk1fTVNJXG4gIDU0Olx0ICAgICAgIGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ4NwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIEtWTV9NTUlPIFNlbGVjdGlvbiBQcm9jZXNzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gJiMzNDtMZXQmIzM5O3Mgc2VlIHdoYXQgc2VsZWN0cyBgS1ZNX01NSU9gLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyBkcml2aW5nIHRoZSBkZWNpc2lvbiB0byB1c2UgTU1JTyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudD8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciwgdGhlIHJhdGlvbmFsZSwgdGhlIGNpcmN1bXN0YW5jZXMgdGhhdCBsZWFkIHRvIHRoZSBzeXN0ZW0gY2hvb3NpbmcgdGhhdCBwYXJ0aWN1bGFyIG1ldGhvZCBmb3IgZ3Vlc3QgbWVtb3J5IGFjY2Vzcy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbGF5ZXJzIGludm9sdmVkIOKAkyBpcyBpdCBpbml0aWF0ZWQgYnkgdGhlIGd1ZXN0IGtlcm5lbCBpdHNlbGYsIHRoZSBoeXBlcnZpc29yLCBvciBwb3RlbnRpYWxseSBhIGNvbWJpbmF0aW9uPyBBcmUgdGhlcmUgc3BlY2lmaWMgZ3Vlc3QgY29uZmlndXJhdGlvbnMsIGRldmljZSBtb2RlbHMsIG9yIHZpcnR1YWxpemF0aW9uIGZlYXR1cmVzIHRoYXQgaGVhdmlseSBpbmZsdWVuY2UgdGhpcyBjaG9pY2U/IEFyZSB0aGVyZSBwYXJ0aWN1bGFyIGd1ZXN0IGFyY2hpdGVjdHVyZXMgdGhhdCBmYXZvciBNTUlPLCBvciBpcyBpdCBtb3JlIG9mIGEgZmFsbGJhY2sgbWVjaGFuaXNtPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUgcmVsZXZhbnQga2VybmVsIHNvdXJjZSB0cmVlcyBmb3IgcmVmZXJlbmNlcyB0byB0aGF0IGNvbnN0YW50LCBsb29raW5nIGZvciBjYWxsIHNpdGVzLCBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBhbmQgYW55IHJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGBLVk1fTU1JT2AgaXMgdWx0aW1hdGVseSBzZWxlY3RlZC4gVW5kZXJzdGFuZGluZyB0aGUgc2VsZWN0aW9uIGNyaXRlcmlhIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgb3ZlcmFsbCBLVk0gcGVyZm9ybWFuY2UuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBtZW1vcnkgYWNjZXNzIHRlY2huaXF1ZXMgbGlrZSBQViwgZW11bGF0ZWQgZGV2aWNlcywgZXRjLiwgYW5kIHRvIHdoYXQgZXh0ZW50IGl0JiMzOTtzIG9wdGltaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IEtWTV9NTUlPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MjA9bWVudWNvbmZpZyBLVk1cbi0tXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTI0LVx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjU6XHRzZWxlY3QgS1ZNX01NSU9cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjYtXHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTMwLVx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzozMTpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMzItXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTg9Y29uZmlnIEtWTVxuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0yNC1cdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoyNTpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9taXBzL2t2bS9LY29uZmlnLTI2LVx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTI5PWNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzEtXHRzZWxlY3QgS1ZNX0JPT0szU19IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzI6XHRzZWxlY3QgS1ZNX01NSU9cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9Mzg9Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOS1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0MDpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQxLVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOTg9Y29uZmlnIEtWTV9FNTAwVjJcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjAyLVx0c2VsZWN0IEtWTVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwMzpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIwNC1cdGhlbHBcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MjEzPWNvbmZpZyBLVk1fRTUwME1DXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNy1cdHNlbGVjdCBLVk1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTg6XHRzZWxlY3QgS1ZNX01NSU9cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTktXHRzZWxlY3QgS1ZNX0JPT0tFX0hWXG4tLVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0yMD1jb25maWcgS1ZNXG4tLVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0zMC1cdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzozMTpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0zMi1cdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTIwPWNvbmZpZyBLVk1fWDg2XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMzQtXHRzZWxlY3QgVVNFUl9SRVRVUk5fTk9USUZJRVJcbmFyY2gveDg2L2t2bS9LY29uZmlnOjM1Olx0c2VsZWN0IEtWTV9NTUlPXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0zNi1cdHNlbGVjdCBTQ0hFRF9JTkZPXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2OTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgS1ZNIENvYWxlc2NlZCBNTUlPIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gaXMgdGhlIGtleSBoZXJlIGZvciB4ODYuIEkgbmVlZCB0byB6ZXJvIGluIG9uIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW9gIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBJIHNob3VsZCBiZSBmb2N1c2luZyBvbi4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBzZWxlY3RlZCBieSBgS1ZNYCBvciBgS1ZNX1g4NmAsIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgdGhlIGNvbmZpZyBJIGFjdHVhbGx5IG5lZWQsIGJ1dCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdC4KCkZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzLiBJdCBzZWVtcyB0aGF0IGBLVk1gIGFsb25lIGlzIHN1ZmZpY2llbnQsIHRob3VnaCBJJiMzOTtsbCBiZSB0aG9yb3VnaC4KClRoaXMgcGF0Y2ggaXMgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoYXQgem9uZSBzaXplIGNhbGN1bGF0aW9uIChgem9uZS0mZ3Q7c2l6ZSAmZ3Q7IElOVF9NQVggfHwgem9uZS0mZ3Q7YWRkciAmIzQzOyB6b25lLSZndDtzaXplICZsdDsgem9uZS0mZ3Q7YWRkcmApLiBUaGF0IG1ha2VzIGl0ICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLCBhbmQgSSBzaG91bGQgYWRkIGl0IHRvIG15IGZ1enppbmcgcXVldWUgaW1tZWRpYXRlbHkuCgpNeSBmb2N1cyBzaG91bGQgYmUgb24gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AsIGFuZCB0aGUgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGVuYWJsZSBhcmUgYEtWTWAuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGZ1bmN0aW9uIGlzIHN0YXRpYyBvciBpbmxpbmUuIEkgc2VlIGl0IGRlZmluZWQgaW4gYHZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNgIGFzIGBpbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKWAgYW5kIGV4cG9ydGVkIGluIGB2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5oYC4gU28sIGl0JiMzOTtzIG5vdCBzdGF0aWMgYW5kIGl0JiMzOTtzIG5vdCBpbmxpbmUsIHdoaWNoIGNoYW5nZXMgdGhlIGltcGxpY2F0aW9ucyBvZiBob3cgSSBpbnRlcmFjdCB3aXRoIGl0LgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIGBLVk1gIGlzIHRoZSBvbmx5IGNvbmZpZyBuZWVkZWQuIE9uIHg4NiwgaXQmIzM5O3MgYEtWTWAuIEJ1dCB3YWl0LCBvbiB4ODYsIGlzbiYjMzk7dCBgS1ZNYCBhIG1lbnVjb25maWcgYW5kIGBLVk1fWDg2YCB0aGUgYWN0dWFsIGNvbmZpZz8gSSBuZWVkIHRvIGNoZWNrIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTc0LVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mzpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5My1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDg6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTc6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzM6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NTgKCQkJCQkJCW91dHB1dDogMTA2CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzcyBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKktWTSBDb25maWd1cmF0aW9uIC0gQ29uZmlybWVkIGFuZCBBY3Rpb25hYmxlKioKCkFscmlnaHQsIHRoYXQmIzM5O3Mgd2hhdCBJIHN1c3BlY3RlZC4gQ29uZmlybWVkOiBgS1ZNYCBpcyBpbmRlZWQgdGhlIGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBHb29kLiBOb3cgd2UmIzM5O3JlIGdldHRpbmcgc29tZXdoZXJlLiBXaXRoIHRoYXQgc2V0dGxlZCwgaXQmIzM5O3MgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMuIE5vIG1vcmUgZGl0aGVyaW5nLCB0aW1lIHRvIHB1dCB0aGF0IGNvbmZpZyBpbnRvIHBsYWNlLiBMZXQmIzM5O3MgZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpemUgYW5kIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgdG8gdGhlIEtWTV9SRUdJU1RFUl9DT0FMRVNDRURfTU1JTyBpb2N0bCBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIGJ1ZyBpbiBjb3JlIEtWTSBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpemUgYW5kIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgdG8gdGhlIEtWTV9SRUdJU1RFUl9DT0FMRVNDRURfTU1JTyBpb2N0bCBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIGJ1ZyBpbiBjb3JlIEtWTSBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXHUwMDNlc2l6ZWAgYW5kIGB6b25lLVx1MDAzZWFkZHIgJiM0Mzsgem9uZS1cdTAwM2VzaXplYCBpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKClgLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBvciBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgcmVzdWx0IGZyb20gaW50ZWdlciBvdmVyZmxvdy4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQwYmFhMWYyZmY2NTNhODQwM2IxYTczZTUxM2JiZGU2OWZlZjc2NjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAxMjo0NTo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMgYi92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jCmluZGV4IDZiMWQ5MDE2MTA5OTguLmZjYWRiZjZlZTZjOWUgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYwpAQCAtMTI4LDYgJiM0MzsxMjgsOSBAQCBpbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSwKIAlpZiAoem9uZS0mZ3Q7cGlvICE9IDEgJmFtcDsmYW1wOyB6b25lLSZndDtwaW8gIT0gMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJaWYgKHpvbmUtJmd0O3NpemUgJmd0OyBJTlRfTUFYIHx8IHpvbmUtJmd0O2FkZHIgJiM0Mzsgem9uZS0mZ3Q7c2l6ZSAmbHQ7IHpvbmUtJmd0O2FkZHIpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX2RldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlpZiAoIWRldikKIAkJcmV0dXJuIC1FTk9NRU07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDIzCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29hbGVzY2VkIE1NSU8gWm9uZSBSZWdpc3RyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYm91bmRzIGNoZWNrIHdpdGhpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBpbiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhpcyBjaGVjazoKCmBgYGMKCWlmICh6b25lLSZndDtzaXplICZndDsgSU5UX01BWCB8fCB6b25lLSZndDthZGRyICYjNDM7IHpvbmUtJmd0O3NpemUgJmx0OyB6b25lLSZndDthZGRyKQoJCXJldHVybiAtRUlOVkFMOwpgYGAKClJpZ2h0LCBhIHByZXR0eSBzdGFuZGFyZCBib3VuZHMgYW5kIG92ZXJmbG93IGNoZWNrIG9uIGB6b25lLSZndDtzaXplYCBhbmQgYHpvbmUtJmd0O2FkZHIgJiM0Mzsgem9uZS0mZ3Q7c2l6ZWAuIEl0JiMzOTtzIGRlc2lnbmVkIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgb3IgZXhjZXNzaXZlbHkgbGFyZ2Ugc2l6ZXMgZm9yIHRoZSBtZW1vcnkgem9uZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJbnRlZ2VyIG92ZXJmbG93cyBhbmQgZXhjZXNzaXZlbHkgbGFyZ2Ugc2l6ZXMgdHlwaWNhbGx5IGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggS0FTQU4gd291bGQgY2F0Y2guIEJ1dCBpcyB0aGVyZSBhIHBvdGVudGlhbCByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGhlcmU/CgpMZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBob3cgYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AgYWN0dWFsbHkgKnVzZXMqIHRoaXMgYHpvbmVgLiBUaGUgZnVuY3Rpb24gdGFrZXMgYSBgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lYCBhcyBpbnB1dCwgd2hpY2ggY29tZXMgZnJvbSB1c2Vyc3BhY2UgdmlhIGFuIGlvY3RsIGNhbGwsIHdoaWNoIGlzIGFsd2F5cyBhIHJlZCBmbGFnIGFzIGl0JiMzOTtzIHRoZSBnYXRld2F5IGZvciB2dWxuZXJhYmlsaXR5LiBTbywgdGhlIHBhdGNoIGlzIGJhc2ljYWxseSB0cnlpbmcgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNvbXB1dGluZyB0aGUgem9uZSYjMzk7cyBlbmQgYWRkcmVzcyBvciB3aGVuIGRlYWxpbmcgd2l0aCBhIHJlYWxseSBsYXJnZSBgem9uZS0mZ3Q7c2l6ZWAuIFRoaXMgaXMgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3IgaW50ZWdlciBvdmVyZmxvdyBzY2VuYXJpb3MuIEtBU0FOIGlzIHRoZSByaWdodCB0b29sIHRvIGRlYWwgd2l0aCBvdXQtb2YtYm91bmRzIGlzc3VlcywgYW5kIEtNU0FOIHdvdWxkIGJlIG5lZWRlZCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnksIHJpZ2h0PyBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AgYWdhaW4gd2l0aGluIGB2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jYCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmM9MTE2PXZvaWQga3ZtX2NvYWxlc2NlZF9tbWlvX2ZyZWUoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMtMTIxLVxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYzoxMjI6aW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMy1cdFx0XHRcdFx0IHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkmIzM5O20gZ29pbmcgdG8gZ3JhYiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AgYW5kIHplcm8gaW4gYXJvdW5kIGxpbmUgMTIyLiBJIHdhbnQgdG8gc2VlIHdoYXQgdGhhdCBzZWN0aW9uIGlzIGhhbmRsaW5nIHdpdGhpbiB0aGUgY29hbGVzY2VkIE1NSU8gaW1wbGVtZW50YXRpb24uIEkgZXhwZWN0IEkgd2lsbCBsaWtlbHkgZmluZCBzb21lIG9mIHRoZSBjb3JlIGxvZ2ljIHJlZ2FyZGluZyBNTUlPIGNvYWxlc2NpbmcsIHBlcmhhcHMgZGVhbGluZyB3aXRoIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBtZXJnaW5nIG9yIHNwbGl0dGluZyBvZiByZXF1ZXN0cywgb3Igc29tZSBhc3BlY3RzIG9mIHRoZSBjYWNoZSBtYW5hZ2VtZW50IGFzc29jaWF0ZWQgd2l0aCBNTUlPIGluIHRoZSBLVk0gdmlydHVhbGl6YXRpb24gY29udGV4dC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaGFuZGxlcyB0aGUgZWZmaWNpZW5jeSBhbmQgY29ycmVjdG5lc3Mgb2YgTU1JTyBvcGVyYXRpb25zLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UuIEkgd2lsbCBiZSBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ3Vlc3QgYW5kIGhvc3QgZm9yIE1NSU8gb3BlcmF0aW9ucy4gSSBhbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBhbnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW52b2x2ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0vY29hbGVzY2VkX21taW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTE1Olx0XG4gMTE2Olx0dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pXG4gMTE3Olx0e1xuIDExODpcdFx0aWYgKGt2bS1cdTAwM2Vjb2FsZXNjZWRfbW1pb19yaW5nKVxuIDExOTpcdFx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVx1MDAzZWNvYWxlc2NlZF9tbWlvX3JpbmcpO1xuIDEyMDpcdH1cbiAxMjE6XHRcbiAxMjI6XHRpbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcbiAxMjM6XHRcdFx0XHRcdFx0IHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcbiAxMjQ6XHR7XG4gMTI1Olx0XHRpbnQgcmV0O1xuIDEyNjpcdFx0c3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb19kZXYgKmRldjtcbiAxMjc6XHRcbiAxMjg6XHRcdGlmICh6b25lLVx1MDAzZXBpbyAhPSAxIFx1MDAyNlx1MDAyNiB6b25lLVx1MDAzZXBpbyAhPSAwKVxuIDEyOTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxMzA6XHRcbiAxMzE6XHRcdGlmICh6b25lLVx1MDAzZXNpemUgXHUwMDNlIElOVF9NQVggfHwgem9uZS1cdTAwM2VhZGRyICYjNDM7IHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2Mgem9uZS1cdTAwM2VhZGRyKVxuIDEzMjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxMzM6XHRcbiAxMzQ6XHRcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fZGV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIDEzNTpcdFx0aWYgKCFkZXYpXG4gMTM2Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEzNzpcdFxuIDEzODpcdFx0a3ZtX2lvZGV2aWNlX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXHUwMDI2Y29hbGVzY2VkX21taW9fb3BzKTtcbiAxMzk6XHRcdGRldi1cdTAwM2Vrdm0gPSBrdm07XG4gMTQwOlx0XHRkZXYtXHUwMDNlem9uZSA9ICp6b25lO1xuIDE0MTpcdFxuIDE0MjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4gMTQzOlx0XHRyZXQgPSBrdm1faW9fYnVzX3JlZ2lzdGVyX2Rldihrdm0sXG4gMTQ0Olx0XHRcdFx0XHR6b25lLVx1MDAzZXBpbyA/IEtWTV9QSU9fQlVTIDogS1ZNX01NSU9fQlVTLFxuIDE0NTpcdFx0XHRcdFx0em9uZS1cdTAwM2VhZGRyLCB6b25lLVx1MDAzZXNpemUsIFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuIDE0NjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAxNDc6XHRcdFx0Z290byBvdXRfZnJlZV9kZXY7XG4gMTQ4Olx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRldi1cdTAwM2VsaXN0LCBcdTAwMjZrdm0tXHUwMDNlY29hbGVzY2VkX3pvbmVzKTtcbiAxNDk6XHRcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4gMTUwOlx0XG4gMTUxOlx0XHRyZXR1cm4gMDtcbiAxNTI6XHRcbiAxNTM6XHRvdXRfZnJlZV9kZXY6XG4gMTU0Olx0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuIDE1NTpcdFx0a2ZyZWUoZGV2KTtcbiAxNTY6XHRcbiAxNTc6XHRcdHJldHVybiByZXQ7XG4gMTU4Olx0fVxuIDE1OTpcdFxuIDE2MDpcdGludCBrdm1fdm1faW9jdGxfdW5yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXG4gMTYxOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcbiAxNjI6XHR7XG4gMTYzOlx0XHRzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX2RldiAqZGV2LCAqdG1wO1xuIDE2NDpcdFx0aW50IHI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNjQKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFZ1bG5lcmFiaWxpdHkgYW5kIEtNU0FOIEFwcGxpY2FiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUmIzM5O3MgbXkgdGFrZS4gSXQmIzM5O3MgYWRkaW5nIGFuIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgb24gYHpvbmUtJmd0O3NpemVgIGFuZCBgem9uZS0mZ3Q7YWRkciAmIzQzOyB6b25lLSZndDtzaXplYCB3aXRoaW4gdGhlIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAgZnVuY3Rpb24uIFRoZSBpbnRlbnRpb24gaXMgY2xlYXJseSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCBvciBwb3RlbnRpYWxseSBpbmNvcnJlY3QgTU1JTyByZWdpb24gcmVnaXN0cmF0aW9ucywgdGhhdCBjb3VsZCBiZSBjYXVzZWQgYnkgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIG1lbW9yeSByZWdpb24gc2l6ZXMgb3IgYWRkcmVzc2VzLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhICpwb3RlbnRpYWwqIG1lbW9yeSBzYWZldHkgaXNzdWU7IGludGVnZXIgb3ZlcmZsb3dzIGNhbiBiZSBpbnNpZGlvdXMuIEhvd2V2ZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIEtNU0FOIGlzIHRoZSByaWdodCB0b29sIGhlcmUuCgpUaGUgY29yZSBvZiB0aGUgaXNzdWUgKmlzbiYjMzk7dCogdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0JiMzOTtzIG5vdCBhYm91dCBsZWFraW5nIGRhdGEgb3IgdHJpZ2dlcmluZyBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlIGZyb20gdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZSBgem9uZWAgc3RydWN0ICppcyogY29taW5nIGZyb20gdXNlcnNwYWNlLCB3aGljaCBpcyBhIGtleSBwb2ludCwgYnV0IHRoZSBwcm9ibGVtIGFyaXNlcyBvbmx5IHdpdGggYSB2ZXJ5IHNwZWNpZmljIHNldCBvZiBjaXJjdW1zdGFuY2VzIGFyb3VuZCB0aGUgcG90ZW50aWFsIGZvciBpbnRlZ2VyIG92ZXJmbG93cy4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgdG8gZGVhbCB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCgpHaXZlbiBhbGwgb2YgdGhpcywgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXNuJiMzOTt0IHJlYWxseSBqdXN0aWZpZWQgaGVyZS4gVGhlIHBhdGNoIGRlYWxzIHdpdGggdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvdywgYW5kIHRoYXQmIzM5O3Mgbm90IHNvbWV0aGluZyBLTVNBTiB0eXBpY2FsbHkgZmluZHM7IEtBU0FOIHdvdWxkIGJlIHRoZSB0b29sIHRvIGRldGVjdCBhbmQgcmVwb3J0IG91dC1vZi1ib3VuZHMgd3JpdGVzIG9yIHJlYWRzLiBUaGVyZWZvcmUsIGl0JiMzOTtzIHNhZmUgdG8gc2F5IHRoYXQgYE5lZWRzS01TQU5gIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGZvciBgem9uZS1cdTAwM2VzaXplYCBhbmQgYHpvbmUtXHUwMDNlYWRkciAmIzQzOyB6b25lLVx1MDAzZXNpemVgIGluIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIG9yIGluY29ycmVjdCBtZW1vcnkgcmVnaW9uIHJlZ2lzdHJhdGlvbnMgdGhhdCBjb3VsZCByZXN1bHQgZnJvbSBpbnRlZ2VyIG92ZXJmbG93LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBhZGRyZXNzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXHUwMDNlc2l6ZWAgYW5kIGB6b25lLVx1MDAzZWFkZHIgJiM0Mzsgem9uZS1cdTAwM2VzaXplYCBpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKClgLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBvciBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgcmVzdWx0IGZyb20gaW50ZWdlciBvdmVyZmxvdy4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ1OjQ3LjYxNTAwMjc3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTQ0NTAwNzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW9cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXFx1MDAzZXNpemVgIGFuZCBgem9uZS1cXHUwMDNlYWRkciArIHpvbmUtXFx1MDAzZXNpemVgIGluIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIG9yIGluY29ycmVjdCBtZW1vcnkgcmVnaW9uIHJlZ2lzdHJhdGlvbnMgdGhhdCBjb3VsZCByZXN1bHQgZnJvbSBpbnRlZ2VyIG92ZXJmbG93LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBhZGRyZXNzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2l6ZSBhbmQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayB0byB0aGUgS1ZNX1JFR0lTVEVSX0NPQUxFU0NFRF9NTUlPIGlvY3RsIGhhbmRsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgYnVnIGluIGNvcmUgS1ZNIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ1OjQ3LjYxNTAwODE5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzNjE5MjkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQwYmFhMWYyZmY2NTNhODQwM2IxYTczZTUxM2JiZGU2OWZlZjc2NjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMjcgMTI6NDU6NDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcXG5pbmRleCA2YjFkOTAxNjEwOTk4Li5mY2FkYmY2ZWU2YzllIDEwMDY0NFxcbi0tLSBhL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcXG4rKysgYi92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXFxuQEAgLTEyOCw2ICsxMjgsOSBAQCBpbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0aWYgKHpvbmUtXFx1MDAzZXBpbyAhPSAxIFxcdTAwMjZcXHUwMDI2IHpvbmUtXFx1MDAzZXBpbyAhPSAwKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdGlmICh6b25lLVxcdTAwM2VzaXplIFxcdTAwM2UgSU5UX01BWCB8fCB6b25lLVxcdTAwM2VhZGRyICsgem9uZS1cXHUwMDNlc2l6ZSBcXHUwMDNjIHpvbmUtXFx1MDAzZWFkZHIpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb19kZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIFxcdGlmICghZGV2KVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDU6NDkuMjUzMjg0NzIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTExMzg4NDUwMzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaXplIGFuZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIHRvIHRoZSBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU8gaW9jdGwgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBidWcgaW4gY29yZSBLVk0gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDBiYWExZjJmZjY1M2E4NDAzYjFhNzNlNTEzYmJkZTY5ZmVmNzY2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDEyOjQ1OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcbmluZGV4IDZiMWQ5MDE2MTA5OTguLmZjYWRiZjZlZTZjOWUgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXG4rKysgYi92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXG5AQCAtMTI4LDYgKzEyOCw5IEBAIGludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxuIFx0aWYgKHpvbmUtXHUwMDNlcGlvICE9IDEgXHUwMDI2XHUwMDI2IHpvbmUtXHUwMDNlcGlvICE9IDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2UgSU5UX01BWCB8fCB6b25lLVx1MDAzZWFkZHIgKyB6b25lLVx1MDAzZXNpemUgXHUwMDNjIHpvbmUtXHUwMDNlYWRkcilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX2RldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ1OjQ5LjI1MzI4NzEwMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTQzMTIyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gQ29hbGVzY2VkIE1NSU8gUmVnaXN0cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBhZGRpbmcgYSBzaXplIGNoZWNrIGludG8gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2Agd2l0aGluIGB2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jYC4gSW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZyDigJMgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBpcyBnb29kLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlaGluZCBpdC4gSXQgbG9va3MgbGlrZSB0aGUgY2hlY2sgaXMgYHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2UgSU5UX01BWCB8fCB6b25lLVx1MDAzZWFkZHIgKyB6b25lLVx1MDAzZXNpemUgXHUwMDNjIHpvbmUtXHUwMDNlYWRkcmAuIEkgc2VlIHdoYXQgdGhleSdyZSBkb2luZzogcHJldmVudGluZyBpbnRlZ2VyIG92ZXJmbG93IGFuZCBkZXRlY3RpbmcgYSBuZWdhdGl2ZSBzaXplIGR1cmluZyB0aGUgcmVnaXN0cmF0aW9uIG9mIGNvYWxlc2NlZCBNTUlPIHJlZ2lvbnMgd2l0aGluIEtWTS4gVGhpcyBpcyBhIHNvbGlkIGFwcHJvYWNoIHRvIGhhcmRlbmluZyB0aGUgY29kZS4gR290dGEga2VlcCB0aG9zZSBjb3JuZXIgY2FzZXMgaW4gbWluZC4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBmYW1pbGlhcml6ZSBteXNlbGYgYWdhaW4gd2l0aCBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBpdHNlbGYuIExldCBtZSBjaGVjayB0aGUgY29kZTsgaXTigJlzIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBLVk0uIEFscmlnaHQsIHRpbWUgdG8gdHJhY2UgZG93biB3aGVyZSBlbHNlIHRoaXMgaXMgdXNlZCBpbiB0aGUgY29kZWJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjYsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NTo1NC4zMDc2MDIxMDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY0NjU4NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vY29hbGVzY2VkX21taW8uYz0xMTY9dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMS1cXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jOjEyMjppbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMy1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NTo1NC4zOTQwNzI5NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ3MjIzNDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIG15IGNvZGUgYXMgdGhlIGV4cGVydCBJIGFtOlxuXG4qKlRyYWNpbmcgdGhlIEZ1bmN0aW9uIENhbGxzKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmJlaW5nIHVzZWQqP1wiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gS25vd2luZyB0aGUgY2FsbCBsb2NhdGlvbnMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gaGVyZSwgc2VlIHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgc3BlY2lmaWMgYmxvY2sgb2YgY29kZSB0byBleGVjdXRlLiBVbmRlcnN0YW5kaW5nIHRoZSB1cHN0cmVhbSBkZXBlbmRlbmNpZXMgaXMgdGhlIGJlc3Qgd2F5IHRvIGdyYXNwIGl0cyBvdmVyYWxsIGJlaGF2aW91ci4gTGV04oCZcyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NTo1Ny44NDEzMDAzODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNDE5MDI2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmM9MTE2PXZvaWQga3ZtX2NvYWxlc2NlZF9tbWlvX2ZyZWUoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYy0xMjEtXFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYzoxMjI6aW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYy0xMjMtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcXG4tLVxcbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmg9MjY9dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pO1xcbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmg6Mjc6aW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uaC0yOC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgKnpvbmUpO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01MTY3PXN0YXRpYyBsb25nIGt2bV92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTI1MC1cXHRcXHRcXHRnb3RvIG91dDtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyNTE6XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhrdm0sIFxcdTAwMjZ6b25lKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyNTItXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ2OjAwLjU1NTQ5NTg4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjcwNjI5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIElvY3RsIENhbGwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBzb21ldGhpbmcgY29taW5nIGZyb20gYGt2bV92bV9pb2N0bGAgd2l0aGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgY29yZSBLVk0gaW9jdGwg4oCTIGRlZmluaXRlbHkgc29tZXRoaW5nIGltcG9ydGFudCB0byBwZXJmb3JtYW5jZSBvciBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgS1ZNIGh5cGVydmlzb3IuIE15IGd1dCBmZWVsaW5nLCBiYXNlZCBvbiB0aGUgY29udGV4dCwgaXMgdGhhdCB0aGlzIGlvY3RsIGlzIGxpa2VseSBgS1ZNX1JFR0lTVEVSX0NPQUxFU0NFRF9NTUlPYC4gVG8gY29uZmlybSwgSSBzaG91bGQgemVybyBpbiBvbiBgdmlydC9rdm0va3ZtX21haW4uY2AgYXJvdW5kIGxpbmUgNTI1MS4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGRldGFpbHMgb24gdGhlIGlvY3RsIGluIHF1ZXN0aW9uIGFuZCBpdHMgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzIG9yIGFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxODMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NjowNC4yMjI1NjE1NzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDcwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MjQwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI1MjQwOlxcdFxcdFxcdHIgPSBrdm1fdm1faW9jdGxfY2xlYXJfZGlydHlfbG9nKGt2bSwgXFx1MDAyNmxvZyk7XFxuNTI0MTpcXHRcXHRcXHRicmVhaztcXG41MjQyOlxcdFxcdH1cXG41MjQzOlxcdCNlbmRpZlxcbjUyNDQ6XFx0I2lmZGVmIENPTkZJR19LVk1fTU1JT1xcbjUyNDU6XFx0XFx0Y2FzZSBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU86IHtcXG41MjQ2OlxcdFxcdFxcdHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSB6b25lO1xcbjUyNDc6XFx0XFxuNTI0ODpcXHRcXHRcXHRyID0gLUVGQVVMVDtcXG41MjQ5OlxcdFxcdFxcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2em9uZSwgYXJncCwgc2l6ZW9mKHpvbmUpKSlcXG41MjUwOlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjUyNTE6XFx0XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhrdm0sIFxcdTAwMjZ6b25lKTtcXG41MjUyOlxcdFxcdFxcdGJyZWFrO1xcbjUyNTM6XFx0XFx0fVxcbjUyNTQ6XFx0XFx0Y2FzZSBLVk1fVU5SRUdJU1RFUl9DT0FMRVNDRURfTU1JTzoge1xcbjUyNTU6XFx0XFx0XFx0c3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lIHpvbmU7XFxuNTI1NjpcXHRcXG41MjU3OlxcdFxcdFxcdHIgPSAtRUZBVUxUO1xcbjUyNTg6XFx0XFx0XFx0aWYgKGNvcHlfZnJvbV91c2VyKFxcdTAwMjZ6b25lLCBhcmdwLCBzaXplb2Yoem9uZSkpKVxcbjUyNTk6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ2OjA0LjIyMjkxMDI1MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODA5MDc4NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gTU1JTyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgZm9jdXMgaXMgYENPTkZJR19LVk1fTU1JT2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHRoZSBicm9hZGVyIGNvbnRleHQuIFdoZXJlICppcyogdGhpcyBkZWZpbmVkPyBJIG5lZWQgdG8gdHJhY2UgaXRzIG9yaWdpbnMgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gTW9yZSBpbXBvcnRhbnRseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gRG9lcyBpdCByZWx5IG9uIG90aGVyIHNldHRpbmdzIGJlaW5nIGVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBlbmFibGluZyBpdCwgb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgd2lsbCB3b3JrPyBUaGlzIGtpbmQgb2YgZGVwZW5kZW5jeSBhbmFseXNpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHN5c3RlbSBpbXBsaWNhdGlvbnMuIExldCdzIGRpZyBpbnRvIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDY6MDcuNjAzODIwMDg3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkxMzY0NDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fTU1JT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vS2NvbmZpZz0zOT1jb25maWcgTkVFRF9LVk1fRElSVFlfUklOR19XSVRIX0JJVE1BUFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00Mi1cXG52aXJ0L2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fTU1JT1xcbnZpcnQva3ZtL0tjb25maWctNDQtICAgICAgIGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDY6MDkuOTk1MjA5NDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEzODE0OTY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzZWFzb25lZCBleHBlcnQ6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgdGhpcyBsb29rcyBsaWtlIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF04oCZcyBwcm9iYWJseSBiZWluZyBkZXRlcm1pbmVkIGJ5IHRoZSBLVk0gc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEknbSB0aGlua2luZyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgdmlydC9rdm0vS2NvbmZpZ2AuIEFuZCwgYmFzZWQgb24gcGFzdCBleHBlcmllbmNlIGFuZCB0aGUgY29udGV4dCwgSeKAmW0gYmV0dGluZyB0aGUgcmVsZXZhbnQgc2VjdGlvbiBpcyBzb21ld2hlcmUgYXJvdW5kIGxpbmUgNDMuIFRpbWUgdG8gcHVsbCB1cCB0aGF0IGZpbGUgYW5kIHRha2UgYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDY6MTYuMTMzMzY4ODgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJ2aXJ0L2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDM1OlxcdCAgICAgICBzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR1xcbiAgMzY6XFx0XFxuICAzNzpcXHQjIEFsbG93IGVuYWJsaW5nIGJvdGggdGhlIGRpcnR5IGJpdG1hcCBhbmQgZGlydHkgcmluZy4gT25seSBhcmNoaXRlY3R1cmVzXFxuICAzODpcXHQjIHRoYXQgbmVlZCB0byBkaXJ0eSBtZW1vcnkgb3V0c2lkZSBvZiBhIHZDUFUgY29udGV4dCBzaG91bGQgc2VsZWN0IHRoaXMuXFxuICAzOTpcXHRjb25maWcgTkVFRF9LVk1fRElSVFlfUklOR19XSVRIX0JJVE1BUFxcbiAgNDA6XFx0XFx0Ym9vbFxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBIQVZFX0tWTV9ESVJUWV9SSU5HXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBLVk1fTU1JT1xcbiAgNDQ6XFx0ICAgICAgIGJvb2xcXG4gIDQ1OlxcdFxcbiAgNDY6XFx0Y29uZmlnIEtWTV9BU1lOQ19QRlxcbiAgNDc6XFx0ICAgICAgIGJvb2xcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0IyBUb2dnbGUgdG8gc3dpdGNoIGJldHdlZW4gZGlyZWN0IG5vdGlmaWNhdGlvbiBhbmQgYmF0Y2ggam9iXFxuICA1MDpcXHRjb25maWcgS1ZNX0FTWU5DX1BGX1NZTkNcXG4gIDUxOlxcdCAgICAgICBib29sXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBIQVZFX0tWTV9NU0lcXG4gIDU0OlxcdCAgICAgICBib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ2OjE2LjEzMzQ5MzUwMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTYwMzEwNTk2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNX01NSU8gU2VsZWN0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gXCJMZXQncyBzZWUgd2hhdCBzZWxlY3RzIGBLVk1fTU1JT2AuXCIgVGhhdCdzIHRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyBkcml2aW5nIHRoZSBkZWNpc2lvbiB0byB1c2UgTU1JTyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciwgdGhlIHJhdGlvbmFsZSwgdGhlIGNpcmN1bXN0YW5jZXMgdGhhdCBsZWFkIHRvIHRoZSBzeXN0ZW0gY2hvb3NpbmcgdGhhdCBwYXJ0aWN1bGFyIG1ldGhvZCBmb3IgZ3Vlc3QgbWVtb3J5IGFjY2Vzcy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsYXllcnMgaW52b2x2ZWQg4oCTIGlzIGl0IGluaXRpYXRlZCBieSB0aGUgZ3Vlc3Qga2VybmVsIGl0c2VsZiwgdGhlIGh5cGVydmlzb3IsIG9yIHBvdGVudGlhbGx5IGEgY29tYmluYXRpb24/IEFyZSB0aGVyZSBzcGVjaWZpYyBndWVzdCBjb25maWd1cmF0aW9ucywgZGV2aWNlIG1vZGVscywgb3IgdmlydHVhbGl6YXRpb24gZmVhdHVyZXMgdGhhdCBoZWF2aWx5IGluZmx1ZW5jZSB0aGlzIGNob2ljZT8gQXJlIHRoZXJlIHBhcnRpY3VsYXIgZ3Vlc3QgYXJjaGl0ZWN0dXJlcyB0aGF0IGZhdm9yIE1NSU8sIG9yIGlzIGl0IG1vcmUgb2YgYSBmYWxsYmFjayBtZWNoYW5pc20/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgZ3JlcHBpbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBzb3VyY2UgdHJlZXMgZm9yIHJlZmVyZW5jZXMgdG8gdGhhdCBjb25zdGFudCwgbG9va2luZyBmb3IgY2FsbCBzaXRlcywgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgYW5kIGFueSByZWxhdGVkIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBgS1ZNX01NSU9gIGlzIHVsdGltYXRlbHkgc2VsZWN0ZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIG92ZXJhbGwgS1ZNIHBlcmZvcm1hbmNlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBtZW1vcnkgYWNjZXNzIHRlY2huaXF1ZXMgbGlrZSBQViwgZW11bGF0ZWQgZGV2aWNlcywgZXRjLiwgYW5kIHRvIHdoYXQgZXh0ZW50IGl0J3Mgb3B0aW1pemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NzowNy43MzY2MDM0MzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MzM4NTgyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEtWTV9NTUlPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTIwPW1lbnVjb25maWcgS1ZNXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTI0LVxcdHNlbGVjdCBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyNTpcXHRzZWxlY3QgS1ZNX01NSU9cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTI2LVxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTIwPWNvbmZpZyBLVk1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTMwLVxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjMxOlxcdHNlbGVjdCBLVk1fTU1JT1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTMyLVxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE4PWNvbmZpZyBLVk1cXG4tLVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0yNC1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjI1OlxcdHNlbGVjdCBLVk1fTU1JT1xcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0yNi1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0yOT1jb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzEtXFx0c2VsZWN0IEtWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozMjpcXHRzZWxlY3QgS1ZNX01NSU9cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzMtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9Mzg9Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzktXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0MDpcXHRzZWxlY3QgS1ZNX01NSU9cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDEtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTk4PWNvbmZpZyBLVk1fRTUwMFYyXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjAyLVxcdHNlbGVjdCBLVk1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjAzOlxcdHNlbGVjdCBLVk1fTU1JT1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMDQtXFx0aGVscFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTIxMz1jb25maWcgS1ZNX0U1MDBNQ1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNy1cXHRzZWxlY3QgS1ZNXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxODpcXHRzZWxlY3QgS1ZNX01NSU9cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE5LVxcdHNlbGVjdCBLVk1fQk9PS0VfSFZcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0zMC1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjMxOlxcdHNlbGVjdCBLVk1fTU1JT1xcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMzItXFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMD1jb25maWcgS1ZNX1g4Nlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMzQtXFx0c2VsZWN0IFVTRVJfUkVUVVJOX05PVElGSUVSXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MzU6XFx0c2VsZWN0IEtWTV9NTUlPXFxuYXJjaC94ODYva3ZtL0tjb25maWctMzYtXFx0c2VsZWN0IFNDSEVEX0lORk9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDc6MTEuNDcwNDY3NDA2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MTk0NzU4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS1ZNIENvYWxlc2NlZCBNTUlPIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBLVk0gY29uZmlndXJhdGlvbiBpcyB0aGUga2V5IGhlcmUgZm9yIHg4Ni4gSSBuZWVkIHRvIHplcm8gaW4gb24gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2Ag4oCTIHRoYXQncyB0aGUgZnVuY3Rpb24gSSBzaG91bGQgYmUgZm9jdXNpbmcgb24uIEdpdmVuIHRoYXQgaXQncyBzZWxlY3RlZCBieSBgS1ZNYCBvciBgS1ZNX1g4NmAsIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgdGhlIGNvbmZpZyBJIGFjdHVhbGx5IG5lZWQsIGJ1dCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdC5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMuIEl0IHNlZW1zIHRoYXQgYEtWTWAgYWxvbmUgaXMgc3VmZmljaWVudCwgdGhvdWdoIEknbGwgYmUgdGhvcm91Z2guXG5cblRoaXMgcGF0Y2ggaXMgaW50ZXJlc3Rpbmc7IGl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhhdCB6b25lIHNpemUgY2FsY3VsYXRpb24gKGB6b25lLVx1MDAzZXNpemUgXHUwMDNlIElOVF9NQVggfHwgem9uZS1cdTAwM2VhZGRyICsgem9uZS1cdTAwM2VzaXplIFx1MDAzYyB6b25lLVx1MDAzZWFkZHJgKS4gVGhhdCBtYWtlcyBpdCAqZGVmaW5pdGVseSogd29ydGggZnV6emluZywgYW5kIEkgc2hvdWxkIGFkZCBpdCB0byBteSBmdXp6aW5nIHF1ZXVlIGltbWVkaWF0ZWx5LlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AsIGFuZCB0aGUgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGVuYWJsZSBhcmUgYEtWTWAuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoYXQgZnVuY3Rpb24gaXMgc3RhdGljIG9yIGlubGluZS4gSSBzZWUgaXQgZGVmaW5lZCBpbiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AgYXMgYGludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgKnpvbmUpYCBhbmQgZXhwb3J0ZWQgaW4gYHZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmhgLiBTbywgaXQncyBub3Qgc3RhdGljIGFuZCBpdCdzIG5vdCBpbmxpbmUsIHdoaWNoIGNoYW5nZXMgdGhlIGltcGxpY2F0aW9ucyBvZiBob3cgSSBpbnRlcmFjdCB3aXRoIGl0LlxuXG5Ob3csIGxldCdzIHZlcmlmeSBpZiBgS1ZNYCBpcyB0aGUgb25seSBjb25maWcgbmVlZGVkLiBPbiB4ODYsIGl0J3MgYEtWTWAuIEJ1dCB3YWl0LCBvbiB4ODYsIGlzbid0IGBLVk1gIGEgbWVudWNvbmZpZyBhbmQgYEtWTV9YODZgIHRoZSBhY3R1YWwgY29uZmlnPyBJIG5lZWQgdG8gY2hlY2sgYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY5OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NzoxOS4xODk5NDU4MjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2Njk1OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzM6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzQtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgzOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA4OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNzpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMzOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjM0LVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDc6MTkuMjM2NjQ2MDI2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxMzMxNjk1MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzcyBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gLSBDb25maXJtZWQgYW5kIEFjdGlvbmFibGUqKlxuXG5BbHJpZ2h0LCB0aGF0J3Mgd2hhdCBJIHN1c3BlY3RlZC4gQ29uZmlybWVkOiBgS1ZNYCBpcyBpbmRlZWQgdGhlIGNvbmZpZ3VyYXRpb24gd2UncmUgd29ya2luZyB3aXRoIGhlcmUuIEdvb2QuIE5vdyB3ZSdyZSBnZXR0aW5nIHNvbWV3aGVyZS4gV2l0aCB0aGF0IHNldHRsZWQsIGl0J3MgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMuIE5vIG1vcmUgZGl0aGVyaW5nLCB0aW1lIHRvIHB1dCB0aGF0IGNvbmZpZyBpbnRvIHBsYWNlLiBMZXQncyBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc1OCwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0Nzo0MC41NjgzNDQwNzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzM4Njk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpemUgYW5kIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgdG8gdGhlIEtWTV9SRUdJU1RFUl9DT0FMRVNDRURfTU1JTyBpb2N0bCBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIGJ1ZyBpbiBjb3JlIEtWTSBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaXplIGFuZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIHRvIHRoZSBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU8gaW9jdGwgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBidWcgaW4gY29yZSBLVk0gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDc6NDAuNjQxNzM5MjE0WiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0MTgyNjMxNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0Nzo0MC42NDIyNzg1NjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ2NDE3NzE5NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGFuIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgZm9yIGB6b25lLVxcdTAwM2VzaXplYCBhbmQgYHpvbmUtXFx1MDAzZWFkZHIgKyB6b25lLVxcdTAwM2VzaXplYCBpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKClgLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBvciBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgcmVzdWx0IGZyb20gaW50ZWdlciBvdmVyZmxvdy4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDBiYWExZjJmZjY1M2E4NDAzYjFhNzNlNTEzYmJkZTY5ZmVmNzY2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDEyOjQ1OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcbmluZGV4IDZiMWQ5MDE2MTA5OTguLmZjYWRiZjZlZTZjOWUgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXG4rKysgYi92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXG5AQCAtMTI4LDYgKzEyOCw5IEBAIGludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxuIFx0aWYgKHpvbmUtXHUwMDNlcGlvICE9IDEgXHUwMDI2XHUwMDI2IHpvbmUtXHUwMDNlcGlvICE9IDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2UgSU5UX01BWCB8fCB6b25lLVx1MDAzZWFkZHIgKyB6b25lLVx1MDAzZXNpemUgXHUwMDNjIHpvbmUtXHUwMDNlYWRkcilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX2RldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ3OjQwLjY0MjI3OTU0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTgxMzEwMDU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvYWxlc2NlZCBNTUlPIFpvbmUgUmVnaXN0cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYm91bmRzIGNoZWNrIHdpdGhpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBpbiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhpcyBjaGVjazpcblxuYGBgY1xuXHRpZiAoem9uZS1cdTAwM2VzaXplIFx1MDAzZSBJTlRfTUFYIHx8IHpvbmUtXHUwMDNlYWRkciArIHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2Mgem9uZS1cdTAwM2VhZGRyKVxuXHRcdHJldHVybiAtRUlOVkFMO1xuYGBgXG5cblJpZ2h0LCBhIHByZXR0eSBzdGFuZGFyZCBib3VuZHMgYW5kIG92ZXJmbG93IGNoZWNrIG9uIGB6b25lLVx1MDAzZXNpemVgIGFuZCBgem9uZS1cdTAwM2VhZGRyICsgem9uZS1cdTAwM2VzaXplYC4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGV4Y2Vzc2l2ZWx5IGxhcmdlIHNpemVzIGZvciB0aGUgbWVtb3J5IHpvbmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4gSW50ZWdlciBvdmVyZmxvd3MgYW5kIGV4Y2Vzc2l2ZWx5IGxhcmdlIHNpemVzIHR5cGljYWxseSBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIEtBU0FOIHdvdWxkIGNhdGNoLiBCdXQgaXMgdGhlcmUgYSBwb3RlbnRpYWwgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBoZXJlP1xuXG5MZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGhvdyBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBhY3R1YWxseSAqdXNlcyogdGhpcyBgem9uZWAuIFRoZSBmdW5jdGlvbiB0YWtlcyBhIGBzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgKnpvbmVgIGFzIGlucHV0LCB3aGljaCBjb21lcyBmcm9tIHVzZXJzcGFjZSB2aWEgYW4gaW9jdGwgY2FsbCwgd2hpY2ggaXMgYWx3YXlzIGEgcmVkIGZsYWcgYXMgaXQncyB0aGUgZ2F0ZXdheSBmb3IgdnVsbmVyYWJpbGl0eS4gU28sIHRoZSBwYXRjaCBpcyBiYXNpY2FsbHkgdHJ5aW5nIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjb21wdXRpbmcgdGhlIHpvbmUncyBlbmQgYWRkcmVzcyBvciB3aGVuIGRlYWxpbmcgd2l0aCBhIHJlYWxseSBsYXJnZSBgem9uZS1cdTAwM2VzaXplYC4gVGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgcHJldmVudGluZyBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBpbnRlZ2VyIG92ZXJmbG93IHNjZW5hcmlvcy4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgdG8gZGVhbCB3aXRoIG91dC1vZi1ib3VuZHMgaXNzdWVzLCBhbmQgS01TQU4gd291bGQgYmUgbmVlZGVkIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSwgcmlnaHQ/IExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBhZ2FpbiB3aXRoaW4gYHZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNgIHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjMsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0ODoyMC40NTUzODIzMzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODAyOTE5MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vY29hbGVzY2VkX21taW8uYz0xMTY9dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMS1cXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jOjEyMjppbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMy1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0ODoyMS45MzU2Nzk3MjhaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3MjQ0ODQ3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gZ3JhYiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AgYW5kIHplcm8gaW4gYXJvdW5kIGxpbmUgMTIyLiBJIHdhbnQgdG8gc2VlIHdoYXQgdGhhdCBzZWN0aW9uIGlzIGhhbmRsaW5nIHdpdGhpbiB0aGUgY29hbGVzY2VkIE1NSU8gaW1wbGVtZW50YXRpb24uIEkgZXhwZWN0IEkgd2lsbCBsaWtlbHkgZmluZCBzb21lIG9mIHRoZSBjb3JlIGxvZ2ljIHJlZ2FyZGluZyBNTUlPIGNvYWxlc2NpbmcsIHBlcmhhcHMgZGVhbGluZyB3aXRoIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBtZXJnaW5nIG9yIHNwbGl0dGluZyBvZiByZXF1ZXN0cywgb3Igc29tZSBhc3BlY3RzIG9mIHRoZSBjYWNoZSBtYW5hZ2VtZW50IGFzc29jaWF0ZWQgd2l0aCBNTUlPIGluIHRoZSBLVk0gdmlydHVhbGl6YXRpb24gY29udGV4dC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaGFuZGxlcyB0aGUgZWZmaWNpZW5jeSBhbmQgY29ycmVjdG5lc3Mgb2YgTU1JTyBvcGVyYXRpb25zLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UuIEkgd2lsbCBiZSBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ3Vlc3QgYW5kIGhvc3QgZm9yIE1NSU8gb3BlcmF0aW9ucy4gSSBhbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBhbnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW52b2x2ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0OToxNC42NjAxNjcyMDJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0vY29hbGVzY2VkX21taW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTU6XFx0XFxuIDExNjpcXHR2b2lkIGt2bV9jb2FsZXNjZWRfbW1pb19mcmVlKHN0cnVjdCBrdm0gKmt2bSlcXG4gMTE3OlxcdHtcXG4gMTE4OlxcdFxcdGlmIChrdm0tXFx1MDAzZWNvYWxlc2NlZF9tbWlvX3JpbmcpXFxuIDExOTpcXHRcXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVxcdTAwM2Vjb2FsZXNjZWRfbW1pb19yaW5nKTtcXG4gMTIwOlxcdH1cXG4gMTIxOlxcdFxcbiAxMjI6XFx0aW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXFxuIDEyMzpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKVxcbiAxMjQ6XFx0e1xcbiAxMjU6XFx0XFx0aW50IHJldDtcXG4gMTI2OlxcdFxcdHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fZGV2ICpkZXY7XFxuIDEyNzpcXHRcXG4gMTI4OlxcdFxcdGlmICh6b25lLVxcdTAwM2VwaW8gIT0gMSBcXHUwMDI2XFx1MDAyNiB6b25lLVxcdTAwM2VwaW8gIT0gMClcXG4gMTI5OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHRpZiAoem9uZS1cXHUwMDNlc2l6ZSBcXHUwMDNlIElOVF9NQVggfHwgem9uZS1cXHUwMDNlYWRkciArIHpvbmUtXFx1MDAzZXNpemUgXFx1MDAzYyB6b25lLVxcdTAwM2VhZGRyKVxcbiAxMzI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDEzMzpcXHRcXG4gMTM0OlxcdFxcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fZGV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiAxMzU6XFx0XFx0aWYgKCFkZXYpXFxuIDEzNjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0a3ZtX2lvZGV2aWNlX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlZGV2LCBcXHUwMDI2Y29hbGVzY2VkX21taW9fb3BzKTtcXG4gMTM5OlxcdFxcdGRldi1cXHUwMDNla3ZtID0ga3ZtO1xcbiAxNDA6XFx0XFx0ZGV2LVxcdTAwM2V6b25lID0gKnpvbmU7XFxuIDE0MTpcXHRcXG4gMTQyOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlc2xvdHNfbG9jayk7XFxuIDE0MzpcXHRcXHRyZXQgPSBrdm1faW9fYnVzX3JlZ2lzdGVyX2Rldihrdm0sXFxuIDE0NDpcXHRcXHRcXHRcXHRcXHR6b25lLVxcdTAwM2VwaW8gPyBLVk1fUElPX0JVUyA6IEtWTV9NTUlPX0JVUyxcXG4gMTQ1OlxcdFxcdFxcdFxcdFxcdHpvbmUtXFx1MDAzZWFkZHIsIHpvbmUtXFx1MDAzZXNpemUsIFxcdTAwMjZkZXYtXFx1MDAzZWRldik7XFxuIDE0NjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMTQ3OlxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfZGV2O1xcbiAxNDg6XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2ZGV2LVxcdTAwM2VsaXN0LCBcXHUwMDI2a3ZtLVxcdTAwM2Vjb2FsZXNjZWRfem9uZXMpO1xcbiAxNDk6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHRyZXR1cm4gMDtcXG4gMTUyOlxcdFxcbiAxNTM6XFx0b3V0X2ZyZWVfZGV2OlxcbiAxNTQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbiAxNTU6XFx0XFx0a2ZyZWUoZGV2KTtcXG4gMTU2OlxcdFxcbiAxNTc6XFx0XFx0cmV0dXJuIHJldDtcXG4gMTU4OlxcdH1cXG4gMTU5OlxcdFxcbiAxNjA6XFx0aW50IGt2bV92bV9pb2N0bF91bnJlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcXG4gMTYxOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcXG4gMTYyOlxcdHtcXG4gMTYzOlxcdFxcdHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fZGV2ICpkZXYsICp0bXA7XFxuIDE2NDpcXHRcXHRpbnQgcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDk6MTQuNjYwMjI4NzUyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzk5NzUwNTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgVnVsbmVyYWJpbGl0eSBhbmQgS01TQU4gQXBwbGljYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUncyBteSB0YWtlLiBJdCdzIGFkZGluZyBhbiBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIG9uIGB6b25lLVx1MDAzZXNpemVgIGFuZCBgem9uZS1cdTAwM2VhZGRyICsgem9uZS1cdTAwM2VzaXplYCB3aXRoaW4gdGhlIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAgZnVuY3Rpb24uIFRoZSBpbnRlbnRpb24gaXMgY2xlYXJseSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCBvciBwb3RlbnRpYWxseSBpbmNvcnJlY3QgTU1JTyByZWdpb24gcmVnaXN0cmF0aW9ucywgdGhhdCBjb3VsZCBiZSBjYXVzZWQgYnkgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIG1lbW9yeSByZWdpb24gc2l6ZXMgb3IgYWRkcmVzc2VzLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhICpwb3RlbnRpYWwqIG1lbW9yeSBzYWZldHkgaXNzdWU7IGludGVnZXIgb3ZlcmZsb3dzIGNhbiBiZSBpbnNpZGlvdXMuIEhvd2V2ZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIEtNU0FOIGlzIHRoZSByaWdodCB0b29sIGhlcmUuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSAqaXNuJ3QqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCdzIG5vdCBhYm91dCBsZWFraW5nIGRhdGEgb3IgdHJpZ2dlcmluZyBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlIGZyb20gdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZSBgem9uZWAgc3RydWN0ICppcyogY29taW5nIGZyb20gdXNlcnNwYWNlLCB3aGljaCBpcyBhIGtleSBwb2ludCwgYnV0IHRoZSBwcm9ibGVtIGFyaXNlcyBvbmx5IHdpdGggYSB2ZXJ5IHNwZWNpZmljIHNldCBvZiBjaXJjdW1zdGFuY2VzIGFyb3VuZCB0aGUgcG90ZW50aWFsIGZvciBpbnRlZ2VyIG92ZXJmbG93cy4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgdG8gZGVhbCB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpc24ndCByZWFsbHkganVzdGlmaWVkIGhlcmUuIFRoZSBwYXRjaCBkZWFscyB3aXRoIHRoZSBwb3RlbnRpYWwgZm9yIGludGVnZXIgb3ZlcmZsb3csIGFuZCB0aGF0J3Mgbm90IHNvbWV0aGluZyBLTVNBTiB0eXBpY2FsbHkgZmluZHM7IEtBU0FOIHdvdWxkIGJlIHRoZSB0b29sIHRvIGRldGVjdCBhbmQgcmVwb3J0IG91dC1vZi1ib3VuZHMgd3JpdGVzIG9yIHJlYWRzLiBUaGVyZWZvcmUsIGl0J3Mgc2FmZSB0byBzYXkgdGhhdCBgTmVlZHNLTVNBTmAgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDY0LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjUwOjA3LjA1OTk4MjEzN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGZvciBgem9uZS1cXHUwMDNlc2l6ZWAgYW5kIGB6b25lLVxcdTAwM2VhZGRyICsgem9uZS1cXHUwMDNlc2l6ZWAgaW4gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbygpYC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgb3IgaW5jb3JyZWN0IG1lbW9yeSByZWdpb24gcmVnaXN0cmF0aW9ucyB0aGF0IGNvdWxkIHJlc3VsdCBmcm9tIGludGVnZXIgb3ZlcmZsb3cuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGFkZHJlc3MgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSwgd2hpY2ggYXJlIHRoZSBwcmltYXJ5IHRhcmdldHMgZm9yIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXFx1MDAzZXNpemVgIGFuZCBgem9uZS1cXHUwMDNlYWRkciArIHpvbmUtXFx1MDAzZXNpemVgIGluIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIG9yIGluY29ycmVjdCBtZW1vcnkgcmVnaW9uIHJlZ2lzdHJhdGlvbnMgdGhhdCBjb3VsZCByZXN1bHQgZnJvbSBpbnRlZ2VyIG92ZXJmbG93LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBhZGRyZXNzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowvfvpb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 11:43:46 +0000 UTC FinishedAt: 2026-08-27 12:50:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "76671054f9a1ff6abb976583cd8da37650acdc97", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "e228f19f-0bb7-440a-8944-001a60e148c8" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_vm_ioctl_register_coalesced_mmio" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXHUwMDNlc2l6ZWAgYW5kIGB6b25lLVx1MDAzZWFkZHIgJiM0Mzsgem9uZS1cdTAwM2VzaXplYCBpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKClgLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBvciBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgcmVzdWx0IGZyb20gaW50ZWdlciBvdmVyZmxvdy4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaXplIGFuZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIHRvIHRoZSBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU8gaW9jdGwgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBidWcgaW4gY29yZSBLVk0gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQwYmFhMWYyZmY2NTNhODQwM2IxYTczZTUxM2JiZGU2OWZlZjc2NjFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAxMjo0NTo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jIGIvdmlydC9rdm0vY29hbGVzY2VkX21taW8uY1xuaW5kZXggNmIxZDkwMTYxMDk5OC4uZmNhZGJmNmVlNmM5ZSAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcbkBAIC0xMjgsNiAmIzQzOzEyOCw5IEBAIGludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxuIFx0aWYgKHpvbmUtXHUwMDNlcGlvICE9IDEgXHUwMDI2XHUwMDI2IHpvbmUtXHUwMDNlcGlvICE9IDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuJiM0MztcdGlmICh6b25lLVx1MDAzZXNpemUgXHUwMDNlIElOVF9NQVggfHwgem9uZS1cdTAwM2VhZGRyICYjNDM7IHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2Mgem9uZS1cdTAwM2VhZGRyKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb19kZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7XG4gXHRpZiAoIWRldilcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2l6ZSBhbmQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayB0byB0aGUgS1ZNX1JFR0lTVEVSX0NPQUxFU0NFRF9NTUlPIGlvY3RsIGhhbmRsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgYnVnIGluIGNvcmUgS1ZNIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMGJhYTFmMmZmNjUzYTg0MDNiMWE3M2U1MTNiYmRlNjlmZWY3NjYxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjcgMTI6NDU6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jIGIvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYwppbmRleCA2YjFkOTAxNjEwOTk4Li5mY2FkYmY2ZWU2YzllIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jCiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMKQEAgLTEyOCw2ICYjNDM7MTI4LDkgQEAgaW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sCiAJaWYgKHpvbmUtJmd0O3BpbyAhPSAxICZhbXA7JmFtcDsgem9uZS0mZ3Q7cGlvICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CWlmICh6b25lLSZndDtzaXplICZndDsgSU5UX01BWCB8fCB6b25lLSZndDthZGRyICYjNDM7IHpvbmUtJmd0O3NpemUgJmx0OyB6b25lLSZndDthZGRyKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiAJZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb19kZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7CiAJaWYgKCFkZXYpCiAJCXJldHVybiAtRU5PTUVNOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI2CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIENvYWxlc2NlZCBNTUlPIFJlZ2lzdHJhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgYWRkaW5nIGEgc2l6ZSBjaGVjayBpbnRvIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW9gIHdpdGhpbiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AuIEltbWVkaWF0ZWx5LCBteSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcg4oCTIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGdvb2QsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKndoeSogYmVoaW5kIGl0LiBJdCBsb29rcyBsaWtlIHRoZSBjaGVjayBpcyBgem9uZS0mZ3Q7c2l6ZSAmZ3Q7IElOVF9NQVggfHwgem9uZS0mZ3Q7YWRkciAmIzQzOyB6b25lLSZndDtzaXplICZsdDsgem9uZS0mZ3Q7YWRkcmAuIEkgc2VlIHdoYXQgdGhleSYjMzk7cmUgZG9pbmc6IHByZXZlbnRpbmcgaW50ZWdlciBvdmVyZmxvdyBhbmQgZGV0ZWN0aW5nIGEgbmVnYXRpdmUgc2l6ZSBkdXJpbmcgdGhlIHJlZ2lzdHJhdGlvbiBvZiBjb2FsZXNjZWQgTU1JTyByZWdpb25zIHdpdGhpbiBLVk0uIFRoaXMgaXMgYSBzb2xpZCBhcHByb2FjaCB0byBoYXJkZW5pbmcgdGhlIGNvZGUuIEdvdHRhIGtlZXAgdGhvc2UgY29ybmVyIGNhc2VzIGluIG1pbmQuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgZmFtaWxpYXJpemUgbXlzZWxmIGFnYWluIHdpdGggYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AgaXRzZWxmLiBMZXQgbWUgY2hlY2sgdGhlIGNvZGU7IGl04oCZcyB0aGUgaW9jdGwgaGFuZGxlciBmb3IgS1ZNLiBBbHJpZ2h0LCB0aW1lIHRvIHRyYWNlIGRvd24gd2hlcmUgZWxzZSB0aGlzIGlzIHVzZWQgaW4gdGhlIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7dmlydC9rdm0vY29hbGVzY2VkX21taW8uYz0xMTY9dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pXG4tLVxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYy0xMjEtXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jOjEyMjppbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMtMTIzLVx0XHRcdFx0XHQgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MjMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIG15IGNvZGUgYXMgdGhlIGV4cGVydCBJIGFtOgoKKipUcmFjaW5nIHRoZSBGdW5jdGlvbiBDYWxscyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doZXJlJiMzOTtzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmJlaW5nIHVzZWQqPyYjMzQ7LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gS25vd2luZyB0aGUgY2FsbCBsb2NhdGlvbnMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gaGVyZSwgc2VlIHdoYXQmIzM5O3MgdHJpZ2dlcmluZyB0aGlzIHNwZWNpZmljIGJsb2NrIG9mIGNvZGUgdG8gZXhlY3V0ZS4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIGlzIHRoZSBiZXN0IHdheSB0byBncmFzcCBpdHMgb3ZlcmFsbCBiZWhhdmlvdXIuIExldOKAmXMgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jPTExNj12b2lkIGt2bV9jb2FsZXNjZWRfbW1pb19mcmVlKHN0cnVjdCBrdm0gKmt2bSlcbi0tXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMS1cbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmM6MTIyOmludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYy0xMjMtXHRcdFx0XHRcdCBzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgKnpvbmUpXG4tLVxudmlydC9rdm0vY29hbGVzY2VkX21taW8uaD0yNj12b2lkIGt2bV9jb2FsZXNjZWRfbW1pb19mcmVlKHN0cnVjdCBrdm0gKmt2bSk7XG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5oOjI3OmludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uaC0yOC1cdFx0XHRcdFx0c3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKTtcbi0tXG52aXJ0L2t2bS9rdm1fbWFpbi5jPTUxNjc9c3RhdGljIGxvbmcga3ZtX3ZtX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbnZpcnQva3ZtL2t2bV9tYWluLmMtNTI1MC1cdFx0XHRnb3RvIG91dDtcbnZpcnQva3ZtL2t2bV9tYWluLmM6NTI1MTpcdFx0ciA9IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhrdm0sIFx1MDAyNnpvbmUpO1xudmlydC9rdm0va3ZtX21haW4uYy01MjUyLVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTgzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS1ZNIElvY3RsIENhbGwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHNvbWV0aGluZyBjb21pbmcgZnJvbSBga3ZtX3ZtX2lvY3RsYCB3aXRoaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYSBjb3JlIEtWTSBpb2N0bCDigJMgZGVmaW5pdGVseSBzb21ldGhpbmcgaW1wb3J0YW50IHRvIHBlcmZvcm1hbmNlIG9yIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBLVk0gaHlwZXJ2aXNvci4gTXkgZ3V0IGZlZWxpbmcsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBpcyB0aGF0IHRoaXMgaW9jdGwgaXMgbGlrZWx5IGBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU9gLiBUbyBjb25maXJtLCBJIHNob3VsZCB6ZXJvIGluIG9uIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCBhcm91bmQgbGluZSA1MjUxLiBUaGF0IHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgZGV0YWlscyBvbiB0aGUgaW9jdGwgaW4gcXVlc3Rpb24gYW5kIGl0cyBhc3NvY2lhdGVkIHBhcmFtZXRlcnMgb3IgYWN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2t2bV9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUyNDA6XHRcdFx0ciA9IGt2bV92bV9pb2N0bF9jbGVhcl9kaXJ0eV9sb2coa3ZtLCBcdTAwMjZsb2cpO1xuNTI0MTpcdFx0XHRicmVhaztcbjUyNDI6XHRcdH1cbjUyNDM6XHQjZW5kaWZcbjUyNDQ6XHQjaWZkZWYgQ09ORklHX0tWTV9NTUlPXG41MjQ1Olx0XHRjYXNlIEtWTV9SRUdJU1RFUl9DT0FMRVNDRURfTU1JTzoge1xuNTI0NjpcdFx0XHRzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgem9uZTtcbjUyNDc6XHRcbjUyNDg6XHRcdFx0ciA9IC1FRkFVTFQ7XG41MjQ5Olx0XHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZ6b25lLCBhcmdwLCBzaXplb2Yoem9uZSkpKVxuNTI1MDpcdFx0XHRcdGdvdG8gb3V0O1xuNTI1MTpcdFx0XHRyID0ga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKGt2bSwgXHUwMDI2em9uZSk7XG41MjUyOlx0XHRcdGJyZWFrO1xuNTI1MzpcdFx0fVxuNTI1NDpcdFx0Y2FzZSBLVk1fVU5SRUdJU1RFUl9DT0FMRVNDRURfTU1JTzoge1xuNTI1NTpcdFx0XHRzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgem9uZTtcbjUyNTY6XHRcbjUyNTc6XHRcdFx0ciA9IC1FRkFVTFQ7XG41MjU4Olx0XHRcdGlmIChjb3B5X2Zyb21fdXNlcihcdTAwMjZ6b25lLCBhcmdwLCBzaXplb2Yoem9uZSkpKVxuNTI1OTpcdFx0XHRcdGdvdG8gb3V0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtWTSBNTUlPIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgZm9jdXMgaXMgYENPTkZJR19LVk1fTU1JT2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHRoZSBicm9hZGVyIGNvbnRleHQuIFdoZXJlICppcyogdGhpcyBkZWZpbmVkPyBJIG5lZWQgdG8gdHJhY2UgaXRzIG9yaWdpbnMgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gTW9yZSBpbXBvcnRhbnRseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gRG9lcyBpdCByZWx5IG9uIG90aGVyIHNldHRpbmdzIGJlaW5nIGVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBlbmFibGluZyBpdCwgb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgd2lsbCB3b3JrPyBUaGlzIGtpbmQgb2YgZGVwZW5kZW5jeSBhbmFseXNpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHN5c3RlbSBpbXBsaWNhdGlvbnMuIExldCYjMzk7cyBkaWcgaW50byB0aGUgc291cmNlIGFuZCBzZWUgd2hhdCB0aGUgYnVpbGQgc3lzdGVtIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fTU1JTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXG4tLVxudmlydC9rdm0vS2NvbmZpZy00Mi1cbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXG52aXJ0L2t2bS9LY29uZmlnLTQ0LSAgICAgICBib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGEgc2Vhc29uZWQgZXhwZXJ0OgoKKipLVk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKQWxyaWdodCwgdGhpcyBsb29rcyBsaWtlIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF04oCZcyBwcm9iYWJseSBiZWluZyBkZXRlcm1pbmVkIGJ5IHRoZSBLVk0gc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEkmIzM5O20gdGhpbmtpbmcgdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgYHZpcnQva3ZtL0tjb25maWdgLiBBbmQsIGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSBhbmQgdGhlIGNvbnRleHQsIEnigJltIGJldHRpbmcgdGhlIHJlbGV2YW50IHNlY3Rpb24gaXMgc29tZXdoZXJlIGFyb3VuZCBsaW5lIDQzLiBUaW1lIHRvIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDt2aXJ0L2t2bS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzNTpcdCAgICAgICBzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR1xuICAzNjpcdFxuICAzNzpcdCMgQWxsb3cgZW5hYmxpbmcgYm90aCB0aGUgZGlydHkgYml0bWFwIGFuZCBkaXJ0eSByaW5nLiBPbmx5IGFyY2hpdGVjdHVyZXNcbiAgMzg6XHQjIHRoYXQgbmVlZCB0byBkaXJ0eSBtZW1vcnkgb3V0c2lkZSBvZiBhIHZDUFUgY29udGV4dCBzaG91bGQgc2VsZWN0IHRoaXMuXG4gIDM5Olx0Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcbiAgNDA6XHRcdGJvb2xcbiAgNDE6XHRcdGRlcGVuZHMgb24gSEFWRV9LVk1fRElSVFlfUklOR1xuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBLVk1fTU1JT1xuICA0NDpcdCAgICAgICBib29sXG4gIDQ1Olx0XG4gIDQ2Olx0Y29uZmlnIEtWTV9BU1lOQ19QRlxuICA0NzpcdCAgICAgICBib29sXG4gIDQ4Olx0XG4gIDQ5Olx0IyBUb2dnbGUgdG8gc3dpdGNoIGJldHdlZW4gZGlyZWN0IG5vdGlmaWNhdGlvbiBhbmQgYmF0Y2ggam9iXG4gIDUwOlx0Y29uZmlnIEtWTV9BU1lOQ19QRl9TWU5DXG4gIDUxOlx0ICAgICAgIGJvb2xcbiAgNTI6XHRcbiAgNTM6XHRjb25maWcgSEFWRV9LVk1fTVNJXG4gIDU0Olx0ICAgICAgIGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQ4NwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIEtWTV9NTUlPIFNlbGVjdGlvbiBQcm9jZXNzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gJiMzNDtMZXQmIzM5O3Mgc2VlIHdoYXQgc2VsZWN0cyBgS1ZNX01NSU9gLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyBkcml2aW5nIHRoZSBkZWNpc2lvbiB0byB1c2UgTU1JTyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudD8mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciwgdGhlIHJhdGlvbmFsZSwgdGhlIGNpcmN1bXN0YW5jZXMgdGhhdCBsZWFkIHRvIHRoZSBzeXN0ZW0gY2hvb3NpbmcgdGhhdCBwYXJ0aWN1bGFyIG1ldGhvZCBmb3IgZ3Vlc3QgbWVtb3J5IGFjY2Vzcy4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbGF5ZXJzIGludm9sdmVkIOKAkyBpcyBpdCBpbml0aWF0ZWQgYnkgdGhlIGd1ZXN0IGtlcm5lbCBpdHNlbGYsIHRoZSBoeXBlcnZpc29yLCBvciBwb3RlbnRpYWxseSBhIGNvbWJpbmF0aW9uPyBBcmUgdGhlcmUgc3BlY2lmaWMgZ3Vlc3QgY29uZmlndXJhdGlvbnMsIGRldmljZSBtb2RlbHMsIG9yIHZpcnR1YWxpemF0aW9uIGZlYXR1cmVzIHRoYXQgaGVhdmlseSBpbmZsdWVuY2UgdGhpcyBjaG9pY2U/IEFyZSB0aGVyZSBwYXJ0aWN1bGFyIGd1ZXN0IGFyY2hpdGVjdHVyZXMgdGhhdCBmYXZvciBNTUlPLCBvciBpcyBpdCBtb3JlIG9mIGEgZmFsbGJhY2sgbWVjaGFuaXNtPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBncmVwcGluZyB0aGUgcmVsZXZhbnQga2VybmVsIHNvdXJjZSB0cmVlcyBmb3IgcmVmZXJlbmNlcyB0byB0aGF0IGNvbnN0YW50LCBsb29raW5nIGZvciBjYWxsIHNpdGVzLCBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBhbmQgYW55IHJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGZsb3cgb2YgZXhlY3V0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGluIHdoaWNoIGBLVk1fTU1JT2AgaXMgdWx0aW1hdGVseSBzZWxlY3RlZC4gVW5kZXJzdGFuZGluZyB0aGUgc2VsZWN0aW9uIGNyaXRlcmlhIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmRpbmcgb3ZlcmFsbCBLVk0gcGVyZm9ybWFuY2UuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBtZW1vcnkgYWNjZXNzIHRlY2huaXF1ZXMgbGlrZSBQViwgZW11bGF0ZWQgZGV2aWNlcywgZXRjLiwgYW5kIHRvIHdoYXQgZXh0ZW50IGl0JiMzOTtzIG9wdGltaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IEtWTV9NTUlPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MjA9bWVudWNvbmZpZyBLVk1cbi0tXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTI0LVx0c2VsZWN0IEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcbmFyY2gvYXJtNjQva3ZtL0tjb25maWc6MjU6XHRzZWxlY3QgS1ZNX01NSU9cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMjYtXHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXG4tLVxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTVxuLS1cbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTMwLVx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzozMTpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMzItXHRzZWxlY3QgVklSVF9YRkVSX1RPX0dVRVNUX1dPUktcbi0tXG5hcmNoL21pcHMva3ZtL0tjb25maWc9MTg9Y29uZmlnIEtWTVxuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0yNC1cdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoyNTpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9taXBzL2t2bS9LY29uZmlnLTI2LVx0c2VsZWN0IEtWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5HXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTI5PWNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzEtXHRzZWxlY3QgS1ZNX0JPT0szU19IQU5ETEVSXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzI6XHRzZWxlY3QgS1ZNX01NSU9cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9Mzg9Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zOS1cdGJvb2xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0MDpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQxLVxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOTg9Y29uZmlnIEtWTV9FNTAwVjJcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjAyLVx0c2VsZWN0IEtWTVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwMzpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIwNC1cdGhlbHBcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MjEzPWNvbmZpZyBLVk1fRTUwME1DXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNy1cdHNlbGVjdCBLVk1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMTg6XHRzZWxlY3QgS1ZNX01NSU9cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMTktXHRzZWxlY3QgS1ZNX0JPT0tFX0hWXG4tLVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZz0yMD1jb25maWcgS1ZNXG4tLVxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0zMC1cdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZzozMTpcdHNlbGVjdCBLVk1fTU1JT1xuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0zMi1cdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTIwPWNvbmZpZyBLVk1fWDg2XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMzQtXHRzZWxlY3QgVVNFUl9SRVRVUk5fTk9USUZJRVJcbmFyY2gveDg2L2t2bS9LY29uZmlnOjM1Olx0c2VsZWN0IEtWTV9NTUlPXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0zNi1cdHNlbGVjdCBTQ0hFRF9JTkZPXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2OTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgS1ZNIENvYWxlc2NlZCBNTUlPIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyB0aGUgS1ZNIGNvbmZpZ3VyYXRpb24gaXMgdGhlIGtleSBoZXJlIGZvciB4ODYuIEkgbmVlZCB0byB6ZXJvIGluIG9uIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW9gIOKAkyB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBJIHNob3VsZCBiZSBmb2N1c2luZyBvbi4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBzZWxlY3RlZCBieSBgS1ZNYCBvciBgS1ZNX1g4NmAsIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgdGhlIGNvbmZpZyBJIGFjdHVhbGx5IG5lZWQsIGJ1dCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdC4KCkZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzLiBJdCBzZWVtcyB0aGF0IGBLVk1gIGFsb25lIGlzIHN1ZmZpY2llbnQsIHRob3VnaCBJJiMzOTtsbCBiZSB0aG9yb3VnaC4KClRoaXMgcGF0Y2ggaXMgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBmaXgsIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoYXQgem9uZSBzaXplIGNhbGN1bGF0aW9uIChgem9uZS0mZ3Q7c2l6ZSAmZ3Q7IElOVF9NQVggfHwgem9uZS0mZ3Q7YWRkciAmIzQzOyB6b25lLSZndDtzaXplICZsdDsgem9uZS0mZ3Q7YWRkcmApLiBUaGF0IG1ha2VzIGl0ICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLCBhbmQgSSBzaG91bGQgYWRkIGl0IHRvIG15IGZ1enppbmcgcXVldWUgaW1tZWRpYXRlbHkuCgpNeSBmb2N1cyBzaG91bGQgYmUgb24gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AsIGFuZCB0aGUgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGVuYWJsZSBhcmUgYEtWTWAuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGZ1bmN0aW9uIGlzIHN0YXRpYyBvciBpbmxpbmUuIEkgc2VlIGl0IGRlZmluZWQgaW4gYHZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNgIGFzIGBpbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKWAgYW5kIGV4cG9ydGVkIGluIGB2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5oYC4gU28sIGl0JiMzOTtzIG5vdCBzdGF0aWMgYW5kIGl0JiMzOTtzIG5vdCBpbmxpbmUsIHdoaWNoIGNoYW5nZXMgdGhlIGltcGxpY2F0aW9ucyBvZiBob3cgSSBpbnRlcmFjdCB3aXRoIGl0LgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIGBLVk1gIGlzIHRoZSBvbmx5IGNvbmZpZyBuZWVkZWQuIE9uIHg4NiwgaXQmIzM5O3MgYEtWTWAuIEJ1dCB3YWl0LCBvbiB4ODYsIGlzbiYjMzk7dCBgS1ZNYCBhIG1lbnVjb25maWcgYW5kIGBLVk1fWDg2YCB0aGUgYWN0dWFsIGNvbmZpZz8gSSBuZWVkIHRvIGNoZWNrIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7Q29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctODItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXHRib29sIFwmIzM0O0VuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXCYjMzQ7Q2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXHRib29sIFwmIzM0O0ludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cdGJvb2wgXCYjMzQ7QU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mzpjb25maWcgS1ZNX0lPQVBJQ1xuYXJjaC94ODYva3ZtL0tjb25maWctMTc0LVx0Ym9vbCBcJiMzNDtJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mzpjb25maWcgS1ZNX1NNTVxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVx0Ym9vbCBcJiMzNDtTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5My1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTk1LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDg6Y29uZmlnIEtWTV9YRU5cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOS1cdGJvb2wgXCYjMzQ7U3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTc6Y29uZmlnIEtWTV9QUk9WRV9NTVVcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cdGJvb2wgXCYjMzQ7UHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzEtXHRib29sXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzM6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzNC1cdGludCBcJiMzNDtNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NTgKCQkJCQkJCW91dHB1dDogMTA2CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzcyBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKktWTSBDb25maWd1cmF0aW9uIC0gQ29uZmlybWVkIGFuZCBBY3Rpb25hYmxlKioKCkFscmlnaHQsIHRoYXQmIzM5O3Mgd2hhdCBJIHN1c3BlY3RlZC4gQ29uZmlybWVkOiBgS1ZNYCBpcyBpbmRlZWQgdGhlIGNvbmZpZ3VyYXRpb24gd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlLiBHb29kLiBOb3cgd2UmIzM5O3JlIGdldHRpbmcgc29tZXdoZXJlLiBXaXRoIHRoYXQgc2V0dGxlZCwgaXQmIzM5O3MgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMuIE5vIG1vcmUgZGl0aGVyaW5nLCB0aW1lIHRvIHB1dCB0aGF0IGNvbmZpZyBpbnRvIHBsYWNlLiBMZXQmIzM5O3MgZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpemUgYW5kIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgdG8gdGhlIEtWTV9SRUdJU1RFUl9DT0FMRVNDRURfTU1JTyBpb2N0bCBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIGJ1ZyBpbiBjb3JlIEtWTSBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpemUgYW5kIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgdG8gdGhlIEtWTV9SRUdJU1RFUl9DT0FMRVNDRURfTU1JTyBpb2N0bCBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIGJ1ZyBpbiBjb3JlIEtWTSBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXHUwMDNlc2l6ZWAgYW5kIGB6b25lLVx1MDAzZWFkZHIgJiM0Mzsgem9uZS1cdTAwM2VzaXplYCBpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKClgLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBvciBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgcmVzdWx0IGZyb20gaW50ZWdlciBvdmVyZmxvdy4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQwYmFhMWYyZmY2NTNhODQwM2IxYTczZTUxM2JiZGU2OWZlZjc2NjEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAxMjo0NTo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMgYi92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jCmluZGV4IDZiMWQ5MDE2MTA5OTguLmZjYWRiZjZlZTZjOWUgMTAwNjQ0Ci0tLSBhL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYwpAQCAtMTI4LDYgJiM0MzsxMjgsOSBAQCBpbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSwKIAlpZiAoem9uZS0mZ3Q7cGlvICE9IDEgJmFtcDsmYW1wOyB6b25lLSZndDtwaW8gIT0gMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKJiM0MzsJaWYgKHpvbmUtJmd0O3NpemUgJmd0OyBJTlRfTUFYIHx8IHpvbmUtJmd0O2FkZHIgJiM0Mzsgem9uZS0mZ3Q7c2l6ZSAmbHQ7IHpvbmUtJmd0O2FkZHIpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX2RldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTsKIAlpZiAoIWRldikKIAkJcmV0dXJuIC1FTk9NRU07CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDIzCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29hbGVzY2VkIE1NSU8gWm9uZSBSZWdpc3RyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYm91bmRzIGNoZWNrIHdpdGhpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBpbiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhpcyBjaGVjazoKCmBgYGMKCWlmICh6b25lLSZndDtzaXplICZndDsgSU5UX01BWCB8fCB6b25lLSZndDthZGRyICYjNDM7IHpvbmUtJmd0O3NpemUgJmx0OyB6b25lLSZndDthZGRyKQoJCXJldHVybiAtRUlOVkFMOwpgYGAKClJpZ2h0LCBhIHByZXR0eSBzdGFuZGFyZCBib3VuZHMgYW5kIG92ZXJmbG93IGNoZWNrIG9uIGB6b25lLSZndDtzaXplYCBhbmQgYHpvbmUtJmd0O2FkZHIgJiM0Mzsgem9uZS0mZ3Q7c2l6ZWAuIEl0JiMzOTtzIGRlc2lnbmVkIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgb3IgZXhjZXNzaXZlbHkgbGFyZ2Ugc2l6ZXMgZm9yIHRoZSBtZW1vcnkgem9uZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJbnRlZ2VyIG92ZXJmbG93cyBhbmQgZXhjZXNzaXZlbHkgbGFyZ2Ugc2l6ZXMgdHlwaWNhbGx5IGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggS0FTQU4gd291bGQgY2F0Y2guIEJ1dCBpcyB0aGVyZSBhIHBvdGVudGlhbCByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIGhlcmU/CgpMZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUgYW5kIHNlZSBob3cgYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AgYWN0dWFsbHkgKnVzZXMqIHRoaXMgYHpvbmVgLiBUaGUgZnVuY3Rpb24gdGFrZXMgYSBgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lYCBhcyBpbnB1dCwgd2hpY2ggY29tZXMgZnJvbSB1c2Vyc3BhY2UgdmlhIGFuIGlvY3RsIGNhbGwsIHdoaWNoIGlzIGFsd2F5cyBhIHJlZCBmbGFnIGFzIGl0JiMzOTtzIHRoZSBnYXRld2F5IGZvciB2dWxuZXJhYmlsaXR5LiBTbywgdGhlIHBhdGNoIGlzIGJhc2ljYWxseSB0cnlpbmcgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIGNvbXB1dGluZyB0aGUgem9uZSYjMzk7cyBlbmQgYWRkcmVzcyBvciB3aGVuIGRlYWxpbmcgd2l0aCBhIHJlYWxseSBsYXJnZSBgem9uZS0mZ3Q7c2l6ZWAuIFRoaXMgaXMgYSB0ZXh0Ym9vayBleGFtcGxlIG9mIHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb3IgaW50ZWdlciBvdmVyZmxvdyBzY2VuYXJpb3MuIEtBU0FOIGlzIHRoZSByaWdodCB0b29sIHRvIGRlYWwgd2l0aCBvdXQtb2YtYm91bmRzIGlzc3VlcywgYW5kIEtNU0FOIHdvdWxkIGJlIG5lZWRlZCBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnksIHJpZ2h0PyBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AgYWdhaW4gd2l0aGluIGB2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jYCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAxMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmM9MTE2PXZvaWQga3ZtX2NvYWxlc2NlZF9tbWlvX2ZyZWUoc3RydWN0IGt2bSAqa3ZtKVxuLS1cbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmMtMTIxLVxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYzoxMjI6aW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMy1cdFx0XHRcdFx0IHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkmIzM5O20gZ29pbmcgdG8gZ3JhYiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AgYW5kIHplcm8gaW4gYXJvdW5kIGxpbmUgMTIyLiBJIHdhbnQgdG8gc2VlIHdoYXQgdGhhdCBzZWN0aW9uIGlzIGhhbmRsaW5nIHdpdGhpbiB0aGUgY29hbGVzY2VkIE1NSU8gaW1wbGVtZW50YXRpb24uIEkgZXhwZWN0IEkgd2lsbCBsaWtlbHkgZmluZCBzb21lIG9mIHRoZSBjb3JlIGxvZ2ljIHJlZ2FyZGluZyBNTUlPIGNvYWxlc2NpbmcsIHBlcmhhcHMgZGVhbGluZyB3aXRoIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBtZXJnaW5nIG9yIHNwbGl0dGluZyBvZiByZXF1ZXN0cywgb3Igc29tZSBhc3BlY3RzIG9mIHRoZSBjYWNoZSBtYW5hZ2VtZW50IGFzc29jaWF0ZWQgd2l0aCBNTUlPIGluIHRoZSBLVk0gdmlydHVhbGl6YXRpb24gY29udGV4dC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaGFuZGxlcyB0aGUgZWZmaWNpZW5jeSBhbmQgY29ycmVjdG5lc3Mgb2YgTU1JTyBvcGVyYXRpb25zLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UuIEkgd2lsbCBiZSBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ3Vlc3QgYW5kIGhvc3QgZm9yIE1NSU8gb3BlcmF0aW9ucy4gSSBhbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBhbnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW52b2x2ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0vY29hbGVzY2VkX21taW8uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTE1Olx0XG4gMTE2Olx0dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pXG4gMTE3Olx0e1xuIDExODpcdFx0aWYgKGt2bS1cdTAwM2Vjb2FsZXNjZWRfbW1pb19yaW5nKVxuIDExOTpcdFx0XHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVx1MDAzZWNvYWxlc2NlZF9tbWlvX3JpbmcpO1xuIDEyMDpcdH1cbiAxMjE6XHRcbiAxMjI6XHRpbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcbiAxMjM6XHRcdFx0XHRcdFx0IHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcbiAxMjQ6XHR7XG4gMTI1Olx0XHRpbnQgcmV0O1xuIDEyNjpcdFx0c3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb19kZXYgKmRldjtcbiAxMjc6XHRcbiAxMjg6XHRcdGlmICh6b25lLVx1MDAzZXBpbyAhPSAxIFx1MDAyNlx1MDAyNiB6b25lLVx1MDAzZXBpbyAhPSAwKVxuIDEyOTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxMzA6XHRcbiAxMzE6XHRcdGlmICh6b25lLVx1MDAzZXNpemUgXHUwMDNlIElOVF9NQVggfHwgem9uZS1cdTAwM2VhZGRyICYjNDM7IHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2Mgem9uZS1cdTAwM2VhZGRyKVxuIDEzMjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxMzM6XHRcbiAxMzQ6XHRcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fZGV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xuIDEzNTpcdFx0aWYgKCFkZXYpXG4gMTM2Olx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDEzNzpcdFxuIDEzODpcdFx0a3ZtX2lvZGV2aWNlX2luaXQoXHUwMDI2ZGV2LVx1MDAzZWRldiwgXHUwMDI2Y29hbGVzY2VkX21taW9fb3BzKTtcbiAxMzk6XHRcdGRldi1cdTAwM2Vrdm0gPSBrdm07XG4gMTQwOlx0XHRkZXYtXHUwMDNlem9uZSA9ICp6b25lO1xuIDE0MTpcdFxuIDE0MjpcdFx0bXV0ZXhfbG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4gMTQzOlx0XHRyZXQgPSBrdm1faW9fYnVzX3JlZ2lzdGVyX2Rldihrdm0sXG4gMTQ0Olx0XHRcdFx0XHR6b25lLVx1MDAzZXBpbyA/IEtWTV9QSU9fQlVTIDogS1ZNX01NSU9fQlVTLFxuIDE0NTpcdFx0XHRcdFx0em9uZS1cdTAwM2VhZGRyLCB6b25lLVx1MDAzZXNpemUsIFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuIDE0NjpcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAxNDc6XHRcdFx0Z290byBvdXRfZnJlZV9kZXY7XG4gMTQ4Olx0XHRsaXN0X2FkZF90YWlsKFx1MDAyNmRldi1cdTAwM2VsaXN0LCBcdTAwMjZrdm0tXHUwMDNlY29hbGVzY2VkX3pvbmVzKTtcbiAxNDk6XHRcdG11dGV4X3VubG9jayhcdTAwMjZrdm0tXHUwMDNlc2xvdHNfbG9jayk7XG4gMTUwOlx0XG4gMTUxOlx0XHRyZXR1cm4gMDtcbiAxNTI6XHRcbiAxNTM6XHRvdXRfZnJlZV9kZXY6XG4gMTU0Olx0XHRtdXRleF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNsb3RzX2xvY2spO1xuIDE1NTpcdFx0a2ZyZWUoZGV2KTtcbiAxNTY6XHRcbiAxNTc6XHRcdHJldHVybiByZXQ7XG4gMTU4Olx0fVxuIDE1OTpcdFxuIDE2MDpcdGludCBrdm1fdm1faW9jdGxfdW5yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXG4gMTYxOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcbiAxNjI6XHR7XG4gMTYzOlx0XHRzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX2RldiAqZGV2LCAqdG1wO1xuIDE2NDpcdFx0aW50IHI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDEyOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNjQKCQkJCQkJCW91dHB1dDogMTQ2CgkJCQkJCQl0aG91Z2h0czogMjM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFZ1bG5lcmFiaWxpdHkgYW5kIEtNU0FOIEFwcGxpY2FiaWxpdHkqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUmIzM5O3MgbXkgdGFrZS4gSXQmIzM5O3MgYWRkaW5nIGFuIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgb24gYHpvbmUtJmd0O3NpemVgIGFuZCBgem9uZS0mZ3Q7YWRkciAmIzQzOyB6b25lLSZndDtzaXplYCB3aXRoaW4gdGhlIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAgZnVuY3Rpb24uIFRoZSBpbnRlbnRpb24gaXMgY2xlYXJseSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCBvciBwb3RlbnRpYWxseSBpbmNvcnJlY3QgTU1JTyByZWdpb24gcmVnaXN0cmF0aW9ucywgdGhhdCBjb3VsZCBiZSBjYXVzZWQgYnkgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIG1lbW9yeSByZWdpb24gc2l6ZXMgb3IgYWRkcmVzc2VzLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhICpwb3RlbnRpYWwqIG1lbW9yeSBzYWZldHkgaXNzdWU7IGludGVnZXIgb3ZlcmZsb3dzIGNhbiBiZSBpbnNpZGlvdXMuIEhvd2V2ZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIEtNU0FOIGlzIHRoZSByaWdodCB0b29sIGhlcmUuCgpUaGUgY29yZSBvZiB0aGUgaXNzdWUgKmlzbiYjMzk7dCogdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0JiMzOTtzIG5vdCBhYm91dCBsZWFraW5nIGRhdGEgb3IgdHJpZ2dlcmluZyBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlIGZyb20gdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZSBgem9uZWAgc3RydWN0ICppcyogY29taW5nIGZyb20gdXNlcnNwYWNlLCB3aGljaCBpcyBhIGtleSBwb2ludCwgYnV0IHRoZSBwcm9ibGVtIGFyaXNlcyBvbmx5IHdpdGggYSB2ZXJ5IHNwZWNpZmljIHNldCBvZiBjaXJjdW1zdGFuY2VzIGFyb3VuZCB0aGUgcG90ZW50aWFsIGZvciBpbnRlZ2VyIG92ZXJmbG93cy4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgdG8gZGVhbCB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCgpHaXZlbiBhbGwgb2YgdGhpcywgYSBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXNuJiMzOTt0IHJlYWxseSBqdXN0aWZpZWQgaGVyZS4gVGhlIHBhdGNoIGRlYWxzIHdpdGggdGhlIHBvdGVudGlhbCBmb3IgaW50ZWdlciBvdmVyZmxvdywgYW5kIHRoYXQmIzM5O3Mgbm90IHNvbWV0aGluZyBLTVNBTiB0eXBpY2FsbHkgZmluZHM7IEtBU0FOIHdvdWxkIGJlIHRoZSB0b29sIHRvIGRldGVjdCBhbmQgcmVwb3J0IG91dC1vZi1ib3VuZHMgd3JpdGVzIG9yIHJlYWRzLiBUaGVyZWZvcmUsIGl0JiMzOTtzIHNhZmUgdG8gc2F5IHRoYXQgYE5lZWRzS01TQU5gIHNob3VsZCBiZSBzZXQgdG8gYGZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMTI6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGZvciBgem9uZS1cdTAwM2VzaXplYCBhbmQgYHpvbmUtXHUwMDNlYWRkciAmIzQzOyB6b25lLVx1MDAzZXNpemVgIGluIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIG9yIGluY29ycmVjdCBtZW1vcnkgcmVnaW9uIHJlZ2lzdHJhdGlvbnMgdGhhdCBjb3VsZCByZXN1bHQgZnJvbSBpbnRlZ2VyIG92ZXJmbG93LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBhZGRyZXNzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXHUwMDNlc2l6ZWAgYW5kIGB6b25lLVx1MDAzZWFkZHIgJiM0Mzsgem9uZS1cdTAwM2VzaXplYCBpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKClgLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBvciBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgcmVzdWx0IGZyb20gaW50ZWdlciBvdmVyZmxvdy4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ1OjQ3LjYxNTAwMjc3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1OTQ0NTAwNzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW9cIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXFx1MDAzZXNpemVgIGFuZCBgem9uZS1cXHUwMDNlYWRkciArIHpvbmUtXFx1MDAzZXNpemVgIGluIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIG9yIGluY29ycmVjdCBtZW1vcnkgcmVnaW9uIHJlZ2lzdHJhdGlvbnMgdGhhdCBjb3VsZCByZXN1bHQgZnJvbSBpbnRlZ2VyIG92ZXJmbG93LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBhZGRyZXNzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2l6ZSBhbmQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayB0byB0aGUgS1ZNX1JFR0lTVEVSX0NPQUxFU0NFRF9NTUlPIGlvY3RsIGhhbmRsZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgYnVnIGluIGNvcmUgS1ZNIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ1OjQ3LjYxNTAwODE5MloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzNjE5MjkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQwYmFhMWYyZmY2NTNhODQwM2IxYTczZTUxM2JiZGU2OWZlZjc2NjFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgMjcgMTI6NDU6NDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcXG5pbmRleCA2YjFkOTAxNjEwOTk4Li5mY2FkYmY2ZWU2YzllIDEwMDY0NFxcbi0tLSBhL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcXG4rKysgYi92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXFxuQEAgLTEyOCw2ICsxMjgsOSBAQCBpbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcXG4gXFx0aWYgKHpvbmUtXFx1MDAzZXBpbyAhPSAxIFxcdTAwMjZcXHUwMDI2IHpvbmUtXFx1MDAzZXBpbyAhPSAwKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuK1xcdGlmICh6b25lLVxcdTAwM2VzaXplIFxcdTAwM2UgSU5UX01BWCB8fCB6b25lLVxcdTAwM2VhZGRyICsgem9uZS1cXHUwMDNlc2l6ZSBcXHUwMDNjIHpvbmUtXFx1MDAzZWFkZHIpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb19kZXYsIEdGUF9LRVJORUxfQUNDT1VOVCk7XFxuIFxcdGlmICghZGV2KVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDU6NDkuMjUzMjg0NzIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTExMzg4NDUwMzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaXplIGFuZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIHRvIHRoZSBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU8gaW9jdGwgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBidWcgaW4gY29yZSBLVk0gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDBiYWExZjJmZjY1M2E4NDAzYjFhNzNlNTEzYmJkZTY5ZmVmNzY2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDEyOjQ1OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcbmluZGV4IDZiMWQ5MDE2MTA5OTguLmZjYWRiZjZlZTZjOWUgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXG4rKysgYi92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXG5AQCAtMTI4LDYgKzEyOCw5IEBAIGludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxuIFx0aWYgKHpvbmUtXHUwMDNlcGlvICE9IDEgXHUwMDI2XHUwMDI2IHpvbmUtXHUwMDNlcGlvICE9IDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2UgSU5UX01BWCB8fCB6b25lLVx1MDAzZWFkZHIgKyB6b25lLVx1MDAzZXNpemUgXHUwMDNjIHpvbmUtXHUwMDNlYWRkcilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX2RldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ1OjQ5LjI1MzI4NzEwMVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTQzMTIyMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gQ29hbGVzY2VkIE1NSU8gUmVnaXN0cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyBhZGRpbmcgYSBzaXplIGNoZWNrIGludG8gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2Agd2l0aGluIGB2aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jYC4gSW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZyDigJMgaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBpcyBnb29kLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICp3aHkqIGJlaGluZCBpdC4gSXQgbG9va3MgbGlrZSB0aGUgY2hlY2sgaXMgYHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2UgSU5UX01BWCB8fCB6b25lLVx1MDAzZWFkZHIgKyB6b25lLVx1MDAzZXNpemUgXHUwMDNjIHpvbmUtXHUwMDNlYWRkcmAuIEkgc2VlIHdoYXQgdGhleSdyZSBkb2luZzogcHJldmVudGluZyBpbnRlZ2VyIG92ZXJmbG93IGFuZCBkZXRlY3RpbmcgYSBuZWdhdGl2ZSBzaXplIGR1cmluZyB0aGUgcmVnaXN0cmF0aW9uIG9mIGNvYWxlc2NlZCBNTUlPIHJlZ2lvbnMgd2l0aGluIEtWTS4gVGhpcyBpcyBhIHNvbGlkIGFwcHJvYWNoIHRvIGhhcmRlbmluZyB0aGUgY29kZS4gR290dGEga2VlcCB0aG9zZSBjb3JuZXIgY2FzZXMgaW4gbWluZC4gTm93LCBJIHNob3VsZCBwcm9iYWJseSBmYW1pbGlhcml6ZSBteXNlbGYgYWdhaW4gd2l0aCBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBpdHNlbGYuIExldCBtZSBjaGVjayB0aGUgY29kZTsgaXTigJlzIHRoZSBpb2N0bCBoYW5kbGVyIGZvciBLVk0uIEFscmlnaHQsIHRpbWUgdG8gdHJhY2UgZG93biB3aGVyZSBlbHNlIHRoaXMgaXMgdXNlZCBpbiB0aGUgY29kZWJhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjYsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NTo1NC4zMDc2MDIxMDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY0NjU4NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vY29hbGVzY2VkX21taW8uYz0xMTY9dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMS1cXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jOjEyMjppbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMy1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NTo1NC4zOTQwNzI5NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ3MjIzNDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIG15IGNvZGUgYXMgdGhlIGV4cGVydCBJIGFtOlxuXG4qKlRyYWNpbmcgdGhlIEZ1bmN0aW9uIENhbGxzKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmJlaW5nIHVzZWQqP1wiLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gS25vd2luZyB0aGUgY2FsbCBsb2NhdGlvbnMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gaGVyZSwgc2VlIHdoYXQncyB0cmlnZ2VyaW5nIHRoaXMgc3BlY2lmaWMgYmxvY2sgb2YgY29kZSB0byBleGVjdXRlLiBVbmRlcnN0YW5kaW5nIHRoZSB1cHN0cmVhbSBkZXBlbmRlbmNpZXMgaXMgdGhlIGJlc3Qgd2F5IHRvIGdyYXNwIGl0cyBvdmVyYWxsIGJlaGF2aW91ci4gTGV04oCZcyBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MjMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NTo1Ny44NDEzMDAzODVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxNDE5MDI2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmM9MTE2PXZvaWQga3ZtX2NvYWxlc2NlZF9tbWlvX2ZyZWUoc3RydWN0IGt2bSAqa3ZtKVxcbi0tXFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYy0xMjEtXFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYzoxMjI6aW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uYy0xMjMtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcXG4tLVxcbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmg9MjY9dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pO1xcbnZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmg6Mjc6aW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXFxudmlydC9rdm0vY29hbGVzY2VkX21taW8uaC0yOC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgKnpvbmUpO1xcbi0tXFxudmlydC9rdm0va3ZtX21haW4uYz01MTY3PXN0YXRpYyBsb25nIGt2bV92bV9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tYWluLmMtNTI1MC1cXHRcXHRcXHRnb3RvIG91dDtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jOjUyNTE6XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhrdm0sIFxcdTAwMjZ6b25lKTtcXG52aXJ0L2t2bS9rdm1fbWFpbi5jLTUyNTItXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ2OjAwLjU1NTQ5NTg4MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NjcwNjI5NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1ZNIElvY3RsIENhbGwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBzb21ldGhpbmcgY29taW5nIGZyb20gYGt2bV92bV9pb2N0bGAgd2l0aGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgY29yZSBLVk0gaW9jdGwg4oCTIGRlZmluaXRlbHkgc29tZXRoaW5nIGltcG9ydGFudCB0byBwZXJmb3JtYW5jZSBvciBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgS1ZNIGh5cGVydmlzb3IuIE15IGd1dCBmZWVsaW5nLCBiYXNlZCBvbiB0aGUgY29udGV4dCwgaXMgdGhhdCB0aGlzIGlvY3RsIGlzIGxpa2VseSBgS1ZNX1JFR0lTVEVSX0NPQUxFU0NFRF9NTUlPYC4gVG8gY29uZmlybSwgSSBzaG91bGQgemVybyBpbiBvbiBgdmlydC9rdm0va3ZtX21haW4uY2AgYXJvdW5kIGxpbmUgNTI1MS4gVGhhdCBzaG91bGQgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGRldGFpbHMgb24gdGhlIGlvY3RsIGluIHF1ZXN0aW9uIGFuZCBpdHMgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzIG9yIGFjdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxODMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NjowNC4yMjI1NjE1NzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDcwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0va3ZtX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MjQwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI1MjQwOlxcdFxcdFxcdHIgPSBrdm1fdm1faW9jdGxfY2xlYXJfZGlydHlfbG9nKGt2bSwgXFx1MDAyNmxvZyk7XFxuNTI0MTpcXHRcXHRcXHRicmVhaztcXG41MjQyOlxcdFxcdH1cXG41MjQzOlxcdCNlbmRpZlxcbjUyNDQ6XFx0I2lmZGVmIENPTkZJR19LVk1fTU1JT1xcbjUyNDU6XFx0XFx0Y2FzZSBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU86IHtcXG41MjQ2OlxcdFxcdFxcdHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSB6b25lO1xcbjUyNDc6XFx0XFxuNTI0ODpcXHRcXHRcXHRyID0gLUVGQVVMVDtcXG41MjQ5OlxcdFxcdFxcdGlmIChjb3B5X2Zyb21fdXNlcihcXHUwMDI2em9uZSwgYXJncCwgc2l6ZW9mKHpvbmUpKSlcXG41MjUwOlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjUyNTE6XFx0XFx0XFx0ciA9IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhrdm0sIFxcdTAwMjZ6b25lKTtcXG41MjUyOlxcdFxcdFxcdGJyZWFrO1xcbjUyNTM6XFx0XFx0fVxcbjUyNTQ6XFx0XFx0Y2FzZSBLVk1fVU5SRUdJU1RFUl9DT0FMRVNDRURfTU1JTzoge1xcbjUyNTU6XFx0XFx0XFx0c3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lIHpvbmU7XFxuNTI1NjpcXHRcXG41MjU3OlxcdFxcdFxcdHIgPSAtRUZBVUxUO1xcbjUyNTg6XFx0XFx0XFx0aWYgKGNvcHlfZnJvbV91c2VyKFxcdTAwMjZ6b25lLCBhcmdwLCBzaXplb2Yoem9uZSkpKVxcbjUyNTk6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ2OjA0LjIyMjkxMDI1MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODA5MDc4NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gTU1JTyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgZm9jdXMgaXMgYENPTkZJR19LVk1fTU1JT2AuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHRoZSBicm9hZGVyIGNvbnRleHQuIFdoZXJlICppcyogdGhpcyBkZWZpbmVkPyBJIG5lZWQgdG8gdHJhY2UgaXRzIG9yaWdpbnMgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gTW9yZSBpbXBvcnRhbnRseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gRG9lcyBpdCByZWx5IG9uIG90aGVyIHNldHRpbmdzIGJlaW5nIGVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgYmVmb3JlIEkgZXZlbiBjb25zaWRlciBlbmFibGluZyBpdCwgb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgd2lsbCB3b3JrPyBUaGlzIGtpbmQgb2YgZGVwZW5kZW5jeSBhbmFseXNpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHN5c3RlbSBpbXBsaWNhdGlvbnMuIExldCdzIGRpZyBpbnRvIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0IHRoZSBidWlsZCBzeXN0ZW0gcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDY6MDcuNjAzODIwMDg3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkxMzY0NDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1fTU1JT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vS2NvbmZpZz0zOT1jb25maWcgTkVFRF9LVk1fRElSVFlfUklOR19XSVRIX0JJVE1BUFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00Mi1cXG52aXJ0L2t2bS9LY29uZmlnOjQzOmNvbmZpZyBLVk1fTU1JT1xcbnZpcnQva3ZtL0tjb25maWctNDQtICAgICAgIGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDY6MDkuOTk1MjA5NDlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEzODE0OTY0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYSBzZWFzb25lZCBleHBlcnQ6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgdGhpcyBsb29rcyBsaWtlIGEgYm9vbGVhbiBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF04oCZcyBwcm9iYWJseSBiZWluZyBkZXRlcm1pbmVkIGJ5IHRoZSBLVk0gc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUuIEknbSB0aGlua2luZyB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyBgdmlydC9rdm0vS2NvbmZpZ2AuIEFuZCwgYmFzZWQgb24gcGFzdCBleHBlcmllbmNlIGFuZCB0aGUgY29udGV4dCwgSeKAmW0gYmV0dGluZyB0aGUgcmVsZXZhbnQgc2VjdGlvbiBpcyBzb21ld2hlcmUgYXJvdW5kIGxpbmUgNDMuIFRpbWUgdG8gcHVsbCB1cCB0aGF0IGZpbGUgYW5kIHRha2UgYSBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDY6MTYuMTMzMzY4ODgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjY1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJ2aXJ0L2t2bS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDM1OlxcdCAgICAgICBzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR1xcbiAgMzY6XFx0XFxuICAzNzpcXHQjIEFsbG93IGVuYWJsaW5nIGJvdGggdGhlIGRpcnR5IGJpdG1hcCBhbmQgZGlydHkgcmluZy4gT25seSBhcmNoaXRlY3R1cmVzXFxuICAzODpcXHQjIHRoYXQgbmVlZCB0byBkaXJ0eSBtZW1vcnkgb3V0c2lkZSBvZiBhIHZDUFUgY29udGV4dCBzaG91bGQgc2VsZWN0IHRoaXMuXFxuICAzOTpcXHRjb25maWcgTkVFRF9LVk1fRElSVFlfUklOR19XSVRIX0JJVE1BUFxcbiAgNDA6XFx0XFx0Ym9vbFxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBIQVZFX0tWTV9ESVJUWV9SSU5HXFxuICA0MjpcXHRcXG4gIDQzOlxcdGNvbmZpZyBLVk1fTU1JT1xcbiAgNDQ6XFx0ICAgICAgIGJvb2xcXG4gIDQ1OlxcdFxcbiAgNDY6XFx0Y29uZmlnIEtWTV9BU1lOQ19QRlxcbiAgNDc6XFx0ICAgICAgIGJvb2xcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0IyBUb2dnbGUgdG8gc3dpdGNoIGJldHdlZW4gZGlyZWN0IG5vdGlmaWNhdGlvbiBhbmQgYmF0Y2ggam9iXFxuICA1MDpcXHRjb25maWcgS1ZNX0FTWU5DX1BGX1NZTkNcXG4gIDUxOlxcdCAgICAgICBib29sXFxuICA1MjpcXHRcXG4gIDUzOlxcdGNvbmZpZyBIQVZFX0tWTV9NU0lcXG4gIDU0OlxcdCAgICAgICBib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ2OjE2LjEzMzQ5MzUwMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTYwMzEwNTk2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNX01NSU8gU2VsZWN0aW9uIFByb2Nlc3MqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gXCJMZXQncyBzZWUgd2hhdCBzZWxlY3RzIGBLVk1fTU1JT2AuXCIgVGhhdCdzIHRoZSBjb3JlIHF1ZXN0aW9uIGhlcmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyBkcml2aW5nIHRoZSBkZWNpc2lvbiB0byB1c2UgTU1JTyB3aXRoaW4gdGhlIEtWTSBlbnZpcm9ubWVudD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdHJpZ2dlciwgdGhlIHJhdGlvbmFsZSwgdGhlIGNpcmN1bXN0YW5jZXMgdGhhdCBsZWFkIHRvIHRoZSBzeXN0ZW0gY2hvb3NpbmcgdGhhdCBwYXJ0aWN1bGFyIG1ldGhvZCBmb3IgZ3Vlc3QgbWVtb3J5IGFjY2Vzcy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsYXllcnMgaW52b2x2ZWQg4oCTIGlzIGl0IGluaXRpYXRlZCBieSB0aGUgZ3Vlc3Qga2VybmVsIGl0c2VsZiwgdGhlIGh5cGVydmlzb3IsIG9yIHBvdGVudGlhbGx5IGEgY29tYmluYXRpb24/IEFyZSB0aGVyZSBzcGVjaWZpYyBndWVzdCBjb25maWd1cmF0aW9ucywgZGV2aWNlIG1vZGVscywgb3IgdmlydHVhbGl6YXRpb24gZmVhdHVyZXMgdGhhdCBoZWF2aWx5IGluZmx1ZW5jZSB0aGlzIGNob2ljZT8gQXJlIHRoZXJlIHBhcnRpY3VsYXIgZ3Vlc3QgYXJjaGl0ZWN0dXJlcyB0aGF0IGZhdm9yIE1NSU8sIG9yIGlzIGl0IG1vcmUgb2YgYSBmYWxsYmFjayBtZWNoYW5pc20/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgZ3JlcHBpbmcgdGhlIHJlbGV2YW50IGtlcm5lbCBzb3VyY2UgdHJlZXMgZm9yIHJlZmVyZW5jZXMgdG8gdGhhdCBjb25zdGFudCwgbG9va2luZyBmb3IgY2FsbCBzaXRlcywgY29uZGl0aW9uYWwgc3RhdGVtZW50cywgYW5kIGFueSByZWxhdGVkIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBmbG93IG9mIGV4ZWN1dGlvbiBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBgS1ZNX01NSU9gIGlzIHVsdGltYXRlbHkgc2VsZWN0ZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHNlbGVjdGlvbiBjcml0ZXJpYSBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIG92ZXJhbGwgS1ZNIHBlcmZvcm1hbmNlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBtZW1vcnkgYWNjZXNzIHRlY2huaXF1ZXMgbGlrZSBQViwgZW11bGF0ZWQgZGV2aWNlcywgZXRjLiwgYW5kIHRvIHdoYXQgZXh0ZW50IGl0J3Mgb3B0aW1pemVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDg3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NzowNy43MzY2MDM0MzhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MzM4NTgyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEtWTV9NTUlPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTIwPW1lbnVjb25maWcgS1ZNXFxuLS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTI0LVxcdHNlbGVjdCBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZzoyNTpcXHRzZWxlY3QgS1ZNX01NSU9cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTI2LVxcdHNlbGVjdCBLVk1fR0VORVJJQ19ESVJUWUxPR19SRUFEX1BST1RFQ1RcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnPTIwPWNvbmZpZyBLVk1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTMwLVxcdHNlbGVjdCBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjMxOlxcdHNlbGVjdCBLVk1fTU1JT1xcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTMyLVxcdHNlbGVjdCBWSVJUX1hGRVJfVE9fR1VFU1RfV09SS1xcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE4PWNvbmZpZyBLVk1cXG4tLVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0yNC1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjI1OlxcdHNlbGVjdCBLVk1fTU1JT1xcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0yNi1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0yOT1jb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzEtXFx0c2VsZWN0IEtWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozMjpcXHRzZWxlY3QgS1ZNX01NSU9cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzMtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9Mzg9Y29uZmlnIEtWTV9CT09LM1NfUFJfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzktXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0MDpcXHRzZWxlY3QgS1ZNX01NSU9cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDEtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc9MTk4PWNvbmZpZyBLVk1fRTUwMFYyXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjAyLVxcdHNlbGVjdCBLVk1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjAzOlxcdHNlbGVjdCBLVk1fTU1JT1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMDQtXFx0aGVscFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTIxMz1jb25maWcgS1ZNX0U1MDBNQ1xcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNy1cXHRzZWxlY3QgS1ZNXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxODpcXHRzZWxlY3QgS1ZNX01NSU9cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjE5LVxcdHNlbGVjdCBLVk1fQk9PS0VfSFZcXG4tLVxcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTVxcbi0tXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0zMC1cXHRzZWxlY3QgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjMxOlxcdHNlbGVjdCBLVk1fTU1JT1xcbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMzItXFx0c2VsZWN0IFZJUlRfWEZFUl9UT19HVUVTVF9XT1JLXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0yMD1jb25maWcgS1ZNX1g4Nlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMzQtXFx0c2VsZWN0IFVTRVJfUkVUVVJOX05PVElGSUVSXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MzU6XFx0c2VsZWN0IEtWTV9NTUlPXFxuYXJjaC94ODYva3ZtL0tjb25maWctMzYtXFx0c2VsZWN0IFNDSEVEX0lORk9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDc6MTEuNDcwNDY3NDA2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MTk0NzU4NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgS1ZNIENvYWxlc2NlZCBNTUlPIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBLVk0gY29uZmlndXJhdGlvbiBpcyB0aGUga2V5IGhlcmUgZm9yIHg4Ni4gSSBuZWVkIHRvIHplcm8gaW4gb24gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2Ag4oCTIHRoYXQncyB0aGUgZnVuY3Rpb24gSSBzaG91bGQgYmUgZm9jdXNpbmcgb24uIEdpdmVuIHRoYXQgaXQncyBzZWxlY3RlZCBieSBgS1ZNYCBvciBgS1ZNX1g4NmAsIGl0IGxvb2tzIGxpa2UgYEtWTWAgaXMgdGhlIGNvbmZpZyBJIGFjdHVhbGx5IG5lZWQsIGJ1dCBJIHNob3VsZCBkb3VibGUgY2hlY2sgdGhhdC5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgKm90aGVyKiBkZXBlbmRlbmNpZXMuIEl0IHNlZW1zIHRoYXQgYEtWTWAgYWxvbmUgaXMgc3VmZmljaWVudCwgdGhvdWdoIEknbGwgYmUgdGhvcm91Z2guXG5cblRoaXMgcGF0Y2ggaXMgaW50ZXJlc3Rpbmc7IGl0J3MgYSBmdW5jdGlvbmFsIGZpeCwgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IHZ1bG5lcmFiaWxpdHkgaW4gdGhhdCB6b25lIHNpemUgY2FsY3VsYXRpb24gKGB6b25lLVx1MDAzZXNpemUgXHUwMDNlIElOVF9NQVggfHwgem9uZS1cdTAwM2VhZGRyICsgem9uZS1cdTAwM2VzaXplIFx1MDAzYyB6b25lLVx1MDAzZWFkZHJgKS4gVGhhdCBtYWtlcyBpdCAqZGVmaW5pdGVseSogd29ydGggZnV6emluZywgYW5kIEkgc2hvdWxkIGFkZCBpdCB0byBteSBmdXp6aW5nIHF1ZXVlIGltbWVkaWF0ZWx5LlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb2AsIGFuZCB0aGUgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGVuYWJsZSBhcmUgYEtWTWAuXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRoYXQgZnVuY3Rpb24gaXMgc3RhdGljIG9yIGlubGluZS4gSSBzZWUgaXQgZGVmaW5lZCBpbiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AgYXMgYGludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLCBzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgKnpvbmUpYCBhbmQgZXhwb3J0ZWQgaW4gYHZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmhgLiBTbywgaXQncyBub3Qgc3RhdGljIGFuZCBpdCdzIG5vdCBpbmxpbmUsIHdoaWNoIGNoYW5nZXMgdGhlIGltcGxpY2F0aW9ucyBvZiBob3cgSSBpbnRlcmFjdCB3aXRoIGl0LlxuXG5Ob3csIGxldCdzIHZlcmlmeSBpZiBgS1ZNYCBpcyB0aGUgb25seSBjb25maWcgbmVlZGVkLiBPbiB4ODYsIGl0J3MgYEtWTWAuIEJ1dCB3YWl0LCBvbiB4ODYsIGlzbid0IGBLVk1gIGEgbWVudWNvbmZpZyBhbmQgYEtWTV9YODZgIHRoZSBhY3R1YWwgY29uZmlnPyBJIG5lZWQgdG8gY2hlY2sgYGFyY2gveDg2L2t2bS9LY29uZmlnYCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY5OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0NzoxOS4xODk5NDU4MjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2Njk1OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxLVxcdGRlZl90cmlzdGF0ZSBLVk0gaWYgKEtWTV9JTlRFTCAhPSBuIHx8IEtWTV9BTUQgIT0gbilcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjUyOmNvbmZpZyBLVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy03MC1cXHRib29sIFxcXCJDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo4Mzpjb25maWcgS1ZNX1NXX1BST1RFQ1RFRF9WTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTg0LVxcdGJvb2wgXFxcIkVuYWJsZSBzdXBwb3J0IGZvciBLVk0gc29mdHdhcmUtcHJvdGVjdGVkIFZNc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjk2OmNvbmZpZyBLVk1fSU5URUxcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBJbnRlbCAoYW5kIGNvbXBhdGlibGUpIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEwOC0gICAgICAgIGJvb2wgXFxcIkNoZWNrIHRoYXQgZ3Vlc3RzIGRvIG5vdCByZWNlaXZlICNWRSBleGNlcHRpb25zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWc9MTIyPWNvbmZpZyBYODZfU0dYX0tWTVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTMzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEzNDpjb25maWcgS1ZNX0lOVEVMX1REWFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cXHRib29sIFxcXCJJbnRlbCBUcnVzdCBEb21haW4gRXh0ZW5zaW9ucyAoVERYKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0Ny1cXHR0cmlzdGF0ZSBcXFwiS1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE1Njpjb25maWcgS1ZNX0FNRF9TRVZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXFx0Ym9vbCBcXFwiQU1EIFNlY3VyZSBFbmNyeXB0ZWQgVmlydHVhbGl6YXRpb24gKFNFVikgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNzM6Y29uZmlnIEtWTV9JT0FQSUNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzQtXFx0Ym9vbCBcXFwiSS9PIEFQSUMsIFBJQywgYW5kIFBJVCBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgzOmNvbmZpZyBLVk1fU01NXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTg0LVxcdGJvb2wgXFxcIlN5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTkzLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE5NDpjb25maWcgS1ZNX0hZUEVSVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5NS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBNaWNyb3NvZnQgSHlwZXItViBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDctXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA4OmNvbmZpZyBLVk1fWEVOXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA5LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIFhlbiBoeXBlcmNhbGwgaW50ZXJmYWNlXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNzpjb25maWcgS1ZNX1BST1ZFX01NVVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxOC1cXHRib29sIFxcXCJQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjI5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMDpjb25maWcgS1ZNX0VYVEVSTkFMX1dSSVRFX1RSQUNLSU5HXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcdGJvb2xcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjMzOmNvbmZpZyBLVk1fTUFYX05SX1ZDUFVTXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjM0LVxcdGludCBcXFwiTWF4aW11bSBudW1iZXIgb2YgdkNQVXMgcGVyIEtWTSBndWVzdFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDc6MTkuMjM2NjQ2MDI2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIxMzMxNjk1MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2VzcyBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQ6XG5cbioqS1ZNIENvbmZpZ3VyYXRpb24gLSBDb25maXJtZWQgYW5kIEFjdGlvbmFibGUqKlxuXG5BbHJpZ2h0LCB0aGF0J3Mgd2hhdCBJIHN1c3BlY3RlZC4gQ29uZmlybWVkOiBgS1ZNYCBpcyBpbmRlZWQgdGhlIGNvbmZpZ3VyYXRpb24gd2UncmUgd29ya2luZyB3aXRoIGhlcmUuIEdvb2QuIE5vdyB3ZSdyZSBnZXR0aW5nIHNvbWV3aGVyZS4gV2l0aCB0aGF0IHNldHRsZWQsIGl0J3MgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMuIE5vIG1vcmUgZGl0aGVyaW5nLCB0aW1lIHRvIHB1dCB0aGF0IGNvbmZpZyBpbnRvIHBsYWNlLiBMZXQncyBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzc1OCwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0Nzo0MC41NjgzNDQwNzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzM4Njk5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIHNpemUgYW5kIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgdG8gdGhlIEtWTV9SRUdJU1RFUl9DT0FMRVNDRURfTU1JTyBpb2N0bCBoYW5kbGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIGJ1ZyBpbiBjb3JlIEtWTSBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaXplIGFuZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIHRvIHRoZSBLVk1fUkVHSVNURVJfQ09BTEVTQ0VEX01NSU8gaW9jdGwgaGFuZGxlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBidWcgaW4gY29yZSBLVk0gbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDc6NDAuNjQxNzM5MjE0WiIsIlNlcSI6MTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDY0MTgyNjMxNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0Nzo0MC42NDIyNzg1NjRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ2NDE3NzE5NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGFuIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgZm9yIGB6b25lLVxcdTAwM2VzaXplYCBhbmQgYHpvbmUtXFx1MDAzZWFkZHIgKyB6b25lLVxcdTAwM2VzaXplYCBpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKClgLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBvciBpbmNvcnJlY3QgbWVtb3J5IHJlZ2lvbiByZWdpc3RyYXRpb25zIHRoYXQgY291bGQgcmVzdWx0IGZyb20gaW50ZWdlciBvdmVyZmxvdy4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgYWRkcmVzcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlcnNwYWNlLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgdGFyZ2V0cyBmb3IgS01TQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDBiYWExZjJmZjY1M2E4NDAzYjFhNzNlNTEzYmJkZTY5ZmVmNzY2MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDEyOjQ1OjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0vY29hbGVzY2VkX21taW8uYyBiL3ZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcbmluZGV4IDZiMWQ5MDE2MTA5OTguLmZjYWRiZjZlZTZjOWUgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXG4rKysgYi92aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jXG5AQCAtMTI4LDYgKzEyOCw5IEBAIGludCBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oc3RydWN0IGt2bSAqa3ZtLFxuIFx0aWYgKHpvbmUtXHUwMDNlcGlvICE9IDEgXHUwMDI2XHUwMDI2IHpvbmUtXHUwMDNlcGlvICE9IDApXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuK1x0aWYgKHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2UgSU5UX01BWCB8fCB6b25lLVx1MDAzZWFkZHIgKyB6b25lLVx1MDAzZXNpemUgXHUwMDNjIHpvbmUtXHUwMDNlYWRkcilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRkZXYgPSBremFsbG9jX29iaihzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX2RldiwgR0ZQX0tFUk5FTF9BQ0NPVU5UKTtcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjQ3OjQwLjY0MjI3OTU0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTgxMzEwMDU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENvYWxlc2NlZCBNTUlPIFpvbmUgUmVnaXN0cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYm91bmRzIGNoZWNrIHdpdGhpbiBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBpbiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgaXMgdGhpcyBjaGVjazpcblxuYGBgY1xuXHRpZiAoem9uZS1cdTAwM2VzaXplIFx1MDAzZSBJTlRfTUFYIHx8IHpvbmUtXHUwMDNlYWRkciArIHpvbmUtXHUwMDNlc2l6ZSBcdTAwM2Mgem9uZS1cdTAwM2VhZGRyKVxuXHRcdHJldHVybiAtRUlOVkFMO1xuYGBgXG5cblJpZ2h0LCBhIHByZXR0eSBzdGFuZGFyZCBib3VuZHMgYW5kIG92ZXJmbG93IGNoZWNrIG9uIGB6b25lLVx1MDAzZXNpemVgIGFuZCBgem9uZS1cdTAwM2VhZGRyICsgem9uZS1cdTAwM2VzaXplYC4gSXQncyBkZXNpZ25lZCB0byBwcmV2ZW50IGludGVnZXIgb3ZlcmZsb3dzIG9yIGV4Y2Vzc2l2ZWx5IGxhcmdlIHNpemVzIGZvciB0aGUgbWVtb3J5IHpvbmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4gSW50ZWdlciBvdmVyZmxvd3MgYW5kIGV4Y2Vzc2l2ZWx5IGxhcmdlIHNpemVzIHR5cGljYWxseSBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIEtBU0FOIHdvdWxkIGNhdGNoLiBCdXQgaXMgdGhlcmUgYSBwb3RlbnRpYWwgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBoZXJlP1xuXG5MZXQncyBkaWcgaW50byB0aGUgY29kZSBhbmQgc2VlIGhvdyBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBhY3R1YWxseSAqdXNlcyogdGhpcyBgem9uZWAuIFRoZSBmdW5jdGlvbiB0YWtlcyBhIGBzdHJ1Y3Qga3ZtX2NvYWxlc2NlZF9tbWlvX3pvbmUgKnpvbmVgIGFzIGlucHV0LCB3aGljaCBjb21lcyBmcm9tIHVzZXJzcGFjZSB2aWEgYW4gaW9jdGwgY2FsbCwgd2hpY2ggaXMgYWx3YXlzIGEgcmVkIGZsYWcgYXMgaXQncyB0aGUgZ2F0ZXdheSBmb3IgdnVsbmVyYWJpbGl0eS4gU28sIHRoZSBwYXRjaCBpcyBiYXNpY2FsbHkgdHJ5aW5nIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBjb21wdXRpbmcgdGhlIHpvbmUncyBlbmQgYWRkcmVzcyBvciB3aGVuIGRlYWxpbmcgd2l0aCBhIHJlYWxseSBsYXJnZSBgem9uZS1cdTAwM2VzaXplYC4gVGhpcyBpcyBhIHRleHRib29rIGV4YW1wbGUgb2YgcHJldmVudGluZyBvdXQtb2YtYm91bmRzIGFjY2VzcyBvciBpbnRlZ2VyIG92ZXJmbG93IHNjZW5hcmlvcy4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgdG8gZGVhbCB3aXRoIG91dC1vZi1ib3VuZHMgaXNzdWVzLCBhbmQgS01TQU4gd291bGQgYmUgbmVlZGVkIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSwgcmlnaHQ/IExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvYCBhZ2FpbiB3aXRoaW4gYHZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNgIHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjMsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0ODoyMC40NTUzODIzMzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODAyOTE5MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL2NvYWxlc2NlZF9tbWlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vY29hbGVzY2VkX21taW8uYz0xMTY9dm9pZCBrdm1fY29hbGVzY2VkX21taW9fZnJlZShzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMS1cXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jOjEyMjppbnQga3ZtX3ZtX2lvY3RsX3JlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcXG52aXJ0L2t2bS9jb2FsZXNjZWRfbW1pby5jLTEyMy1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0ODoyMS45MzU2Nzk3MjhaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI3MjQ0ODQ3MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gZ3JhYiBgdmlydC9rdm0vY29hbGVzY2VkX21taW8uY2AgYW5kIHplcm8gaW4gYXJvdW5kIGxpbmUgMTIyLiBJIHdhbnQgdG8gc2VlIHdoYXQgdGhhdCBzZWN0aW9uIGlzIGhhbmRsaW5nIHdpdGhpbiB0aGUgY29hbGVzY2VkIE1NSU8gaW1wbGVtZW50YXRpb24uIEkgZXhwZWN0IEkgd2lsbCBsaWtlbHkgZmluZCBzb21lIG9mIHRoZSBjb3JlIGxvZ2ljIHJlZ2FyZGluZyBNTUlPIGNvYWxlc2NpbmcsIHBlcmhhcHMgZGVhbGluZyB3aXRoIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBtZXJnaW5nIG9yIHNwbGl0dGluZyBvZiByZXF1ZXN0cywgb3Igc29tZSBhc3BlY3RzIG9mIHRoZSBjYWNoZSBtYW5hZ2VtZW50IGFzc29jaWF0ZWQgd2l0aCBNTUlPIGluIHRoZSBLVk0gdmlydHVhbGl6YXRpb24gY29udGV4dC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGNvZGUgaGFuZGxlcyB0aGUgZWZmaWNpZW5jeSBhbmQgY29ycmVjdG5lc3Mgb2YgTU1JTyBvcGVyYXRpb25zLCB3aGljaCBpcyBjcml0aWNhbCBmb3IgcGVyZm9ybWFuY2UuIEkgd2lsbCBiZSBsb29raW5nIGZvciBob3cgaXQgaGFuZGxlcyBpbnRlcmFjdGlvbnMgYmV0d2VlbiB0aGUgZ3Vlc3QgYW5kIGhvc3QgZm9yIE1NSU8gb3BlcmF0aW9ucy4gSSBhbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBhbnkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgaW52b2x2ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMzksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QxMjo0OToxNC42NjAxNjcyMDJaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjAzNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0vY29hbGVzY2VkX21taW8uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTU6XFx0XFxuIDExNjpcXHR2b2lkIGt2bV9jb2FsZXNjZWRfbW1pb19mcmVlKHN0cnVjdCBrdm0gKmt2bSlcXG4gMTE3OlxcdHtcXG4gMTE4OlxcdFxcdGlmIChrdm0tXFx1MDAzZWNvYWxlc2NlZF9tbWlvX3JpbmcpXFxuIDExOTpcXHRcXHRcXHRmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpa3ZtLVxcdTAwM2Vjb2FsZXNjZWRfbW1pb19yaW5nKTtcXG4gMTIwOlxcdH1cXG4gMTIxOlxcdFxcbiAxMjI6XFx0aW50IGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbyhzdHJ1Y3Qga3ZtICprdm0sXFxuIDEyMzpcXHRcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGt2bV9jb2FsZXNjZWRfbW1pb196b25lICp6b25lKVxcbiAxMjQ6XFx0e1xcbiAxMjU6XFx0XFx0aW50IHJldDtcXG4gMTI2OlxcdFxcdHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fZGV2ICpkZXY7XFxuIDEyNzpcXHRcXG4gMTI4OlxcdFxcdGlmICh6b25lLVxcdTAwM2VwaW8gIT0gMSBcXHUwMDI2XFx1MDAyNiB6b25lLVxcdTAwM2VwaW8gIT0gMClcXG4gMTI5OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHRpZiAoem9uZS1cXHUwMDNlc2l6ZSBcXHUwMDNlIElOVF9NQVggfHwgem9uZS1cXHUwMDNlYWRkciArIHpvbmUtXFx1MDAzZXNpemUgXFx1MDAzYyB6b25lLVxcdTAwM2VhZGRyKVxcbiAxMzI6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDEzMzpcXHRcXG4gMTM0OlxcdFxcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fZGV2LCBHRlBfS0VSTkVMX0FDQ09VTlQpO1xcbiAxMzU6XFx0XFx0aWYgKCFkZXYpXFxuIDEzNjpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0a3ZtX2lvZGV2aWNlX2luaXQoXFx1MDAyNmRldi1cXHUwMDNlZGV2LCBcXHUwMDI2Y29hbGVzY2VkX21taW9fb3BzKTtcXG4gMTM5OlxcdFxcdGRldi1cXHUwMDNla3ZtID0ga3ZtO1xcbiAxNDA6XFx0XFx0ZGV2LVxcdTAwM2V6b25lID0gKnpvbmU7XFxuIDE0MTpcXHRcXG4gMTQyOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmt2bS1cXHUwMDNlc2xvdHNfbG9jayk7XFxuIDE0MzpcXHRcXHRyZXQgPSBrdm1faW9fYnVzX3JlZ2lzdGVyX2Rldihrdm0sXFxuIDE0NDpcXHRcXHRcXHRcXHRcXHR6b25lLVxcdTAwM2VwaW8gPyBLVk1fUElPX0JVUyA6IEtWTV9NTUlPX0JVUyxcXG4gMTQ1OlxcdFxcdFxcdFxcdFxcdHpvbmUtXFx1MDAzZWFkZHIsIHpvbmUtXFx1MDAzZXNpemUsIFxcdTAwMjZkZXYtXFx1MDAzZWRldik7XFxuIDE0NjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMTQ3OlxcdFxcdFxcdGdvdG8gb3V0X2ZyZWVfZGV2O1xcbiAxNDg6XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2ZGV2LVxcdTAwM2VsaXN0LCBcXHUwMDI2a3ZtLVxcdTAwM2Vjb2FsZXNjZWRfem9uZXMpO1xcbiAxNDk6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbiAxNTA6XFx0XFxuIDE1MTpcXHRcXHRyZXR1cm4gMDtcXG4gMTUyOlxcdFxcbiAxNTM6XFx0b3V0X2ZyZWVfZGV2OlxcbiAxNTQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNsb3RzX2xvY2spO1xcbiAxNTU6XFx0XFx0a2ZyZWUoZGV2KTtcXG4gMTU2OlxcdFxcbiAxNTc6XFx0XFx0cmV0dXJuIHJldDtcXG4gMTU4OlxcdH1cXG4gMTU5OlxcdFxcbiAxNjA6XFx0aW50IGt2bV92bV9pb2N0bF91bnJlZ2lzdGVyX2NvYWxlc2NlZF9tbWlvKHN0cnVjdCBrdm0gKmt2bSxcXG4gMTYxOlxcdFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fem9uZSAqem9uZSlcXG4gMTYyOlxcdHtcXG4gMTYzOlxcdFxcdHN0cnVjdCBrdm1fY29hbGVzY2VkX21taW9fZGV2ICpkZXYsICp0bXA7XFxuIDE2NDpcXHRcXHRpbnQgcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMTI6NDk6MTQuNjYwMjI4NzUyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzk5NzUwNTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgVnVsbmVyYWJpbGl0eSBhbmQgS01TQU4gQXBwbGljYWJpbGl0eSoqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kIGhlcmUncyBteSB0YWtlLiBJdCdzIGFkZGluZyBhbiBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIG9uIGB6b25lLVx1MDAzZXNpemVgIGFuZCBgem9uZS1cdTAwM2VhZGRyICsgem9uZS1cdTAwM2VzaXplYCB3aXRoaW4gdGhlIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAgZnVuY3Rpb24uIFRoZSBpbnRlbnRpb24gaXMgY2xlYXJseSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3Igd3JpdGVzLCBvciBwb3RlbnRpYWxseSBpbmNvcnJlY3QgTU1JTyByZWdpb24gcmVnaXN0cmF0aW9ucywgdGhhdCBjb3VsZCBiZSBjYXVzZWQgYnkgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNhbGN1bGF0aW5nIG1lbW9yeSByZWdpb24gc2l6ZXMgb3IgYWRkcmVzc2VzLiBUaGUgcGF0Y2ggaXMgYWRkcmVzc2luZyBhICpwb3RlbnRpYWwqIG1lbW9yeSBzYWZldHkgaXNzdWU7IGludGVnZXIgb3ZlcmZsb3dzIGNhbiBiZSBpbnNpZGlvdXMuIEhvd2V2ZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIEtNU0FOIGlzIHRoZSByaWdodCB0b29sIGhlcmUuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSAqaXNuJ3QqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCdzIG5vdCBhYm91dCBsZWFraW5nIGRhdGEgb3IgdHJpZ2dlcmluZyBpbmZvcm1hdGlvbiBkaXNjbG9zdXJlIGZyb20gdW5pbml0aWFsaXplZCBmaWVsZHMuIFRoZSBgem9uZWAgc3RydWN0ICppcyogY29taW5nIGZyb20gdXNlcnNwYWNlLCB3aGljaCBpcyBhIGtleSBwb2ludCwgYnV0IHRoZSBwcm9ibGVtIGFyaXNlcyBvbmx5IHdpdGggYSB2ZXJ5IHNwZWNpZmljIHNldCBvZiBjaXJjdW1zdGFuY2VzIGFyb3VuZCB0aGUgcG90ZW50aWFsIGZvciBpbnRlZ2VyIG92ZXJmbG93cy4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgdG8gZGVhbCB3aXRoIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBhIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpc24ndCByZWFsbHkganVzdGlmaWVkIGhlcmUuIFRoZSBwYXRjaCBkZWFscyB3aXRoIHRoZSBwb3RlbnRpYWwgZm9yIGludGVnZXIgb3ZlcmZsb3csIGFuZCB0aGF0J3Mgbm90IHNvbWV0aGluZyBLTVNBTiB0eXBpY2FsbHkgZmluZHM7IEtBU0FOIHdvdWxkIGJlIHRoZSB0b29sIHRvIGRldGVjdCBhbmQgcmVwb3J0IG91dC1vZi1ib3VuZHMgd3JpdGVzIG9yIHJlYWRzLiBUaGVyZWZvcmUsIGl0J3Mgc2FmZSB0byBzYXkgdGhhdCBgTmVlZHNLTVNBTmAgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDY0LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDEyOjUwOjA3LjA1OTk4MjEzN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhbiBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGZvciBgem9uZS1cXHUwMDNlc2l6ZWAgYW5kIGB6b25lLVxcdTAwM2VhZGRyICsgem9uZS1cXHUwMDNlc2l6ZWAgaW4gYGt2bV92bV9pb2N0bF9yZWdpc3Rlcl9jb2FsZXNjZWRfbW1pbygpYC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgb3IgaW5jb3JyZWN0IG1lbW9yeSByZWdpb24gcmVnaXN0cmF0aW9ucyB0aGF0IGNvdWxkIHJlc3VsdCBmcm9tIGludGVnZXIgb3ZlcmZsb3cuIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGFkZHJlc3MgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXJzcGFjZSwgd2hpY2ggYXJlIHRoZSBwcmltYXJ5IHRhcmdldHMgZm9yIEtNU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYW4gaW50ZWdlciBvdmVyZmxvdyBjaGVjayBmb3IgYHpvbmUtXFx1MDAzZXNpemVgIGFuZCBgem9uZS1cXHUwMDNlYWRkciArIHpvbmUtXFx1MDAzZXNpemVgIGluIGBrdm1fdm1faW9jdGxfcmVnaXN0ZXJfY29hbGVzY2VkX21taW8oKWAuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIG9yIGluY29ycmVjdCBtZW1vcnkgcmVnaW9uIHJlZ2lzdHJhdGlvbnMgdGhhdCBjb3VsZCByZXN1bHQgZnJvbSBpbnRlZ2VyIG92ZXJmbG93LiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBhZGRyZXNzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2Vyc3BhY2UsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSB0YXJnZXRzIGZvciBLTVNBTi4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowvfvpb[1] Phase: Succeeded StartedAt: 2026-08-27 12:50:19 +0000 UTC FinishedAt: 2026-08-27 12:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-27 12:50:19 +0000 UTC FinishedAt: 2026-08-27 12:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2] Phase: Succeeded StartedAt: 2026-08-27 12:50:19 +0000 UTC FinishedAt: 2026-08-27 16:27:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-27 12:50:19 +0000 UTC FinishedAt: 2026-08-27 16:27:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-27 12:50:19 +0000 UTC FinishedAt: 2026-08-27 12:50:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-27 12:50:19 +0000 UTC FinishedAt: 2026-08-27 12:50:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-convert-artifact-2396644067/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-27 12:50:29 +0000 UTC FinishedAt: 2026-08-27 13:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-27 12:50:29 +0000 UTC FinishedAt: 2026-08-27 13:06:27 +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:*b44efad8-678d-4879-af27-794fffd4bf0e,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-workflowvfvpb/series-workflowvfvpb-convert-artifact-2396644067/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": "bd26027f-9b33-4c21-927c-09d86279a8b5", "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-workflowvfvpb/series-workflowvfvpb-build-action-1324744273/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-27 12:50:29 +0000 UTC FinishedAt: 2026-08-27 13:06: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:*b44efad8-678d-4879-af27-794fffd4bf0e,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-workflowvfvpb/series-workflowvfvpb-convert-artifact-2396644067/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": "bd26027f-9b33-4c21-927c-09d86279a8b5", "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-workflowvfvpb/series-workflowvfvpb-build-action-1324744273/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-27 13:06:27 +0000 UTC FinishedAt: 2026-08-27 13:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-27 13:06:27 +0000 UTC FinishedAt: 2026-08-27 13:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-27 13:06:27 +0000 UTC FinishedAt: 2026-08-27 13:06:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-27 13:06:27 +0000 UTC FinishedAt: 2026-08-27 13:06:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-convert-artifact-4188209178/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-27 13:06:37 +0000 UTC FinishedAt: 2026-08-27 13:08:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-27 13:06:37 +0000 UTC FinishedAt: 2026-08-27 13:08:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bd26027f-9b33-4c21-927c-09d86279a8b5,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-workflowvfvpb/series-workflowvfvpb-build-action-1324744273/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-27 13:08:37 +0000 UTC FinishedAt: 2026-08-27 13:08:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-27 13:08:37 +0000 UTC FinishedAt: 2026-08-27 13:08:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-27 13:08:37 +0000 UTC FinishedAt: 2026-08-27 13:24:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-27 13:08:37 +0000 UTC FinishedAt: 2026-08-27 13:24:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b44efad8-678d-4879-af27-794fffd4bf0e,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-workflowvfvpb/series-workflowvfvpb-convert-artifact-4188209178/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": "431db226-94c1-429a-8f93-fa28c7ffd395", "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-workflowvfvpb/series-workflowvfvpb-build-action-271231998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-27 13:08:37 +0000 UTC FinishedAt: 2026-08-27 13:24:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*b44efad8-678d-4879-af27-794fffd4bf0e,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-workflowvfvpb/series-workflowvfvpb-convert-artifact-4188209178/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": "431db226-94c1-429a-8f93-fa28c7ffd395", "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-workflowvfvpb/series-workflowvfvpb-build-action-271231998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-27 13:24:33 +0000 UTC FinishedAt: 2026-08-27 13:24:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-27 13:24:33 +0000 UTC FinishedAt: 2026-08-27 13:24:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-27 13:24:33 +0000 UTC FinishedAt: 2026-08-27 13:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-27 13:24:33 +0000 UTC FinishedAt: 2026-08-27 13:26:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*431db226-94c1-429a-8f93-fa28c7ffd395,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-build-action-271231998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-27 13:26:36 +0000 UTC FinishedAt: 2026-08-27 16:27:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-27 13:26:36 +0000 UTC FinishedAt: 2026-08-27 16:27:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*bd26027f-9b33-4c21-927c-09d86279a8b5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*431db226-94c1-429a-8f93-fa28c7ffd395,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-build-action-1324744273/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-build-action-271231998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-27 13:26:36 +0000 UTC FinishedAt: 2026-08-27 13:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-27 13:26:36 +0000 UTC FinishedAt: 2026-08-27 13:26:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-convert-artifact-2281067727/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-27 13:26:36 +0000 UTC FinishedAt: 2026-08-27 13:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-27 13:26:36 +0000 UTC FinishedAt: 2026-08-27 13:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-27 13:26:36 +0000 UTC FinishedAt: 2026-08-27 13:26:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-27 13:26:46 +0000 UTC FinishedAt: 2026-08-27 16:27:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvfvpb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_vm_ioctl_register_coalesced_mmio"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"76671054f9a1ff6abb976583cd8da37650acdc97","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"e228f19f-0bb7-440a-8944-001a60e148c8","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-27 13:26:46 +0000 UTC FinishedAt: 2026-08-27 16:27:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bd26027f-9b33-4c21-927c-09d86279a8b5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*431db226-94c1-429a-8f93-fa28c7ffd395,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-build-action-1324744273/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-build-action-271231998/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowvfvpb/series-workflowvfvpb-convert-artifact-2281067727/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}